Fix remaining issues with bound checking (#23123)
While fixing these I've also changed the way we store addresses into ByteArray#. Addr# are composed of two parts: a JavaScript array and an offset (32-bit number). Suppose we want to store an Addr# in a ByteArray# foo at offset i. Before this patch, we were storing both fields as a tuple in the "arr" array field: foo.arr[i] = [addr_arr, addr_offset]; Now we only store the array part in the "arr" field and the offset directly in the array: foo.dv.setInt32(i, addr_offset): foo.arr[i] = addr_arr; It avoids wasting space for the tuple. (cherry picked from commit 2d5c1dde)
Showing
- compiler/GHC/StgToJS/Linker/Utils.hs 4 additions, 0 deletionscompiler/GHC/StgToJS/Linker/Utils.hs
- compiler/GHC/StgToJS/Prim.hs 520 additions, 502 deletionscompiler/GHC/StgToJS/Prim.hs
- libraries/base/jsbits/base.js 1 addition, 2 deletionslibraries/base/jsbits/base.js
- rts/js/environment.js 11 additions, 12 deletionsrts/js/environment.js
- rts/js/mem.js 22 additions, 9 deletionsrts/js/mem.js
- rts/js/profiling.js 3 additions, 4 deletionsrts/js/profiling.js
- rts/js/staticpointer.js 4 additions, 3 deletionsrts/js/staticpointer.js
- rts/js/string.js 0 additions, 41 deletionsrts/js/string.js
- testsuite/tests/codeGen/should_run/all.T 1 addition, 1 deletiontestsuite/tests/codeGen/should_run/all.T
Loading
Please register or sign in to comment