| Index: runtime/vm/intermediate_language_x64.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_x64.cc (revision 36483)
|
| +++ runtime/vm/intermediate_language_x64.cc (working copy)
|
| @@ -28,17 +28,19 @@
|
| // Generic summary for call instructions that have all arguments pushed
|
| // on the stack and return the result in a fixed register RAX.
|
| LocationSummary* Instruction::MakeCallSummary() {
|
| - LocationSummary* result = new LocationSummary(0, 0, LocationSummary::kCall);
|
| + LocationSummary* result = new LocationSummary(
|
| + Isolate::Current(), 0, 0, LocationSummary::kCall);
|
| result->set_out(0, Location::RegisterLocation(RAX));
|
| 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;
|
| }
|
| @@ -61,11 +63,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(RAX));
|
| return locs;
|
| }
|
| @@ -121,8 +124,9 @@
|
| }
|
|
|
|
|
| -LocationSummary* IfThenElseInstr::MakeLocationSummary(bool opt) const {
|
| - comparison()->InitializeLocationSummary(opt);
|
| +LocationSummary* IfThenElseInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| + comparison()->InitializeLocationSummary(isolate, opt);
|
| // TODO(vegorov): support byte register constraints in the register allocator.
|
| comparison()->locs()->set_out(0, Location::RegisterLocation(RDX));
|
| return comparison()->locs();
|
| @@ -178,7 +182,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* LoadLocalInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* LoadLocalInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| const intptr_t stack_index = (local().index() < 0)
|
| ? kFirstLocalSlotFromFp - local().index()
|
| @@ -195,7 +200,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* StoreLocalInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* StoreLocalInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| return LocationSummary::Make(kNumInputs,
|
| Location::SameAsFirstInput(),
|
| @@ -211,7 +217,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* ConstantInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* ConstantInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| return LocationSummary::Make(kNumInputs,
|
| Location::RequiresRegister(),
|
| @@ -228,11 +235,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| 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_out(0, Location::RequiresFpuRegister());
|
| return locs;
|
| }
|
| @@ -252,11 +260,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(RAX)); // Value.
|
| summary->set_in(1, Location::RegisterLocation(RCX)); // Instantiator.
|
| summary->set_in(2, Location::RegisterLocation(RDX)); // Type arguments.
|
| @@ -265,11 +274,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(RAX));
|
| locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| @@ -326,12 +336,13 @@
|
| }
|
|
|
|
|
| -LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* EqualityCompareInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| 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());
|
| @@ -339,8 +350,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.
|
| @@ -509,11 +520,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.
|
| @@ -554,11 +566,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());
|
| @@ -625,20 +638,21 @@
|
| }
|
|
|
|
|
| -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() == 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.
|
| @@ -686,11 +700,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(RAX));
|
| locs->set_temp(1, Location::RegisterLocation(RBX));
|
| locs->set_temp(2, Location::RegisterLocation(R10));
|
| @@ -742,7 +757,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,
|
| @@ -763,7 +779,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(),
|
| @@ -788,11 +805,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(RAX));
|
| summary->set_out(0, Location::RegisterLocation(RAX));
|
| return summary;
|
| @@ -814,7 +832,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(),
|
| @@ -829,7 +848,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(),
|
| @@ -920,11 +940,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).
|
| @@ -1074,11 +1095,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).
|
| @@ -1248,10 +1270,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 =
|
| @@ -1622,11 +1645,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
|
| @@ -1866,11 +1890,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;
|
| @@ -1889,8 +1914,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());
|
| @@ -1913,11 +1940,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(RAX));
|
| summary->set_in(1, Location::RegisterLocation(RCX));
|
| summary->set_in(2, Location::RegisterLocation(RDX));
|
| @@ -1942,11 +1970,12 @@
|
|
|
| // TODO(srdjan): In case of constant inputs make CreateArray kNoCall and
|
| // use slow path stub.
|
| -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(RBX));
|
| locs->set_in(1, Location::RegisterLocation(R10));
|
| locs->set_out(0, Location::RegisterLocation(RAX));
|
| @@ -2162,12 +2191,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);
|
| @@ -2306,11 +2335,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(RAX));
|
| locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| @@ -2338,11 +2368,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(RAX));
|
| locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| @@ -2409,11 +2439,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(R10));
|
| locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| @@ -2434,11 +2465,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(RAX));
|
| locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| @@ -2461,7 +2493,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNREACHABLE();
|
| return NULL;
|
| }
|
| @@ -2498,11 +2531,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());
|
| @@ -2742,7 +2776,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
|
|
| ConstantInstr* right_constant = right()->definition()->AsConstant();
|
| @@ -2753,8 +2788,8 @@
|
| (op_kind() != Token::kMOD) &&
|
| CanBeImmediate(right_constant->value())) {
|
| 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::Constant(right_constant->value()));
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| @@ -2763,8 +2798,8 @@
|
|
|
| if (op_kind() == Token::kTRUNCDIV) {
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| if (RightIsPowerOfTwoConstant()) {
|
| summary->set_in(0, Location::RequiresRegister());
|
| ConstantInstr* right_constant = right()->definition()->AsConstant();
|
| @@ -2782,8 +2817,8 @@
|
| return summary;
|
| } else if (op_kind() == Token::kMOD) {
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| // Both inputs must be writable because they will be untagged.
|
| summary->set_in(0, Location::RegisterLocation(RDX));
|
| summary->set_in(1, Location::WritableRegister());
|
| @@ -2793,16 +2828,16 @@
|
| return summary;
|
| } else if (op_kind() == Token::kSHR) {
|
| 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::FixedRegisterOrSmiConstant(right(), RCX));
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| } else if (op_kind() == Token::kSHL) {
|
| 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::FixedRegisterOrSmiConstant(right(), RCX));
|
| if (!is_truncating()) {
|
| @@ -2812,8 +2847,8 @@
|
| return summary;
|
| } else {
|
| 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());
|
| ConstantInstr* constant = right()->definition()->AsConstant();
|
| if (constant != NULL) {
|
| @@ -3197,7 +3232,8 @@
|
| }
|
|
|
|
|
| -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));
|
| @@ -3206,8 +3242,8 @@
|
| && (left_cid != kSmiCid)
|
| && (right_cid != kSmiCid);
|
| const intptr_t kNumTemps = need_temp ? 1 : 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());
|
| if (need_temp) summary->set_temp(0, Location::RequiresRegister());
|
| @@ -3238,11 +3274,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxDoubleInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs,
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs,
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| @@ -3268,11 +3305,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxDoubleInstr::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);
|
| const bool needs_writable_input = (value()->Type()->ToCid() != kDoubleCid);
|
| summary->set_in(0, needs_writable_input
|
| ? Location::WritableRegister()
|
| @@ -3321,11 +3359,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs,
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs,
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| @@ -3351,7 +3390,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| return LocationSummary::Make(kNumInputs,
|
| Location::RequiresFpuRegister(),
|
| @@ -3375,11 +3415,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs,
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs,
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| @@ -3405,12 +3446,13 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = value_cid == kFloat64x2Cid ? 0 : 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_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| @@ -3433,11 +3475,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxInt32x4Instr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs,
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs,
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| @@ -3495,11 +3538,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxInt32x4Instr::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::RequiresFpuRegister());
|
| return summary;
|
| @@ -3522,11 +3566,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::SameAsFirstInput());
|
| @@ -3550,11 +3595,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryFloat32x4OpInstr::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::SameAsFirstInput());
|
| @@ -3578,11 +3624,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryFloat64x2OpInstr::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::SameAsFirstInput());
|
| @@ -3606,11 +3653,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd32x4ShuffleInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -3648,11 +3696,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd32x4ShuffleMixInstr::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::SameAsFirstInput());
|
| @@ -3675,11 +3724,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd32x4GetSignMaskInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| @@ -3696,11 +3746,11 @@
|
|
|
|
|
| LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| const intptr_t kNumInputs = 4;
|
| 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_in(2, Location::RequiresFpuRegister());
|
| @@ -3733,11 +3783,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| 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_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
| @@ -3749,11 +3800,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4SplatInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4SplatInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -3770,11 +3822,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ComparisonInstr::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::SameAsFirstInput());
|
| @@ -3813,11 +3866,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4MinMaxInstr::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::SameAsFirstInput());
|
| @@ -3843,11 +3897,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ScaleInstr::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::SameAsFirstInput());
|
| @@ -3872,11 +3927,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4SqrtInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -3903,11 +3959,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ZeroArgInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -3930,11 +3987,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ClampInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ClampInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| 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_in(2, Location::RequiresFpuRegister());
|
| @@ -3953,11 +4011,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4WithInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4WithInstr::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::SameAsFirstInput());
|
| @@ -4021,11 +4080,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float32x4ToInt32x4Instr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -4037,11 +4097,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Simd64x2ShuffleInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -4064,11 +4125,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| 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_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
| @@ -4080,11 +4142,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2SplatInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2SplatInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -4098,11 +4161,11 @@
|
|
|
|
|
| LocationSummary* Float64x2ConstructorInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + 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::SameAsFirstInput());
|
| @@ -4123,11 +4186,11 @@
|
|
|
|
|
| LocationSummary* Float64x2ToFloat32x4Instr::MakeLocationSummary(
|
| - bool opt) const {
|
| + 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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -4141,11 +4204,11 @@
|
|
|
|
|
| LocationSummary* Float32x4ToFloat64x2Instr::MakeLocationSummary(
|
| - bool opt) const {
|
| + 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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -4158,11 +4221,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2ZeroArgInstr::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::RequiresFpuRegister());
|
| if (representation() == kTagged) {
|
| ASSERT(op_kind() == MethodRecognizer::kFloat64x2GetSignMask);
|
| @@ -4200,11 +4264,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Float64x2OneArgInstr::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::SameAsFirstInput());
|
| @@ -4254,11 +4319,11 @@
|
|
|
|
|
| LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| const intptr_t kNumInputs = 4;
|
| 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_in(2, Location::RequiresRegister());
|
| @@ -4323,11 +4388,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4GetFlagInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| @@ -4368,11 +4434,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4SelectInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4SelectInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| 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());
|
| summary->set_in(2, Location::RequiresFpuRegister());
|
| @@ -4402,11 +4469,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| 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::RequiresRegister());
|
| summary->set_temp(0, Location::RequiresRegister());
|
| @@ -4468,11 +4536,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* Int32x4ToFloat32x4Instr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -4484,11 +4553,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryInt32x4OpInstr::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::SameAsFirstInput());
|
| @@ -4524,7 +4594,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* MathUnaryInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| if ((kind() == MathUnaryInstr::kSin) || (kind() == MathUnaryInstr::kCos)) {
|
| // Calling convention on x64 uses XMM0 and XMM1 to pass the first two
|
| // double arguments and XMM0 to return the result. Unfortunately
|
| @@ -4532,8 +4603,8 @@
|
| // assumes that XMM0 is free at all times.
|
| // TODO(vegorov): allow XMM0 to be used.
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, InputCount(), kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::FpuRegisterLocation(XMM1));
|
| // R13 is chosen because it is callee saved so we do not need to back it
|
| // up before calling into the runtime.
|
| @@ -4545,8 +4616,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());
|
| if (kind() == MathUnaryInstr::kDoubleSquare) {
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| @@ -4579,7 +4650,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| return LocationSummary::Make(kNumInputs,
|
| Location::SameAsFirstInput(),
|
| @@ -4611,11 +4683,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnaryDoubleOpInstr::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::RequiresFpuRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| @@ -4629,12 +4702,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.
|
| @@ -4645,8 +4719,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.
|
| @@ -4718,11 +4792,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;
|
| @@ -4737,11 +4812,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* result =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| result->set_in(0, Location::RegisterLocation(RCX));
|
| result->set_out(0, Location::RegisterLocation(RAX));
|
| result->set_temp(0, Location::RegisterLocation(RBX));
|
| @@ -4788,11 +4864,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* DoubleToSmiInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
| - 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:: Location::RequiresRegister());
|
| result->set_temp(0, Location::RequiresRegister());
|
| @@ -4820,11 +4897,12 @@
|
| }
|
|
|
|
|
| -LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* DoubleToDoubleInstr::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::RequiresFpuRegister());
|
| return result;
|
| @@ -4850,11 +4928,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;
|
| @@ -4866,11 +4945,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;
|
| @@ -4882,7 +4962,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| // Calling convention on x64 uses XMM0 and XMM1 to pass the first two
|
| // double arguments and XMM0 to return the result. Unfortunately
|
| // currently we can't specify these registers because ParallelMoveResolver
|
| @@ -4890,8 +4971,8 @@
|
| // TODO(vegorov): allow XMM0 to be used.
|
| ASSERT((InputCount() == 1) || (InputCount() == 2));
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* result =
|
| - new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* result = new(isolate) LocationSummary(
|
| + isolate, InputCount(), kNumTemps, LocationSummary::kCall);
|
| result->set_temp(0, Location::RegisterLocation(R13));
|
| result->set_in(0, Location::FpuRegisterLocation(XMM2));
|
| if (InputCount() == 2) {
|
| @@ -5063,12 +5144,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(),
|
| @@ -5112,12 +5194,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 = 0;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| // Both inputs must be writable because they will be untagged.
|
| summary->set_in(0, Location::RegisterLocation(RAX));
|
| summary->set_in(1, Location::WritableRegister());
|
| @@ -5128,8 +5211,8 @@
|
| if (kind() == MergedMathInstr::kSinCos) {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
| - LocationSummary* summary =
|
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + LocationSummary* summary = new(isolate) LocationSummary(
|
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| // Because we always call into the runtime (LocationSummary::kCall) we
|
| // must specify each input, temp, and output register explicitly.
|
| summary->set_in(0, Location::FpuRegisterLocation(XMM1));
|
| @@ -5287,7 +5370,7 @@
|
|
|
|
|
| LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary(
|
| - bool opt) const {
|
| + Isolate* isolate, bool opt) const {
|
| return MakeCallSummary();
|
| }
|
|
|
| @@ -5328,8 +5411,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();
|
| @@ -5341,11 +5425,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());
|
| @@ -5400,11 +5485,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;
|
| }
|
| @@ -5418,11 +5504,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;
|
| @@ -5467,7 +5554,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnboxIntegerInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -5478,7 +5566,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BoxIntegerInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BoxIntegerInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -5489,7 +5578,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BinaryMintOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -5500,7 +5590,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* UnaryMintOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -5511,7 +5602,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* ShiftMintOpInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
| @@ -5522,8 +5614,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);
|
| }
|
|
|
|
|
| @@ -5537,8 +5630,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);
|
| }
|
|
|
|
|
| @@ -5577,8 +5671,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);
|
| }
|
|
|
|
|
| @@ -5606,7 +5701,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* CurrentContextInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return LocationSummary::Make(0,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| @@ -5618,19 +5714,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(RAX));
|
| locs->set_in(1, Location::RegisterLocation(RCX));
|
| locs->set_out(0, Location::RegisterLocation(RAX));
|
| 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.
|
| @@ -5699,11 +5796,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(RAX)); // Function.
|
| summary->set_out(0, Location::RegisterLocation(RAX));
|
| return summary;
|
| @@ -5749,7 +5847,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* BooleanNegateInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return LocationSummary::Make(1,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| @@ -5769,7 +5868,8 @@
|
| }
|
|
|
|
|
| -LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const {
|
| +LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate,
|
| + bool opt) const {
|
| return MakeCallSummary();
|
| }
|
|
|
|
|