Matthew Pickering pushed to branch wip/gdc-files at Glasgow Haskell Compiler / GHC
Commits:
-
3f9b2c96
by Matthew Pickering at 2025-08-21T13:13:33+01:00
2 changed files:
Changes:
| ... | ... | @@ -187,9 +187,7 @@ mkObjectUsage pit plugins fc hug th_links_needed th_pkgs_needed = do |
| 187 | 187 | -- home package ifaces in the PIT.
|
| 188 | 188 | miface <- lookupIfaceByModule hug pit m
|
| 189 | 189 | case miface of
|
| 190 | - -- TODO: MP: This is wrong, a placeholder for now.
|
|
| 191 | - -- We need to work out what to do for bytecode linkables which are not loaded into HPT
|
|
| 192 | - Nothing -> return $ UsageHomeModuleInterface (moduleName m) (toUnitId $ moduleUnit m) fingerprint0
|
|
| 190 | + Nothing -> pprPanic "linkableToUsage" (ppr m)
|
|
| 193 | 191 | Just iface ->
|
| 194 | 192 | return $ UsageHomeModuleInterface (moduleName m) (toUnitId $ moduleUnit m) (mi_iface_hash iface)
|
| 195 | 193 |
| ... | ... | @@ -647,12 +647,17 @@ findWholeCoreBindings hsc_env mod = do |
| 647 | 647 | |
| 648 | 648 | |
| 649 | 649 | findBytecodeLinkableMaybe :: HscEnv -> Module -> ModLocation -> IO (Maybe Linkable)
|
| 650 | -findBytecodeLinkableMaybe hsc_env _mod locn = do
|
|
| 650 | +findBytecodeLinkableMaybe hsc_env mod locn = do
|
|
| 651 | 651 | let bytecode_fn = ml_bytecode_file locn
|
| 652 | 652 | maybe_bytecode_time <- modificationTimeIfExists bytecode_fn
|
| 653 | 653 | case maybe_bytecode_time of
|
| 654 | 654 | Nothing -> return Nothing
|
| 655 | 655 | Just bytecode_time -> do
|
| 656 | + -- Also load the interface, for reasons to do with recompilation avoidance.
|
|
| 657 | + -- See Note [Recompilation avoidance with bytecode objects]
|
|
| 658 | + _ <- initIfaceLoad hsc_env $
|
|
| 659 | + loadInterface (text "get_reachable_nodes" <+> parens (ppr mod))
|
|
| 660 | + mod ImportBySystem
|
|
| 656 | 661 | bco <- readBinByteCode hsc_env bytecode_fn
|
| 657 | 662 | Just <$> loadByteCodeObjectLinkable hsc_env bytecode_time locn bco
|
| 658 | 663 |