@@ -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);
@@ -2695,8 +2696,8 @@ class LiftoffCompiler {
2695
2696
static constexpr RegClass result_rc = reg_class_for (result_type);
2696
2697
LiftoffRegister lhs = __ PopToRegister ();
2697
2698
LiftoffRegister dst = src_rc == result_rc
2698
- ? __ GetUnusedRegister (result_rc, {lhs})
2699
- : __ GetUnusedRegister (result_rc);
2699
+ ? __ GetUnusedRegister (result_rc, {lhs}, {} )
2700
+ : __ GetUnusedRegister (result_rc, {} );
2700
2701
fn (dst, lhs, imm.lane );
2701
2702
__ PushRegister (ValueType (result_type), dst);
2702
2703
}
@@ -2722,7 +2723,7 @@ class LiftoffCompiler {
2722
2723
(src2_rc == result_rc || pin_src2)
2723
2724
? __ GetUnusedRegister (result_rc, {src1},
2724
2725
LiftoffRegList::ForRegs (src2))
2725
- : __ GetUnusedRegister (result_rc, {src1});
2726
+ : __ GetUnusedRegister (result_rc, {src1}, {} );
2726
2727
fn (dst, src1, src2, imm.lane );
2727
2728
__ PushRegister (kWasmS128 , dst);
2728
2729
}
0 commit comments