| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 9829378 commit 4d0bc38
8 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -36,7 +36,7 @@ | |||
| 36 | 36 | ||
| 37 | 37 | # Reset this number to 0 on major V8 upgrades. | |
| 38 | 38 | # Increment by one for each non-official patch applied to deps/v8. | |
| 39 | - 'v8_embedder_string': '-node.55', | ||
| 39 | + 'v8_embedder_string': '-node.56', | ||
| 40 | 40 | ||
| 41 | 41 | ##### V8 defaults for Node.js ##### | |
| 42 | 42 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -437,7 +437,7 @@ void LiftoffAssembler::LoadConstant(LiftoffRegister reg, WasmValue value, | |||
| 437 | 437 | vmov(liftoff::GetFloatRegister(reg.fp()), value.to_f32_boxed()); | |
| 438 | 438 | break; | |
| 439 | 439 | case ValueType::kF64: { | |
| 440 | - Register extra_scratch = GetUnusedRegister(kGpReg).gp(); | ||
| 440 | + Register extra_scratch = GetUnusedRegister(kGpReg, {}).gp(); | ||
| 441 | 441 | vmov(reg.fp(), Double(value.to_f64_boxed().get_bits()), extra_scratch); | |
| 442 | 442 | break; | |
| 443 | 443 | } | |
@@ -1173,7 +1173,7 @@ void LiftoffAssembler::StoreCallerFrameSlot(LiftoffRegister src, | |||
| 1173 | 1173 | void LiftoffAssembler::MoveStackValue(uint32_t dst_offset, uint32_t src_offset, | |
| 1174 | 1174 | ValueType type) { | |
| 1175 | 1175 | DCHECK_NE(dst_offset, src_offset); | |
| 1176 | - LiftoffRegister reg = GetUnusedRegister(reg_class_for(type)); | ||
| 1176 | + LiftoffRegister reg = GetUnusedRegister(reg_class_for(type), {}); | ||
| 1177 | 1177 | Fill(reg, src_offset, type); | |
| 1178 | 1178 | Spill(dst_offset, reg, type); | |
| 1179 | 1179 | } | |
@@ -1216,7 +1216,7 @@ void LiftoffAssembler::Spill(int offset, WasmValue value) { | |||
| 1216 | 1216 | // The scratch register will be required by str if multiple instructions | |
| 1217 | 1217 | // are required to encode the offset, and so we cannot use it in that case. | |
| 1218 | 1218 | if (!ImmediateFitsAddrMode2Instruction(dst.offset())) { | |
| 1219 | - src = GetUnusedRegister(kGpReg).gp(); | ||
| 1219 | + src = GetUnusedRegister(kGpReg, {}).gp(); | ||
| 1220 | 1220 | } else { | |
| 1221 | 1221 | src = temps.Acquire(); | |
| 1222 | 1222 | } | |
@@ -1758,7 +1758,7 @@ void LiftoffAssembler::emit_f32_copysign(DoubleRegister dst, DoubleRegister lhs, | |||
| 1758 | 1758 | DoubleRegister rhs) { | |
| 1759 | 1759 | constexpr uint32_t kF32SignBit = uint32_t{1} << 31; | |
| 1760 | 1760 | UseScratchRegisterScope temps(this); | |
| 1761 | - Register scratch = GetUnusedRegister(kGpReg).gp(); | ||
| 1761 | + Register scratch = GetUnusedRegister(kGpReg, {}).gp(); | ||
| 1762 | 1762 | Register scratch2 = temps.Acquire(); | |
| 1763 | 1763 | VmovLow(scratch, lhs); | |
| 1764 | 1764 | // Clear sign bit in {scratch}. | |
@@ -1777,7 +1777,7 @@ void LiftoffAssembler::emit_f64_copysign(DoubleRegister dst, DoubleRegister lhs, | |||
| 1777 | 1777 | // On arm, we cannot hold the whole f64 value in a gp register, so we just | |
| 1778 | 1778 | // operate on the upper half (UH). | |
| 1779 | 1779 | UseScratchRegisterScope temps(this); | |
| 1780 | - Register scratch = GetUnusedRegister(kGpReg).gp(); | ||
| 1780 | + Register scratch = GetUnusedRegister(kGpReg, {}).gp(); | ||
| 1781 | 1781 | Register scratch2 = temps.Acquire(); | |
| 1782 | 1782 | VmovHigh(scratch, lhs); | |
| 1783 | 1783 | // Clear sign bit in {scratch}. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -130,7 +130,7 @@ inline Register GetTmpByteRegister(LiftoffAssembler* assm, Register candidate) { | |||
| 130 | 130 | if (candidate.is_byte_register()) return candidate; | |
| 131 | 131 | // {GetUnusedRegister()} may insert move instructions to spill registers to | |
| 132 | 132 | // the stack. This is OK because {mov} does not change the status flags. | |
| 133 | - return assm->GetUnusedRegister(liftoff::kByteRegs).gp(); | ||
| 133 | + return assm->GetUnusedRegister(liftoff::kByteRegs, {}).gp(); | ||
| 134 | 134 | } | |
| 135 | 135 | ||
| 136 | 136 | inline void MoveStackValue(LiftoffAssembler* assm, const Operand& src, | |
@@ -1468,7 +1468,7 @@ inline void EmitFloatMinOrMax(LiftoffAssembler* assm, DoubleRegister dst, | |||
| 1468 | 1468 | ||
| 1469 | 1469 | // We need one tmp register to extract the sign bit. Get it right at the | |
| 1470 | 1470 | // beginning, such that the spilling code is not accidentially jumped over. | |
| 1471 | - Register tmp = assm->GetUnusedRegister(kGpReg).gp(); | ||
| 1471 | + Register tmp = assm->GetUnusedRegister(kGpReg, {}).gp(); | ||
| 1472 | 1472 | ||
| 1473 | 1473 | #define dop(name, ...) \ | |
| 1474 | 1474 | do { \ | |
@@ -1531,9 +1531,9 @@ void LiftoffAssembler::emit_f32_max(DoubleRegister dst, DoubleRegister lhs, | |||
| 1531 | 1531 | void LiftoffAssembler::emit_f32_copysign(DoubleRegister dst, DoubleRegister lhs, | |
| 1532 | 1532 | DoubleRegister rhs) { | |
| 1533 | 1533 | static constexpr int kF32SignBit = 1 << 31; | |
| 1534 | - Register scratch = GetUnusedRegister(kGpReg).gp(); | ||
| 1535 | - Register scratch2 = | ||
| 1536 | - GetUnusedRegister(kGpReg, LiftoffRegList::ForRegs(scratch)).gp(); | ||
| 1534 | + LiftoffRegList pinned; | ||
| 1535 | + Register scratch = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); | ||
| 1536 | + Register scratch2 = GetUnusedRegister(kGpReg, pinned).gp(); | ||
| 1537 | 1537 | Movd(scratch, lhs); // move {lhs} into {scratch}. | |
| 1538 | 1538 | and_(scratch, Immediate(~kF32SignBit)); // clear sign bit in {scratch}. | |
| 1539 | 1539 | Movd(scratch2, rhs); // move {rhs} into {scratch2}. | |
@@ -1660,9 +1660,9 @@ void LiftoffAssembler::emit_f64_copysign(DoubleRegister dst, DoubleRegister lhs, | |||
| 1660 | 1660 | static constexpr int kF32SignBit = 1 << 31; | |
| 1661 | 1661 | // On ia32, we cannot hold the whole f64 value in a gp register, so we just | |
| 1662 | 1662 | // operate on the upper half (UH). | |
| 1663 | - Register scratch = GetUnusedRegister(kGpReg).gp(); | ||
| 1664 | - Register scratch2 = | ||
| 1665 | - GetUnusedRegister(kGpReg, LiftoffRegList::ForRegs(scratch)).gp(); | ||
| 1663 | + LiftoffRegList pinned; | ||
| 1664 | + Register scratch = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); | ||
| 1665 | + Register scratch2 = GetUnusedRegister(kGpReg, pinned).gp(); | ||
| 1666 | 1666 | ||
| 1667 | 1667 | Pextrd(scratch, lhs, 1); // move UH of {lhs} into {scratch}. | |
| 1668 | 1668 | and_(scratch, Immediate(~kF32SignBit)); // clear sign bit in {scratch}. | |
@@ -2500,7 +2500,7 @@ void LiftoffAssembler::emit_i8x16_shl(LiftoffRegister dst, LiftoffRegister lhs, | |||
| 2500 | 2500 | void LiftoffAssembler::emit_i8x16_shli(LiftoffRegister dst, LiftoffRegister lhs, | |
| 2501 | 2501 | int32_t rhs) { | |
| 2502 | 2502 | static constexpr RegClass tmp_rc = reg_class_for(ValueType::kI32); | |
| 2503 | - LiftoffRegister tmp = GetUnusedRegister(tmp_rc); | ||
| 2503 | + LiftoffRegister tmp = GetUnusedRegister(tmp_rc, {}); | ||
| 2504 | 2504 | byte shift = static_cast<byte>(rhs & 0x7); | |
| 2505 | 2505 | if (CpuFeatures::IsSupported(AVX)) { | |
| 2506 | 2506 | CpuFeatureScope scope(this, AVX); | |
@@ -3389,7 +3389,7 @@ void LiftoffAssembler::StackCheck(Label* ool_code, Register limit_address) { | |||
| 3389 | 3389 | } | |
| 3390 | 3390 | ||
| 3391 | 3391 | void LiftoffAssembler::CallTrapCallbackForTesting() { | |
| 3392 | - PrepareCallCFunction(0, GetUnusedRegister(kGpReg).gp()); | ||
| 3392 | + PrepareCallCFunction(0, GetUnusedRegister(kGpReg, {}).gp()); | ||
| 3393 | 3393 | CallCFunction(ExternalReference::wasm_call_trap_callback_for_testing(), 0); | |
| 3394 | 3394 | } | |
| 3395 | 3395 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -542,7 +542,7 @@ LiftoffRegister LiftoffAssembler::LoadI64HalfIntoRegister(VarState slot, | |||
| 542 | 542 | if (slot.is_reg()) { | |
| 543 | 543 | return half == kLowWord ? slot.reg().low() : slot.reg().high(); | |
| 544 | 544 | } | |
| 545 | - LiftoffRegister dst = GetUnusedRegister(kGpReg); | ||
| 545 | + LiftoffRegister dst = GetUnusedRegister(kGpReg, {}); | ||
| 546 | 546 | if (slot.is_stack()) { | |
| 547 | 547 | FillI64Half(dst.gp(), slot.offset(), half); | |
| 548 | 548 | return dst; | |
@@ -581,7 +581,7 @@ void LiftoffAssembler::PrepareLoopArgs(int num) { | |||
| 581 | 581 | if (!slot.is_const()) continue; | |
| 582 | 582 | RegClass rc = | |
| 583 | 583 | kNeedI64RegPair && slot.type() == kWasmI64 ? kGpRegPair : kGpReg; | |
| 584 | - LiftoffRegister reg = GetUnusedRegister(rc); | ||
| 584 | + LiftoffRegister reg = GetUnusedRegister(rc, {}); | ||
| 585 | 585 | LoadConstant(reg, slot.constant()); | |
| 586 | 586 | slot.MakeRegister(reg); | |
| 587 | 587 | cache_state_.inc_used(reg); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -340,7 +340,7 @@ class LiftoffAssembler : public TurboAssembler { | |||
| 340 | 340 | // possible. | |
| 341 | 341 | LiftoffRegister GetUnusedRegister( | |
| 342 | 342 | RegClass rc, std::initializer_list<LiftoffRegister> try_first, | |
| 343 | - LiftoffRegList pinned = {}) { | ||
| 343 | + LiftoffRegList pinned) { | ||
| 344 | 344 | for (LiftoffRegister reg : try_first) { | |
| 345 | 345 | DCHECK_EQ(reg.reg_class(), rc); | |
| 346 | 346 | if (cache_state_.is_free(reg)) return reg; | |
@@ -349,7 +349,7 @@ class LiftoffAssembler : public TurboAssembler { | |||
| 349 | 349 | } | |
| 350 | 350 | ||
| 351 | 351 | // Get an unused register for class {rc}, potentially spilling to free one. | |
| 352 | - LiftoffRegister GetUnusedRegister(RegClass rc, LiftoffRegList pinned = {}) { | ||
| 352 | + LiftoffRegister GetUnusedRegister(RegClass rc, LiftoffRegList pinned) { | ||
| 353 | 353 | if (kNeedI64RegPair && rc == kGpRegPair) { | |
| 354 | 354 | LiftoffRegList candidates = kGpCacheRegList; | |
| 355 | 355 | Register low = pinned.set(GetUnusedRegister(candidates, pinned)).gp(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -495,7 +495,7 @@ class LiftoffCompiler { | |||
| 495 | 495 | position, __ cache_state()->used_registers, | |
| 496 | 496 | RegisterDebugSideTableEntry(DebugSideTableBuilder::kAssumeSpilling))); | |
| 497 | 497 | OutOfLineCode& ool = out_of_line_code_.back(); | |
| 498 | - Register limit_address = __ GetUnusedRegister(kGpReg).gp(); | ||
| 498 | + Register limit_address = __ GetUnusedRegister(kGpReg, {}).gp(); | ||
| 499 | 499 | LOAD_INSTANCE_FIELD(limit_address, StackLimitAddress, kSystemPointerSize); | |
| 500 | 500 | __ StackCheck(ool.label.get(), limit_address); | |
| 501 | 501 | __ bind(ool.continuation.get()); | |
@@ -604,7 +604,7 @@ class LiftoffCompiler { | |||
| 604 | 604 | *next_breakpoint_ptr_ == decoder->position()); | |
| 605 | 605 | if (!has_breakpoint) { | |
| 606 | 606 | DEBUG_CODE_COMMENT("check hook on function call"); | |
| 607 | - Register flag = __ GetUnusedRegister(kGpReg).gp(); | ||
| 607 | + Register flag = __ GetUnusedRegister(kGpReg, {}).gp(); | ||
| 608 | 608 | LOAD_INSTANCE_FIELD(flag, HookOnFunctionCallAddress, | |
| 609 | 609 | kSystemPointerSize); | |
| 610 | 610 | Label no_break; | |
@@ -923,8 +923,8 @@ class LiftoffCompiler { | |||
| 923 | 923 | constexpr RegClass result_rc = reg_class_for(result_type); | |
| 924 | 924 | LiftoffRegister src = __ PopToRegister(); | |
| 925 | 925 | LiftoffRegister dst = src_rc == result_rc | |
| 926 | - ? __ GetUnusedRegister(result_rc, {src}) | ||
| 927 | - : __ GetUnusedRegister(result_rc); | ||
| 926 | + ? __ GetUnusedRegister(result_rc, {src}, {}) | ||
| 927 | + : __ GetUnusedRegister(result_rc, {}); | ||
| 928 | 928 | CallEmitFn(fn, dst, src); | |
| 929 | 929 | __ PushRegister(ValueType(result_type), dst); | |
| 930 | 930 | } | |
@@ -951,8 +951,9 @@ class LiftoffCompiler { | |||
| 951 | 951 | static constexpr RegClass src_rc = reg_class_for(src_type); | |
| 952 | 952 | static constexpr RegClass dst_rc = reg_class_for(dst_type); | |
| 953 | 953 | LiftoffRegister src = __ PopToRegister(); | |
| 954 | - LiftoffRegister dst = src_rc == dst_rc ? __ GetUnusedRegister(dst_rc, {src}) | ||
| 955 | - : __ GetUnusedRegister(dst_rc); | ||
| 954 | + LiftoffRegister dst = src_rc == dst_rc | ||
| 955 | + ? __ GetUnusedRegister(dst_rc, {src}, {}) | ||
| 956 | + : __ GetUnusedRegister(dst_rc, {}); | ||
| 956 | 957 | DCHECK_EQ(!!can_trap, trap_position > 0); | |
| 957 | 958 | Label* trap = can_trap ? AddOutOfLineTrap( | |
| 958 | 959 | trap_position, | |
@@ -1122,8 +1123,8 @@ class LiftoffCompiler { | |||
| 1122 | 1123 | ||
| 1123 | 1124 | LiftoffRegister lhs = __ PopToRegister(); | |
| 1124 | 1125 | LiftoffRegister dst = src_rc == result_rc | |
| 1125 | - ? __ GetUnusedRegister(result_rc, {lhs}) | ||
| 1126 | - : __ GetUnusedRegister(result_rc); | ||
| 1126 | + ? __ GetUnusedRegister(result_rc, {lhs}, {}) | ||
| 1127 | + : __ GetUnusedRegister(result_rc, {}); | ||
| 1127 | 1128 | ||
| 1128 | 1129 | CallEmitFn(fnImm, dst, lhs, imm); | |
| 1129 | 1130 | __ PushRegister(ValueType(result_type), dst); | |
@@ -1141,8 +1142,8 @@ class LiftoffCompiler { | |||
| 1141 | 1142 | LiftoffRegister rhs = __ PopToRegister(); | |
| 1142 | 1143 | LiftoffRegister lhs = __ PopToRegister(LiftoffRegList::ForRegs(rhs)); | |
| 1143 | 1144 | LiftoffRegister dst = src_rc == result_rc | |
| 1144 | - ? __ GetUnusedRegister(result_rc, {lhs, rhs}) | ||
| 1145 | - : __ GetUnusedRegister(result_rc); | ||
| 1145 | + ? __ GetUnusedRegister(result_rc, {lhs, rhs}, {}) | ||
| 1146 | + : __ GetUnusedRegister(result_rc, {}); | ||
| 1146 | 1147 | ||
| 1147 | 1148 | if (swap_lhs_rhs) std::swap(lhs, rhs); | |
| 1148 | 1149 | ||
@@ -1483,20 +1484,20 @@ class LiftoffCompiler { | |||
| 1483 | 1484 | if (value_i32 == value) { | |
| 1484 | 1485 | __ PushConstant(kWasmI64, value_i32); | |
| 1485 | 1486 | } else { | |
| 1486 | - LiftoffRegister reg = __ GetUnusedRegister(reg_class_for(kWasmI64)); | ||
| 1487 | + LiftoffRegister reg = __ GetUnusedRegister(reg_class_for(kWasmI64), {}); | ||
| 1487 | 1488 | __ LoadConstant(reg, WasmValue(value)); | |
| 1488 | 1489 | __ PushRegister(kWasmI64, reg); | |
| 1489 | 1490 | } | |
| 1490 | 1491 | } | |
| 1491 | 1492 | ||
| 1492 | 1493 | void F32Const(FullDecoder* decoder, Value* result, float value) { | |
| 1493 | - LiftoffRegister reg = __ GetUnusedRegister(kFpReg); | ||
| 1494 | + LiftoffRegister reg = __ GetUnusedRegister(kFpReg, {}); | ||
| 1494 | 1495 | __ LoadConstant(reg, WasmValue(value)); | |
| 1495 | 1496 | __ PushRegister(kWasmF32, reg); | |
| 1496 | 1497 | } | |
| 1497 | 1498 | ||
| 1498 | 1499 | void F64Const(FullDecoder* decoder, Value* result, double value) { | |
| 1499 | - LiftoffRegister reg = __ GetUnusedRegister(kFpReg); | ||
| 1500 | + LiftoffRegister reg = __ GetUnusedRegister(kFpReg, {}); | ||
| 1500 | 1501 | __ LoadConstant(reg, WasmValue(value)); | |
| 1501 | 1502 | __ PushRegister(kWasmF64, reg); | |
| 1502 | 1503 | } | |
@@ -1546,7 +1547,7 @@ class LiftoffCompiler { | |||
| 1546 | 1547 | break; | |
| 1547 | 1548 | case kStack: { | |
| 1548 | 1549 | auto rc = reg_class_for(imm.type); | |
| 1549 | - LiftoffRegister reg = __ GetUnusedRegister(rc); | ||
| 1550 | + LiftoffRegister reg = __ GetUnusedRegister(rc, {}); | ||
| 1550 | 1551 | __ Fill(reg, slot.offset(), imm.type); | |
| 1551 | 1552 | __ PushRegister(slot.type(), reg); | |
| 1552 | 1553 | break; | |
@@ -1570,7 +1571,7 @@ class LiftoffCompiler { | |||
| 1570 | 1571 | } | |
| 1571 | 1572 | DCHECK_EQ(type, __ local_type(local_index)); | |
| 1572 | 1573 | RegClass rc = reg_class_for(type); | |
| 1573 | - LiftoffRegister dst_reg = __ GetUnusedRegister(rc); | ||
| 1574 | + LiftoffRegister dst_reg = __ GetUnusedRegister(rc, {}); | ||
| 1574 | 1575 | __ Fill(dst_reg, src_slot.offset(), type); | |
| 1575 | 1576 | *dst_slot = LiftoffAssembler::VarState(type, dst_reg, dst_slot->offset()); | |
| 1576 | 1577 | __ cache_state()->inc_used(dst_reg); | |
@@ -1609,7 +1610,7 @@ class LiftoffCompiler { | |||
| 1609 | 1610 | ||
| 1610 | 1611 | Register GetGlobalBaseAndOffset(const WasmGlobal* global, | |
| 1611 | 1612 | LiftoffRegList* pinned, uint32_t* offset) { | |
| 1612 | - Register addr = pinned->set(__ GetUnusedRegister(kGpReg)).gp(); | ||
| 1613 | + Register addr = pinned->set(__ GetUnusedRegister(kGpReg, {})).gp(); | ||
| 1613 | 1614 | if (global->mutability && global->imported) { | |
| 1614 | 1615 | LOAD_INSTANCE_FIELD(addr, ImportedMutableGlobals, kSystemPointerSize); | |
| 1615 | 1616 | __ Load(LiftoffRegister(addr), addr, no_reg, | |
@@ -1675,8 +1676,8 @@ class LiftoffCompiler { | |||
| 1675 | 1676 | DCHECK_EQ(type, __ cache_state()->stack_state.end()[-2].type()); | |
| 1676 | 1677 | LiftoffRegister false_value = pinned.set(__ PopToRegister(pinned)); | |
| 1677 | 1678 | LiftoffRegister true_value = __ PopToRegister(pinned); | |
| 1678 | - LiftoffRegister dst = | ||
| 1679 | - __ GetUnusedRegister(true_value.reg_class(), {true_value, false_value}); | ||
| 1679 | + LiftoffRegister dst = __ GetUnusedRegister(true_value.reg_class(), | ||
| 1680 | + {true_value, false_value}, {}); | ||
| 1680 | 1681 | __ PushRegister(type, dst); | |
| 1681 | 1682 | ||
| 1682 | 1683 | // Now emit the actual code to move either {true_value} or {false_value} | |
@@ -2075,7 +2076,7 @@ class LiftoffCompiler { | |||
| 2075 | 2076 | } | |
| 2076 | 2077 | ||
| 2077 | 2078 | void CurrentMemoryPages(FullDecoder* decoder, Value* result) { | |
| 2078 | - Register mem_size = __ GetUnusedRegister(kGpReg).gp(); | ||
| 2079 | + Register mem_size = __ GetUnusedRegister(kGpReg, {}).gp(); | ||
| 2079 | 2080 | LOAD_INSTANCE_FIELD(mem_size, MemorySize, kSystemPointerSize); | |
| 2080 | 2081 | __ emit_ptrsize_shri(mem_size, mem_size, kWasmPageSizeLog2); | |
| 2081 | 2082 | __ PushRegister(kWasmI32, LiftoffRegister(mem_size)); | |
@@ -2344,7 +2345,7 @@ class LiftoffCompiler { | |||
| 2344 | 2345 | src_rc == result_rc | |
| 2345 | 2346 | ? __ GetUnusedRegister(result_rc, {src3}, | |
| 2346 | 2347 | LiftoffRegList::ForRegs(src1, src2)) | |
| 2347 | - : __ GetUnusedRegister(result_rc); | ||
| 2348 | + : __ GetUnusedRegister(result_rc, {}); | ||
| 2348 | 2349 | CallEmitFn(fn, dst, src1, src2, src3); | |
| 2349 | 2350 | __ PushRegister(ValueType(result_type), dst); | |
| 2350 | 2351 | } | |
@@ -2360,14 +2361,14 @@ class LiftoffCompiler { | |||
| 2360 | 2361 | int32_t imm = rhs_slot.i32_const(); | |
| 2361 | 2362 | ||
| 2362 | 2363 | LiftoffRegister operand = __ PopToRegister(); | |
| 2363 | - LiftoffRegister dst = __ GetUnusedRegister(result_rc, {operand}); | ||
| 2364 | + LiftoffRegister dst = __ GetUnusedRegister(result_rc, {operand}, {}); | ||
| 2364 | 2365 | ||
| 2365 | 2366 | CallEmitFn(fnImm, dst, operand, imm); | |
| 2366 | 2367 | __ PushRegister(kWasmS128, dst); | |
| 2367 | 2368 | } else { | |
| 2368 | 2369 | LiftoffRegister count = __ PopToRegister(); | |
| 2369 | 2370 | LiftoffRegister operand = __ PopToRegister(); | |
| 2370 | - LiftoffRegister dst = __ GetUnusedRegister(result_rc, {operand}); | ||
| 2371 | + LiftoffRegister dst = __ GetUnusedRegister(result_rc, {operand}, {}); | ||
| 2371 | 2372 | ||
| 2372 | 2373 | CallEmitFn(fn, dst, operand, count); | |
| 2373 | 2374 | __ PushRegister(kWasmS128, dst); | |
@@ -2689,8 +2690,8 @@ class LiftoffCompiler { | |||
| 2689 | 2690 | static constexpr RegClass result_rc = reg_class_for(result_type); | |
| 2690 | 2691 | LiftoffRegister lhs = __ PopToRegister(); | |
| 2691 | 2692 | LiftoffRegister dst = src_rc == result_rc | |
| 2692 | - ? __ GetUnusedRegister(result_rc, {lhs}) | ||
| 2693 | - : __ GetUnusedRegister(result_rc); | ||
| 2693 | + ? __ GetUnusedRegister(result_rc, {lhs}, {}) | ||
| 2694 | + : __ GetUnusedRegister(result_rc, {}); | ||
| 2694 | 2695 | fn(dst, lhs, imm.lane); | |
| 2695 | 2696 | __ PushRegister(ValueType(result_type), dst); | |
| 2696 | 2697 | } | |
@@ -2716,7 +2717,7 @@ class LiftoffCompiler { | |||
| 2716 | 2717 | (src2_rc == result_rc || pin_src2) | |
| 2717 | 2718 | ? __ GetUnusedRegister(result_rc, {src1}, | |
| 2718 | 2719 | LiftoffRegList::ForRegs(src2)) | |
| 2719 | - : __ GetUnusedRegister(result_rc, {src1}); | ||
| 2720 | + : __ GetUnusedRegister(result_rc, {src1}, {}); | ||
| 2720 | 2721 | fn(dst, src1, src2, imm.lane); | |
| 2721 | 2722 | __ PushRegister(kWasmS128, dst); | |
| 2722 | 2723 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -603,7 +603,7 @@ void LiftoffAssembler::StoreCallerFrameSlot(LiftoffRegister src, | |||
| 603 | 603 | void LiftoffAssembler::MoveStackValue(uint32_t dst_offset, uint32_t src_offset, | |
| 604 | 604 | ValueType type) { | |
| 605 | 605 | DCHECK_NE(dst_offset, src_offset); | |
| 606 | - LiftoffRegister reg = GetUnusedRegister(reg_class_for(type)); | ||
| 606 | + LiftoffRegister reg = GetUnusedRegister(reg_class_for(type), {}); | ||
| 607 | 607 | Fill(reg, src_offset, type); | |
| 608 | 608 | Spill(dst_offset, reg, type); | |
| 609 | 609 | } | |
@@ -646,13 +646,13 @@ void LiftoffAssembler::Spill(int offset, WasmValue value) { | |||
| 646 | 646 | MemOperand dst = liftoff::GetStackSlot(offset); | |
| 647 | 647 | switch (value.type().kind()) { | |
| 648 | 648 | case ValueType::kI32: { | |
| 649 | - LiftoffRegister tmp = GetUnusedRegister(kGpReg); | ||
| 649 | + LiftoffRegister tmp = GetUnusedRegister(kGpReg, {}); | ||
| 650 | 650 | TurboAssembler::li(tmp.gp(), Operand(value.to_i32())); | |
| 651 | 651 | sw(tmp.gp(), dst); | |
| 652 | 652 | break; | |
| 653 | 653 | } | |
| 654 | 654 | case ValueType::kI64: { | |
| 655 | - LiftoffRegister tmp = GetUnusedRegister(kGpRegPair); | ||
| 655 | + LiftoffRegister tmp = GetUnusedRegister(kGpRegPair, {}); | ||
| 656 | 656 | ||
| 657 | 657 | int32_t low_word = value.to_i64(); | |
| 658 | 658 | int32_t high_word = value.to_i64() >> 32; | |
@@ -2251,7 +2251,7 @@ void LiftoffAssembler::StackCheck(Label* ool_code, Register limit_address) { | |||
| 2251 | 2251 | } | |
| 2252 | 2252 | ||
| 2253 | 2253 | void LiftoffAssembler::CallTrapCallbackForTesting() { | |
| 2254 | - PrepareCallCFunction(0, GetUnusedRegister(kGpReg).gp()); | ||
| 2254 | + PrepareCallCFunction(0, GetUnusedRegister(kGpReg, {}).gp()); | ||
| 2255 | 2255 | CallCFunction(ExternalReference::wasm_call_trap_callback_for_testing(), 0); | |
| 2256 | 2256 | } | |
| 2257 | 2257 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -532,7 +532,7 @@ void LiftoffAssembler::StoreCallerFrameSlot(LiftoffRegister src, | |||
| 532 | 532 | void LiftoffAssembler::MoveStackValue(uint32_t dst_offset, uint32_t src_offset, | |
| 533 | 533 | ValueType type) { | |
| 534 | 534 | DCHECK_NE(dst_offset, src_offset); | |
| 535 | - LiftoffRegister reg = GetUnusedRegister(reg_class_for(type)); | ||
| 535 | + LiftoffRegister reg = GetUnusedRegister(reg_class_for(type), {}); | ||
| 536 | 536 | Fill(reg, src_offset, type); | |
| 537 | 537 | Spill(dst_offset, reg, type); | |
| 538 | 538 | } | |
@@ -582,13 +582,13 @@ void LiftoffAssembler::Spill(int offset, WasmValue value) { | |||
| 582 | 582 | MemOperand dst = liftoff::GetStackSlot(offset); | |
| 583 | 583 | switch (value.type().kind()) { | |
| 584 | 584 | case ValueType::kI32: { | |
| 585 | - LiftoffRegister tmp = GetUnusedRegister(kGpReg); | ||
| 585 | + LiftoffRegister tmp = GetUnusedRegister(kGpReg, {}); | ||
| 586 | 586 | TurboAssembler::li(tmp.gp(), Operand(value.to_i32())); | |
| 587 | 587 | sw(tmp.gp(), dst); | |
| 588 | 588 | break; | |
| 589 | 589 | } | |
| 590 | 590 | case ValueType::kI64: { | |
| 591 | - LiftoffRegister tmp = GetUnusedRegister(kGpReg); | ||
| 591 | + LiftoffRegister tmp = GetUnusedRegister(kGpReg, {}); | ||
| 592 | 592 | TurboAssembler::li(tmp.gp(), value.to_i64()); | |
| 593 | 593 | sd(tmp.gp(), dst); | |
| 594 | 594 | break; | |
@@ -2197,7 +2197,7 @@ void LiftoffAssembler::StackCheck(Label* ool_code, Register limit_address) { | |||
| 2197 | 2197 | } | |
| 2198 | 2198 | ||
| 2199 | 2199 | void LiftoffAssembler::CallTrapCallbackForTesting() { | |
| 2200 | - PrepareCallCFunction(0, GetUnusedRegister(kGpReg).gp()); | ||
| 2200 | + PrepareCallCFunction(0, GetUnusedRegister(kGpReg, {}).gp()); | ||
| 2201 | 2201 | CallCFunction(ExternalReference::wasm_call_trap_callback_for_testing(), 0); | |
| 2202 | 2202 | } | |
| 2203 | 2203 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments