| Index: runtime/vm/intermediate_language_mips.cc
|
| diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc
|
| index 4a063cda4d9f713d0be41b1979daca8a4db7e4d9..cb3c4b6ba2a2ce27181ca7c8af1b0cfb8c5029f6 100644
|
| --- a/runtime/vm/intermediate_language_mips.cc
|
| +++ b/runtime/vm/intermediate_language_mips.cc
|
| @@ -29,7 +29,7 @@ DECLARE_FLAG(bool, use_osr);
|
| // on the stack and return the result in a fixed register V0.
|
| LocationSummary* Instruction::MakeCallSummary() {
|
| LocationSummary* result = new LocationSummary(0, 0, LocationSummary::kCall);
|
| - result->set_out(Location::RegisterLocation(V0));
|
| + result->set_out(0, Location::RegisterLocation(V0));
|
| return result;
|
| }
|
|
|
| @@ -129,7 +129,7 @@ LocationSummary* IfThenElseInstr::MakeLocationSummary(bool opt) const {
|
|
|
|
|
| void IfThenElseInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - const Register result = locs()->out().reg();
|
| + const Register result = locs()->out(0).reg();
|
|
|
| Location left = locs()->in(0);
|
| Location right = locs()->in(1);
|
| @@ -209,7 +209,7 @@ LocationSummary* ClosureCallInstr::MakeLocationSummary(bool opt) const {
|
| const intptr_t kNumTemps = 1;
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| - result->set_out(Location::RegisterLocation(V0));
|
| + result->set_out(0, Location::RegisterLocation(V0));
|
| result->set_temp(0, Location::RegisterLocation(S4)); // Arg. descriptor.
|
| return result;
|
| }
|
| @@ -243,7 +243,7 @@ LocationSummary* LoadLocalInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void LoadLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ TraceSimMsg("LoadLocalInstr");
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ lw(result, Address(FP, local().index() * kWordSize));
|
| }
|
|
|
| @@ -258,7 +258,7 @@ LocationSummary* StoreLocalInstr::MakeLocationSummary(bool opt) const {
|
| void StoreLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ TraceSimMsg("StoreLocalInstr");
|
| Register value = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| ASSERT(result == value); // Assert that register assignment is correct.
|
| __ sw(value, Address(FP, local().index() * kWordSize));
|
| }
|
| @@ -273,9 +273,9 @@ LocationSummary* ConstantInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void ConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The register allocator drops constant definitions that have no uses.
|
| - if (!locs()->out().IsInvalid()) {
|
| + if (!locs()->out(0).IsInvalid()) {
|
| __ TraceSimMsg("ConstantInstr");
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ LoadObject(result, value());
|
| }
|
| }
|
| @@ -289,7 +289,7 @@ LocationSummary* AssertAssignableInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RegisterLocation(A0)); // Value.
|
| summary->set_in(1, Location::RegisterLocation(A2)); // Instantiator.
|
| summary->set_in(2, Location::RegisterLocation(A1)); // Type arguments.
|
| - summary->set_out(Location::RegisterLocation(A0));
|
| + summary->set_out(0, Location::RegisterLocation(A0));
|
| return summary;
|
| }
|
|
|
| @@ -300,7 +300,7 @@ LocationSummary* AssertBooleanInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(A0));
|
| - locs->set_out(Location::RegisterLocation(A0));
|
| + locs->set_out(0, Location::RegisterLocation(A0));
|
| return locs;
|
| }
|
|
|
| @@ -331,7 +331,7 @@ static void EmitAssertBoolean(Register reg,
|
|
|
| void AssertBooleanInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register obj = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| __ TraceSimMsg("AssertBooleanInstr");
|
| EmitAssertBoolean(obj, token_pos(), deopt_id(), locs(), compiler);
|
| @@ -348,7 +348,7 @@ LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_in(0, Location::RequiresFpuRegister());
|
| locs->set_in(1, Location::RequiresFpuRegister());
|
| locs->set_temp(0, Location::RequiresRegister());
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
| if (operation_cid() == kDoubleCid) {
|
| @@ -357,7 +357,7 @@ LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresFpuRegister());
|
| locs->set_in(1, Location::RequiresFpuRegister());
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
| if (operation_cid() == kSmiCid) {
|
| @@ -370,7 +370,7 @@ LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_in(1, locs->in(0).IsConstant()
|
| ? Location::RequiresRegister()
|
| : Location::RegisterOrConstant(right()));
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
| UNREACHABLE();
|
| @@ -568,7 +568,7 @@ void EqualityCompareInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Condition true_condition = EmitComparisonCode(compiler, labels);
|
| EmitBranchOnCondition(compiler, true_condition, labels);
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done;
|
| __ Bind(&is_false);
|
| __ LoadObject(result, Bool::False());
|
| @@ -647,7 +647,7 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_in(1, Location::RequiresFpuRegister());
|
| locs->set_temp(0, Location::RequiresRegister());
|
| locs->set_temp(1, Location::RequiresRegister());
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
| if (operation_cid() == kDoubleCid) {
|
| @@ -655,7 +655,7 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| ASSERT(operation_cid() == kSmiCid);
|
| @@ -667,7 +667,7 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(1, summary->in(0).IsConstant()
|
| ? Location::RequiresRegister()
|
| : Location::RegisterOrConstant(right()));
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -691,7 +691,7 @@ void RelationalOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Condition true_condition = EmitComparisonCode(compiler, labels);
|
| EmitBranchOnCondition(compiler, true_condition, labels);
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done;
|
| __ Bind(&is_false);
|
| __ LoadObject(result, Bool::False());
|
| @@ -720,7 +720,7 @@ LocationSummary* NativeCallInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_temp(0, Location::RegisterLocation(A1));
|
| locs->set_temp(1, Location::RegisterLocation(A2));
|
| locs->set_temp(2, Location::RegisterLocation(T5));
|
| - locs->set_out(Location::RegisterLocation(V0));
|
| + locs->set_out(0, Location::RegisterLocation(V0));
|
| return locs;
|
| }
|
|
|
| @@ -730,7 +730,7 @@ void NativeCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->temp(0).reg() == A1);
|
| ASSERT(locs()->temp(1).reg() == A2);
|
| ASSERT(locs()->temp(2).reg() == T5);
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| // Push the result place holder initialized to NULL.
|
| __ PushObject(Object::ZoneHandle());
|
| @@ -785,7 +785,7 @@ LocationSummary* StringFromCharCodeInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void StringFromCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register char_code = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| __ TraceSimMsg("StringFromCharCodeInstr");
|
|
|
| @@ -811,7 +811,7 @@ void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
|
|
| ASSERT(cid_ == kOneByteStringCid);
|
| Register str = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done, is_one;
|
| __ lw(result, FieldAddress(str, String::length_offset()));
|
| __ BranchEqual(result, Smi::RawValue(1), &is_one);
|
| @@ -830,7 +830,7 @@ LocationSummary* StringInterpolateInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::RegisterLocation(A0));
|
| - summary->set_out(Location::RegisterLocation(V0));
|
| + summary->set_out(0, Location::RegisterLocation(V0));
|
| return summary;
|
| }
|
|
|
| @@ -846,7 +846,7 @@ void StringInterpolateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| kNumberOfArguments,
|
| kNoArgumentNames,
|
| locs());
|
| - ASSERT(locs()->out().reg() == V0);
|
| + ASSERT(locs()->out(0).reg() == V0);
|
| }
|
|
|
|
|
| @@ -860,7 +860,7 @@ LocationSummary* LoadUntaggedInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void LoadUntaggedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register object = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ LoadFromOffset(result, object, offset() - kHeapObjectTag);
|
| }
|
|
|
| @@ -875,7 +875,7 @@ LocationSummary* LoadClassIdInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void LoadClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register object = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label load, done;
|
| __ andi(CMPRES1, object, Immediate(kSmiTagMask));
|
| __ bne(CMPRES1, ZR, &load);
|
| @@ -974,9 +974,9 @@ LocationSummary* LoadIndexedInstr::MakeLocationSummary(bool opt) const {
|
| if ((representation() == kUnboxedDouble) ||
|
| (representation() == kUnboxedFloat32x4) ||
|
| (representation() == kUnboxedInt32x4)) {
|
| - locs->set_out(Location::RequiresFpuRegister());
|
| + locs->set_out(0, Location::RequiresFpuRegister());
|
| } else {
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| }
|
| return locs;
|
| }
|
| @@ -1034,7 +1034,7 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| (representation() == kUnboxedMint) ||
|
| (representation() == kUnboxedFloat32x4) ||
|
| (representation() == kUnboxedInt32x4)) {
|
| - DRegister result = locs()->out().fpu_reg();
|
| + DRegister result = locs()->out(0).fpu_reg();
|
| switch (class_id()) {
|
| case kTypedDataInt32ArrayCid:
|
| UNIMPLEMENTED();
|
| @@ -1058,7 +1058,7 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| return;
|
| }
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| switch (class_id()) {
|
| case kTypedDataInt8ArrayCid:
|
| ASSERT(index_scale() == 1);
|
| @@ -1668,7 +1668,7 @@ class StoreInstanceFieldSlowPath : public SlowPathCode {
|
| const ExternalLabel label(cls_.ToCString(), stub.EntryPoint());
|
|
|
| LocationSummary* locs = instruction_->locs();
|
| - locs->live_registers()->Remove(locs->out());
|
| + locs->live_registers()->Remove(locs->out(0));
|
|
|
| compiler->SaveLiveRegisters(locs);
|
| compiler->GenerateCall(Scanner::kNoSourcePos, // No token position.
|
| @@ -1857,7 +1857,7 @@ LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -1870,7 +1870,7 @@ LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(bool opt) const {
|
| void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ TraceSimMsg("LoadStaticFieldInstr");
|
| Register field = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ lw(result, FieldAddress(field, Field::value_offset()));
|
| }
|
|
|
| @@ -1908,7 +1908,7 @@ LocationSummary* InstanceOfInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RegisterLocation(A0));
|
| summary->set_in(1, Location::RegisterLocation(A2));
|
| summary->set_in(2, Location::RegisterLocation(A1));
|
| - summary->set_out(Location::RegisterLocation(V0));
|
| + summary->set_out(0, Location::RegisterLocation(V0));
|
| return summary;
|
| }
|
|
|
| @@ -1924,7 +1924,7 @@ void InstanceOfInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| type(),
|
| negate_result(),
|
| locs());
|
| - ASSERT(locs()->out().reg() == V0);
|
| + ASSERT(locs()->out(0).reg() == V0);
|
| }
|
|
|
|
|
| @@ -1935,7 +1935,7 @@ LocationSummary* CreateArrayInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(A0));
|
| locs->set_in(1, Location::RegisterLocation(A1));
|
| - locs->set_out(Location::RegisterLocation(V0));
|
| + locs->set_out(0, Location::RegisterLocation(V0));
|
| return locs;
|
| }
|
|
|
| @@ -1949,7 +1949,7 @@ void CreateArrayInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| &StubCode::AllocateArrayLabel(),
|
| PcDescriptors::kOther,
|
| locs());
|
| - ASSERT(locs()->out().reg() == V0);
|
| + ASSERT(locs()->out(0).reg() == V0);
|
| }
|
|
|
|
|
| @@ -1967,15 +1967,15 @@ class BoxDoubleSlowPath : public SlowPathCode {
|
| const ExternalLabel label(double_class.ToCString(), stub.EntryPoint());
|
|
|
| LocationSummary* locs = instruction_->locs();
|
| - locs->live_registers()->Remove(locs->out());
|
| + locs->live_registers()->Remove(locs->out(0));
|
|
|
| compiler->SaveLiveRegisters(locs);
|
| compiler->GenerateCall(Scanner::kNoSourcePos, // No token position.
|
| &label,
|
| PcDescriptors::kOther,
|
| locs);
|
| - if (locs->out().reg() != V0) {
|
| - __ mov(locs->out().reg(), V0);
|
| + if (locs->out(0).reg() != V0) {
|
| + __ mov(locs->out(0).reg(), V0);
|
| }
|
| compiler->RestoreLiveRegisters(locs);
|
|
|
| @@ -2006,7 +2006,7 @@ LocationSummary* LoadFieldInstr::MakeLocationSummary(bool opt) const {
|
| : Location::FpuRegisterLocation(D1));
|
| locs->AddTemp(Location::RequiresRegister());
|
| }
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
|
|
| @@ -2014,7 +2014,7 @@ LocationSummary* LoadFieldInstr::MakeLocationSummary(bool opt) const {
|
| void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register instance_reg = locs()->in(0).reg();
|
| if (IsUnboxedLoad() && compiler->is_optimizing()) {
|
| - DRegister result = locs()->out().fpu_reg();
|
| + DRegister result = locs()->out(0).fpu_reg();
|
| Register temp = locs()->temp(0).reg();
|
| __ lw(temp, FieldAddress(instance_reg, offset_in_bytes()));
|
| intptr_t cid = field()->UnboxedFieldCid();
|
| @@ -2030,7 +2030,7 @@ void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
|
|
| Label done;
|
| - Register result_reg = locs()->out().reg();
|
| + Register result_reg = locs()->out(0).reg();
|
| if (IsPotentialUnboxedLoad()) {
|
| Register temp = locs()->temp(1).reg();
|
| DRegister value = locs()->temp(0).fpu_reg();
|
| @@ -2088,7 +2088,7 @@ LocationSummary* InstantiateTypeInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(T0));
|
| - locs->set_out(Location::RegisterLocation(T0));
|
| + locs->set_out(0, Location::RegisterLocation(T0));
|
| return locs;
|
| }
|
|
|
| @@ -2096,7 +2096,7 @@ LocationSummary* InstantiateTypeInstr::MakeLocationSummary(bool opt) const {
|
| void InstantiateTypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ TraceSimMsg("InstantiateTypeInstr");
|
| Register instantiator_reg = locs()->in(0).reg();
|
| - Register result_reg = locs()->out().reg();
|
| + Register result_reg = locs()->out(0).reg();
|
|
|
| // 'instantiator_reg' is the instantiator TypeArguments object (or null).
|
| // A runtime call to instantiate the type is required.
|
| @@ -2128,7 +2128,7 @@ LocationSummary* InstantiateTypeArgumentsInstr::MakeLocationSummary(
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(T0));
|
| - locs->set_out(Location::RegisterLocation(T0));
|
| + locs->set_out(0, Location::RegisterLocation(T0));
|
| return locs;
|
| }
|
|
|
| @@ -2137,7 +2137,7 @@ void InstantiateTypeArgumentsInstr::EmitNativeCode(
|
| FlowGraphCompiler* compiler) {
|
| __ TraceSimMsg("InstantiateTypeArgumentsInstr");
|
| Register instantiator_reg = locs()->in(0).reg();
|
| - Register result_reg = locs()->out().reg();
|
| + Register result_reg = locs()->out(0).reg();
|
| ASSERT(instantiator_reg == T0);
|
| ASSERT(instantiator_reg == result_reg);
|
|
|
| @@ -2201,7 +2201,7 @@ LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_temp(0, Location::RegisterLocation(T1));
|
| - locs->set_out(Location::RegisterLocation(V0));
|
| + locs->set_out(0, Location::RegisterLocation(V0));
|
| return locs;
|
| }
|
|
|
| @@ -2209,7 +2209,7 @@ LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const {
|
| void AllocateContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register temp = T1;
|
| ASSERT(locs()->temp(0).reg() == temp);
|
| - ASSERT(locs()->out().reg() == V0);
|
| + ASSERT(locs()->out(0).reg() == V0);
|
|
|
| __ TraceSimMsg("AllocateContextInstr");
|
| __ LoadImmediate(temp, num_context_variables());
|
| @@ -2228,14 +2228,14 @@ LocationSummary* CloneContextInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(T0));
|
| - locs->set_out(Location::RegisterLocation(T0));
|
| + locs->set_out(0, Location::RegisterLocation(T0));
|
| return locs;
|
| }
|
|
|
|
|
| void CloneContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register context_value = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| __ TraceSimMsg("CloneContextInstr");
|
|
|
| @@ -2372,7 +2372,7 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| const bool is_truncating = shift_left->is_truncating();
|
| const LocationSummary& locs = *shift_left->locs();
|
| Register left = locs.in(0).reg();
|
| - Register result = locs.out().reg();
|
| + Register result = locs.out(0).reg();
|
| Label* deopt = shift_left->CanDeoptimize() ?
|
| compiler->AddDeoptStub(shift_left->deopt_id(), kDeoptBinarySmiOp) : NULL;
|
|
|
| @@ -2496,14 +2496,14 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(1, Location::RequiresRegister());
|
| }
|
| summary->AddTemp(Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| if (op_kind() == Token::kMOD) {
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::RequiresRegister());
|
| summary->AddTemp(Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| summary->set_in(0, Location::RequiresRegister());
|
| @@ -2517,7 +2517,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| }
|
| // We make use of 3-operand instructions by not requiring result register
|
| // to be identical to first input register as on Intel.
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -2531,7 +2531,7 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
|
|
| ASSERT(!is_truncating());
|
| Register left = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label* deopt = NULL;
|
| if (CanDeoptimize()) {
|
| deopt = compiler->AddDeoptStub(deopt_id(), kDeoptBinarySmiOp);
|
| @@ -2869,7 +2869,7 @@ LocationSummary* BoxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_temp(0, Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -2878,7 +2878,7 @@ void BoxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| BoxDoubleSlowPath* slow_path = new BoxDoubleSlowPath(this);
|
| compiler->AddSlowPathCode(slow_path);
|
|
|
| - Register out_reg = locs()->out().reg();
|
| + Register out_reg = locs()->out(0).reg();
|
| DRegister value = locs()->in(0).fpu_reg();
|
|
|
| __ TryAllocate(compiler->double_class(),
|
| @@ -2900,7 +2900,7 @@ LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, needs_writable_input
|
| ? Location::WritableRegister()
|
| : Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
| @@ -2908,7 +2908,7 @@ LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| void UnboxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const Register value = locs()->in(0).reg();
|
| - const DRegister result = locs()->out().fpu_reg();
|
| + const DRegister result = locs()->out(0).fpu_reg();
|
|
|
| if (value_cid == kDoubleCid) {
|
| __ LoadDFromOffset(result, value, Double::value_offset() - kHeapObjectTag);
|
| @@ -3009,7 +3009,7 @@ LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3017,7 +3017,7 @@ LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| void BinaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| DRegister left = locs()->in(0).fpu_reg();
|
| DRegister right = locs()->in(1).fpu_reg();
|
| - DRegister result = locs()->out().fpu_reg();
|
| + DRegister result = locs()->out(0).fpu_reg();
|
| switch (op_kind()) {
|
| case Token::kADD: __ addd(result, left, right); break;
|
| case Token::kSUB: __ subd(result, left, right); break;
|
| @@ -3372,7 +3372,7 @@ LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::FpuRegisterLocation(D6));
|
| - summary->set_out(Location::FpuRegisterLocation(D0));
|
| + summary->set_out(0, Location::FpuRegisterLocation(D0));
|
| return summary;
|
| }
|
| const intptr_t kNumInputs = 1;
|
| @@ -3380,14 +3380,14 @@ LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
|
|
| void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (kind() == MethodRecognizer::kMathSqrt) {
|
| - __ sqrtd(locs()->out().fpu_reg(), locs()->in(0).fpu_reg());
|
| + __ sqrtd(locs()->out(0).fpu_reg(), locs()->in(0).fpu_reg());
|
| } else {
|
| __ CallRuntime(TargetFunction(), InputCount());
|
| }
|
| @@ -3403,7 +3403,7 @@ LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| // Reuse the left register so that code can be made shorter.
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| summary->set_temp(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| @@ -3415,7 +3415,7 @@ LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::RequiresRegister());
|
| // Reuse the left register so that code can be made shorter.
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3428,7 +3428,7 @@ void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label done, returns_nan, are_equal;
|
| DRegister left = locs()->in(0).fpu_reg();
|
| DRegister right = locs()->in(1).fpu_reg();
|
| - DRegister result = locs()->out().fpu_reg();
|
| + DRegister result = locs()->out(0).fpu_reg();
|
| Register temp = locs()->temp(0).reg();
|
| __ cund(left, right);
|
| __ bc1t(&returns_nan);
|
| @@ -3473,7 +3473,7 @@ void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(result_cid() == kSmiCid);
|
| Register left = locs()->in(0).reg();
|
| Register right = locs()->in(1).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| ASSERT(result == left);
|
| if (is_min) {
|
| __ BranchSignedLessEqual(left, right, &done);
|
| @@ -3493,14 +3493,14 @@ LocationSummary* UnarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresRegister());
|
| // We make use of 3-operand instructions by not requiring result register
|
| // to be identical to first input register as on Intel.
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
|
|
| void UnarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| switch (op_kind()) {
|
| case Token::kNEGATE: {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(),
|
| @@ -3525,7 +3525,7 @@ LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| summary->set_temp(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
| @@ -3535,7 +3535,7 @@ void UnaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // TODO(zra): Implement vneg.
|
| const Double& minus_one = Double::ZoneHandle(Double::NewCanonical(-1));
|
| __ LoadObject(TMP, minus_one);
|
| - FpuRegister result = locs()->out().fpu_reg();
|
| + FpuRegister result = locs()->out(0).fpu_reg();
|
| FpuRegister value = locs()->in(0).fpu_reg();
|
| FpuRegister temp_fp = locs()->temp(0).fpu_reg();
|
| __ LoadDFromOffset(temp_fp, TMP, Double::value_offset() - kHeapObjectTag);
|
| @@ -3550,14 +3550,14 @@ LocationSummary* SmiToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::WritableRegister());
|
| - result->set_out(Location::RequiresFpuRegister());
|
| + result->set_out(0, Location::RequiresFpuRegister());
|
| return result;
|
| }
|
|
|
|
|
| void SmiToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| - FpuRegister result = locs()->out().fpu_reg();
|
| + FpuRegister result = locs()->out(0).fpu_reg();
|
| __ SmiUntag(value);
|
| __ mtc1(value, STMP1);
|
| __ cvtdw(result, STMP1);
|
| @@ -3570,13 +3570,13 @@ LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| result->set_in(0, Location::RegisterLocation(T1));
|
| - result->set_out(Location::RegisterLocation(V0));
|
| + result->set_out(0, Location::RegisterLocation(V0));
|
| return result;
|
| }
|
|
|
|
|
| void DoubleToIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Register value_obj = locs()->in(0).reg();
|
| ASSERT(result == V0);
|
| ASSERT(result != value_obj);
|
| @@ -3616,14 +3616,14 @@ LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result = new LocationSummary(
|
| kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| - result->set_out(Location::RequiresRegister());
|
| + result->set_out(0, Location::RequiresRegister());
|
| return result;
|
| }
|
|
|
|
|
| void DoubleToSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(), kDeoptDoubleToSmi);
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| DRegister value = locs()->in(0).fpu_reg();
|
| __ cvtwd(STMP1, value);
|
| __ mfc1(result, STMP1);
|
| @@ -3653,14 +3653,14 @@ LocationSummary* DoubleToFloatInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| - result->set_out(Location::SameAsFirstInput());
|
| + result->set_out(0, Location::SameAsFirstInput());
|
| return result;
|
| }
|
|
|
|
|
| void DoubleToFloatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| DRegister value = locs()->in(0).fpu_reg();
|
| - FRegister result = EvenFRegisterOf(locs()->out().fpu_reg());
|
| + FRegister result = EvenFRegisterOf(locs()->out(0).fpu_reg());
|
| __ cvtsd(result, value);
|
| }
|
|
|
| @@ -3671,14 +3671,14 @@ LocationSummary* FloatToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| - result->set_out(Location::SameAsFirstInput());
|
| + result->set_out(0, Location::SameAsFirstInput());
|
| return result;
|
| }
|
|
|
|
|
| void FloatToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| FRegister value = EvenFRegisterOf(locs()->in(0).fpu_reg());
|
| - DRegister result = locs()->out().fpu_reg();
|
| + DRegister result = locs()->out(0).fpu_reg();
|
| __ cvtds(result, value);
|
| }
|
|
|
| @@ -3694,7 +3694,7 @@ LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const {
|
| if (InputCount() == 2) {
|
| result->set_in(1, Location::FpuRegisterLocation(D7));
|
| }
|
| - result->set_out(Location::FpuRegisterLocation(D0));
|
| + result->set_out(0, Location::FpuRegisterLocation(D0));
|
| return result;
|
| }
|
|
|
| @@ -3711,7 +3711,7 @@ void InvokeMathCFunctionInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // }
|
| DRegister base = locs()->in(0).fpu_reg();
|
| DRegister exp = locs()->in(1).fpu_reg();
|
| - DRegister result = locs()->out().fpu_reg();
|
| + DRegister result = locs()->out(0).fpu_reg();
|
|
|
| Label check_base_is_one;
|
|
|
| @@ -3756,7 +3756,7 @@ LocationSummary* MergedMathInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_temp(0, Location::RequiresRegister());
|
| summary->set_temp(1, Location::RequiresRegister()); // result_div.
|
| summary->set_temp(2, Location::RequiresRegister()); // result_mod.
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| UNIMPLEMENTED();
|
| @@ -3772,7 +3772,7 @@ void MergedMathInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (kind() == MergedMathInstr::kTruncDivMod) {
|
| Register left = locs()->in(0).reg();
|
| Register right = locs()->in(1).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Register temp = locs()->temp(0).reg();
|
| Register result_div = locs()->temp(1).reg();
|
| Register result_mod = locs()->temp(2).reg();
|
| @@ -3880,7 +3880,7 @@ void PolymorphicInstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| LocationSummary* BranchInstr::MakeLocationSummary(bool opt) const {
|
| comparison()->InitializeLocationSummary(opt);
|
| // Branches don't produce a result.
|
| - comparison()->locs()->set_out(Location::NoLocation());
|
| + comparison()->locs()->set_out(0, Location::NoLocation());
|
| return comparison()->locs();
|
| }
|
|
|
| @@ -4166,7 +4166,7 @@ LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const {
|
|
|
|
|
| void CurrentContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - __ mov(locs()->out().reg(), CTX);
|
| + __ mov(locs()->out(0).reg(), CTX);
|
| }
|
|
|
|
|
| @@ -4178,7 +4178,7 @@ LocationSummary* StrictCompareInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(A0));
|
| locs->set_in(1, Location::RegisterLocation(A1));
|
| - locs->set_out(Location::RegisterLocation(A0));
|
| + locs->set_out(0, Location::RegisterLocation(A0));
|
| return locs;
|
| }
|
| LocationSummary* locs =
|
| @@ -4189,7 +4189,7 @@ LocationSummary* StrictCompareInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_in(1, locs->in(0).IsConstant()
|
| ? Location::RequiresRegister()
|
| : Location::RegisterOrConstant(right()));
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
|
|
| @@ -4230,7 +4230,7 @@ void StrictCompareInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Condition true_condition = EmitComparisonCode(compiler, labels);
|
| EmitBranchOnCondition(compiler, true_condition, labels);
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done;
|
| __ Bind(&is_false);
|
| __ LoadObject(result, Bool::False());
|
| @@ -4261,7 +4261,7 @@ LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void BooleanNegateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| __ LoadObject(result, Bool::True());
|
| __ LoadObject(TMP, Bool::False());
|
|
|