| Index: runtime/vm/intermediate_language_mips.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_mips.cc (revision 36483)
|
| +++ runtime/vm/intermediate_language_mips.cc (working copy)
|
| @@ -28,17 +28,20 @@
|
| // Generic summary for call instructions that have all arguments pushed
|
| // on the stack and return the result in a fixed register V0.
|
| LocationSummary* Instruction::MakeCallSummary() {
|
| - LocationSummary* result = new LocationSummary(0, 0, LocationSummary::kCall);
|
| + Isolate* isolate = Isolate::Current();
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, 0, 0, LocationSummary::kCall);
|
| result->set_out(0, Location::RegisterLocation(V0));
|
| return result;
|
| }
|
|
|
|
|
| -LocationSummary* PushArgumentInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* PushArgumentInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps= 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::AnyOrConstant(value()));
|
| return locs;
|
| }
|
| @@ -64,11 +67,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* ReturnInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* ReturnInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RegisterLocation(V0));
|
| return locs;
|
| }
|
| @@ -122,8 +126,9 @@
|
| }
|
|
|
|
|
| -LocationSummary* IfThenElseInstr::MakeLocationSummary(bool opt) const {
|
| - comparison()->InitializeLocationSummary(opt);
|
| +LocationSummary* IfThenElseInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| + comparison()->InitializeLocationSummary(isolate, opt);
|
| return comparison()->locs();
|
| }
|
|
|
| @@ -204,11 +209,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* ClosureCallInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* ClosureCallInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::RegisterLocation(T0)); // Function.
|
| summary->set_out(0, Location::RegisterLocation(V0));
|
| return summary;
|
| @@ -252,7 +258,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* LoadLocalInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* LoadLocalInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return LocationSummary::Make(0,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| @@ -266,7 +273,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* StoreLocalInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StoreLocalInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return LocationSummary::Make(1,
|
| Location::SameAsFirstInput(),
|
| LocationSummary::kNoCall);
|
| @@ -282,7 +290,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* ConstantInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* ConstantInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return LocationSummary::Make(0,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| @@ -299,11 +308,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_out(0, Location::RequiresFpuRegister());
|
| locs->set_temp(0, Location::RequiresRegister());
|
| return locs;
|
| @@ -323,11 +333,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* AssertAssignableInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* AssertAssignableInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| 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.
|
| @@ -336,11 +347,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* AssertBooleanInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* AssertBooleanInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(A0));
|
| locs->set_out(0, Location::RegisterLocation(A0));
|
| return locs;
|
| @@ -381,12 +393,13 @@
|
| }
|
|
|
|
|
| -LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* EqualityCompareInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| if (operation_cid() == kMintCid) {
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresFpuRegister());
|
| locs->set_in(1, Location::RequiresFpuRegister());
|
| locs->set_temp(0, Location::RequiresRegister());
|
| @@ -395,8 +408,8 @@
|
| }
|
| if (operation_cid() == kDoubleCid) {
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresFpuRegister());
|
| locs->set_in(1, Location::RequiresFpuRegister());
|
| locs->set_out(0, Location::RequiresRegister());
|
| @@ -404,8 +417,8 @@
|
| }
|
| if (operation_cid() == kSmiCid) {
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RegisterOrConstant(left()));
|
| // Only one input can be a constant operand. The case of two constant
|
| // operands should be handled by constant propagation.
|
| @@ -633,11 +646,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* TestSmiInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* TestSmiInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresRegister());
|
| // Only one input can be a constant operand. The case of two constant
|
| // operands should be handled by constant propagation.
|
| @@ -678,11 +692,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* TestCidsInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* TestCidsInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresRegister());
|
| locs->set_temp(0, Location::RequiresRegister());
|
| locs->set_out(0, Location::RequiresRegister());
|
| @@ -750,13 +765,14 @@
|
| }
|
|
|
|
|
| -LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* RelationalOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| if (operation_cid() == kMintCid) {
|
| const intptr_t kNumTemps = 2;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresFpuRegister());
|
| locs->set_in(1, Location::RequiresFpuRegister());
|
| locs->set_temp(0, Location::RequiresRegister());
|
| @@ -765,16 +781,16 @@
|
| return locs;
|
| }
|
| if (operation_cid() == kDoubleCid) {
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| ASSERT(operation_cid() == kSmiCid);
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RegisterOrConstant(left()));
|
| // Only one input can be a constant operand. The case of two constant
|
| // operands should be handled by constant propagation.
|
| @@ -826,11 +842,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* NativeCallInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* NativeCallInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| const intptr_t kNumTemps = 3;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_temp(0, Location::RegisterLocation(A1));
|
| locs->set_temp(1, Location::RegisterLocation(A2));
|
| locs->set_temp(2, Location::RegisterLocation(T5));
|
| @@ -888,7 +905,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* StringFromCharCodeInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StringFromCharCodeInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| // TODO(fschneider): Allow immediate operands for the char code.
|
| return LocationSummary::Make(kNumInputs,
|
| @@ -912,7 +930,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* StringToCharCodeInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StringToCharCodeInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| return LocationSummary::Make(kNumInputs,
|
| Location::RequiresRegister(),
|
| @@ -938,11 +957,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* StringInterpolateInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StringInterpolateInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::RegisterLocation(A0));
|
| summary->set_out(0, Location::RegisterLocation(V0));
|
| return summary;
|
| @@ -964,7 +984,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* LoadUntaggedInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* LoadUntaggedInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| return LocationSummary::Make(kNumInputs,
|
| Location::RequiresRegister(),
|
| @@ -979,7 +1000,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* LoadClassIdInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* LoadClassIdInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| return LocationSummary::Make(kNumInputs,
|
| Location::RequiresRegister(),
|
| @@ -1075,11 +1097,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* LoadIndexedInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* LoadIndexedInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresRegister());
|
| // The smi index is either untagged (element size == 1), or it is left smi
|
| // tagged (for all element sizes > 1).
|
| @@ -1259,11 +1282,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* StoreIndexedInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StoreIndexedInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresRegister());
|
| // The smi index is either untagged (element size == 1), or it is left smi
|
| // tagged (for all element sizes > 1).
|
| @@ -1442,10 +1466,11 @@
|
| }
|
|
|
|
|
| -LocationSummary* GuardFieldInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* GuardFieldInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, 0, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, 0, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| const bool field_has_length = field().needs_length_check();
|
| const bool need_value_temp_reg =
|
| @@ -1803,11 +1828,12 @@
|
| };
|
|
|
|
|
| -LocationSummary* StoreInstanceFieldInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StoreInstanceFieldInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps,
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps,
|
| !field().IsNull() &&
|
| ((field().guarded_cid() == kIllegalCid) || is_initialization_)
|
| ? LocationSummary::kCallOnSlowPath
|
| @@ -1967,11 +1993,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| @@ -1991,8 +2018,10 @@
|
| }
|
|
|
|
|
| -LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(bool opt) const {
|
| - LocationSummary* locs = new LocationSummary(1, 1, LocationSummary::kNoCall);
|
| +LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, 1, 1, LocationSummary::kNoCall);
|
| locs->set_in(0, value()->NeedsStoreBuffer() ? Location::WritableRegister()
|
| : Location::RequiresRegister());
|
| locs->set_temp(0, Location::RequiresRegister());
|
| @@ -2016,11 +2045,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* InstanceOfInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* InstanceOfInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::RegisterLocation(A0));
|
| summary->set_in(1, Location::RegisterLocation(A2));
|
| summary->set_in(2, Location::RegisterLocation(A1));
|
| @@ -2044,11 +2074,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* CreateArrayInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CreateArrayInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(A0));
|
| locs->set_in(1, Location::RegisterLocation(A1));
|
| locs->set_out(0, Location::RegisterLocation(V0));
|
| @@ -2204,12 +2235,12 @@
|
| };
|
|
|
|
|
| -LocationSummary* LoadFieldInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* LoadFieldInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(
|
| - kNumInputs, kNumTemps,
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps,
|
| (opt && !IsPotentialUnboxedLoad())
|
| ? LocationSummary::kNoCall
|
| : LocationSummary::kCallOnSlowPath);
|
| @@ -2299,11 +2330,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* InstantiateTypeInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* InstantiateTypeInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(T0));
|
| locs->set_out(0, Location::RegisterLocation(T0));
|
| return locs;
|
| @@ -2339,11 +2371,11 @@
|
|
|
|
|
| LocationSummary* InstantiateTypeArgumentsInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(T0));
|
| locs->set_out(0, Location::RegisterLocation(T0));
|
| return locs;
|
| @@ -2412,11 +2444,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* AllocateContextInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_temp(0, Location::RegisterLocation(T1));
|
| locs->set_out(0, Location::RegisterLocation(V0));
|
| return locs;
|
| @@ -2439,11 +2472,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* CloneContextInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CloneContextInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(T0));
|
| locs->set_out(0, Location::RegisterLocation(T0));
|
| return locs;
|
| @@ -2471,7 +2505,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNREACHABLE();
|
| return NULL;
|
| }
|
| @@ -2511,11 +2546,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs,
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs,
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_temp(0, Location::RequiresRegister());
|
| @@ -2718,11 +2754,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = op_kind() == Token::kADD ? 1 : 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| if (op_kind() == Token::kTRUNCDIV) {
|
| summary->set_in(0, Location::RequiresRegister());
|
| if (RightIsPowerOfTwoConstant()) {
|
| @@ -3066,14 +3103,15 @@
|
| }
|
|
|
|
|
| -LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| intptr_t left_cid = left()->Type()->ToCid();
|
| intptr_t right_cid = right()->Type()->ToCid();
|
| ASSERT((left_cid != kDoubleCid) && (right_cid != kDoubleCid));
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::RequiresRegister());
|
| return summary;
|
| @@ -3101,11 +3139,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxDoubleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs,
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs,
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| @@ -3131,13 +3170,14 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxDoubleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const bool needs_writable_input = (value_cid == kSmiCid);
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, needs_writable_input
|
| ? Location::WritableRegister()
|
| : Location::RequiresRegister());
|
| @@ -3188,7 +3228,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3199,7 +3240,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3210,7 +3252,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3221,7 +3264,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3232,7 +3276,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxInt32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3243,7 +3288,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3254,11 +3300,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| summary->set_out(0, Location::RequiresFpuRegister());
|
| @@ -3280,7 +3327,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3291,7 +3339,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3302,7 +3351,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3314,7 +3364,8 @@
|
|
|
|
|
|
|
| -LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3326,7 +3377,7 @@
|
|
|
|
|
| LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3337,7 +3388,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3348,7 +3400,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4SplatInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4SplatInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3359,7 +3412,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3370,7 +3424,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3381,7 +3436,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3392,7 +3448,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3403,7 +3460,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3414,7 +3472,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ClampInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ClampInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3425,7 +3484,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4WithInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4WithInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3436,7 +3496,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3447,7 +3508,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3458,7 +3520,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3469,7 +3532,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2SplatInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2SplatInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3481,7 +3545,7 @@
|
|
|
|
|
| LocationSummary* Float64x2ConstructorInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3493,7 +3557,7 @@
|
|
|
|
|
| LocationSummary* Float64x2ToFloat32x4Instr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3505,7 +3569,7 @@
|
|
|
|
|
| LocationSummary* Float32x4ToFloat64x2Instr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3516,7 +3580,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3527,7 +3592,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3539,7 +3605,7 @@
|
|
|
|
|
| LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3550,7 +3616,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3561,7 +3628,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3572,7 +3640,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4SelectInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4SelectInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3583,7 +3652,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3594,7 +3664,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3605,7 +3676,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3616,12 +3688,13 @@
|
| }
|
|
|
|
|
| -LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* MathUnaryInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| if ((kind() == MathUnaryInstr::kSin) || (kind() == MathUnaryInstr::kCos)) {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::FpuRegisterLocation(D6));
|
| summary->set_out(0, Location::FpuRegisterLocation(D0));
|
| return summary;
|
| @@ -3630,8 +3703,8 @@
|
| (kind() == MathUnaryInstr::kDoubleSquare));
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| @@ -3651,12 +3724,13 @@
|
| }
|
|
|
|
|
| -LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* MathMinMaxInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| if (result_cid() == kDoubleCid) {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| // Reuse the left register so that code can be made shorter.
|
| @@ -3667,8 +3741,8 @@
|
| ASSERT(result_cid() == kSmiCid);
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::RequiresRegister());
|
| // Reuse the left register so that code can be made shorter.
|
| @@ -3742,11 +3816,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| 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.
|
| @@ -3775,11 +3850,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_out(0, Location::RequiresFpuRegister());
|
| summary->set_temp(0, Location::RequiresFpuRegister());
|
| @@ -3800,11 +3876,12 @@
|
|
|
|
|
|
|
| -LocationSummary* SmiToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* SmiToDoubleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* result =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::WritableRegister());
|
| result->set_out(0, Location::RequiresFpuRegister());
|
| return result;
|
| @@ -3820,11 +3897,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* result =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| result->set_in(0, Location::RegisterLocation(T1));
|
| result->set_out(0, Location::RegisterLocation(V0));
|
| return result;
|
| @@ -3866,11 +3944,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* DoubleToSmiInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* result = new LocationSummary(
|
| - kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| result->set_out(0, Location::RequiresRegister());
|
| return result;
|
| @@ -3892,7 +3971,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -3903,11 +3983,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* DoubleToFloatInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* DoubleToFloatInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* result =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| result->set_out(0, Location::SameAsFirstInput());
|
| return result;
|
| @@ -3921,11 +4002,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* FloatToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* FloatToDoubleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* result =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| result->set_out(0, Location::SameAsFirstInput());
|
| return result;
|
| @@ -3939,13 +4021,14 @@
|
| }
|
|
|
|
|
| -LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| // Calling convention on MIPS uses D6 and D7 to pass the first two
|
| // double arguments.
|
| ASSERT((InputCount() == 1) || (InputCount() == 2));
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* result =
|
| - new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, InputCount(), kNumTemps, LocationSummary::kCall);
|
| result->set_in(0, Location::FpuRegisterLocation(D6));
|
| if (InputCount() == 2) {
|
| result->set_in(1, Location::FpuRegisterLocation(D7));
|
| @@ -4079,12 +4162,13 @@
|
| }
|
|
|
|
|
| -LocationSummary* ExtractNthOutputInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* ExtractNthOutputInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| // Only use this instruction in optimized code.
|
| ASSERT(opt);
|
| const intptr_t kNumInputs = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, 0, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, 0, LocationSummary::kNoCall);
|
| if (representation() == kUnboxedDouble) {
|
| if (index() == 0) {
|
| summary->set_in(0, Location::Pair(Location::RequiresFpuRegister(),
|
| @@ -4128,12 +4212,13 @@
|
| }
|
|
|
|
|
| -LocationSummary* MergedMathInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* MergedMathInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| if (kind() == MergedMathInstr::kTruncDivMod) {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::RequiresRegister());
|
| summary->set_temp(0, Location::RequiresRegister());
|
| @@ -4208,7 +4293,7 @@
|
|
|
|
|
| LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| return MakeCallSummary();
|
| }
|
|
|
| @@ -4251,8 +4336,9 @@
|
| }
|
|
|
|
|
| -LocationSummary* BranchInstr::MakeLocationSummary(bool opt) const {
|
| - comparison()->InitializeLocationSummary(opt);
|
| +LocationSummary* BranchInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| + comparison()->InitializeLocationSummary(isolate, opt);
|
| // Branches don't produce a result.
|
| comparison()->locs()->set_out(0, Location::NoLocation());
|
| return comparison()->locs();
|
| @@ -4265,11 +4351,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* CheckClassInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CheckClassInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| if (!IsNullCheck()) {
|
| summary->AddTemp(Location::RequiresRegister());
|
| @@ -4319,11 +4406,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* CheckSmiInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CheckSmiInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| @@ -4338,11 +4426,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(kLengthPos, Location::RegisterOrSmiConstant(length()));
|
| locs->set_in(kIndexPos, Location::RegisterOrSmiConstant(index()));
|
| return locs;
|
| @@ -4384,7 +4473,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxIntegerInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -4395,7 +4485,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxIntegerInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxIntegerInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -4406,7 +4497,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryMintOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -4417,7 +4509,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* ShiftMintOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -4428,7 +4521,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnaryMintOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -4439,8 +4533,9 @@
|
| }
|
|
|
|
|
| -LocationSummary* ThrowInstr::MakeLocationSummary(bool opt) const {
|
| - return new LocationSummary(0, 0, LocationSummary::kCall);
|
| +LocationSummary* ThrowInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| + return new(isolate) LocationSummary(isolate, 0, 0, LocationSummary::kCall);
|
| }
|
|
|
|
|
| @@ -4455,8 +4550,9 @@
|
| }
|
|
|
|
|
| -LocationSummary* ReThrowInstr::MakeLocationSummary(bool opt) const {
|
| - return new LocationSummary(0, 0, LocationSummary::kCall);
|
| +LocationSummary* ReThrowInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| + return new(isolate) LocationSummary(isolate, 0, 0, LocationSummary::kCall);
|
| }
|
|
|
|
|
| @@ -4495,8 +4591,9 @@
|
| }
|
|
|
|
|
| -LocationSummary* GotoInstr::MakeLocationSummary(bool opt) const {
|
| - return new LocationSummary(0, 0, LocationSummary::kNoCall);
|
| +LocationSummary* GotoInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| + return new(isolate) LocationSummary(isolate, 0, 0, LocationSummary::kNoCall);
|
| }
|
|
|
|
|
| @@ -4525,7 +4622,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CurrentContextInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return LocationSummary::Make(0,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| @@ -4537,19 +4635,20 @@
|
| }
|
|
|
|
|
| -LocationSummary* StrictCompareInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StrictCompareInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| if (needs_number_check()) {
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(A0));
|
| locs->set_in(1, Location::RegisterLocation(A1));
|
| locs->set_out(0, Location::RegisterLocation(A0));
|
| return locs;
|
| }
|
| - LocationSummary* locs =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* locs = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RegisterOrConstant(left()));
|
| // Only one of the inputs can be a constant. Choose register if the first one
|
| // is a constant.
|
| @@ -4619,7 +4718,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BooleanNegateInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return LocationSummary::Make(1,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| @@ -4637,7 +4737,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return MakeCallSummary();
|
| }
|
|
|
|
|