Hassan Al-Awwadi pushed to branch wip/haanss/depdir at Glasgow Haskell Compiler / GHC
Commits:
-
e4016a66
by Hassan Al-Awwadi at 2025-07-05T13:25:30+02:00
2 changed files:
Changes:
| ... | ... | @@ -151,7 +151,7 @@ initFinderCache = do |
| 151 | 151 | hash <- getDirHash key
|
| 152 | 152 | atomicModifyIORef' dir_cache $ \c -> (M.insert key hash c, ())
|
| 153 | 153 | return hash
|
| 154 | - Just fp -> return fp
|
|
| 154 | + Just fp -> return fp
|
|
| 155 | 155 | return FinderCache{..}
|
| 156 | 156 | |
| 157 | 157 | -- | This function computes a shallow hash of a directory, so really just what files and directories are directly inside it.
|
| ... | ... | @@ -412,6 +412,7 @@ instance NFData Usage where |
| 412 | 412 | rnf (UsagePackageModule mod hash safe) = rnf mod `seq` rnf hash `seq` rnf safe `seq` ()
|
| 413 | 413 | rnf (UsageHomeModule mod uid hash entities exports safe) = rnf mod `seq` rnf uid `seq` rnf hash `seq` rnf entities `seq` rnf exports `seq` rnf safe `seq` ()
|
| 414 | 414 | rnf (UsageFile file hash label) = rnf file `seq` rnf hash `seq` rnf label `seq` ()
|
| 415 | + rnf (UsageDirectory dir hash label) = rnf dir `seq` rnf hash `seq` rnf label `seq` ()
|
|
| 415 | 416 | rnf (UsageMergedRequirement mod hash) = rnf mod `seq` rnf hash `seq` ()
|
| 416 | 417 | rnf (UsageHomeModuleInterface mod uid hash) = rnf mod `seq` rnf uid `seq` rnf hash `seq` ()
|
| 417 | 418 | |
| ... | ... | @@ -448,6 +449,12 @@ instance Binary Usage where |
| 448 | 449 | put_ bh (usg_unit_id usg)
|
| 449 | 450 | put_ bh (usg_iface_hash usg)
|
| 450 | 451 | |
| 452 | + put_ bh usg@UsageDirectory{} = do
|
|
| 453 | + putByte bh 5
|
|
| 454 | + put_ bh (usg_dir_path usg)
|
|
| 455 | + put_ bh (usg_dir_hash usg)
|
|
| 456 | + put_ bh (usg_dir_label usg)
|
|
| 457 | + |
|
| 451 | 458 | get bh = do
|
| 452 | 459 | h <- getByte bh
|
| 453 | 460 | case h of
|
| ... | ... | @@ -479,6 +486,12 @@ instance Binary Usage where |
| 479 | 486 | uid <- get bh
|
| 480 | 487 | hash <- get bh
|
| 481 | 488 | return UsageHomeModuleInterface { usg_mod_name = mod, usg_unit_id = uid, usg_iface_hash = hash }
|
| 489 | + 5 -> do
|
|
| 490 | + dp <- get bh
|
|
| 491 | + hash <- get bh
|
|
| 492 | + label <- get bh
|
|
| 493 | + return UsageDirectory { usg_dir_path = fp, usg_dir_hash = hash, usg_dir_label = label }
|
|
| 494 | + |
|
| 482 | 495 | i -> error ("Binary.get(Usage): " ++ show i)
|
| 483 | 496 | |
| 484 | 497 | -- | Records the imports that we depend on from a home module,
|