Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
-
e368e247
by Rodrigo Mesquita at 2025-08-20T19:55:42-04:00
3 changed files:
Changes:
... | ... | @@ -843,16 +843,18 @@ assembleI platform i = case i of |
843 | 843 | |
844 | 844 | BRK_FUN ibi@(InternalBreakpointId info_mod infox) -> do
|
845 | 845 | p1 <- ptr $ BCOPtrBreakArray info_mod
|
846 | - let -- cast that checks that round-tripping through Word16 doesn't change the value
|
|
847 | - toW16 x = let r = fromIntegral x :: Word16
|
|
848 | - in if fromIntegral r == x
|
|
846 | + let -- cast that checks that round-tripping through Word32 doesn't change the value
|
|
847 | + infoW32 = let r = fromIntegral infox :: Word32
|
|
848 | + in if fromIntegral r == infox
|
|
849 | 849 | then r
|
850 | - else pprPanic "schemeER_wrk: breakpoint tick/info index too large!" (ppr x)
|
|
850 | + else pprPanic "schemeER_wrk: breakpoint tick/info index too large!" (ppr infox)
|
|
851 | + ix_hi = fromIntegral (infoW32 `shiftR` 16)
|
|
852 | + ix_lo = fromIntegral (infoW32 .&. 0xffff)
|
|
851 | 853 | info_addr <- lit1 $ BCONPtrFS $ moduleNameFS $ moduleName info_mod
|
852 | 854 | info_unitid_addr <- lit1 $ BCONPtrFS $ unitIdFS $ moduleUnitId info_mod
|
853 | 855 | np <- lit1 $ BCONPtrCostCentre ibi
|
854 | 856 | emit_ bci_BRK_FUN [ Op p1, Op info_addr, Op info_unitid_addr
|
855 | - , SmallOp (toW16 infox), Op np ]
|
|
857 | + , SmallOp ix_hi, SmallOp ix_lo, Op np ]
|
|
856 | 858 | |
857 | 859 | BRK_ALTS active -> emit_ bci_BRK_ALTS [SmallOp (if active then 1 else 0)]
|
858 | 860 |
... | ... | @@ -89,7 +89,7 @@ disInstr ( StgBCO *bco, int pc ) |
89 | 89 | p1 = BCO_GET_LARGE_ARG;
|
90 | 90 | info_mod = BCO_GET_LARGE_ARG;
|
91 | 91 | info_unit_id = BCO_GET_LARGE_ARG;
|
92 | - info_wix = BCO_NEXT;
|
|
92 | + info_wix = BCO_READ_NEXT_32;
|
|
93 | 93 | np = BCO_GET_LARGE_ARG;
|
94 | 94 | debugBelch ("BRK_FUN " ); printPtr( ptrs[p1] );
|
95 | 95 | debugBelch("%" FMT_Word, literals[info_mod] );
|
... | ... | @@ -720,7 +720,7 @@ interpretBCO (Capability* cap) |
720 | 720 | arg1_brk_array = BCO_GET_LARGE_ARG;
|
721 | 721 | /* info_mod_name = */ BCO_GET_LARGE_ARG;
|
722 | 722 | /* info_mod_id = */ BCO_GET_LARGE_ARG;
|
723 | - arg4_info_index = BCO_NEXT;
|
|
723 | + arg4_info_index = BCO_READ_NEXT_32;
|
|
724 | 724 | |
725 | 725 | StgPtr* ptrs = (StgPtr*)(&bco->ptrs->payload[0]);
|
726 | 726 | StgArrBytes* breakPoints = (StgArrBytes *) BCO_PTR(arg1_brk_array);
|
... | ... | @@ -1542,7 +1542,7 @@ run_BCO: |
1542 | 1542 | arg1_brk_array = BCO_GET_LARGE_ARG;
|
1543 | 1543 | arg2_info_mod_name = BCO_GET_LARGE_ARG;
|
1544 | 1544 | arg3_info_mod_id = BCO_GET_LARGE_ARG;
|
1545 | - arg4_info_index = BCO_NEXT;
|
|
1545 | + arg4_info_index = BCO_READ_NEXT_32;
|
|
1546 | 1546 | #if defined(PROFILING)
|
1547 | 1547 | arg5_cc = BCO_GET_LARGE_ARG;
|
1548 | 1548 | #else
|