Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1450)

Unified Diff: runtime/vm/intermediate_language_mips.cc

Issue 207063002: Refactor to support multiple outputs in location summary (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/intermediate_language_ia32.cc ('k') | runtime/vm/intermediate_language_x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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());
« no previous file with comments | « runtime/vm/intermediate_language_ia32.cc ('k') | runtime/vm/intermediate_language_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698