Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index bc85dd4ffd49da823fd3ada6bf92de2c1da0e91a..8e887cd915f0e68b5a9d110796caa96b6e752629 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -818,7 +818,7 @@ void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) { |
void LCodeGen::DoModI(LModI* instr) { |
if (instr->hydrogen()->HasPowerOf2Divisor()) { |
- Register dividend = ToRegister(instr->InputAt(0)); |
+ Register dividend = ToRegister(instr->left()); |
int32_t divisor = |
HConstant::cast(instr->hydrogen()->right())->Integer32Value(); |
@@ -842,8 +842,8 @@ void LCodeGen::DoModI(LModI* instr) { |
__ bind(&done); |
} else { |
Label done, remainder_eq_dividend, slow, do_subtraction, both_positive; |
- Register left_reg = ToRegister(instr->InputAt(0)); |
- Register right_reg = ToRegister(instr->InputAt(1)); |
+ Register left_reg = ToRegister(instr->left()); |
+ Register right_reg = ToRegister(instr->right()); |
Register result_reg = ToRegister(instr->result()); |
ASSERT(left_reg.is(rax)); |
@@ -873,7 +873,7 @@ void LCodeGen::DoModI(LModI* instr) { |
__ j(less, &remainder_eq_dividend, Label::kNear); |
// Check if the divisor is a PowerOfTwo integer. |
- Register scratch = ToRegister(instr->TempAt(0)); |
+ Register scratch = ToRegister(instr->temp()); |
__ movl(scratch, right_reg); |
__ subl(scratch, Immediate(1)); |
__ testl(scratch, right_reg); |
@@ -930,10 +930,10 @@ void LCodeGen::DoModI(LModI* instr) { |
void LCodeGen::DoMathFloorOfDiv(LMathFloorOfDiv* instr) { |
- ASSERT(instr->InputAt(1)->IsConstantOperand()); |
+ ASSERT(instr->right()->IsConstantOperand()); |
- const Register dividend = ToRegister(instr->InputAt(0)); |
- int32_t divisor = ToInteger32(LConstantOperand::cast(instr->InputAt(1))); |
+ const Register dividend = ToRegister(instr->left()); |
+ int32_t divisor = ToInteger32(LConstantOperand::cast(instr->right())); |
const Register result = ToRegister(instr->result()); |
switch (divisor) { |
@@ -978,7 +978,7 @@ void LCodeGen::DoMathFloorOfDiv(LMathFloorOfDiv* instr) { |
__ sarl(result, Immediate(power)); |
} |
} else { |
- Register reg1 = ToRegister(instr->TempAt(0)); |
+ Register reg1 = ToRegister(instr->temp()); |
Register reg2 = ToRegister(instr->result()); |
// Find b which: 2^b < divisor_abs < 2^(b+1). |
@@ -1013,11 +1013,11 @@ void LCodeGen::DoMathFloorOfDiv(LMathFloorOfDiv* instr) { |
void LCodeGen::DoDivI(LDivI* instr) { |
- LOperand* right = instr->InputAt(1); |
+ LOperand* right = instr->right(); |
ASSERT(ToRegister(instr->result()).is(rax)); |
- ASSERT(ToRegister(instr->InputAt(0)).is(rax)); |
- ASSERT(!ToRegister(instr->InputAt(1)).is(rax)); |
- ASSERT(!ToRegister(instr->InputAt(1)).is(rdx)); |
+ ASSERT(ToRegister(instr->left()).is(rax)); |
+ ASSERT(!ToRegister(instr->right()).is(rax)); |
+ ASSERT(!ToRegister(instr->right()).is(rdx)); |
Register left_reg = rax; |
@@ -1059,8 +1059,8 @@ void LCodeGen::DoDivI(LDivI* instr) { |
void LCodeGen::DoMulI(LMulI* instr) { |
- Register left = ToRegister(instr->InputAt(0)); |
- LOperand* right = instr->InputAt(1); |
+ Register left = ToRegister(instr->left()); |
+ LOperand* right = instr->right(); |
if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) { |
__ movl(kScratchRegister, left); |
@@ -1142,8 +1142,8 @@ void LCodeGen::DoMulI(LMulI* instr) { |
void LCodeGen::DoBitI(LBitI* instr) { |
- LOperand* left = instr->InputAt(0); |
- LOperand* right = instr->InputAt(1); |
+ LOperand* left = instr->left(); |
+ LOperand* right = instr->right(); |
ASSERT(left->Equals(instr->result())); |
ASSERT(left->IsRegister()); |
@@ -1199,8 +1199,8 @@ void LCodeGen::DoBitI(LBitI* instr) { |
void LCodeGen::DoShiftI(LShiftI* instr) { |
- LOperand* left = instr->InputAt(0); |
- LOperand* right = instr->InputAt(1); |
+ LOperand* left = instr->left(); |
+ LOperand* right = instr->right(); |
ASSERT(left->Equals(instr->result())); |
ASSERT(left->IsRegister()); |
if (right->IsRegister()) { |
@@ -1255,8 +1255,8 @@ void LCodeGen::DoShiftI(LShiftI* instr) { |
void LCodeGen::DoSubI(LSubI* instr) { |
- LOperand* left = instr->InputAt(0); |
- LOperand* right = instr->InputAt(1); |
+ LOperand* left = instr->left(); |
+ LOperand* right = instr->right(); |
ASSERT(left->Equals(instr->result())); |
if (right->IsConstantOperand()) { |
@@ -1290,7 +1290,7 @@ void LCodeGen::DoConstantD(LConstantD* instr) { |
if (int_val == 0) { |
__ xorps(res, res); |
} else { |
- Register tmp = ToRegister(instr->TempAt(0)); |
+ Register tmp = ToRegister(instr->temp()); |
__ Set(tmp, int_val); |
__ movq(res, tmp); |
} |
@@ -1310,28 +1310,28 @@ void LCodeGen::DoConstantT(LConstantT* instr) { |
void LCodeGen::DoJSArrayLength(LJSArrayLength* instr) { |
Register result = ToRegister(instr->result()); |
- Register array = ToRegister(instr->InputAt(0)); |
+ Register array = ToRegister(instr->value()); |
__ movq(result, FieldOperand(array, JSArray::kLengthOffset)); |
} |
void LCodeGen::DoFixedArrayBaseLength(LFixedArrayBaseLength* instr) { |
Register result = ToRegister(instr->result()); |
- Register array = ToRegister(instr->InputAt(0)); |
+ Register array = ToRegister(instr->value()); |
__ movq(result, FieldOperand(array, FixedArrayBase::kLengthOffset)); |
} |
void LCodeGen::DoMapEnumLength(LMapEnumLength* instr) { |
Register result = ToRegister(instr->result()); |
- Register map = ToRegister(instr->InputAt(0)); |
+ Register map = ToRegister(instr->value()); |
__ EnumLength(result, map); |
} |
void LCodeGen::DoElementsKind(LElementsKind* instr) { |
Register result = ToRegister(instr->result()); |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->value()); |
// Load map into |result|. |
__ movq(result, FieldOperand(input, HeapObject::kMapOffset)); |
@@ -1344,7 +1344,7 @@ void LCodeGen::DoElementsKind(LElementsKind* instr) { |
void LCodeGen::DoValueOf(LValueOf* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->value()); |
Register result = ToRegister(instr->result()); |
ASSERT(input.is(result)); |
Label done; |
@@ -1361,7 +1361,7 @@ void LCodeGen::DoValueOf(LValueOf* instr) { |
void LCodeGen::DoDateField(LDateField* instr) { |
- Register object = ToRegister(instr->InputAt(0)); |
+ Register object = ToRegister(instr->date()); |
Register result = ToRegister(instr->result()); |
Smi* index = instr->index(); |
Label runtime, done, not_date_object; |
@@ -1403,14 +1403,14 @@ void LCodeGen::DoDateField(LDateField* instr) { |
void LCodeGen::DoBitNotI(LBitNotI* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->Equals(instr->result())); |
__ not_(ToRegister(input)); |
} |
void LCodeGen::DoThrow(LThrow* instr) { |
- __ push(ToRegister(instr->InputAt(0))); |
+ __ push(ToRegister(instr->value())); |
CallRuntime(Runtime::kThrow, 1, instr); |
if (FLAG_debug_code) { |
@@ -1421,8 +1421,8 @@ void LCodeGen::DoThrow(LThrow* instr) { |
void LCodeGen::DoAddI(LAddI* instr) { |
- LOperand* left = instr->InputAt(0); |
- LOperand* right = instr->InputAt(1); |
+ LOperand* left = instr->left(); |
+ LOperand* right = instr->right(); |
ASSERT(left->Equals(instr->result())); |
if (right->IsConstantOperand()) { |
@@ -1441,8 +1441,8 @@ void LCodeGen::DoAddI(LAddI* instr) { |
void LCodeGen::DoMathMinMax(LMathMinMax* instr) { |
- LOperand* left = instr->InputAt(0); |
- LOperand* right = instr->InputAt(1); |
+ LOperand* left = instr->left(); |
+ LOperand* right = instr->right(); |
ASSERT(left->Equals(instr->result())); |
HMathMinMax::Operation operation = instr->hydrogen()->operation(); |
if (instr->hydrogen()->representation().IsInteger32()) { |
@@ -1507,8 +1507,8 @@ void LCodeGen::DoMathMinMax(LMathMinMax* instr) { |
void LCodeGen::DoArithmeticD(LArithmeticD* instr) { |
- XMMRegister left = ToDoubleRegister(instr->InputAt(0)); |
- XMMRegister right = ToDoubleRegister(instr->InputAt(1)); |
+ XMMRegister left = ToDoubleRegister(instr->left()); |
+ XMMRegister right = ToDoubleRegister(instr->right()); |
XMMRegister result = ToDoubleRegister(instr->result()); |
// All operations except MOD are computed in-place. |
ASSERT(instr->op() == Token::MOD || left.is(result)); |
@@ -1542,8 +1542,8 @@ void LCodeGen::DoArithmeticD(LArithmeticD* instr) { |
void LCodeGen::DoArithmeticT(LArithmeticT* instr) { |
- ASSERT(ToRegister(instr->InputAt(0)).is(rdx)); |
- ASSERT(ToRegister(instr->InputAt(1)).is(rax)); |
+ ASSERT(ToRegister(instr->left()).is(rdx)); |
+ ASSERT(ToRegister(instr->right()).is(rax)); |
ASSERT(ToRegister(instr->result()).is(rax)); |
BinaryOpStub stub(instr->op(), NO_OVERWRITE); |
@@ -1587,17 +1587,17 @@ void LCodeGen::DoBranch(LBranch* instr) { |
Representation r = instr->hydrogen()->value()->representation(); |
if (r.IsInteger32()) { |
- Register reg = ToRegister(instr->InputAt(0)); |
+ Register reg = ToRegister(instr->value()); |
__ testl(reg, reg); |
EmitBranch(true_block, false_block, not_zero); |
} else if (r.IsDouble()) { |
- XMMRegister reg = ToDoubleRegister(instr->InputAt(0)); |
+ XMMRegister reg = ToDoubleRegister(instr->value()); |
__ xorps(xmm0, xmm0); |
__ ucomisd(reg, xmm0); |
EmitBranch(true_block, false_block, not_equal); |
} else { |
ASSERT(r.IsTagged()); |
- Register reg = ToRegister(instr->InputAt(0)); |
+ Register reg = ToRegister(instr->value()); |
HType type = instr->hydrogen()->value()->type(); |
if (type.IsBoolean()) { |
__ CompareRoot(reg, Heap::kTrueValueRootIndex); |
@@ -1734,8 +1734,8 @@ inline Condition LCodeGen::TokenToCondition(Token::Value op, bool is_unsigned) { |
void LCodeGen::DoCmpIDAndBranch(LCmpIDAndBranch* instr) { |
- LOperand* left = instr->InputAt(0); |
- LOperand* right = instr->InputAt(1); |
+ LOperand* left = instr->left(); |
+ LOperand* right = instr->right(); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
Condition cc = TokenToCondition(instr->op(), instr->is_double()); |
@@ -1782,8 +1782,8 @@ void LCodeGen::DoCmpIDAndBranch(LCmpIDAndBranch* instr) { |
void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { |
- Register left = ToRegister(instr->InputAt(0)); |
- Register right = ToRegister(instr->InputAt(1)); |
+ Register left = ToRegister(instr->left()); |
+ Register right = ToRegister(instr->right()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
@@ -1793,7 +1793,7 @@ void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { |
void LCodeGen::DoCmpConstantEqAndBranch(LCmpConstantEqAndBranch* instr) { |
- Register left = ToRegister(instr->InputAt(0)); |
+ Register left = ToRegister(instr->left()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
@@ -1803,7 +1803,7 @@ void LCodeGen::DoCmpConstantEqAndBranch(LCmpConstantEqAndBranch* instr) { |
void LCodeGen::DoIsNilAndBranch(LIsNilAndBranch* instr) { |
- Register reg = ToRegister(instr->InputAt(0)); |
+ Register reg = ToRegister(instr->value()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
// If the expression is known to be untagged or a smi, then it's definitely |
@@ -1833,7 +1833,7 @@ void LCodeGen::DoIsNilAndBranch(LIsNilAndBranch* instr) { |
__ JumpIfSmi(reg, false_label); |
// Check for undetectable objects by looking in the bit field in |
// the map. The object has already been smi checked. |
- Register scratch = ToRegister(instr->TempAt(0)); |
+ Register scratch = ToRegister(instr->temp()); |
__ movq(scratch, FieldOperand(reg, HeapObject::kMapOffset)); |
__ testb(FieldOperand(scratch, Map::kBitFieldOffset), |
Immediate(1 << Map::kIsUndetectable)); |
@@ -1868,7 +1868,7 @@ Condition LCodeGen::EmitIsObject(Register input, |
void LCodeGen::DoIsObjectAndBranch(LIsObjectAndBranch* instr) { |
- Register reg = ToRegister(instr->InputAt(0)); |
+ Register reg = ToRegister(instr->value()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
@@ -1892,8 +1892,8 @@ Condition LCodeGen::EmitIsString(Register input, |
void LCodeGen::DoIsStringAndBranch(LIsStringAndBranch* instr) { |
- Register reg = ToRegister(instr->InputAt(0)); |
- Register temp = ToRegister(instr->TempAt(0)); |
+ Register reg = ToRegister(instr->value()); |
+ Register temp = ToRegister(instr->temp()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
@@ -1910,11 +1910,11 @@ void LCodeGen::DoIsSmiAndBranch(LIsSmiAndBranch* instr) { |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
Condition is_smi; |
- if (instr->InputAt(0)->IsRegister()) { |
- Register input = ToRegister(instr->InputAt(0)); |
+ if (instr->value()->IsRegister()) { |
+ Register input = ToRegister(instr->value()); |
is_smi = masm()->CheckSmi(input); |
} else { |
- Operand input = ToOperand(instr->InputAt(0)); |
+ Operand input = ToOperand(instr->value()); |
is_smi = masm()->CheckSmi(input); |
} |
EmitBranch(true_block, false_block, is_smi); |
@@ -1922,8 +1922,8 @@ void LCodeGen::DoIsSmiAndBranch(LIsSmiAndBranch* instr) { |
void LCodeGen::DoIsUndetectableAndBranch(LIsUndetectableAndBranch* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
- Register temp = ToRegister(instr->TempAt(0)); |
+ Register input = ToRegister(instr->value()); |
+ Register temp = ToRegister(instr->temp()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
@@ -1972,7 +1972,7 @@ static Condition BranchCondition(HHasInstanceTypeAndBranch* instr) { |
void LCodeGen::DoHasInstanceTypeAndBranch(LHasInstanceTypeAndBranch* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->value()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
@@ -1987,7 +1987,7 @@ void LCodeGen::DoHasInstanceTypeAndBranch(LHasInstanceTypeAndBranch* instr) { |
void LCodeGen::DoGetCachedArrayIndex(LGetCachedArrayIndex* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->value()); |
Register result = ToRegister(instr->result()); |
__ AbortIfNotString(input); |
@@ -2000,7 +2000,7 @@ void LCodeGen::DoGetCachedArrayIndex(LGetCachedArrayIndex* instr) { |
void LCodeGen::DoHasCachedArrayIndexAndBranch( |
LHasCachedArrayIndexAndBranch* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->value()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
@@ -2080,9 +2080,9 @@ void LCodeGen::EmitClassOfTest(Label* is_true, |
void LCodeGen::DoClassOfTestAndBranch(LClassOfTestAndBranch* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
- Register temp = ToRegister(instr->TempAt(0)); |
- Register temp2 = ToRegister(instr->TempAt(1)); |
+ Register input = ToRegister(instr->value()); |
+ Register temp = ToRegister(instr->temp()); |
+ Register temp2 = ToRegister(instr->temp2()); |
Handle<String> class_name = instr->hydrogen()->class_name(); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
@@ -2098,7 +2098,7 @@ void LCodeGen::DoClassOfTestAndBranch(LClassOfTestAndBranch* instr) { |
void LCodeGen::DoCmpMapAndBranch(LCmpMapAndBranch* instr) { |
- Register reg = ToRegister(instr->InputAt(0)); |
+ Register reg = ToRegister(instr->value()); |
int true_block = instr->true_block_id(); |
int false_block = instr->false_block_id(); |
@@ -2109,8 +2109,8 @@ void LCodeGen::DoCmpMapAndBranch(LCmpMapAndBranch* instr) { |
void LCodeGen::DoInstanceOf(LInstanceOf* instr) { |
InstanceofStub stub(InstanceofStub::kNoFlags); |
- __ push(ToRegister(instr->InputAt(0))); |
- __ push(ToRegister(instr->InputAt(1))); |
+ __ push(ToRegister(instr->left())); |
+ __ push(ToRegister(instr->right())); |
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
Label true_value, done; |
__ testq(rax, rax); |
@@ -2144,7 +2144,7 @@ void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { |
deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr); |
Label done, false_result; |
- Register object = ToRegister(instr->InputAt(0)); |
+ Register object = ToRegister(instr->value()); |
// A Smi is not an instance of anything. |
__ JumpIfSmi(object, &false_result); |
@@ -2154,7 +2154,7 @@ void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { |
// instanceof stub. |
Label cache_miss; |
// Use a temp register to avoid memory operands with variable lengths. |
- Register map = ToRegister(instr->TempAt(0)); |
+ Register map = ToRegister(instr->temp()); |
__ movq(map, FieldOperand(object, HeapObject::kMapOffset)); |
__ bind(deferred->map_check()); // Label for calculating code patching. |
Handle<JSGlobalPropertyCell> cache_cell = |
@@ -2197,7 +2197,7 @@ void LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
InstanceofStub::kNoFlags | InstanceofStub::kCallSiteInlineCheck); |
InstanceofStub stub(flags); |
- __ push(ToRegister(instr->InputAt(0))); |
+ __ push(ToRegister(instr->value())); |
__ PushHeapObject(instr->function()); |
static const int kAdditionalDelta = 10; |
@@ -2297,7 +2297,7 @@ void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { |
// it as no longer deleted. We deoptimize in that case. |
if (instr->hydrogen()->RequiresHoleCheck()) { |
// We have a temp because CompareRoot might clobber kScratchRegister. |
- Register cell = ToRegister(instr->TempAt(0)); |
+ Register cell = ToRegister(instr->temp()); |
ASSERT(!value.is(cell)); |
__ movq(cell, cell_handle, RelocInfo::GLOBAL_PROPERTY_CELL); |
__ CompareRoot(Operand(cell, 0), Heap::kTheHoleValueRootIndex); |
@@ -2365,7 +2365,7 @@ void LCodeGen::DoStoreContextSlot(LStoreContextSlot* instr) { |
SmiCheck check_needed = |
type.IsHeapObject() ? OMIT_SMI_CHECK : INLINE_SMI_CHECK; |
int offset = Context::SlotOffset(instr->slot_index()); |
- Register scratch = ToRegister(instr->TempAt(0)); |
+ Register scratch = ToRegister(instr->temp()); |
__ RecordWriteContextSlot(context, |
offset, |
value, |
@@ -2380,7 +2380,7 @@ void LCodeGen::DoStoreContextSlot(LStoreContextSlot* instr) { |
void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) { |
- Register object = ToRegister(instr->InputAt(0)); |
+ Register object = ToRegister(instr->object()); |
Register result = ToRegister(instr->result()); |
if (instr->hydrogen()->is_in_object()) { |
__ movq(result, FieldOperand(object, instr->hydrogen()->offset())); |
@@ -2552,7 +2552,7 @@ void LCodeGen::DoLoadFunctionPrototype(LLoadFunctionPrototype* instr) { |
void LCodeGen::DoLoadElements(LLoadElements* instr) { |
Register result = ToRegister(instr->result()); |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->object()); |
__ movq(result, FieldOperand(input, JSObject::kElementsOffset)); |
if (FLAG_debug_code) { |
Label done, ok, fail; |
@@ -2588,7 +2588,7 @@ void LCodeGen::DoLoadElements(LLoadElements* instr) { |
void LCodeGen::DoLoadExternalArrayPointer( |
LLoadExternalArrayPointer* instr) { |
Register result = ToRegister(instr->result()); |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->object()); |
__ movq(result, FieldOperand(input, |
ExternalPixelArray::kExternalPointerOffset)); |
} |
@@ -2836,10 +2836,10 @@ void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) { |
Label done; |
// If no arguments adaptor frame the number of arguments is fixed. |
- if (instr->InputAt(0)->IsRegister()) { |
- __ cmpq(rbp, ToRegister(instr->InputAt(0))); |
+ if (instr->elements()->IsRegister()) { |
+ __ cmpq(rbp, ToRegister(instr->elements())); |
} else { |
- __ cmpq(rbp, ToOperand(instr->InputAt(0))); |
+ __ cmpq(rbp, ToOperand(instr->elements())); |
} |
__ movl(result, Immediate(scope()->num_parameters())); |
__ j(equal, &done, Label::kNear); |
@@ -2947,7 +2947,7 @@ void LCodeGen::DoApplyArguments(LApplyArguments* instr) { |
void LCodeGen::DoPushArgument(LPushArgument* instr) { |
- LOperand* argument = instr->InputAt(0); |
+ LOperand* argument = instr->value(); |
EmitPushTaggedOperand(argument); |
} |
@@ -3057,7 +3057,7 @@ void LCodeGen::DoCallConstantFunction(LCallConstantFunction* instr) { |
void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr) { |
- Register input_reg = ToRegister(instr->InputAt(0)); |
+ Register input_reg = ToRegister(instr->value()); |
__ CompareRoot(FieldOperand(input_reg, HeapObject::kMapOffset), |
Heap::kHeapNumberMapRootIndex); |
DeoptimizeIf(not_equal, instr->environment()); |
@@ -3109,7 +3109,7 @@ void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr) { |
void LCodeGen::EmitIntegerMathAbs(LUnaryMathOperation* instr) { |
- Register input_reg = ToRegister(instr->InputAt(0)); |
+ Register input_reg = ToRegister(instr->value()); |
__ testl(input_reg, input_reg); |
Label is_positive; |
__ j(not_sign, &is_positive); |
@@ -3134,12 +3134,12 @@ void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) { |
LUnaryMathOperation* instr_; |
}; |
- ASSERT(instr->InputAt(0)->Equals(instr->result())); |
+ ASSERT(instr->value()->Equals(instr->result())); |
Representation r = instr->hydrogen()->value()->representation(); |
if (r.IsDouble()) { |
XMMRegister scratch = xmm0; |
- XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0)); |
+ XMMRegister input_reg = ToDoubleRegister(instr->value()); |
__ xorps(scratch, scratch); |
__ subsd(scratch, input_reg); |
__ andpd(input_reg, scratch); |
@@ -3148,7 +3148,7 @@ void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) { |
} else { // Tagged case. |
DeferredMathAbsTaggedHeapNumber* deferred = |
new(zone()) DeferredMathAbsTaggedHeapNumber(this, instr); |
- Register input_reg = ToRegister(instr->InputAt(0)); |
+ Register input_reg = ToRegister(instr->value()); |
// Smi check. |
__ JumpIfNotSmi(input_reg, deferred->entry()); |
__ SmiToInteger32(input_reg, input_reg); |
@@ -3162,7 +3162,7 @@ void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathFloor(LUnaryMathOperation* instr) { |
XMMRegister xmm_scratch = xmm0; |
Register output_reg = ToRegister(instr->result()); |
- XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0)); |
+ XMMRegister input_reg = ToDoubleRegister(instr->value()); |
if (CpuFeatures::IsSupported(SSE4_1)) { |
CpuFeatures::Scope scope(SSE4_1); |
@@ -3221,7 +3221,7 @@ void LCodeGen::DoMathFloor(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathRound(LUnaryMathOperation* instr) { |
const XMMRegister xmm_scratch = xmm0; |
Register output_reg = ToRegister(instr->result()); |
- XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0)); |
+ XMMRegister input_reg = ToDoubleRegister(instr->value()); |
Label done; |
// xmm_scratch = 0.5 |
@@ -3266,7 +3266,7 @@ void LCodeGen::DoMathRound(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) { |
- XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0)); |
+ XMMRegister input_reg = ToDoubleRegister(instr->value()); |
ASSERT(ToDoubleRegister(instr->result()).is(input_reg)); |
__ sqrtsd(input_reg, input_reg); |
} |
@@ -3274,7 +3274,7 @@ void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathPowHalf(LUnaryMathOperation* instr) { |
XMMRegister xmm_scratch = xmm0; |
- XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0)); |
+ XMMRegister input_reg = ToDoubleRegister(instr->value()); |
ASSERT(ToDoubleRegister(instr->result()).is(input_reg)); |
// Note that according to ECMA-262 15.8.2.13: |
@@ -3315,11 +3315,11 @@ void LCodeGen::DoPower(LPower* instr) { |
#else |
Register exponent = rdi; |
#endif |
- ASSERT(!instr->InputAt(1)->IsRegister() || |
- ToRegister(instr->InputAt(1)).is(exponent)); |
- ASSERT(!instr->InputAt(1)->IsDoubleRegister() || |
- ToDoubleRegister(instr->InputAt(1)).is(xmm1)); |
- ASSERT(ToDoubleRegister(instr->InputAt(0)).is(xmm2)); |
+ ASSERT(!instr->right()->IsRegister() || |
+ ToRegister(instr->right()).is(exponent)); |
+ ASSERT(!instr->right()->IsDoubleRegister() || |
+ ToDoubleRegister(instr->right()).is(xmm1)); |
+ ASSERT(ToDoubleRegister(instr->left()).is(xmm2)); |
ASSERT(ToDoubleRegister(instr->result()).is(xmm3)); |
if (exponent_type.IsTagged()) { |
@@ -3361,10 +3361,10 @@ void LCodeGen::DoRandom(LRandom* instr) { |
// Choose the right register for the first argument depending on |
// calling convention. |
#ifdef _WIN64 |
- ASSERT(ToRegister(instr->InputAt(0)).is(rcx)); |
+ ASSERT(ToRegister(instr->global_object()).is(rcx)); |
Register global_object = rcx; |
#else |
- ASSERT(ToRegister(instr->InputAt(0)).is(rdi)); |
+ ASSERT(ToRegister(instr->global_object()).is(rdi)); |
Register global_object = rdi; |
#endif |
@@ -3579,7 +3579,7 @@ void LCodeGen::DoCallKnownGlobal(LCallKnownGlobal* instr) { |
void LCodeGen::DoCallNew(LCallNew* instr) { |
- ASSERT(ToRegister(instr->InputAt(0)).is(rdi)); |
+ ASSERT(ToRegister(instr->constructor()).is(rdi)); |
ASSERT(ToRegister(instr->result()).is(rax)); |
CallConstructStub stub(NO_CALL_FUNCTION_FLAGS); |
@@ -3603,7 +3603,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { |
__ Move(FieldOperand(object, HeapObject::kMapOffset), |
instr->transition()); |
} else { |
- Register temp = ToRegister(instr->TempAt(0)); |
+ Register temp = ToRegister(instr->temp()); |
__ Move(kScratchRegister, instr->transition()); |
__ movq(FieldOperand(object, HeapObject::kMapOffset), kScratchRegister); |
// Update the write barrier for the map field. |
@@ -3624,7 +3624,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { |
if (instr->is_in_object()) { |
__ movq(FieldOperand(object, offset), value); |
if (instr->hydrogen()->NeedsWriteBarrier()) { |
- Register temp = ToRegister(instr->TempAt(0)); |
+ Register temp = ToRegister(instr->temp()); |
// Update the write barrier for the object for in-object properties. |
__ RecordWriteField(object, |
offset, |
@@ -3635,7 +3635,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { |
check_needed); |
} |
} else { |
- Register temp = ToRegister(instr->TempAt(0)); |
+ Register temp = ToRegister(instr->temp()); |
__ movq(temp, FieldOperand(object, JSObject::kPropertiesOffset)); |
__ movq(FieldOperand(temp, offset), value); |
if (instr->hydrogen()->NeedsWriteBarrier()) { |
@@ -3888,7 +3888,7 @@ void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { |
Register object_reg = ToRegister(instr->object()); |
- Register new_map_reg = ToRegister(instr->new_map_reg()); |
+ Register new_map_reg = ToRegister(instr->new_map_temp()); |
Handle<Map> from_map = instr->original_map(); |
Handle<Map> to_map = instr->transitioned_map(); |
@@ -3902,12 +3902,12 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { |
if (IsSimpleMapChangeTransition(from_kind, to_kind)) { |
__ movq(FieldOperand(object_reg, HeapObject::kMapOffset), new_map_reg); |
// Write barrier. |
- ASSERT_NE(instr->temp_reg(), NULL); |
+ ASSERT_NE(instr->temp(), NULL); |
__ RecordWriteField(object_reg, HeapObject::kMapOffset, new_map_reg, |
- ToRegister(instr->temp_reg()), kDontSaveFPRegs); |
+ ToRegister(instr->temp()), kDontSaveFPRegs); |
} else if (IsFastSmiElementsKind(from_kind) && |
IsFastDoubleElementsKind(to_kind)) { |
- Register fixed_object_reg = ToRegister(instr->temp_reg()); |
+ Register fixed_object_reg = ToRegister(instr->temp()); |
ASSERT(fixed_object_reg.is(rdx)); |
ASSERT(new_map_reg.is(rbx)); |
__ movq(fixed_object_reg, object_reg); |
@@ -3915,7 +3915,7 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { |
RelocInfo::CODE_TARGET, instr); |
} else if (IsFastDoubleElementsKind(from_kind) && |
IsFastObjectElementsKind(to_kind)) { |
- Register fixed_object_reg = ToRegister(instr->temp_reg()); |
+ Register fixed_object_reg = ToRegister(instr->temp()); |
ASSERT(fixed_object_reg.is(rdx)); |
ASSERT(new_map_reg.is(rbx)); |
__ movq(fixed_object_reg, object_reg); |
@@ -4046,7 +4046,7 @@ void LCodeGen::DoStringLength(LStringLength* instr) { |
void LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->IsRegister() || input->IsStackSlot()); |
LOperand* output = instr->result(); |
ASSERT(output->IsDoubleRegister()); |
@@ -4059,9 +4059,9 @@ void LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) { |
void LCodeGen::DoUint32ToDouble(LUint32ToDouble* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
LOperand* output = instr->result(); |
- LOperand* temp = instr->TempAt(0); |
+ LOperand* temp = instr->temp(); |
__ LoadUint32(ToDoubleRegister(output), |
ToRegister(input), |
@@ -4070,7 +4070,7 @@ void LCodeGen::DoUint32ToDouble(LUint32ToDouble* instr) { |
void LCodeGen::DoNumberTagI(LNumberTagI* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->IsRegister() && input->Equals(instr->result())); |
Register reg = ToRegister(input); |
@@ -4091,7 +4091,7 @@ void LCodeGen::DoNumberTagU(LNumberTagU* instr) { |
LNumberTagU* instr_; |
}; |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->IsRegister() && input->Equals(instr->result())); |
Register reg = ToRegister(input); |
@@ -4105,7 +4105,7 @@ void LCodeGen::DoNumberTagU(LNumberTagU* instr) { |
void LCodeGen::DoDeferredNumberTagU(LNumberTagU* instr) { |
Label slow; |
- Register reg = ToRegister(instr->InputAt(0)); |
+ Register reg = ToRegister(instr->value()); |
Register tmp = reg.is(rax) ? rcx : rax; |
// Preserve the value of all registers. |
@@ -4152,9 +4152,9 @@ void LCodeGen::DoNumberTagD(LNumberTagD* instr) { |
LNumberTagD* instr_; |
}; |
- XMMRegister input_reg = ToDoubleRegister(instr->InputAt(0)); |
+ XMMRegister input_reg = ToDoubleRegister(instr->value()); |
Register reg = ToRegister(instr->result()); |
- Register tmp = ToRegister(instr->TempAt(0)); |
+ Register tmp = ToRegister(instr->temp()); |
DeferredNumberTagD* deferred = new(zone()) DeferredNumberTagD(this, instr); |
if (FLAG_inline_new) { |
@@ -4185,16 +4185,16 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) { |
void LCodeGen::DoSmiTag(LSmiTag* instr) { |
- ASSERT(instr->InputAt(0)->Equals(instr->result())); |
- Register input = ToRegister(instr->InputAt(0)); |
+ ASSERT(instr->value()->Equals(instr->result())); |
+ Register input = ToRegister(instr->value()); |
ASSERT(!instr->hydrogen_value()->CheckFlag(HValue::kCanOverflow)); |
__ Integer32ToSmi(input, input); |
} |
void LCodeGen::DoSmiUntag(LSmiUntag* instr) { |
- ASSERT(instr->InputAt(0)->Equals(instr->result())); |
- Register input = ToRegister(instr->InputAt(0)); |
+ ASSERT(instr->value()->Equals(instr->result())); |
+ Register input = ToRegister(instr->value()); |
if (instr->needs_check()) { |
Condition is_smi = __ CheckSmi(input); |
DeoptimizeIf(NegateCondition(is_smi), instr->environment()); |
@@ -4259,7 +4259,7 @@ void LCodeGen::EmitNumberUntagD(Register input_reg, |
void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) { |
Label done, heap_number; |
- Register input_reg = ToRegister(instr->InputAt(0)); |
+ Register input_reg = ToRegister(instr->value()); |
// Heap number map check. |
__ CompareRoot(FieldOperand(input_reg, HeapObject::kMapOffset), |
@@ -4285,7 +4285,7 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) { |
// Deoptimize if we don't have a heap number. |
DeoptimizeIf(not_equal, instr->environment()); |
- XMMRegister xmm_temp = ToDoubleRegister(instr->TempAt(0)); |
+ XMMRegister xmm_temp = ToDoubleRegister(instr->temp()); |
__ movsd(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset)); |
__ cvttsd2si(input_reg, xmm0); |
__ cvtlsi2sd(xmm_temp, input_reg); |
@@ -4315,7 +4315,7 @@ void LCodeGen::DoTaggedToI(LTaggedToI* instr) { |
LTaggedToI* instr_; |
}; |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->IsRegister()); |
ASSERT(input->Equals(instr->result())); |
@@ -4328,7 +4328,7 @@ void LCodeGen::DoTaggedToI(LTaggedToI* instr) { |
void LCodeGen::DoNumberUntagD(LNumberUntagD* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->IsRegister()); |
LOperand* result = instr->result(); |
ASSERT(result->IsDoubleRegister()); |
@@ -4344,7 +4344,7 @@ void LCodeGen::DoNumberUntagD(LNumberUntagD* instr) { |
void LCodeGen::DoDoubleToI(LDoubleToI* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->IsDoubleRegister()); |
LOperand* result = instr->result(); |
ASSERT(result->IsRegister()); |
@@ -4384,21 +4384,21 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) { |
void LCodeGen::DoCheckSmi(LCheckSmi* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
Condition cc = masm()->CheckSmi(ToRegister(input)); |
DeoptimizeIf(NegateCondition(cc), instr->environment()); |
} |
void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
Condition cc = masm()->CheckSmi(ToRegister(input)); |
DeoptimizeIf(cc, instr->environment()); |
} |
void LCodeGen::DoCheckInstanceType(LCheckInstanceType* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->value()); |
__ movq(kScratchRegister, FieldOperand(input, HeapObject::kMapOffset)); |
@@ -4470,7 +4470,7 @@ void LCodeGen::DoCheckMapCommon(Register reg, |
void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
ASSERT(input->IsRegister()); |
Register reg = ToRegister(input); |
@@ -4490,7 +4490,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
void LCodeGen::DoClampDToUint8(LClampDToUint8* instr) { |
XMMRegister value_reg = ToDoubleRegister(instr->unclamped()); |
Register result_reg = ToRegister(instr->result()); |
- Register temp_reg = ToRegister(instr->TempAt(0)); |
+ Register temp_reg = ToRegister(instr->temp()); |
__ ClampDoubleToUint8(value_reg, xmm0, result_reg, temp_reg); |
} |
@@ -4505,8 +4505,8 @@ void LCodeGen::DoClampIToUint8(LClampIToUint8* instr) { |
void LCodeGen::DoClampTToUint8(LClampTToUint8* instr) { |
ASSERT(instr->unclamped()->Equals(instr->result())); |
Register input_reg = ToRegister(instr->unclamped()); |
- Register temp_reg = ToRegister(instr->TempAt(0)); |
- XMMRegister temp_xmm_reg = ToDoubleRegister(instr->TempAt(1)); |
+ Register temp_reg = ToRegister(instr->temp()); |
+ XMMRegister temp_xmm_reg = ToDoubleRegister(instr->temp2()); |
Label is_smi, done, heap_number; |
__ JumpIfSmi(input_reg, &is_smi); |
@@ -4539,7 +4539,7 @@ void LCodeGen::DoClampTToUint8(LClampTToUint8* instr) { |
void LCodeGen::DoCheckPrototypeMaps(LCheckPrototypeMaps* instr) { |
- Register reg = ToRegister(instr->TempAt(0)); |
+ Register reg = ToRegister(instr->temp()); |
Handle<JSObject> holder = instr->holder(); |
Handle<JSObject> current_prototype = instr->prototype(); |
@@ -4578,7 +4578,7 @@ void LCodeGen::DoAllocateObject(LAllocateObject* instr) { |
new(zone()) DeferredAllocateObject(this, instr); |
Register result = ToRegister(instr->result()); |
- Register scratch = ToRegister(instr->TempAt(0)); |
+ Register scratch = ToRegister(instr->temp()); |
Handle<JSFunction> constructor = instr->hydrogen()->constructor(); |
Handle<Map> initial_map(constructor->initial_map()); |
int instance_size = initial_map->instance_size(); |
@@ -4880,7 +4880,7 @@ void LCodeGen::DoObjectLiteral(LObjectLiteral* instr) { |
void LCodeGen::DoToFastProperties(LToFastProperties* instr) { |
- ASSERT(ToRegister(instr->InputAt(0)).is(rax)); |
+ ASSERT(ToRegister(instr->value()).is(rax)); |
__ push(rax); |
CallRuntime(Runtime::kToFastProperties, 1, instr); |
} |
@@ -4957,7 +4957,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) { |
void LCodeGen::DoTypeof(LTypeof* instr) { |
- LOperand* input = instr->InputAt(0); |
+ LOperand* input = instr->value(); |
EmitPushTaggedOperand(input); |
CallRuntime(Runtime::kTypeof, 1, instr); |
} |
@@ -4981,7 +4981,7 @@ void LCodeGen::EmitPushTaggedOperand(LOperand* operand) { |
void LCodeGen::DoTypeofIsAndBranch(LTypeofIsAndBranch* instr) { |
- Register input = ToRegister(instr->InputAt(0)); |
+ Register input = ToRegister(instr->value()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
Label* true_label = chunk_->GetAssemblyLabel(true_block); |
@@ -5067,7 +5067,7 @@ Condition LCodeGen::EmitTypeofIs(Label* true_label, |
void LCodeGen::DoIsConstructCallAndBranch(LIsConstructCallAndBranch* instr) { |
- Register temp = ToRegister(instr->TempAt(0)); |
+ Register temp = ToRegister(instr->temp()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |