| 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);
 | 
| +  LocationSummary* locs = 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);
 | 
| +  LocationSummary* locs = 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);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
|    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);
 | 
| +  LocationSummary* locs = 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);
 | 
| +    LocationSummary* locs = 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(),
 | 
| @@ -265,8 +276,8 @@
 | 
|    }
 | 
|    if (operation_cid() == kDoubleCid) {
 | 
|      const intptr_t kNumTemps = 0;
 | 
| -    LocationSummary* locs =
 | 
| -        new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +    LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +        isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|      locs->set_in(0, Location::RequiresFpuRegister());
 | 
|      locs->set_in(1, Location::RequiresFpuRegister());
 | 
|      locs->set_out(0, Location::RequiresRegister());
 | 
| @@ -274,8 +285,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.
 | 
| @@ -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);
 | 
| +  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.
 | 
| @@ -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);
 | 
| +  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());
 | 
| @@ -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);
 | 
| +    LocationSummary* locs = 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(),
 | 
| @@ -700,16 +714,16 @@
 | 
|      return locs;
 | 
|    }
 | 
|    if (operation_cid() == kDoubleCid) {
 | 
| -    LocationSummary* summary =
 | 
| -        new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +    LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +        isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|      summary->set_in(0, Location::RequiresFpuRegister());
 | 
|      summary->set_in(1, Location::RequiresFpuRegister());
 | 
|      summary->set_out(0, Location::RequiresRegister());
 | 
|      return summary;
 | 
|    }
 | 
|    ASSERT(operation_cid() == kSmiCid);
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RegisterOrConstant(left()));
 | 
|    // Only one input can be a constant operand. The case of two constant
 | 
|    // operands should be handled by constant propagation.
 | 
| @@ -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);
 | 
| +  LocationSummary* locs = 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);
 | 
| +  LocationSummary* summary = 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);
 | 
| +  LocationSummary* locs = 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);
 | 
| +  LocationSummary* locs = 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);
 | 
| +  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 =
 | 
| @@ -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,
 | 
| +  LocationSummary* summary = 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);
 | 
| +  LocationSummary* summary = 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,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());
 | 
| @@ -2069,11 +2096,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(EAX));
 | 
|    summary->set_in(1, Location::RegisterLocation(ECX));
 | 
|    summary->set_in(2, Location::RegisterLocation(EDX));
 | 
| @@ -2098,11 +2126,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(ECX));
 | 
|    locs->set_in(1, Location::RegisterLocation(EDX));
 | 
|    locs->set_out(0, Location::RegisterLocation(EAX));
 | 
| @@ -2313,12 +2342,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);
 | 
| @@ -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);
 | 
| +  LocationSummary* locs = 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);
 | 
| +  LocationSummary* locs = 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,12 +2592,13 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -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(
 | 
| -        kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
 | 
| +    LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +        isolate, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
 | 
|      locs->set_temp(0, Location::RegisterLocation(ECX));
 | 
|      locs->set_temp(1, Location::RegisterLocation(EBX));
 | 
|      locs->set_out(0, Location::RegisterLocation(EAX));
 | 
| @@ -2575,8 +2606,8 @@
 | 
|    }
 | 
|    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(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);
 | 
| +  LocationSummary* locs = 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,
 | 
| +  LocationSummary* summary = 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);
 | 
| +    LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +        isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|      if (RightIsPowerOfTwoConstant()) {
 | 
|        summary->set_in(0, Location::RequiresRegister());
 | 
|        ConstantInstr* right_constant = right()->definition()->AsConstant();
 | 
| @@ -2991,8 +3026,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(EDX));
 | 
|      summary->set_in(1, Location::WritableRegister());
 | 
| @@ -3002,16 +3037,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(), ECX));
 | 
|      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(), ECX));
 | 
|      if (!is_truncating()) {
 | 
| @@ -3021,8 +3056,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) {
 | 
| @@ -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));
 | 
| @@ -3351,8 +3387,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());
 | 
| @@ -3386,13 +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,
 | 
| -                          kNumTemps,
 | 
| -                          LocationSummary::kCallOnSlowPath);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
 | 
|    summary->set_in(0, Location::RequiresFpuRegister());
 | 
|    summary->set_out(0, Location::RequiresRegister());
 | 
|    return summary;
 | 
| @@ -3416,14 +3451,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);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, needs_writable_input
 | 
|                       ? Location::WritableRegister()
 | 
|                       : Location::RequiresRegister());
 | 
| @@ -3474,11 +3510,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());
 | 
| @@ -3504,12 +3541,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);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    if (kNumTemps > 0) {
 | 
|      ASSERT(kNumTemps == 1);
 | 
| @@ -3537,11 +3575,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());
 | 
| @@ -3567,12 +3606,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());
 | 
|    if (kNumTemps > 0) {
 | 
|      ASSERT(kNumTemps == 1);
 | 
| @@ -3600,11 +3640,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());
 | 
| @@ -3662,12 +3703,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);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    if (kNumTemps > 0) {
 | 
|      ASSERT(kNumTemps == 1);
 | 
| @@ -3696,11 +3738,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());
 | 
| @@ -3724,11 +3767,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());
 | 
| @@ -3752,11 +3796,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());
 | 
| @@ -3780,11 +3825,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;
 | 
| @@ -3822,11 +3868,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());
 | 
| @@ -3849,11 +3896,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;
 | 
| @@ -3870,11 +3918,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());
 | 
| @@ -3907,11 +3955,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;
 | 
|  }
 | 
| @@ -3923,11 +3972,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;
 | 
| @@ -3944,11 +3994,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());
 | 
| @@ -3987,11 +4038,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());
 | 
| @@ -4017,11 +4069,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());
 | 
| @@ -4046,11 +4099,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;
 | 
| @@ -4077,11 +4131,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;
 | 
| @@ -4104,11 +4159,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());
 | 
| @@ -4127,11 +4183,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());
 | 
| @@ -4195,11 +4252,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;
 | 
| @@ -4211,11 +4269,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;
 | 
| @@ -4240,11 +4299,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;
 | 
|  }
 | 
| @@ -4256,11 +4316,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;
 | 
| @@ -4274,11 +4335,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());
 | 
| @@ -4299,11 +4360,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;
 | 
| @@ -4317,11 +4378,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;
 | 
| @@ -4334,11 +4395,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);
 | 
| @@ -4376,11 +4438,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());
 | 
| @@ -4430,11 +4493,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);
 | 
| +  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());
 | 
| @@ -4492,11 +4555,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;
 | 
| @@ -4537,11 +4601,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());
 | 
| @@ -4571,11 +4636,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);
 | 
| +  LocationSummary* summary = 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 +4693,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;
 | 
| @@ -4643,11 +4710,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());
 | 
| @@ -4683,12 +4751,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);
 | 
| +    LocationSummary* summary = 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.
 | 
| @@ -4700,8 +4769,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());
 | 
| @@ -4735,12 +4804,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.
 | 
| @@ -4752,8 +4822,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.
 | 
| @@ -4823,7 +4893,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 +4922,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;
 | 
| @@ -4869,11 +4941,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;
 | 
| @@ -4888,11 +4961,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* result =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
| +  LocationSummary* result = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
|    result->set_in(0, Location::RegisterLocation(ECX));
 | 
|    result->set_out(0, Location::RegisterLocation(EAX));
 | 
|    return result;
 | 
| @@ -4932,11 +5006,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* DoubleToSmiInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                       bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* result = new LocationSummary(
 | 
| -      kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* result = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    result->set_in(0, Location::RequiresFpuRegister());
 | 
|    result->set_out(0, Location::RequiresRegister());
 | 
|    return result;
 | 
| @@ -4955,11 +5030,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;
 | 
| @@ -4985,11 +5061,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;
 | 
| @@ -5001,11 +5078,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;
 | 
| @@ -5017,11 +5095,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);
 | 
| +  LocationSummary* result = 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 +5272,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(),
 | 
| @@ -5242,12 +5322,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(EAX));
 | 
|      summary->set_in(1, Location::WritableRegister());
 | 
| @@ -5259,8 +5340,8 @@
 | 
|    if (kind() == MergedMathInstr::kSinCos) {
 | 
|      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::Pair(Location::RequiresFpuRegister(),
 | 
|                                         Location::RequiresFpuRegister()));
 | 
| @@ -5374,7 +5455,7 @@
 | 
|  
 | 
|  
 | 
|  LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary(
 | 
| -    bool opt) const {
 | 
| +    Isolate* isolate, bool opt) const {
 | 
|    return MakeCallSummary();
 | 
|  }
 | 
|  
 | 
| @@ -5417,8 +5498,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 +5512,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());
 | 
| @@ -5490,11 +5573,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;
 | 
|  }
 | 
| @@ -5510,11 +5594,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);
 | 
| +  LocationSummary* locs = 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 +5657,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);
 | 
| +  LocationSummary* summary = 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 +5711,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,
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs,
 | 
|                            kNumTemps,
 | 
|                            LocationSummary::kCallOnSlowPath);
 | 
|    summary->set_in(0, Location::Pair(Location::RequiresRegister(),
 | 
| @@ -5718,15 +5805,16 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -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:
 | 
|      case Token::kBIT_OR:
 | 
|      case Token::kBIT_XOR: {
 | 
|        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::Pair(Location::RequiresRegister(),
 | 
|                                          Location::RequiresRegister()));
 | 
|        summary->set_in(1, Location::Pair(Location::RequiresRegister(),
 | 
| @@ -5737,8 +5825,8 @@
 | 
|      case Token::kADD:
 | 
|      case Token::kSUB: {
 | 
|        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::Pair(Location::RequiresRegister(),
 | 
|                                          Location::RequiresRegister()));
 | 
|        summary->set_in(1, Location::Pair(Location::RequiresRegister(),
 | 
| @@ -5806,11 +5894,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);
 | 
| +  LocationSummary* summary = 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 +5967,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);
 | 
| +  LocationSummary* summary = 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 +6008,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 +6025,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 +6066,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 +6096,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 +6109,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(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);
 | 
| +  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.
 | 
| @@ -6101,8 +6196,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 +6254,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(EAX));  // Function.
 | 
|    summary->set_out(0, Location::RegisterLocation(EAX));
 | 
|    return summary;
 | 
| @@ -6208,7 +6305,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 +6326,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    return MakeCallSummary();
 | 
|  }
 | 
|  
 | 
| 
 |