Closed Bug 1944011 Opened 11 months ago Closed 11 months ago

Generate boilerplate for more LIR instructions

Categories

(Core :: JavaScript Engine: JIT, enhancement, P1)

enhancement

Tracking

()

RESOLVED FIXED
136 Branch
Tracking Status
firefox136 --- fixed

People

(Reporter: anba, Assigned: anba)

References

(Blocks 1 open bug)

Details

Attachments

(84 files)

48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
No description provided.

Changes:

  • Replace import for "six" with "io".
  • Use format strings.
  • Properly handle the case when BoxedValue and Int64 operands are used.
  • Support Int64 temps.
  • Fix assertion expressions.

Some of these use Int64 temps which are supported through part 1.

The number of temp-registers used by these atomics operations is arch-specific.

Part 3 unconvered code which doesn't use ToTempRegisterOrInvalid. Handle also
the remaining code which can be updated to ToTempRegisterOrInvalid.

Remove unused default arguments, so it's easier to generate the boilerplate for
these instructions.

This involved reordering the JSContext temp-register.

After removing the const Range* range() {...} getters, we can also generate
the boilerplate code for these instructions.

Add a new "successors" attribute that, if present, will generate control
instruction LIR nodes.

Then update a few simple cases to use the new attribute.

Moving the assertion from the Assembler::Condition cond() {...} getter allows
to generate the LIR boilerplate for these two instructions, too.

Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/239ccdcdf890 Part 1: Modernise GenerateLIRFiles.py. r=jandem https://hg.mozilla.org/integration/autoland/rev/8fce999b3fb3 Part 2: Generate boilerplate for more LIR nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/03fa134d25af Part 3: Generate LIR boilerplate for atomics operations. r=jandem https://hg.mozilla.org/integration/autoland/rev/6137bbc143b4 Part 4: Use ToTempRegisterOrInvalid where applicable. r=jandem https://hg.mozilla.org/integration/autoland/rev/f91049616a51 Part 5: Remove unused default arguments. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/dab74f36ecea Part 6: Generate boilerplate for DOM LIR nodes. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/84d654fa0df1 Part 7: Generate boilerplate for assert-range LIR nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/00d2f2325196 Part 8: Generate boilerplate for control instruction LIR nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/110ced30d11e Part 9: Generate boilerplate for LBitAndAndBranch and LBitAnd64AndBranch. r=jandem https://hg.mozilla.org/integration/autoland/rev/c97b3983de6f Part 10: Remove unused LUnaryMath. r=jandem

Some LIR instructions were almost eligible for automatic boilerplate generation,
except they had an additional extraName method. The extraName() method is
called in LNode::getExtraName(), which requires JS_JITSPEW to be defined.

Adding extra_name to request adding the declaration of extraName() and then
moving the method definition out of line enables to generate the LIR boilerplate
for more cases.

  • If we accept replacing LMinMaxBase with LInstructionHelper<1, 2, 0> in
    one place, we can generate the boilerplate for the non-array version.
  • After removing isMax() from LMinMaxArray{I,D}, we can generate the LIR
    boilerplate for the array version.

Some additional simple cases where the boilerplate can be generated.

There are comments which mentions this is used for LTestVAndBranch, but that's
actually not true anymore.

The generated LInt64Allocation getters are already marked as const. Also
mark the LAllocation getters as const for consistency.

In preparation for later patches, update LIR nodes from "LIR-shared.h" to use
named getters instead of getInt64Operand.

Drive-by change: Remove unnecessary const for value variables.

Add named Int64 operand getters to arch-specific LIR nodes.

Replace const LInt64Allocation by:

  1. When a parameter, use instead const LInt64Allocation&.
  2. When a return-by-value, drop the const.

Returning values as const should be avoid in general, because it interferes
with move semantics.

In preparation for later patches, alreay update the CopySign nodes to use
named getters.

Replace getTemp(n) calls with the named temp getter in "CodeGenerator.cpp".

LDivI was defined separately for each architecture and on x86-shared, it
additionally defined extraName(). Use a single definition for all
architecture, so extraName() is available everywhere.

Similar to LDivI, LTableSwitch and LTableSwitchV were also defined for each
architecture, even though we can actually use a shared definition.

Also changes the newLTableSwitch and newLTableSwitchV method to only
perform the allocation. The pointer to MTableSwitch is then later assigned
through the add call.

More updates to used named getters, which avoids referring to the operands using
constants.

  • Let LBitOpI inherit from LBinaryMath to be able to use lhs and rhs getters.
  • Remove unnecessary output() method definitions and instead let it use the
    definition from LInstructionFixedDefsTempsHelper::output.

Use the shared MacroAssembler methods to address the comment in the ARM64 code.

Another case like LDivI where we can use a shared definition.

These need a temp register only on x86 and x64.

Also updates lowering on 32-bit platforms to directly allocate an LInt64Allocation
instead of two LAllocations. (This matches the JS code for atomics, too.)

These are almost the same everywhere, except that the operands are sometimes in
a different order...

Blocks: sm-jits
Severity: -- → N/A
Priority: -- → P2
Blocks: sm-opt-jits
No longer blocks: sm-jits
Type: task → enhancement
Priority: P2 → P1

Drive-by change:

  • Replace temp(LDefinition::GENERAL) with just temp(), because it's not
    necessary to explicitly pass the default argument.

Generate getters for boxed operands which return LBoxAllocation, similar to
how LInt64Allocation is returned for int64 allocations.

Part 39 will then update all current ToValue callers to use newly generated
getters.

Update all ToValue callers at once to avoid running in name resolution
errors: The various CodeGenerator classes all define ToValue as an method,
which hides the newly added ToValue function in the js::jit namespace.

Both classes can be merged after part 41.

Needs a temp register on non-ARM targets, except for that difference the
definition can be shared.

Remove CodeGeneratorARM64::emitSimpleBinaryI64 by aligning codegen for
AddI64 to match AddI more closely. (Same for subtraction and bit-ops.)

That way we also avoid calling getInt64Operand and can instead use the
named getters.

Many ALU and FPU instructions don't initialise their operands in the
constructor. To support this pattern add a new attribute "defer_init", which
allows initialising operands and temps through setter methods.

The next parts will use this new attribute.

lowerForShiftInt64 needed some larger changes because the LIR instruction
generator currently places all word-sized operands first, whereas LShiftI64
and LRotateI64 have an Int64 operand first, followed by a word-sized operand.

And in addition to that, if we want to use newly generated setters, we also
need separate code paths, because the operands are differently named for
LRotateI64 when compared to LShiftI64.

LMulI has the same definition for all targets except for x86 and x64. On
those two targets the operands are directly initialised and a third
operand is used.

Also allows to remove LBinaryCallInstructionHelper.

Duplicate of this bug: 1418989

Multiple Wasm instructions refer to word-sized operands using index constants.
Supporting this use case enables generating the boilerplate for Wasm instructions.

Generate the boilerplate for the three WasmSelect instructions.

  • Changed lowering to allocate temp register first to avoid setTemp calls.
  • Reordered code for MIPS lowering to match changes in part 55.

Drive-by change:

  • Clean-up lowering to avoid duplicate lines to allocate registers.

Slight change in behaviour:
The generated LWasmBinarySimd128WithConstant::rhs() getter returns SimdConstant
per value instead of as const SimdConstant&.

That way we don't have to worry about incorrect memory barriers in LMemoryBarrier
and can remove the assertion in the constructor. That in turn allows to generate
the boilerplate for LMemoryBarrier. (See part 78.)

Using a separate type also seems to lead to better code generation.

For example Synchronization::isDone() was compiled to this on Clang:

mov     eax, edi
movzx   ecx, ah
movzx   eax, al
or      ax, cx
sete    al
ret

With this patch it's now compiled to:

test    di, di
sete    al
ret

There is no change for GCC, it's still compiled to:

mov     eax, edi
mov     edx, edi
or      dl, ah
test    dl, dl
sete    al
ret

Named getters make this helper obsolete.

Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/fad919afeb2c Part 11: Generate LIR boilerplate when extraName method is present. r=jandem https://hg.mozilla.org/integration/autoland/rev/b20c82e5fe2b Part 12: Generate boilerplate for MinMax LIR nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/0cf3f2725535 Part 13: Generate boilerplate for three remaining simple cases. r=jandem https://hg.mozilla.org/integration/autoland/rev/b5256903d442 Part 14: Remove unused CodeGeneratorXXX::splitTagForTest. r=jandem https://hg.mozilla.org/integration/autoland/rev/06c418e3cd60 Part 15: Make generated LIR operands getters const. r=jandem https://hg.mozilla.org/integration/autoland/rev/68439cf27285 Part 16: Prefer named getters instead of getInt64Operand calls. r=jandem https://hg.mozilla.org/integration/autoland/rev/96ed85f15893 Part 17: Prefer named getters instead of getInt64Operand calls (arch-specific). r=jandem https://hg.mozilla.org/integration/autoland/rev/0ba88191ffea Part 18: Fix "const LInt64Allocation" occurences. r=jandem https://hg.mozilla.org/integration/autoland/rev/af5f70a69ea2 Part 19: Add named getters to CopySign LIR nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/b03202f06983 Part 20: Use named temp definition getters if possible. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/5ff7dd0d2cdd Part 21: Generate LIR boilerplate for LDivI. r=jandem https://hg.mozilla.org/integration/autoland/rev/cc823a17aeb5 Part 22: Generate LIR boilerplate for TableSwitch nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/748a4ed1960b Part 23: Prefer named accessor instead of getOperand or getDef. r=jandem https://hg.mozilla.org/integration/autoland/rev/5c9329a4876c Part 24: Prefer shared MacroAssembler methods for LWrapInt64ToInt32 codegen. r=jandem https://hg.mozilla.org/integration/autoland/rev/b6c9cc580edc Part 25: Generate boilerplate for LModPowTwoI. r=jandem https://hg.mozilla.org/integration/autoland/rev/801fb98445de Part 26: Generate boilerplate for Int64ToFloatingPoint. r=jandem https://hg.mozilla.org/integration/autoland/rev/01e9c9b5fc1d Part 27: Generate boilerplate for WasmUint32To{Double,Float32}. r=jandem https://hg.mozilla.org/integration/autoland/rev/9506e0d74a2e Part 28: Generate boilerplate for WasmTruncateToInt64. r=jandem https://hg.mozilla.org/integration/autoland/rev/0eb471ea1b97 Part 29: Generate boilerplate for LWasmAtomicBinopI64. r=jandem https://hg.mozilla.org/integration/autoland/rev/28f5cebc6891 Part 30: Generate boilerplate for LWasmAtomicExchangeI64. r=jandem https://hg.mozilla.org/integration/autoland/rev/281acb90c6dc Part 31: Generate boilerplate for LWasmCompareExchangeI64. r=jandem https://hg.mozilla.org/integration/autoland/rev/ba2725f72696 Part 32: Generate boilerplate for LWasmAtomicLoadI64. r=jandem https://hg.mozilla.org/integration/autoland/rev/d16ef8bb4b25 Part 33: Generate boilerplate for LWasmAtomicStoreI64. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/c73e8261be76 Part 34: Generate boilerplate for LModMaskI. r=iain https://hg.mozilla.org/integration/autoland/rev/253359762534 Part 35: Generate boilerplate for some ARM64 Div and Mod instructions. r=iain https://hg.mozilla.org/integration/autoland/rev/131e3ec05331 Part 36: Generate boilerplate for LSoftDivI and LSoftModI. r=iain
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/9182bd881254 Part 37: Remove unused CodeGeneratorXXX::ToTempValue. r=iain https://hg.mozilla.org/integration/autoland/rev/fb6202ba8cdb Part 38: Add LBoxAllocation getters. r=iain https://hg.mozilla.org/integration/autoland/rev/6ec8a25c67c1 Part 39: Use boxed operands getters. r=iain https://hg.mozilla.org/integration/autoland/rev/8eb6d0534850 Part 40: Replace another caller with named getters. r=iain

Backed out comment 93 for causing build bustages @CodeGenerator.cpp.

Flags: needinfo?(andrebargull)
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/508edd0d6930 Part 37: Remove unused CodeGeneratorXXX::ToTempValue. r=iain https://hg.mozilla.org/integration/autoland/rev/dafedbc91be0 Part 38: Add LBoxAllocation getters. r=iain https://hg.mozilla.org/integration/autoland/rev/bbdd4444411e Part 39: Use boxed operands getters. r=iain https://hg.mozilla.org/integration/autoland/rev/f0b49aefdeed Part 40: Replace another caller with named getters. r=iain https://hg.mozilla.org/integration/autoland/rev/b80311e428f4 Part 41: Generate boilerplate for LUnboxFloatingPoint. r=iain https://hg.mozilla.org/integration/autoland/rev/997a9233ebce Part 42: Combine LUnboxBase and LUnbox. r=iain https://hg.mozilla.org/integration/autoland/rev/6e8d5e2f69a2 Part 43: Generate boilerplate for LBoxFloatingPoint. r=iain https://hg.mozilla.org/integration/autoland/rev/341ab7cf9661 Part 44: Generate boilerplate for LModI. r=iain

(In reply to agoloman from comment #94)

Backed out comment 93 for causing build bustages @CodeGenerator.cpp.

Part 39 was missing some stubs for a class which got removed in part 41. This issue only applied to the "wasm32" and "none" JIT backends.


For context why I have to land the patches in smaller stacks:

  1. Landing large patch stacks leads to Lando timeouts: bug 1747104, bug 1925039
  2. Some patches in the patch stack are also affected by this Lando bug: bug 1878430, bug 1925062
Flags: needinfo?(andrebargull)
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/ef40425942c5 Part 45: Remove CodeGeneratorARM64::emitSimpleBinaryI64. r=iain https://hg.mozilla.org/integration/autoland/rev/47c406a8b015 Part 46: Share implementation for CodeGenerator::visitRotateI64. r=iain
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/dedd8972bd7d Part 47: Add option to defer initialisation of operands and temps. r=iain https://hg.mozilla.org/integration/autoland/rev/6f7a055f0105 Part 48: Generate boilerplate for LIR nodes with deferred initialisation. r=iain https://hg.mozilla.org/integration/autoland/rev/f7628d6022e9 Part 49: Generate boilerplate for LMulI. r=iain https://hg.mozilla.org/integration/autoland/rev/f2c987176c86 Part 50: Generate boilerplate for LSoftUDivOrMod. r=iain

Would these patches have any (positive or negative, but mainly negative) impact on the build time?

The patches shouldn't affect build time much. It's mostly replacing hand-written C++ classes with generated classes.

Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/96bc865569c7 Part 51: Generate LIR boilerplate for simple Wasm cases. r=jandem https://hg.mozilla.org/integration/autoland/rev/0b41ec74df7c Part 52: Add index for word operands. r=jandem https://hg.mozilla.org/integration/autoland/rev/c2225c6cc9bc Part 53: Generate LIR instructions for WasmSelect nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/d174a46baf7c Part 54: Generate LIR instructions for WasmLoad nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/245eb6d86319 Part 55: Generate LIR instructions for WasmStore nodes. r=jandem https://hg.mozilla.org/integration/autoland/rev/8e868f706d75 Part 56: Generate boilerplate for LWasmCompareExchangeHeap. r=jandem https://hg.mozilla.org/integration/autoland/rev/fbd6883e975f Part 57: Generate boilerplate for LWasmAtomicExchangeHeap. r=jandem https://hg.mozilla.org/integration/autoland/rev/18a3424e603e Part 58: Generate boilerplate for LWasmAtomicBinopHeap. r=jandem https://hg.mozilla.org/integration/autoland/rev/042dd9b04967 Part 59: Generate boilerplate for LWasmAtomicBinopHeapForEffect. r=jandem https://hg.mozilla.org/integration/autoland/rev/abeb9668ebac Part 60: Generate boilerplate for LWasmLoadLaneSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/c36071c75ee3 Part 61: Generate boilerplate for WasmStoreLaneSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/1717b088cc38 Part 62: Generate boilerplate for LWasmReduceSimd128ToInt64. r=jandem https://hg.mozilla.org/integration/autoland/rev/b693c987df08 Part 63: Generate boilerplate for LWasmReduceSimd128. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/2fbdd1f54343 Part 64: Generate boilerplate for LWasmUnarySimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/a9a2d234e2fe Part 65: Generate boilerplate for LWasmInt64ToSimd128. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/faf015a1d824 Part 66: Generate boilerplate for LWasmScalarToSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/d43f91fe327d Part 67: Generate boilerplate for LWasmReplaceInt64LaneSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/fbab15217bd5 Part 68: Generate boilerplate for LWasmReplaceLaneSimd128. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/67398dad4dcb Part 69: Generate boilerplate for LWasmPermuteSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/39043d1461f4 Part 70: Generate boilerplate for LWasmShuffleSimd128. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/5838eb5dd844 Part 71: Generate boilerplate for LWasmSignReplicationSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/12e97e4915db Part 72: Generate boilerplate for LWasmConstantShiftSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/191436781efa Part 73: Generate boilerplate for LWasmVariableShiftSimd128. r=jandem https://hg.mozilla.org/integration/autoland/rev/9be821a42253 Part 74: Generate boilerplate for LWasmBinarySimd128WithConstant. r=jandem https://hg.mozilla.org/integration/autoland/rev/a2074d2f74d7 Part 75: Generate boilerplate for LWasmBinarySimd128. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/50a3c4a732f5 Part 76: Generate boilerplate for LWasmTernarySimd128. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/e5f6d26e73a0 Part 77: Replace MemoryBarrierBits with a typed MemoryBarrier class. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/c69c2ac43479 Part 78: Generate boilerplate for LMemoryBarrier. r=jandem https://hg.mozilla.org/integration/autoland/rev/070157eb340c Part 79: Generate boilerplate for LDivPowTwoI. r=jandem https://hg.mozilla.org/integration/autoland/rev/97b9c76902ea Part 80: Generate boilerplate for LUnreachableResultV. r=jandem
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/1d641642640d Part 81: Generate boilerplate for LUnreachable. r=jandem https://hg.mozilla.org/integration/autoland/rev/f3e582488926 Part 82: Use named getter for LOsrReturnValue. r=jandem https://hg.mozilla.org/integration/autoland/rev/dd6602ee8a8f Part 83: Fix register allocation for LAtomicTypedArrayElementBinop64 on RISCV. r=jandem https://hg.mozilla.org/integration/autoland/rev/990438131ba7 Part 84: Remove LInstructionFixedDefsTempsHelper::input. r=jandem
Keywords: leave-open
Regressions: 1945305
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: