| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index 8110f165515f43a0cfcc2a5b00039b5fcde5df03..7d413b9f622ff4f66eb4b5e055ff2dfaeaff861d 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -909,7 +909,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();
|
| @@ -933,8 +933,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(eax));
|
| @@ -964,7 +964,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());
|
| __ mov(scratch, right_reg);
|
| __ sub(Operand(scratch), Immediate(1));
|
| __ test(scratch, Operand(right_reg));
|
| @@ -1020,11 +1020,11 @@ void LCodeGen::DoModI(LModI* instr) {
|
|
|
|
|
| void LCodeGen::DoDivI(LDivI* instr) {
|
| - LOperand* right = instr->InputAt(1);
|
| + LOperand* right = instr->right();
|
| ASSERT(ToRegister(instr->result()).is(eax));
|
| - ASSERT(ToRegister(instr->InputAt(0)).is(eax));
|
| - ASSERT(!ToRegister(instr->InputAt(1)).is(eax));
|
| - ASSERT(!ToRegister(instr->InputAt(1)).is(edx));
|
| + ASSERT(ToRegister(instr->left()).is(eax));
|
| + ASSERT(!ToRegister(instr->right()).is(eax));
|
| + ASSERT(!ToRegister(instr->right()).is(edx));
|
|
|
| Register left_reg = eax;
|
|
|
| @@ -1066,10 +1066,10 @@ void LCodeGen::DoDivI(LDivI* instr) {
|
|
|
|
|
| void LCodeGen::DoMathFloorOfDiv(LMathFloorOfDiv* instr) {
|
| - ASSERT(instr->InputAt(1)->IsConstantOperand());
|
| + ASSERT(instr->right()->IsConstantOperand());
|
|
|
| - Register dividend = ToRegister(instr->InputAt(0));
|
| - int32_t divisor = ToInteger32(LConstantOperand::cast(instr->InputAt(1)));
|
| + Register dividend = ToRegister(instr->left());
|
| + int32_t divisor = ToInteger32(LConstantOperand::cast(instr->right()));
|
| Register result = ToRegister(instr->result());
|
|
|
| switch (divisor) {
|
| @@ -1115,9 +1115,9 @@ void LCodeGen::DoMathFloorOfDiv(LMathFloorOfDiv* instr) {
|
| __ sar(result, power);
|
| }
|
| } else {
|
| - ASSERT(ToRegister(instr->InputAt(0)).is(eax));
|
| + ASSERT(ToRegister(instr->left()).is(eax));
|
| ASSERT(ToRegister(instr->result()).is(edx));
|
| - Register scratch = ToRegister(instr->TempAt(0));
|
| + Register scratch = ToRegister(instr->temp());
|
|
|
| // Find b which: 2^b < divisor_abs < 2^(b+1).
|
| unsigned b = 31 - CompilerIntrinsics::CountLeadingZeros(divisor_abs);
|
| @@ -1169,11 +1169,11 @@ void LCodeGen::DoMathFloorOfDiv(LMathFloorOfDiv* 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)) {
|
| - __ mov(ToRegister(instr->TempAt(0)), left);
|
| + __ mov(ToRegister(instr->temp()), left);
|
| }
|
|
|
| if (right->IsConstantOperand()) {
|
| @@ -1239,7 +1239,7 @@ void LCodeGen::DoMulI(LMulI* instr) {
|
| }
|
| } else {
|
| // Test the non-zero operand for negative sign.
|
| - __ or_(ToRegister(instr->TempAt(0)), ToOperand(right));
|
| + __ or_(ToRegister(instr->temp()), ToOperand(right));
|
| DeoptimizeIf(sign, instr->environment());
|
| }
|
| __ bind(&done);
|
| @@ -1248,8 +1248,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());
|
|
|
| @@ -1289,8 +1289,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()) {
|
| @@ -1345,8 +1345,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()) {
|
| @@ -1375,7 +1375,7 @@ void LCodeGen::DoConstantD(LConstantD* instr) {
|
| if (BitCast<uint64_t, double>(v) == 0) {
|
| __ xorps(res, res);
|
| } else {
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| + Register temp = ToRegister(instr->temp());
|
| uint64_t int_val = BitCast<uint64_t, double>(v);
|
| int32_t lower = static_cast<int32_t>(int_val);
|
| int32_t upper = static_cast<int32_t>(int_val >> (kBitsPerInt));
|
| @@ -1418,7 +1418,7 @@ 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());
|
| __ mov(result, FieldOperand(array, JSArray::kLengthOffset));
|
| }
|
|
|
| @@ -1426,21 +1426,21 @@ void LCodeGen::DoJSArrayLength(LJSArrayLength* instr) {
|
| void LCodeGen::DoFixedArrayBaseLength(
|
| LFixedArrayBaseLength* instr) {
|
| Register result = ToRegister(instr->result());
|
| - Register array = ToRegister(instr->InputAt(0));
|
| + Register array = ToRegister(instr->value());
|
| __ mov(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|.
|
| __ mov(result, FieldOperand(input, HeapObject::kMapOffset));
|
| @@ -1454,9 +1454,9 @@ 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());
|
| - Register map = ToRegister(instr->TempAt(0));
|
| + Register map = ToRegister(instr->temp());
|
| ASSERT(input.is(result));
|
|
|
| Label done;
|
| @@ -1473,9 +1473,9 @@ 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());
|
| - Register scratch = ToRegister(instr->TempAt(0));
|
| + Register scratch = ToRegister(instr->temp());
|
| Smi* index = instr->index();
|
| Label runtime, done;
|
| ASSERT(object.is(result));
|
| @@ -1509,7 +1509,7 @@ 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));
|
| }
|
| @@ -1528,8 +1528,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()) {
|
| @@ -1545,8 +1545,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()) {
|
| @@ -1606,8 +1606,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());
|
| // Modulo uses a fixed result register.
|
| ASSERT(instr->op() == Token::MOD || left.is(result));
|
| @@ -1693,17 +1693,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());
|
| __ test(reg, Operand(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()) {
|
| __ cmp(reg, factory()->true_value());
|
| @@ -1751,7 +1751,7 @@ void LCodeGen::DoBranch(LBranch* instr) {
|
|
|
| Register map = no_reg; // Keep the compiler happy.
|
| if (expected.NeedsMap()) {
|
| - map = ToRegister(instr->TempAt(0));
|
| + map = ToRegister(instr->temp());
|
| ASSERT(!map.is(reg));
|
| __ mov(map, FieldOperand(reg, HeapObject::kMapOffset));
|
|
|
| @@ -1844,8 +1844,8 @@ 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());
|
| @@ -1881,8 +1881,8 @@ void LCodeGen::DoCmpIDAndBranch(LCmpIDAndBranch* instr) {
|
|
|
|
|
| void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) {
|
| - Register left = ToRegister(instr->InputAt(0));
|
| - Operand right = ToOperand(instr->InputAt(1));
|
| + Register left = ToRegister(instr->left());
|
| + Operand right = ToOperand(instr->right());
|
| int false_block = chunk_->LookupDestination(instr->false_block_id());
|
| int true_block = chunk_->LookupDestination(instr->true_block_id());
|
|
|
| @@ -1892,7 +1892,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());
|
|
|
| @@ -1902,7 +1902,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
|
| @@ -1932,7 +1932,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());
|
| __ mov(scratch, FieldOperand(reg, HeapObject::kMapOffset));
|
| __ movzx_b(scratch, FieldOperand(scratch, Map::kBitFieldOffset));
|
| __ test(scratch, Immediate(1 << Map::kIsUndetectable));
|
| @@ -1965,8 +1965,8 @@ Condition LCodeGen::EmitIsObject(Register input,
|
|
|
|
|
| void LCodeGen::DoIsObjectAndBranch(LIsObjectAndBranch* 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());
|
| @@ -1991,8 +1991,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());
|
| @@ -2005,7 +2005,7 @@ void LCodeGen::DoIsStringAndBranch(LIsStringAndBranch* instr) {
|
|
|
|
|
| void LCodeGen::DoIsSmiAndBranch(LIsSmiAndBranch* instr) {
|
| - Operand input = ToOperand(instr->InputAt(0));
|
| + Operand input = ToOperand(instr->value());
|
|
|
| int true_block = chunk_->LookupDestination(instr->true_block_id());
|
| int false_block = chunk_->LookupDestination(instr->false_block_id());
|
| @@ -2016,8 +2016,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());
|
| @@ -2087,8 +2087,8 @@ static Condition BranchCondition(HHasInstanceTypeAndBranch* instr) {
|
|
|
|
|
| void LCodeGen::DoHasInstanceTypeAndBranch(LHasInstanceTypeAndBranch* 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());
|
| @@ -2103,7 +2103,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);
|
| @@ -2115,7 +2115,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());
|
| @@ -2192,9 +2192,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();
|
|
|
| @@ -2211,7 +2211,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();
|
|
|
| @@ -2257,8 +2257,8 @@ void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) {
|
| deferred = new(zone()) DeferredInstanceOfKnownGlobal(this, instr);
|
|
|
| Label done, false_result;
|
| - Register object = ToRegister(instr->InputAt(1));
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| + Register object = ToRegister(instr->value());
|
| + Register temp = ToRegister(instr->temp());
|
|
|
| // A Smi is not an instance of anything.
|
| __ JumpIfSmi(object, &false_result);
|
| @@ -2267,7 +2267,7 @@ void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) {
|
| // hole value will be patched to the last map/result pair generated by the
|
| // instanceof stub.
|
| Label cache_miss;
|
| - Register map = ToRegister(instr->TempAt(0));
|
| + Register map = ToRegister(instr->temp());
|
| __ mov(map, FieldOperand(object, HeapObject::kMapOffset));
|
| __ bind(deferred->map_check()); // Label for calculating code patching.
|
| Handle<JSGlobalPropertyCell> cache_cell =
|
| @@ -2318,7 +2318,7 @@ void LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr,
|
| // register which is pushed last by PushSafepointRegisters as top of the
|
| // stack is used to pass the offset to the location of the map check to
|
| // the stub.
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| + Register temp = ToRegister(instr->temp());
|
| ASSERT(MacroAssembler::SafepointRegisterStackIndex(temp) == 0);
|
| __ LoadHeapObject(InstanceofStub::right(), instr->function());
|
| static const int kAdditionalDelta = 13;
|
| @@ -2485,7 +2485,7 @@ void LCodeGen::DoStoreContextSlot(LStoreContextSlot* instr) {
|
| HType type = instr->hydrogen()->value()->type();
|
| SmiCheck check_needed =
|
| type.IsHeapObject() ? OMIT_SMI_CHECK : INLINE_SMI_CHECK;
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| + Register temp = ToRegister(instr->temp());
|
| int offset = Context::SlotOffset(instr->slot_index());
|
| __ RecordWriteContextSlot(context,
|
| offset,
|
| @@ -2650,7 +2650,7 @@ void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) {
|
|
|
| void LCodeGen::DoLoadFunctionPrototype(LLoadFunctionPrototype* instr) {
|
| Register function = ToRegister(instr->function());
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| + Register temp = ToRegister(instr->temp());
|
| Register result = ToRegister(instr->result());
|
|
|
| // Check that the function really is a function.
|
| @@ -2692,7 +2692,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());
|
| __ mov(result, FieldOperand(input, JSObject::kElementsOffset));
|
| if (FLAG_debug_code) {
|
| Label done, ok, fail;
|
| @@ -2728,7 +2728,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());
|
| __ mov(result, FieldOperand(input,
|
| ExternalArray::kExternalPointerOffset));
|
| }
|
| @@ -2941,7 +2941,7 @@ void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) {
|
|
|
|
|
| void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) {
|
| - Operand elem = ToOperand(instr->InputAt(0));
|
| + Operand elem = ToOperand(instr->elements());
|
| Register result = ToRegister(instr->result());
|
|
|
| Label done;
|
| @@ -2965,7 +2965,7 @@ void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) {
|
| void LCodeGen::DoWrapReceiver(LWrapReceiver* instr) {
|
| Register receiver = ToRegister(instr->receiver());
|
| Register function = ToRegister(instr->function());
|
| - Register scratch = ToRegister(instr->TempAt(0));
|
| + Register scratch = ToRegister(instr->temp());
|
|
|
| // If the receiver is null or undefined, we have to pass the global
|
| // object as a receiver to normal functions. Values have to be
|
| @@ -3053,7 +3053,7 @@ void LCodeGen::DoApplyArguments(LApplyArguments* instr) {
|
|
|
|
|
| void LCodeGen::DoPushArgument(LPushArgument* instr) {
|
| - LOperand* argument = instr->InputAt(0);
|
| + LOperand* argument = instr->value();
|
| EmitPushTaggedOperand(argument);
|
| }
|
|
|
| @@ -3084,7 +3084,7 @@ void LCodeGen::DoOuterContext(LOuterContext* instr) {
|
|
|
|
|
| void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) {
|
| - ASSERT(ToRegister(instr->InputAt(0)).is(esi));
|
| + ASSERT(ToRegister(instr->context()).is(esi));
|
| __ push(esi); // The context is the first argument.
|
| __ push(Immediate(instr->hydrogen()->pairs()));
|
| __ push(Immediate(Smi::FromInt(instr->hydrogen()->flags())));
|
| @@ -3417,11 +3417,11 @@ void LCodeGen::DoPower(LPower* instr) {
|
| Representation exponent_type = instr->hydrogen()->right()->representation();
|
| // Having marked this as a call, we can use any registers.
|
| // Just make sure that the input/output registers are the expected ones.
|
| - ASSERT(!instr->InputAt(1)->IsDoubleRegister() ||
|
| - ToDoubleRegister(instr->InputAt(1)).is(xmm1));
|
| - ASSERT(!instr->InputAt(1)->IsRegister() ||
|
| - ToRegister(instr->InputAt(1)).is(eax));
|
| - ASSERT(ToDoubleRegister(instr->InputAt(0)).is(xmm2));
|
| + ASSERT(!instr->right()->IsDoubleRegister() ||
|
| + ToDoubleRegister(instr->right()).is(xmm1));
|
| + ASSERT(!instr->right()->IsRegister() ||
|
| + ToRegister(instr->right()).is(eax));
|
| + ASSERT(ToDoubleRegister(instr->left()).is(xmm2));
|
| ASSERT(ToDoubleRegister(instr->result()).is(xmm3));
|
|
|
| if (exponent_type.IsTagged()) {
|
| @@ -3459,7 +3459,7 @@ void LCodeGen::DoRandom(LRandom* instr) {
|
| // Having marked this instruction as a call we can use any
|
| // registers.
|
| ASSERT(ToDoubleRegister(instr->result()).is(xmm1));
|
| - ASSERT(ToRegister(instr->InputAt(0)).is(eax));
|
| + ASSERT(ToRegister(instr->global_object()).is(eax));
|
| // Assert that the register size is indeed the size of each seed.
|
| static const int kSeedSize = sizeof(uint32_t);
|
| STATIC_ASSERT(kPointerSize == kSeedSize);
|
| @@ -3716,8 +3716,8 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| if (!instr->hydrogen()->NeedsWriteBarrierForMap()) {
|
| __ mov(FieldOperand(object, HeapObject::kMapOffset), instr->transition());
|
| } else {
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| - Register temp_map = ToRegister(instr->TempAt(1));
|
| + Register temp = ToRegister(instr->temp());
|
| + Register temp_map = ToRegister(instr->temp_map());
|
| __ mov(temp_map, instr->transition());
|
| __ mov(FieldOperand(object, HeapObject::kMapOffset), temp_map);
|
| // Update the write barrier for the map field.
|
| @@ -3738,7 +3738,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| if (instr->is_in_object()) {
|
| __ mov(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,
|
| @@ -3749,7 +3749,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| check_needed);
|
| }
|
| } else {
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| + Register temp = ToRegister(instr->temp());
|
| __ mov(temp, FieldOperand(object, JSObject::kPropertiesOffset));
|
| __ mov(FieldOperand(temp, offset), value);
|
| if (instr->hydrogen()->NeedsWriteBarrier()) {
|
| @@ -3945,7 +3945,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();
|
| @@ -3965,14 +3965,14 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) {
|
| __ mov(FieldOperand(object_reg, HeapObject::kMapOffset),
|
| Immediate(map));
|
| // Write barrier.
|
| - ASSERT_NE(instr->temp_reg(), NULL);
|
| + ASSERT_NE(instr->temp(), NULL);
|
| __ RecordWriteForMap(object_reg, to_map, new_map_reg,
|
| - ToRegister(instr->temp_reg()),
|
| + ToRegister(instr->temp()),
|
| kDontSaveFPRegs);
|
| } else if (IsFastSmiElementsKind(from_kind) &&
|
| IsFastDoubleElementsKind(to_kind)) {
|
| __ mov(new_map_reg, to_map);
|
| - Register fixed_object_reg = ToRegister(instr->temp_reg());
|
| + Register fixed_object_reg = ToRegister(instr->temp());
|
| ASSERT(fixed_object_reg.is(edx));
|
| ASSERT(new_map_reg.is(ebx));
|
| __ mov(fixed_object_reg, object_reg);
|
| @@ -3981,7 +3981,7 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) {
|
| } else if (IsFastDoubleElementsKind(from_kind) &&
|
| IsFastObjectElementsKind(to_kind)) {
|
| __ mov(new_map_reg, to_map);
|
| - Register fixed_object_reg = ToRegister(instr->temp_reg());
|
| + Register fixed_object_reg = ToRegister(instr->temp());
|
| ASSERT(fixed_object_reg.is(edx));
|
| ASSERT(new_map_reg.is(ebx));
|
| __ mov(fixed_object_reg, object_reg);
|
| @@ -4114,7 +4114,7 @@ void LCodeGen::DoStringAdd(LStringAdd* 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());
|
| @@ -4123,9 +4123,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),
|
| @@ -4139,16 +4139,14 @@ void LCodeGen::DoNumberTagI(LNumberTagI* instr) {
|
| DeferredNumberTagI(LCodeGen* codegen, LNumberTagI* instr)
|
| : LDeferredCode(codegen), instr_(instr) { }
|
| virtual void Generate() {
|
| - codegen()->DoDeferredNumberTagI(instr_,
|
| - instr_->InputAt(0),
|
| - SIGNED_INT32);
|
| + codegen()->DoDeferredNumberTagI(instr_, instr_->value(), SIGNED_INT32);
|
| }
|
| virtual LInstruction* instr() { return instr_; }
|
| private:
|
| LNumberTagI* instr_;
|
| };
|
|
|
| - LOperand* input = instr->InputAt(0);
|
| + LOperand* input = instr->value();
|
| ASSERT(input->IsRegister() && input->Equals(instr->result()));
|
| Register reg = ToRegister(input);
|
|
|
| @@ -4165,16 +4163,14 @@ void LCodeGen::DoNumberTagU(LNumberTagU* instr) {
|
| DeferredNumberTagU(LCodeGen* codegen, LNumberTagU* instr)
|
| : LDeferredCode(codegen), instr_(instr) { }
|
| virtual void Generate() {
|
| - codegen()->DoDeferredNumberTagI(instr_,
|
| - instr_->InputAt(0),
|
| - UNSIGNED_INT32);
|
| + codegen()->DoDeferredNumberTagI(instr_, instr_->value(), UNSIGNED_INT32);
|
| }
|
| virtual LInstruction* instr() { return instr_; }
|
| private:
|
| LNumberTagU* instr_;
|
| };
|
|
|
| - LOperand* input = instr->InputAt(0);
|
| + LOperand* input = instr->value();
|
| ASSERT(input->IsRegister() && input->Equals(instr->result()));
|
| Register reg = ToRegister(input);
|
|
|
| @@ -4251,9 +4247,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) {
|
| @@ -4288,7 +4284,7 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) {
|
|
|
|
|
| void LCodeGen::DoSmiTag(LSmiTag* instr) {
|
| - LOperand* input = instr->InputAt(0);
|
| + LOperand* input = instr->value();
|
| ASSERT(input->IsRegister() && input->Equals(instr->result()));
|
| ASSERT(!instr->hydrogen_value()->CheckFlag(HValue::kCanOverflow));
|
| __ SmiTag(ToRegister(input));
|
| @@ -4296,7 +4292,7 @@ void LCodeGen::DoSmiTag(LSmiTag* instr) {
|
|
|
|
|
| void LCodeGen::DoSmiUntag(LSmiUntag* instr) {
|
| - LOperand* input = instr->InputAt(0);
|
| + LOperand* input = instr->value();
|
| ASSERT(input->IsRegister() && input->Equals(instr->result()));
|
| if (instr->needs_check()) {
|
| __ test(ToRegister(input), Immediate(kSmiTagMask));
|
| @@ -4365,7 +4361,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.
|
| __ cmp(FieldOperand(input_reg, HeapObject::kMapOffset),
|
| @@ -4406,7 +4402,7 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
| __ mov(input_reg, Operand(esp, 0)); // Low word of answer is the result.
|
| __ add(Operand(esp), Immediate(kDoubleSize));
|
| } else {
|
| - XMMRegister xmm_temp = ToDoubleRegister(instr->TempAt(0));
|
| + XMMRegister xmm_temp = ToDoubleRegister(instr->temp());
|
| __ movdbl(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset));
|
| __ cvttsd2si(input_reg, Operand(xmm0));
|
| __ cmp(input_reg, 0x80000000u);
|
| @@ -4423,7 +4419,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());
|
| __ movdbl(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset));
|
| __ cvttsd2si(input_reg, Operand(xmm0));
|
| __ cvtsi2sd(xmm_temp, Operand(input_reg));
|
| @@ -4453,7 +4449,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()));
|
|
|
| @@ -4472,9 +4468,9 @@ void LCodeGen::DoTaggedToI(LTaggedToI* instr) {
|
|
|
|
|
| void LCodeGen::DoNumberUntagD(LNumberUntagD* instr) {
|
| - LOperand* input = instr->InputAt(0);
|
| + LOperand* input = instr->value();
|
| ASSERT(input->IsRegister());
|
| - LOperand* temp = instr->TempAt(0);
|
| + LOperand* temp = instr->temp();
|
| ASSERT(temp == NULL || temp->IsRegister());
|
| LOperand* result = instr->result();
|
| ASSERT(result->IsDoubleRegister());
|
| @@ -4496,7 +4492,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());
|
| @@ -4534,7 +4530,7 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) {
|
| __ bind(&done);
|
| } else {
|
| Label done;
|
| - Register temp_reg = ToRegister(instr->TempAt(0));
|
| + Register temp_reg = ToRegister(instr->temp());
|
| XMMRegister xmm_scratch = xmm0;
|
|
|
| // If cvttsd2si succeeded, we're done. Otherwise, we attempt
|
| @@ -4613,22 +4609,22 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) {
|
|
|
|
|
| void LCodeGen::DoCheckSmi(LCheckSmi* instr) {
|
| - LOperand* input = instr->InputAt(0);
|
| + LOperand* input = instr->value();
|
| __ test(ToOperand(input), Immediate(kSmiTagMask));
|
| DeoptimizeIf(not_zero, instr->environment());
|
| }
|
|
|
|
|
| void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) {
|
| - LOperand* input = instr->InputAt(0);
|
| + LOperand* input = instr->value();
|
| __ test(ToOperand(input), Immediate(kSmiTagMask));
|
| DeoptimizeIf(zero, instr->environment());
|
| }
|
|
|
|
|
| void LCodeGen::DoCheckInstanceType(LCheckInstanceType* instr) {
|
| - Register input = ToRegister(instr->InputAt(0));
|
| - Register temp = ToRegister(instr->TempAt(0));
|
| + Register input = ToRegister(instr->value());
|
| + Register temp = ToRegister(instr->temp());
|
|
|
| __ mov(temp, FieldOperand(input, HeapObject::kMapOffset));
|
|
|
| @@ -4698,7 +4694,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);
|
|
|
| @@ -4764,7 +4760,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();
|
| @@ -4804,7 +4800,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();
|
| @@ -5123,7 +5119,7 @@ void LCodeGen::DoObjectLiteral(LObjectLiteral* instr) {
|
|
|
|
|
| void LCodeGen::DoToFastProperties(LToFastProperties* instr) {
|
| - ASSERT(ToRegister(instr->InputAt(0)).is(eax));
|
| + ASSERT(ToRegister(instr->value()).is(eax));
|
| __ push(eax);
|
| CallRuntime(Runtime::kToFastProperties, 1, instr);
|
| }
|
| @@ -5203,14 +5199,14 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
|
|
|
|
|
| void LCodeGen::DoTypeof(LTypeof* instr) {
|
| - LOperand* input = instr->InputAt(1);
|
| + LOperand* input = instr->value();
|
| EmitPushTaggedOperand(input);
|
| CallRuntime(Runtime::kTypeof, 1, instr);
|
| }
|
|
|
|
|
| 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);
|
| @@ -5294,7 +5290,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());
|
|
|
|
|