searching for reviewer(rhunt)
976cd7902cb54d01294cf2b7af3384bbc66b8cd4: Bug 1774840 - Implement new GC instructions in baseline (Part 3). r=rhunt.
Julian Seward <jseward@acm.org> - Mon, 15 Aug 2022 10:08:39 +0000 - rev 627148
Push 40130 by mlaza@mozilla.com at Mon, 15 Aug 2022 15:47:35 +0000
Bug 1774840 - Implement new GC instructions in baseline (Part 3). r=rhunt. Adds wasm baseline implementation and test cases for `array.new_fixed`. Differential Revision: https://phabricator.services.mozilla.com/D154230
2c7fcebf117cfbc3f325611d926f4c6cb9d73c80: Bug 1774840 - Implement new GC instructions in baseline (Part 2). r=rhunt.
Julian Seward <jseward@acm.org> - Mon, 15 Aug 2022 10:08:38 +0000 - rev 627147
Push 40130 by mlaza@mozilla.com at Mon, 15 Aug 2022 15:47:35 +0000
Bug 1774840 - Implement new GC instructions in baseline (Part 2). r=rhunt. In the existing GC array implementation, change some names that are `length` or `elementsLength` to be `numElements`, to remove ambiguity about whether those quantities are "number of bytes" or "number of array elements". No functional change. Differential Revision: https://phabricator.services.mozilla.com/D154229
da4e5d8fb7e922aa112ccb8c35bbaf82d4aea8bd: Bug 1774840 - Implement new GC instructions in baseline (Part 1). r=rhunt.
Julian Seward <jseward@acm.org> - Mon, 15 Aug 2022 10:08:38 +0000 - rev 627146
Push 40130 by mlaza@mozilla.com at Mon, 15 Aug 2022 15:47:35 +0000
Bug 1774840 - Implement new GC instructions in baseline (Part 1). r=rhunt. Part 1 - debug/comment improvements. No functional change. * Add a debug-only method BaseCompiler::showStack, to dump the compiler's value stack to stderr. * Add comment describing argument-handling in BaseCompiler::emitInstanceCall. Differential Revision: https://phabricator.services.mozilla.com/D154228
9caa242322e5934ab90843a99c0027349fd8b2b9: Bug 1780819 - Allow non-nullable references in locals. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Fri, 12 Aug 2022 20:41:03 +0000 - rev 627057
Push 40121 by abutkovits@mozilla.com at Sat, 13 Aug 2022 09:22:39 +0000
Bug 1780819 - Allow non-nullable references in locals. r=rhunt * Allows non-defaultable locals to be present * Adds UnsetLocalsState to track state (as defined by spec) * Add testing of generated sequences of blocks and locals operations Differential Revision: https://phabricator.services.mozilla.com/D154003
43c1a6141f9ddb20447c6e5075612f59405cd9fb: Bug 1780813 - Implement the call_ref instruction in ion. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Thu, 11 Aug 2022 13:15:06 +0000 - rev 626844
Push 40116 by smolnar@mozilla.com at Fri, 12 Aug 2022 09:37:14 +0000
Bug 1780813 - Implement the call_ref instruction in ion. r=rhunt * Allow MWasmCallBase has reference register: tableIndex renamed to tableIndexOrRef * Implement call_ref in ion * Enable call_ref.js test Differential Revision: https://phabricator.services.mozilla.com/D153678
4bc586804a29ef3e1973da23f94e7dceafaf1f65: Bug 1781946 - Implement br_on_null, br_on_non_null, ref.as_non_null in Ion. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Wed, 10 Aug 2022 16:08:23 +0000 - rev 626740
Push 40111 by apavel@mozilla.com at Wed, 10 Aug 2022 21:29:56 +0000
Bug 1781946 - Implement br_on_null, br_on_non_null, ref.as_non_null in Ion. r=rhunt * Enable testing using Ion * Disable call_ref.js for ion * Allow Ion when --wasm-function-references * Fix WasmOpIt to pass ref values * Add br_on_null, br_on_non_null, ref.as_non_null Differential Revision: https://phabricator.services.mozilla.com/D154146
fbea37e2ca2327a508940beec2dd2c019bfb289b: Bug 1781945 - Implement br_on_non_null in baseline. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Tue, 09 Aug 2022 21:54:35 +0000 - rev 626611
Push 40106 by smolnar@mozilla.com at Wed, 10 Aug 2022 04:30:40 +0000
Bug 1781945 - Implement br_on_non_null in baseline. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D153402
57951e2dc196f82dc822061a2b54ec976916ce49: Bug 1782316 - Allow nullable references in call_ref. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Tue, 02 Aug 2022 20:55:25 +0000 - rev 625803
Push 40074 by ccozmuta@mozilla.com at Wed, 03 Aug 2022 03:42:48 +0000
Bug 1782316 - Allow nullable references in call_ref. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D153289
47b34644396ab74f7f1906b47cc278bd6b5dc819: Bug 1780814 - Add fast path for same-instance call_ref. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Wed, 27 Jul 2022 22:45:40 +0000 - rev 625331
Push 40047 by bszekely@mozilla.com at Thu, 28 Jul 2022 09:32:33 +0000
Bug 1780814 - Add fast path for same-instance call_ref. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D152821
be4721551a07de4e4eac361ed2a39545e306d02f: Bug 1762409 - Remove wormhole instructions. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Tue, 26 Jul 2022 22:39:37 +0000 - rev 625244
Push 40042 by ctuns@mozilla.com at Wed, 27 Jul 2022 09:37:31 +0000
Bug 1762409 - Remove wormhole instructions. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D152118
fd53e107256c14a30f70d8761620db9f832ec493: Bug 1768648 - Part 2: Use LCompareAndBranch for Compare_RefOrNull. r=rhunt
André Bargull <andre.bargull@gmail.com> - Tue, 26 Jul 2022 12:58:20 +0000 - rev 625155
Push 40040 by abutkovits@mozilla.com at Tue, 26 Jul 2022 21:44:38 +0000
Bug 1768648 - Part 2: Use LCompareAndBranch for Compare_RefOrNull. r=rhunt Depends on D152631 Differential Revision: https://phabricator.services.mozilla.com/D152632
f89d196c2b59cfe0e6c5ec282427fa9768eb3879: Bug 1768648 - Part 1: Compare Compare_RefOrNull as pointers. r=rhunt
André Bargull <andre.bargull@gmail.com> - Tue, 26 Jul 2022 12:58:19 +0000 - rev 625154
Push 40040 by abutkovits@mozilla.com at Tue, 26 Jul 2022 21:44:38 +0000
Bug 1768648 - Part 1: Compare Compare_RefOrNull as pointers. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D152631
d83e9a9852d2509a0181cab7814aeb80dff18480: Bug 1780928 - Fix WasmOpIter.cpp switch to properly handle CallRef. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Mon, 25 Jul 2022 17:37:17 +0000 - rev 625043
Push 40034 by csabou@mozilla.com at Tue, 26 Jul 2022 04:13:49 +0000
Bug 1780928 - Fix WasmOpIter.cpp switch to properly handle CallRef. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D152667
b81c4e075f5a4015a229122beae375de70298e79: Bug 1774830 - Add call_ref validation and baseline parsing. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Fri, 22 Jul 2022 19:16:22 +0000 - rev 624952
Push 40021 by smolnar@mozilla.com at Sat, 23 Jul 2022 09:14:44 +0000
Bug 1774830 - Add call_ref validation and baseline parsing. r=rhunt - Add simple tests - Add validation support for call_ref - Use typeIndex when function references are enabled - Add a BaseCompiler::callRef Differential Revision: https://phabricator.services.mozilla.com/D151727
ecc27ae09716602eb002324a2f018bfd7e955c0d: Bug 1774830 - Add masm.wasmCallRef logic. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Fri, 22 Jul 2022 19:16:22 +0000 - rev 624951
Push 40021 by smolnar@mozilla.com at Sat, 23 Jul 2022 09:14:44 +0000
Bug 1774830 - Add masm.wasmCallRef logic. r=rhunt - Implement MacroAssembler::wasmCallRef - Extend CalleeDesc and CallSiteDesc - Add register definition to platforms - Populate WASM_FUNC_DIRECT_ENTRY_SLOT with funcUncheckedCallEntry address Tests are provided in the next patch. Differential Revision: https://phabricator.services.mozilla.com/D151772
445a52bb903652a42b580076a4adf355bcd7ce3a: Bug 1774830 - Remove WASM_INSTANCE_OBJ_SLOT from JSFunction. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Fri, 22 Jul 2022 19:16:21 +0000 - rev 624950
Push 40021 by smolnar@mozilla.com at Sat, 23 Jul 2022 09:14:44 +0000
Bug 1774830 - Remove WASM_INSTANCE_OBJ_SLOT from JSFunction. r=rhunt - Replace all uses of WASM_INSTANCE_OBJ_SLOT, with WASM_INSTANCE_SLOT (which is a Instance* and can access Instance::object_) - Update JSFunction::trace to trace through WASM_INSTANCE_SLOT, instead of relying on WASM_INSTANCE_OBJ_SLOT Refactored code is covered by existing tests. Differential Revision: https://phabricator.services.mozilla.com/D151375
0df5222aec960179f95de974bebbd3faec77ddfb: Bug 1780383 - Add profiler sub-category for Wasm frames. r=gerald,rhunt
Jan de Mooij <jdemooij@mozilla.com> - Thu, 21 Jul 2022 06:52:44 +0000 - rev 624718
Push 40011 by mlaza@mozilla.com at Thu, 21 Jul 2022 15:47:47 +0000
Bug 1780383 - Add profiler sub-category for Wasm frames. r=gerald,rhunt Differential Revision: https://phabricator.services.mozilla.com/D152272
e9e6c075d1caef92e5d6fb5b33eec40ab086e50b: Bug 1754394 - Minor tuning of the wasm baseline compiler. r=rhunt.
Julian Seward <jseward@acm.org> - Tue, 12 Jul 2022 12:08:45 +0000 - rev 623649
Push 39973 by ncsoregi@mozilla.com at Wed, 13 Jul 2022 03:48:16 +0000
Bug 1754394 - Minor tuning of the wasm baseline compiler. r=rhunt. As a result of profiling the baseline compiler compiling Photoshop, here are two minor bits of tuning: * For `CatchInfoVector`, use an inline size of one rather than zero. Using a zero inline size produces a heap allocation if a `struct Control` is called on to deal with even a single try-catch construction. Setting it to one removes a few allocations when compiling Photoshop. Setting it higher does not appear to have any effect. * Inline sizes for `TypeAndValueStack` and `ControlStack` have been doubled, again on the basis of profile (dhat) data. * `wasm::IsHugeMemoryEnabled` is improved. This is more complex than it looks because (I think) it deals with atomics. - don't query both `IsHugeMemoryEnabledHelper32` and `IsHugeMemoryEnabledHelper64` on each call - mark the latter two no-inline, so that the complex case (`enabled32` or `enabled64` has not been set) is not inlined into `wasm::IsHugeMemoryEnabled`. Results are: * 1.5% reduction in user time compiling Photoshop (Core i5 1135G7 @ 4.2 GHz, best of 40 runs) * 1.35% reduction in instruction count * 0.59% reduction in memory accesses Differential Revision: https://phabricator.services.mozilla.com/D151144
cd86be9642b768d7c4e947625377e2c33dac4601: Bug 1778466 part 7 - Don't use a tagged frame pointer for direct JIT => Wasm calls. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 09 Jul 2022 17:33:57 +0000 - rev 623416
Push 39961 by ncsoregi@mozilla.com at Sun, 10 Jul 2022 09:44:29 +0000
Bug 1778466 part 7 - Don't use a tagged frame pointer for direct JIT => Wasm calls. r=rhunt The tag bit is now only used for the activation's `exitFP` field. Similar to part 2, this makes it easier for stack unwinders to unwind through Wasm frames. Differential Revision: https://phabricator.services.mozilla.com/D151252
7bba2760a2ea92f6cf82d07c41ff99865ac86322: Bug 1778466 part 6 - Stop relying on tagged frame pointer for direct JIT => Wasm calls. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 09 Jul 2022 17:33:56 +0000 - rev 623415
Push 39961 by ncsoregi@mozilla.com at Sun, 10 Jul 2022 09:44:29 +0000
Bug 1778466 part 6 - Stop relying on tagged frame pointer for direct JIT => Wasm calls. r=rhunt If there's no `CodeRange` for a frame's return address, this must be a direct call from JIT code. Use `AssertDirectJitCall` in a few more places to help catch issues with this. Depends on D151250 Differential Revision: https://phabricator.services.mozilla.com/D151251
073da829bd324261976c1d966feaa215a98f1952: Bug 1778466 part 5 - Clean up unwoundJitCallerFP_ code in ProfilingFrameIterator. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 09 Jul 2022 17:33:56 +0000 - rev 623414
Push 39961 by ncsoregi@mozilla.com at Sun, 10 Jul 2022 09:44:29 +0000
Bug 1778466 part 5 - Clean up unwoundJitCallerFP_ code in ProfilingFrameIterator. r=rhunt The `unwoundJitCallerFP_` is only used when the iterator is `done()` (to transition to the JS JIT frame iterator after either the `JitEntry` stub or a direct call). With this patch, we only set `unwoundJitCallerFP_` right before we're done iterating. Depends on D151249 Differential Revision: https://phabricator.services.mozilla.com/D151250
78c4287d2c3ca9e5e2d2b36d5c77e46009603daf: Bug 1778466 part 4 - Simplify ProfilingFrameIterator::done. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 09 Jul 2022 17:33:56 +0000 - rev 623413
Push 39961 by ncsoregi@mozilla.com at Sun, 10 Jul 2022 09:44:29 +0000
Bug 1778466 part 4 - Simplify ProfilingFrameIterator::done. r=rhunt Depends on D151248 Differential Revision: https://phabricator.services.mozilla.com/D151249
94b62c2e8637d619ca0d887c314303488ae3c266: Bug 1778466 part 3 - Tidy up InterpEntry handling in ProfilingFrameIterator, remove fake ExitReason. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 09 Jul 2022 17:33:55 +0000 - rev 623412
Push 39961 by ncsoregi@mozilla.com at Sun, 10 Jul 2022 09:44:29 +0000
Bug 1778466 part 3 - Tidy up InterpEntry handling in ProfilingFrameIterator, remove fake ExitReason. r=rhunt Treat the `InterpEntry` stub more like the `JitEntry` stub in `ProfilingFrameIterator`. This lets us remove the `FakeInterpEntry` `ExitReason`, which was a bit of a hack because this is not an exit. Depends on D151247 Differential Revision: https://phabricator.services.mozilla.com/D151248
63e1dd659c578a1896425d94543cee81982381c8: Bug 1778466 part 2 - Don't clobber FP with nullptr in GenerateInterpEntry. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 09 Jul 2022 17:33:55 +0000 - rev 623411
Push 39961 by ncsoregi@mozilla.com at Sun, 10 Jul 2022 09:44:29 +0000
Bug 1778466 part 2 - Don't clobber FP with nullptr in GenerateInterpEntry. r=rhunt This will let native stack unwinders (such as 'perf' or crash-stats tooling) unwind from Wasm to C++ frames. Depends on D151246 Differential Revision: https://phabricator.services.mozilla.com/D151247
6bbcd6e57809613f0433c622e0f6e73491d90d9e: Bug 1778466 part 1 - Use CodeRange kind to check for InterpEntry stub instead of null frame pointer. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 09 Jul 2022 17:33:55 +0000 - rev 623410
Push 39961 by ncsoregi@mozilla.com at Sun, 10 Jul 2022 09:44:29 +0000
Bug 1778466 part 1 - Use CodeRange kind to check for InterpEntry stub instead of null frame pointer. r=rhunt This will let us preserve the caller's frame pointer in later patches. It's also more consistent with what we do for the JitEntry stub. Differential Revision: https://phabricator.services.mozilla.com/D151246
e1a4972e3a277fa906d29040cfda7949d1842b46: Bug 1778304 part 2 - Remove JitExitOffsets. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Thu, 07 Jul 2022 08:27:50 +0000 - rev 623208
Push 39948 by nerli@mozilla.com at Thu, 07 Jul 2022 15:31:00 +0000
Bug 1778304 part 2 - Remove JitExitOffsets. r=rhunt Depends on D151125 Differential Revision: https://phabricator.services.mozilla.com/D151126
78b8ea3a290ce16eb4d5f0ea2b3c6a1f07daae30: Bug 1778304 part 1 - Remove unnecessary code to restore frame pointer in GenerateImportJitExit. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Thu, 07 Jul 2022 08:27:50 +0000 - rev 623207
Push 39948 by nerli@mozilla.com at Thu, 07 Jul 2022 15:31:00 +0000
Bug 1778304 part 1 - Remove unnecessary code to restore frame pointer in GenerateImportJitExit. r=rhunt The JIT ABI now preserves it. Differential Revision: https://phabricator.services.mozilla.com/D151125
c3dbbd5f2fd8d8ff52f2db0a282f98ab79636b13: Bug 1753923 - Remove run-time selection of wasm SIMD. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Wed, 29 Jun 2022 18:31:49 +0000 - rev 622591
Push 39916 by ccozmuta@mozilla.com at Wed, 29 Jun 2022 21:58:21 +0000
Bug 1753923 - Remove run-time selection of wasm SIMD. r=rhunt Removed: * javascript.options.wasm_simd in about:config * --no-wasm-simd at the shell Differential Revision: https://phabricator.services.mozilla.com/D145812
66b6cbf778b08d4612ae35ff0a3ce96f09e1f6ac: Bug 1776281 - Update Zydis to version 3.2.1. r=rhunt
Ryan VanderMeulen <ryanvm@gmail.com> - Mon, 27 Jun 2022 13:05:18 +0000 - rev 622139
Push 39908 by imoraru@mozilla.com at Mon, 27 Jun 2022 21:50:36 +0000
Bug 1776281 - Update Zydis to version 3.2.1. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D150182
029838346d0e7a7a2d53f4b08993224b5e75c973: Bug 1776358 - Only include wasmMaxStackArgBytes in Ion frame size if there are calls. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Sat, 25 Jun 2022 14:02:55 +0000 - rev 622101
Push 39899 by smolnar@mozilla.com at Sat, 25 Jun 2022 21:29:21 +0000
Bug 1776358 - Only include wasmMaxStackArgBytes in Ion frame size if there are calls. r=rhunt Because `wasmMaxStackArgBytes` is calculated early on, it was possible we later eliminated all call instructions and `needsStaticStackAlignment` was false, but we still included `wasmMaxStackArgBytes` in the frame size, breaking stack alignment invariants on ARM64. The simplest fix is to not include `wasmMaxStackArgBytes` if we know there are no calls (left). This fixes an old Ion ARM64 bug exposed by the assertion added in bug 1774449. Differential Revision: https://phabricator.services.mozilla.com/D150244
103f879d45ff94ed79464af1fce977e54e6ac6e9: Bug 1774546 part 3 - Store caller frame pointer in CommonFrameLayout. r=iain,rhunt
Jan de Mooij <jdemooij@mozilla.com> - Wed, 22 Jun 2022 08:01:15 +0000 - rev 621662
Push 39883 by ctuns@mozilla.com at Wed, 22 Jun 2022 16:10:22 +0000
Bug 1774546 part 3 - Store caller frame pointer in CommonFrameLayout. r=iain,rhunt Now that all frames store the caller's frame pointer, we can add it to `CommonFrameLayout` and get rid of `FramePointerOffset`. This also removes `JitFrameLayout::unused_`. This has to happen at the same time so that `sizeof(JitFrameLayout)` doesn't change (a lot of code depends on that for alignment). `JitFrameLayout` is now aligned on the frame pointer instead of the return address. This lets us simplify some of the Wasm stubs code (especially for ARM64) where we had to workaround the old aligned-after-return-address invariant. Differential Revision: https://phabricator.services.mozilla.com/D149760
9716d1d26289cc4d4bd0d9f64f0e8e6241cf7fed: Bug 1774449 - Always align SP to 16 bytes in Wasm Ion codegen for ARM64. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Fri, 17 Jun 2022 11:21:24 +0000 - rev 621281
Push 39863 by ncsoregi@mozilla.com at Fri, 17 Jun 2022 21:46:21 +0000
Bug 1774449 - Always align SP to 16 bytes in Wasm Ion codegen for ARM64. r=rhunt This fixes a regression from bug 1770366 part 4: we used to align the local size to `JitStackAlignment` even for Wasm, but that patch changed this to pointer-alignment. (Wasm code uses `WasmStackAlignment` only if `needsStaticStackAlignment()` is true.) On ARM64 this is wrong because we need the 16-byte alignment. It usually still works because of the pseudo-stack-pointer, but falls apart if we have to call a trap stub because it uses the actual stack pointer. Differential Revision: https://phabricator.services.mozilla.com/D149600
55e1f543d0efd8644f73ee24c182defba62be739: Bug 1774501 - Update to env_logger 0.9 in various in-tree crates. r=nbp,keeler,xpcom-reviewers,rhunt,nika
Mike Hommey <mh+mozilla@glandium.org> - Thu, 16 Jun 2022 20:44:03 +0000 - rev 621202
Push 39861 by nfay@mozilla.com at Fri, 17 Jun 2022 09:39:07 +0000
Bug 1774501 - Update to env_logger 0.9 in various in-tree crates. r=nbp,keeler,xpcom-reviewers,rhunt,nika Differential Revision: https://phabricator.services.mozilla.com/D149453
ec8806fe677169fc917ba5871d56cdfc0f3f1477: Bug 1772991 - js/src/ds/AvlTree.h: batch up node allocations. r=rhunt.
Julian Seward <jseward@acm.org> - Mon, 13 Jun 2022 15:06:20 +0000 - rev 620728
Push 39843 by mlaza@mozilla.com at Mon, 13 Jun 2022 21:53:09 +0000
Bug 1772991 - js/src/ds/AvlTree.h: batch up node allocations. r=rhunt. `class AvlTreeImpl` carries both a `LifoAlloc` and a list of nodes that have been freed as a result of previous deletions from the tree. When a new node is required, it first tries the freelist. If that is empty, it requests a new node from the underlying `LifoAlloc`. This patch adds a modest but easy optimisation: a request for a node will allocate one node at the first call that sees an empty freelist, two on the next such call and four on subsequent such calls. Allocated but as-yet unused nodes are parked on the freelist. This has the effect of reducing the number of calls to the `LifoAlloc` by a factor of 4 for all but the smallest trees. It also helps reduce the extent to which each tree node ends up in its own cache line. ::allocateNode has been split into two pieces: an inlineable hot path, and an out of line cold path `::allocateNodeOOL`, which allocates a new group of up to 4 nodes as necessary. For the wasm_bullet testcase in Embenchen, the costs of `BacktrackingAllocator::go` on x86_64-linux are reduced from 491.93 million insns to 486.35 million insns, a 1.1% reduction. The number of cache misses in a 48k D1 with 64-byte lines is reduced from 6.57 million to 6.40 million, a 2.6% reduction. Differential Revision: https://phabricator.services.mozilla.com/D148890
bb9bbdfd0769c023adf0f29650571ddcd29f8e17: Bug 1773368 - Remove deprecated typedefs for wasm objects. r=rhunt
Ted Campbell <tcampbell@mozilla.com> - Fri, 10 Jun 2022 15:58:08 +0000 - rev 620517
Push 39829 by csabou@mozilla.com at Fri, 10 Jun 2022 21:34:50 +0000
Bug 1773368 - Remove deprecated typedefs for wasm objects. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D148818
cc5be1d8d92976bd5fd4ddd003b183fb678beed7: Bug 1772282 - (part 3 of 3) Replace js/src/ds/SplayTree.h with an AvlTree.h and change all of SM's uses accordingly. r=rhunt.
Julian Seward <jseward@acm.org> - Fri, 10 Jun 2022 08:58:06 +0000 - rev 620484
Push 39829 by csabou@mozilla.com at Fri, 10 Jun 2022 21:34:50 +0000
Bug 1772282 - (part 3 of 3) Replace js/src/ds/SplayTree.h with an AvlTree.h and change all of SM's uses accordingly. r=rhunt. This patch simply removes js/src/ds/SplayTree.h and makes no other changes. Differential Revision: https://phabricator.services.mozilla.com/D148248
63cb0d0c4935a482dececb9f6ac5537cff5d0901: Bug 1772282 - (part 1 of 3) Replace js/src/ds/SplayTree.h with an AvlTree.h and change all of SM's uses accordingly. r=rhunt.
Julian Seward <jseward@acm.org> - Fri, 10 Jun 2022 08:58:05 +0000 - rev 620482
Push 39829 by csabou@mozilla.com at Fri, 10 Jun 2022 21:34:50 +0000
Bug 1772282 - (part 1 of 3) Replace js/src/ds/SplayTree.h with an AvlTree.h and change all of SM's uses accordingly. r=rhunt. This patch adds js/src/ds/AvlTree.h, which provides facilities similar to js/src/ds/SplayTree.h, but with reduced lookup costs. The patch merely adds the code and test cases but does not make any use of it. To make it easy to change use points, the public interface is identical in naming and semantics to that of SplayTree.h, to the extent it can be. See comments on AvlTree::contains and AvlTree::maybeLookup. The memory allocation strategy is also the same. There are new facilities for iterating over a tree, either completely or from an arbitrary start point. AvlTree.h is structured so as to hide the implementation from users as much as possible. Most of the file is an implementation class `AvlTreeImpl`, which contains all the difficult stuff -- AVL insertion, deletion, rebalancing, search and iteration. The end-user interface, plus documentation, is in a small class `AvlTree` at the bottom of the file. The patch also contains self-test code, testAvlTree.cpp. The public interface class `AvlTree` is (intentionally) too restrictive for proper testing. So this file defines its own testing interface class, `AvlTreeTestIF`. It then uses that to test that insertion, deletion and iteration work correctly, and that the tree remains balanced. Differential Revision: https://phabricator.services.mozilla.com/D148246
e32ea06d4f36b0f8b6e8494626b57ef2e5212e43: Bug 1772987 part 3 - Save caller FP in JitEntry stub. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Thu, 09 Jun 2022 06:07:05 +0000 - rev 620225
Push 39822 by abutkovits@mozilla.com at Thu, 09 Jun 2022 16:01:42 +0000
Bug 1772987 part 3 - Save caller FP in JitEntry stub. r=rhunt The JitEntry stub clobbers the FP register in the prologue (to make stack unwinding work). We need to change it to restore FP to allow adding frame pointers to Warp frames. This patch changes the prologue to the standard frame prologue, and the epilogue now stores the return offset to let the profiler correctly handle the instructions between popping FP and returning. ARM64 adds some complexity because the JIT ABI aligns the stack at the return address, so we need to add a padding word to maintain 16-byte stack alignment. When we add the `callerFP` to `JitFrameLayout` (similar to `wasm::Frame`) we can hopefully simplify this a bit. Differential Revision: https://phabricator.services.mozilla.com/D148487
fa2fcbc1942cc3463464d5d815d390790242fa4f: Bug 1772987 part 2 - Rename unwoundIon* to unwoundJit*. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Thu, 09 Jun 2022 06:07:04 +0000 - rev 620224
Push 39822 by abutkovits@mozilla.com at Thu, 09 Jun 2022 16:01:42 +0000
Bug 1772987 part 2 - Rename unwoundIon* to unwoundJit*. r=rhunt The JitEntry stub is also used for calls from JS Baseline Interpreter/JIT code. Depends on D148485 Differential Revision: https://phabricator.services.mozilla.com/D148486
6d3766652a6afcb1bc0c17494a95ddbe6078962e: Bug 1772987 part 1 - Add GenerateJitEntryEpilogue. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Thu, 09 Jun 2022 06:07:04 +0000 - rev 620223
Push 39822 by abutkovits@mozilla.com at Thu, 09 Jun 2022 16:01:42 +0000
Bug 1772987 part 1 - Add GenerateJitEntryEpilogue. r=rhunt A later patch will add an `offsets` argument to save the return offset. Differential Revision: https://phabricator.services.mozilla.com/D148485
1c368ccd8f66422c342c72b0172a0a49244d8057: Bug 1770081 - Update wat/wast rust libraries. r=rhunt,glandium
Yury Delendik <ydelendik@mozilla.com> - Tue, 07 Jun 2022 20:29:20 +0000 - rev 620001
Push 39813 by nfay@mozilla.com at Wed, 08 Jun 2022 03:52:13 +0000
Bug 1770081 - Update wat/wast rust libraries. r=rhunt,glandium wat syntax change/fixes: remove data "passive" fix table.copy misc call_indirect fixes Differential Revision: https://phabricator.services.mozilla.com/D146863
2b9fc0cd949280a3c4b74087ba8c561906b6a382: Bug 1770260 - wasm: Rename references to tls in js/src/jit/mips-shared r=rhunt
Mike Hommey <mh+mozilla@glandium.org> - Fri, 20 May 2022 21:31:53 +0000 - rev 618412
Push 39726 by ncsoregi@mozilla.com at Sat, 21 May 2022 09:47:23 +0000
Bug 1770260 - wasm: Rename references to tls in js/src/jit/mips-shared r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D146855
3204ddf7f0567d5c0b2fa05901330cea0ce5a30c: Bug 1768428 - Check that `c_compiler` is defined in `wasm_verify_serialization_for_size`. r=rhunt
William Durand <will+git@drnd.me> - Mon, 09 May 2022 14:26:57 +0000 - rev 616690
Push 39673 by nbeleuzu@mozilla.com at Tue, 10 May 2022 03:50:31 +0000
Bug 1768428 - Check that `c_compiler` is defined in `wasm_verify_serialization_for_size`. r=rhunt `c_compiler` appears to be undefined when we use artifact + debug mode. Differential Revision: https://phabricator.services.mozilla.com/D145868
c0c5e5b8909013fdf6cd4b5ee60e4a29b7f1e7c7: Bug 1767931 - Track frame size better. r=rhunt
Lars T Hansen <lhansen@mozilla.com> - Mon, 09 May 2022 11:51:09 +0000 - rev 616653
Push 39671 by nfay@mozilla.com at Mon, 09 May 2022 15:57:28 +0000
Bug 1767931 - Track frame size better. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D145711
363d45d9ebf163939a0be87d94312a0d53f6d150: Bug 1764367 - Replace use of MachineState for stack maps with a RegisterOffsets class. r=rhunt
Jan de Mooij <jdemooij@mozilla.com> - Wed, 13 Apr 2022 08:30:56 +0000 - rev 614153
Push 39558 by nfay@mozilla.com at Wed, 13 Apr 2022 18:06:38 +0000
Bug 1764367 - Replace use of MachineState for stack maps with a RegisterOffsets class. r=rhunt The goal is to stop using MachineState for this, so that we can refactor MachineState separately for the JS use cases. This also has some other benefits: the new RegisterOffsets type is much smaller than MachineState, because it doesn't store any information for floating-point registers and it stores a 32-bit offset instead of a pointer. This also gets rid of some casts. Differential Revision: https://phabricator.services.mozilla.com/D143508
8f6f5f4cc1ecb1f1a46f2bdfb5d67dc2a319b171: Bug 1737266 - inline memory.copy and memory.fill in ion for memory64. r=rhunt
Lars T Hansen <lhansen@mozilla.com> - Thu, 31 Mar 2022 06:14:58 +0000 - rev 612864
Push 39500 by nfay@mozilla.com at Thu, 31 Mar 2022 09:35:41 +0000
Bug 1737266 - inline memory.copy and memory.fill in ion for memory64. r=rhunt A completely straightforward adaptation of existing code for 32-bit. I opted not to do this for baseline, indeed I think that the implementation of this for baseline on mem32 was a bridge too far. Discuss. Differential Revision: https://phabricator.services.mozilla.com/D142040
e189e7436b08413dc458a62f8d1bd934581250f5: Bug 1744513 - Document the wasm builtin and stubs ABIs. r=rhunt
Lars T Hansen <lhansen@mozilla.com> - Mon, 14 Mar 2022 06:53:33 +0000 - rev 610492
Push 39415 by ctuns@mozilla.com at Mon, 14 Mar 2022 15:45:26 +0000
Bug 1744513 - Document the wasm builtin and stubs ABIs. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D140715
226722322ce34f89440e36f489295eb9ef856783: Bug 1758450 - Fork FillArgumentArrayForExit. r=rhunt
Lars T Hansen <lhansen@mozilla.com> - Wed, 09 Mar 2022 05:31:00 +0000 - rev 610064
Push 39393 by ncsoregi@mozilla.com at Wed, 09 Mar 2022 21:37:17 +0000
Bug 1758450 - Fork FillArgumentArrayForExit. r=rhunt Simplify this function by splitting it into two different functions; add various comments for clarification. Differential Revision: https://phabricator.services.mozilla.com/D140509
d3a6818fe913c62e4a2c4d63d08f6876fd41173f: Bug 1754018 - CL is exclusive with exceptions. r=rhunt
Lars T Hansen <lhansen@mozilla.com> - Thu, 24 Feb 2022 07:33:32 +0000 - rev 608591
Push 39332 by abutkovits@mozilla.com at Thu, 24 Feb 2022 09:36:48 +0000
Bug 1754018 - CL is exclusive with exceptions. r=rhunt This uses the same mechanism as SIMD configuration: exceptions are disabled by default if cranelift is enabled, and enabling both explicitly will cause configuration to fail. Differential Revision: https://phabricator.services.mozilla.com/D139129
605b73fcd1e4eaf384123b8497229ed629ea05ad: Bug 1754260 - Move wasm intrinsic operations from 0xFA prefix. r=rhunt
Yury Delendik <ydelendik@mozilla.com> - Wed, 23 Feb 2022 22:24:43 +0000 - rev 608560
Push 39330 by mlaza@mozilla.com at Thu, 24 Feb 2022 03:51:41 +0000
Bug 1754260 - Move wasm intrinsic operations from 0xFA prefix. r=rhunt Differential Revision: https://phabricator.services.mozilla.com/D139405