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

Unified Diff: runtime/vm/intermediate_language_ia32.cc

Issue 296003013: - Reduce the number of Isolate::Current() calls. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/intermediate_language_ia32.cc
===================================================================
--- runtime/vm/intermediate_language_ia32.cc (revision 36483)
+++ runtime/vm/intermediate_language_ia32.cc (working copy)
@@ -29,17 +29,20 @@
// Generic summary for call instructions that have all arguments pushed
// on the stack and return the result in a fixed register EAX.
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(EAX));
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;
}
@@ -62,11 +65,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_in(0, Location::RegisterLocation(EAX));
return locs;
}
@@ -96,7 +100,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()
@@ -113,7 +118,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(),
@@ -129,7 +135,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(),
@@ -146,11 +153,12 @@
}
-LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 0;
const intptr_t kNumTemps = (constant_address() == 0) ? 1 : 0;
LocationSummary* locs =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_out(0, Location::RequiresFpuRegister());
if (kNumTemps == 1) {
locs->set_temp(0, Location::RequiresRegister());
@@ -176,11 +184,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
srdjan 2014/05/22 17:25:08 Here and elsewhere: 80 char limit.
summary->set_in(0, Location::RegisterLocation(EAX)); // Value.
summary->set_in(1, Location::RegisterLocation(ECX)); // Instantiator.
summary->set_in(2, Location::RegisterLocation(EDX)); // Type arguments.
@@ -189,11 +198,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_in(0, Location::RegisterLocation(EAX));
locs->set_out(0, Location::RegisterLocation(EAX));
return locs;
@@ -250,12 +260,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 = 0;
LocationSummary* locs =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_in(0, Location::Pair(Location::RequiresRegister(),
Location::RequiresRegister()));
locs->set_in(1, Location::Pair(Location::RequiresRegister(),
@@ -266,7 +277,7 @@
if (operation_cid() == kDoubleCid) {
const intptr_t kNumTemps = 0;
LocationSummary* locs =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ 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());
@@ -275,7 +286,7 @@
if (operation_cid() == kSmiCid) {
const intptr_t kNumTemps = 0;
LocationSummary* locs =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ 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.
@@ -569,11 +580,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);
+ 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.
@@ -614,11 +626,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);
+ 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());
@@ -685,13 +698,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 = 0;
LocationSummary* locs =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_in(0, Location::Pair(Location::RequiresRegister(),
Location::RequiresRegister()));
locs->set_in(1, Location::Pair(Location::RequiresRegister(),
@@ -701,7 +715,7 @@
}
if (operation_cid() == kDoubleCid) {
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ 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());
@@ -709,7 +723,7 @@
}
ASSERT(operation_cid() == kSmiCid);
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ 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.
@@ -759,11 +773,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_temp(0, Location::RegisterLocation(EAX));
locs->set_temp(1, Location::RegisterLocation(ECX));
locs->set_temp(2, Location::RegisterLocation(EDX));
@@ -813,7 +828,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,
@@ -834,7 +850,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(),
@@ -859,11 +876,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
summary->set_in(0, Location::RegisterLocation(EAX));
summary->set_out(0, Location::RegisterLocation(EAX));
return summary;
@@ -885,7 +903,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(),
@@ -900,7 +919,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(),
@@ -1000,11 +1020,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_in(0, Location::RequiresRegister());
if (CanBeImmediateIndex(index(), class_id())) {
// CanBeImmediateIndex must return false for unsafe smis.
@@ -1204,11 +1225,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_in(0, Location::RequiresRegister());
if (CanBeImmediateIndex(index(), class_id())) {
// CanBeImmediateIndex must return false for unsafe smis.
@@ -1391,10 +1413,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);
+ 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 =
@@ -1765,11 +1788,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,
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps,
!field().IsNull() &&
((field().guarded_cid() == kIllegalCid) || is_initialization_)
? LocationSummary::kCallOnSlowPath
@@ -2020,11 +2044,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
// By specifying same register as input, our simple register allocator can
// generate better code.
@@ -2045,8 +2070,9 @@
}
-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());
@@ -2069,11 +2095,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
summary->set_in(0, Location::RegisterLocation(EAX));
summary->set_in(1, Location::RegisterLocation(ECX));
summary->set_in(2, Location::RegisterLocation(EDX));
@@ -2098,11 +2125,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_in(0, Location::RegisterLocation(ECX));
locs->set_in(1, Location::RegisterLocation(EDX));
locs->set_out(0, Location::RegisterLocation(EAX));
@@ -2313,11 +2341,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(
+ new (isolate) LocationSummary(isolate,
kNumInputs, kNumTemps,
(opt && !IsPotentialUnboxedLoad())
? LocationSummary::kNoCall
@@ -2459,11 +2488,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_in(0, Location::RegisterLocation(EAX));
locs->set_out(0, Location::RegisterLocation(EAX));
return locs;
@@ -2491,11 +2521,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_in(0, Location::RegisterLocation(EAX));
locs->set_out(0, Location::RegisterLocation(EAX));
return locs;
@@ -2562,11 +2592,12 @@
}
-LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* AllocateContextInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
if (opt) {
const intptr_t kNumInputs = 0;
const intptr_t kNumTemps = 2;
- LocationSummary* locs = new LocationSummary(
+ LocationSummary* locs = new (isolate) LocationSummary(isolate,
kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
locs->set_temp(0, Location::RegisterLocation(ECX));
locs->set_temp(1, Location::RegisterLocation(EBX));
@@ -2576,7 +2607,7 @@
const intptr_t kNumInputs = 0;
const intptr_t kNumTemps = 1;
LocationSummary* locs =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_temp(0, Location::RegisterLocation(EDX));
locs->set_out(0, Location::RegisterLocation(EAX));
return locs;
@@ -2698,11 +2729,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_in(0, Location::RegisterLocation(EAX));
locs->set_out(0, Location::RegisterLocation(EAX));
return locs;
@@ -2725,7 +2757,8 @@
}
-LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
UNREACHABLE();
return NULL;
}
@@ -2758,11 +2791,12 @@
}
-LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 0;
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs,
+ new (isolate) LocationSummary(isolate, kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
return summary;
@@ -2967,12 +3001,13 @@
}
-LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 2;
if (op_kind() == Token::kTRUNCDIV) {
const intptr_t kNumTemps = 1;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
if (RightIsPowerOfTwoConstant()) {
summary->set_in(0, Location::RequiresRegister());
ConstantInstr* right_constant = right()->definition()->AsConstant();
@@ -2992,7 +3027,7 @@
} else if (op_kind() == Token::kMOD) {
const intptr_t kNumTemps = 1;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
// Both inputs must be writable because they will be untagged.
summary->set_in(0, Location::RegisterLocation(EDX));
summary->set_in(1, Location::WritableRegister());
@@ -3003,7 +3038,7 @@
} else if (op_kind() == Token::kSHR) {
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
summary->set_in(1, Location::FixedRegisterOrSmiConstant(right(), ECX));
summary->set_out(0, Location::SameAsFirstInput());
@@ -3011,7 +3046,7 @@
} else if (op_kind() == Token::kSHL) {
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
summary->set_in(1, Location::FixedRegisterOrSmiConstant(right(), ECX));
if (!is_truncating()) {
@@ -3022,7 +3057,7 @@
} else {
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
ConstantInstr* constant = right()->definition()->AsConstant();
if (constant != NULL) {
@@ -3342,7 +3377,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));
@@ -3352,7 +3388,7 @@
&& (right_cid != kSmiCid);
const intptr_t kNumTemps = need_temp ? 1 : 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ 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());
@@ -3386,11 +3422,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,
+ new (isolate) LocationSummary(isolate, kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresFpuRegister());
@@ -3416,14 +3453,15 @@
}
-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_temp = ((value_cid != kSmiCid) && (value_cid != kDoubleCid));
const bool needs_writable_input = (value_cid == kSmiCid);
const intptr_t kNumTemps = needs_temp ? 1 : 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, needs_writable_input
? Location::WritableRegister()
: Location::RequiresRegister());
@@ -3474,11 +3512,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,
+ new (isolate) LocationSummary(isolate, kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresFpuRegister());
@@ -3504,12 +3543,13 @@
}
-LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(bool opt) const {
+LocationSummary* UnboxFloat32x4Instr::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 == kFloat32x4Cid ? 0 : 1;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
if (kNumTemps > 0) {
ASSERT(kNumTemps == 1);
@@ -3537,11 +3577,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,
+ new (isolate) LocationSummary(isolate, kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresFpuRegister());
@@ -3567,12 +3608,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
if (kNumTemps > 0) {
ASSERT(kNumTemps == 1);
@@ -3600,11 +3642,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,
+ new (isolate) LocationSummary(isolate, kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresFpuRegister());
@@ -3662,12 +3705,13 @@
}
-LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const {
+LocationSummary* UnboxInt32x4Instr::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 == kInt32x4Cid ? 0 : 1;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
if (kNumTemps > 0) {
ASSERT(kNumTemps == 1);
@@ -3696,11 +3740,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);
+ 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());
@@ -3724,11 +3769,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);
+ 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());
@@ -3752,11 +3798,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);
+ 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());
@@ -3780,11 +3827,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -3822,11 +3870,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);
+ 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());
@@ -3849,11 +3898,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::RequiresRegister());
return summary;
@@ -3870,11 +3920,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);
+ 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());
@@ -3907,11 +3957,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_out(0, Location::RequiresFpuRegister());
return summary;
}
@@ -3923,11 +3974,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -3944,11 +3996,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);
+ 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());
@@ -3987,11 +4040,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);
+ 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());
@@ -4017,11 +4071,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);
+ 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());
@@ -4046,11 +4101,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4077,11 +4133,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4104,11 +4161,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);
+ 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());
@@ -4127,11 +4185,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);
+ 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());
@@ -4195,11 +4254,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4211,11 +4271,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4240,11 +4301,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_out(0, Location::RequiresFpuRegister());
return summary;
}
@@ -4256,11 +4318,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4274,11 +4337,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);
+ 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());
@@ -4299,11 +4362,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4317,11 +4380,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4334,11 +4397,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
if (representation() == kTagged) {
ASSERT(op_kind() == MethodRecognizer::kFloat64x2GetSignMask);
@@ -4376,11 +4440,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);
+ 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());
@@ -4430,11 +4495,11 @@
LocationSummary* Int32x4BoolConstructorInstr::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);
+ 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());
@@ -4492,11 +4557,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::RequiresRegister());
return summary;
@@ -4537,11 +4603,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);
+ 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());
@@ -4571,11 +4638,12 @@
}
-LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 2;
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_in(1, Location::RequiresRegister());
summary->set_out(0, Location::SameAsFirstInput());
@@ -4627,11 +4695,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4643,11 +4712,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);
+ 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());
@@ -4683,12 +4753,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 = 1;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
summary->set_in(0, Location::FpuRegisterLocation(XMM1));
// EDI is chosen because it is callee saved so we do not need to back it
// up before calling into the runtime.
@@ -4701,7 +4772,7 @@
const intptr_t kNumInputs = 1;
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
if (kind() == MathUnaryInstr::kDoubleSquare) {
summary->set_out(0, Location::SameAsFirstInput());
@@ -4735,12 +4806,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);
+ 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.
@@ -4753,7 +4825,7 @@
const intptr_t kNumInputs = 2;
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ 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.
@@ -4823,7 +4895,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(),
@@ -4851,11 +4924,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::SameAsFirstInput());
return summary;
@@ -4869,11 +4943,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
result->set_in(0, Location::WritableRegister());
result->set_out(0, Location::RequiresFpuRegister());
return result;
@@ -4888,11 +4963,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
result->set_in(0, Location::RegisterLocation(ECX));
result->set_out(0, Location::RegisterLocation(EAX));
return result;
@@ -4932,10 +5008,11 @@
}
-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(
+ LocationSummary* result = new (isolate) LocationSummary(isolate,
kNumInputs, kNumTemps, LocationSummary::kNoCall);
result->set_in(0, Location::RequiresFpuRegister());
result->set_out(0, Location::RequiresRegister());
@@ -4955,11 +5032,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
result->set_in(0, Location::RequiresFpuRegister());
result->set_out(0, Location::RequiresFpuRegister());
return result;
@@ -4985,11 +5063,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
result->set_in(0, Location::RequiresFpuRegister());
result->set_out(0, Location::SameAsFirstInput());
return result;
@@ -5001,11 +5080,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
result->set_in(0, Location::RequiresFpuRegister());
result->set_out(0, Location::SameAsFirstInput());
return result;
@@ -5017,11 +5097,12 @@
}
-LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
ASSERT((InputCount() == 1) || (InputCount() == 2));
const intptr_t kNumTemps = 1;
LocationSummary* result =
- new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall);
+ new (isolate) LocationSummary(isolate, InputCount(), kNumTemps, LocationSummary::kCall);
// EDI is chosen because it is callee saved so we do not need to back it
// up before calling into the runtime.
result->set_temp(0, Location::RegisterLocation(EDI));
@@ -5193,12 +5274,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, 0, LocationSummary::kNoCall);
if (representation() == kUnboxedDouble) {
if (index() == 0) {
summary->set_in(0, Location::Pair(Location::RequiresFpuRegister(),
@@ -5242,12 +5324,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
// Both inputs must be writable because they will be untagged.
summary->set_in(0, Location::RegisterLocation(EAX));
summary->set_in(1, Location::WritableRegister());
@@ -5260,7 +5343,7 @@
const intptr_t kNumInputs = 1;
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresFpuRegister());
summary->set_out(0, Location::Pair(Location::RequiresFpuRegister(),
Location::RequiresFpuRegister()));
@@ -5374,7 +5457,7 @@
LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary(
- bool opt) const {
+ Isolate* isolate, bool opt) const {
return MakeCallSummary();
}
@@ -5417,8 +5500,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();
@@ -5430,11 +5514,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
if (!IsNullCheck()) {
summary->AddTemp(Location::RequiresRegister());
@@ -5490,11 +5575,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
return summary;
}
@@ -5510,11 +5596,12 @@
// Length: register or constant.
// Index: register, constant or stack slot.
-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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_in(kLengthPos, Location::RegisterOrSmiConstant(length()));
ConstantInstr* index_constant = index()->definition()->AsConstant();
if (index_constant != NULL) {
@@ -5572,11 +5659,12 @@
}
-LocationSummary* UnboxIntegerInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 1;
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::RequiresRegister());
summary->set_out(0, Location::Pair(Location::RegisterLocation(EAX),
Location::RegisterLocation(EDX)));
@@ -5625,11 +5713,12 @@
}
-LocationSummary* BoxIntegerInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* BoxIntegerInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 1;
const intptr_t kNumTemps = 1;
LocationSummary* summary =
- new LocationSummary(kNumInputs,
+ new (isolate) LocationSummary(isolate, kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::Pair(Location::RequiresRegister(),
@@ -5718,7 +5807,8 @@
}
-LocationSummary* BinaryMintOpInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 2;
switch (op_kind()) {
case Token::kBIT_AND:
@@ -5726,7 +5816,7 @@
case Token::kBIT_XOR: {
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::Pair(Location::RequiresRegister(),
Location::RequiresRegister()));
summary->set_in(1, Location::Pair(Location::RequiresRegister(),
@@ -5738,7 +5828,7 @@
case Token::kSUB: {
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::Pair(Location::RequiresRegister(),
Location::RequiresRegister()));
summary->set_in(1, Location::Pair(Location::RequiresRegister(),
@@ -5806,11 +5896,12 @@
}
-LocationSummary* ShiftMintOpInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 2;
const intptr_t kNumTemps = op_kind() == Token::kSHL ? 2 : 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::Pair(Location::RequiresRegister(),
Location::RequiresRegister()));
summary->set_in(1, Location::RegisterLocation(ECX));
@@ -5878,11 +5969,12 @@
}
-LocationSummary* UnaryMintOpInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
const intptr_t kNumInputs = 1;
const intptr_t kNumTemps = 0;
LocationSummary* summary =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
summary->set_in(0, Location::Pair(Location::RequiresRegister(),
Location::RequiresRegister()));
summary->set_out(0, Location::SameAsFirstInput());
@@ -5918,8 +6010,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);
}
@@ -5934,8 +6027,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);
}
@@ -5974,8 +6068,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);
}
@@ -6003,7 +6098,8 @@
}
-LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* CurrentContextInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
return LocationSummary::Make(0,
Location::RequiresRegister(),
LocationSummary::kNoCall);
@@ -6015,19 +6111,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
locs->set_in(0, Location::RegisterLocation(EAX));
locs->set_in(1, Location::RegisterLocation(ECX));
locs->set_out(0, Location::RegisterLocation(EAX));
return locs;
}
LocationSummary* locs =
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ 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.
@@ -6101,8 +6198,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(EDX));
return comparison()->locs();
@@ -6158,11 +6256,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);
+ new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
summary->set_in(0, Location::RegisterLocation(EAX)); // Function.
summary->set_out(0, Location::RegisterLocation(EAX));
return summary;
@@ -6208,7 +6307,8 @@
}
-LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* BooleanNegateInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
return LocationSummary::Make(1,
Location::RequiresRegister(),
LocationSummary::kNoCall);
@@ -6228,7 +6328,8 @@
}
-LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const {
+LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate,
+ bool opt) const {
return MakeCallSummary();
}

Powered by Google App Engine
This is Rietveld 408576698