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
|