| Index: runtime/vm/intermediate_language_arm64.cc
 | 
| ===================================================================
 | 
| --- runtime/vm/intermediate_language_arm64.cc	(revision 36483)
 | 
| +++ runtime/vm/intermediate_language_arm64.cc	(working copy)
 | 
| @@ -27,17 +27,20 @@
 | 
|  // Generic summary for call instructions that have all arguments pushed
 | 
|  // on the stack and return the result in a fixed register R0.
 | 
|  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(R0));
 | 
|    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(R0));
 | 
|    return locs;
 | 
|  }
 | 
| @@ -123,8 +127,9 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* IfThenElseInstr::MakeLocationSummary(bool opt) const {
 | 
| -  comparison()->InitializeLocationSummary(opt);
 | 
| +LocationSummary* IfThenElseInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                      bool opt) const {
 | 
| +  comparison()->InitializeLocationSummary(isolate, opt);
 | 
|    return comparison()->locs();
 | 
|  }
 | 
|  
 | 
| @@ -179,11 +184,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(R0));  // Function.
 | 
|    summary->set_out(0, Location::RegisterLocation(R0));
 | 
|    return summary;
 | 
| @@ -229,7 +235,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* LoadLocalInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* LoadLocalInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                     bool opt) const {
 | 
|    return LocationSummary::Make(0,
 | 
|                                 Location::RequiresRegister(),
 | 
|                                 LocationSummary::kNoCall);
 | 
| @@ -242,7 +249,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* StoreLocalInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* StoreLocalInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                      bool opt) const {
 | 
|    return LocationSummary::Make(1,
 | 
|                                 Location::SameAsFirstInput(),
 | 
|                                 LocationSummary::kNoCall);
 | 
| @@ -257,7 +265,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* ConstantInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* ConstantInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                    bool opt) const {
 | 
|    return LocationSummary::Make(0,
 | 
|                                 Location::RequiresRegister(),
 | 
|                                 LocationSummary::kNoCall);
 | 
| @@ -273,7 +282,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    const intptr_t kNumInputs = 0;
 | 
|    return LocationSummary::Make(kNumInputs,
 | 
|                                 Location::RequiresFpuRegister(),
 | 
| @@ -289,11 +299,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(R0));  // Value.
 | 
|    summary->set_in(1, Location::RegisterLocation(R2));  // Instantiator.
 | 
|    summary->set_in(2, Location::RegisterLocation(R1));  // Type arguments.
 | 
| @@ -302,11 +313,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(R0));
 | 
|    locs->set_out(0, Location::RegisterLocation(R0));
 | 
|    return locs;
 | 
| @@ -422,12 +434,13 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* EqualityCompareInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    const intptr_t kNumInputs = 2;
 | 
|    if (operation_cid() == kDoubleCid) {
 | 
|      const intptr_t kNumTemps =  0;
 | 
| -    LocationSummary* locs =
 | 
| -        new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +    LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +        isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|      locs->set_in(0, Location::RequiresFpuRegister());
 | 
|      locs->set_in(1, Location::RequiresFpuRegister());
 | 
|      locs->set_out(0, Location::RequiresRegister());
 | 
| @@ -435,8 +448,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.
 | 
| @@ -528,11 +541,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.
 | 
| @@ -572,11 +586,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());
 | 
| @@ -646,20 +661,21 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* RelationalOpInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                        bool opt) const {
 | 
|    const intptr_t kNumInputs = 2;
 | 
|    const intptr_t kNumTemps = 0;
 | 
|    if (operation_cid() == kDoubleCid) {
 | 
| -    LocationSummary* summary =
 | 
| -        new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +    LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +        isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|      summary->set_in(0, Location::RequiresFpuRegister());
 | 
|      summary->set_in(1, Location::RequiresFpuRegister());
 | 
|      summary->set_out(0, Location::RequiresRegister());
 | 
|      return summary;
 | 
|    }
 | 
|    ASSERT(operation_cid() == kSmiCid);
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RegisterOrConstant(left()));
 | 
|    // Only one input can be a constant operand. The case of two constant
 | 
|    // operands should be handled by constant propagation.
 | 
| @@ -718,11 +734,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(R1));
 | 
|    locs->set_temp(1, Location::RegisterLocation(R2));
 | 
|    locs->set_temp(2, Location::RegisterLocation(R5));
 | 
| @@ -779,7 +796,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,
 | 
| @@ -800,7 +818,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(),
 | 
| @@ -821,11 +840,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(R0));
 | 
|    summary->set_out(0, Location::RegisterLocation(R0));
 | 
|    return summary;
 | 
| @@ -847,7 +867,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(),
 | 
| @@ -862,7 +883,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(),
 | 
| @@ -953,11 +975,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* LoadIndexedInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* LoadIndexedInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                       bool opt) const {
 | 
|    const intptr_t kNumInputs = 2;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* locs =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    locs->set_in(0, Location::RequiresRegister());
 | 
|    // The smi index is either untagged (element size == 1), or it is left smi
 | 
|    // tagged (for all element sizes > 1).
 | 
| @@ -1121,11 +1144,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* StoreIndexedInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* StoreIndexedInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                        bool opt) const {
 | 
|    const intptr_t kNumInputs = 3;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* locs =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    locs->set_in(0, Location::RequiresRegister());
 | 
|    // The smi index is either untagged (element size == 1), or it is left smi
 | 
|    // tagged (for all element sizes > 1).
 | 
| @@ -1333,10 +1357,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();
 | 
|    summary->AddTemp(Location::RequiresRegister());
 | 
| @@ -1686,15 +1711,16 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -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,
 | 
| -          !field().IsNull() &&
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps,
 | 
| +      !field().IsNull() &&
 | 
|            ((field().guarded_cid() == kIllegalCid) || is_initialization_)
 | 
| -          ? LocationSummary::kCallOnSlowPath
 | 
| -          : LocationSummary::kNoCall);
 | 
| +              ? LocationSummary::kCallOnSlowPath
 | 
| +              : LocationSummary::kNoCall);
 | 
|  
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    if (IsUnboxedStore() && opt) {
 | 
| @@ -1918,11 +1944,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    summary->set_out(0, Location::RequiresRegister());
 | 
|    return summary;
 | 
| @@ -1941,8 +1968,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());
 | 
| @@ -1964,11 +1993,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(R0));
 | 
|    summary->set_in(1, Location::RegisterLocation(R2));
 | 
|    summary->set_in(2, Location::RegisterLocation(R1));
 | 
| @@ -1991,11 +2021,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* CreateArrayInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* CreateArrayInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                       bool opt) const {
 | 
|    const intptr_t kNumInputs = 2;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* locs =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
| +  LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
|    locs->set_in(kElementTypePos, Location::RegisterLocation(R1));
 | 
|    locs->set_in(kLengthPos, Location::RegisterLocation(R2));
 | 
|    locs->set_out(0, Location::RegisterLocation(R0));
 | 
| @@ -2111,13 +2142,13 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -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,
 | 
| -          (opt && !IsPotentialUnboxedLoad())
 | 
| +  LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps,
 | 
| +      (opt && !IsPotentialUnboxedLoad())
 | 
|            ? LocationSummary::kNoCall
 | 
|            : LocationSummary::kCallOnSlowPath);
 | 
|  
 | 
| @@ -2251,11 +2282,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(R0));
 | 
|    locs->set_out(0, Location::RegisterLocation(R0));
 | 
|    return locs;
 | 
| @@ -2283,11 +2315,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(R0));
 | 
|    locs->set_out(0, Location::RegisterLocation(R0));
 | 
|    return locs;
 | 
| @@ -2350,11 +2382,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* AllocateContextInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    const intptr_t kNumInputs = 0;
 | 
|    const intptr_t kNumTemps = 1;
 | 
| -  LocationSummary* locs =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
| +  LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
|    locs->set_temp(0, Location::RegisterLocation(R1));
 | 
|    locs->set_out(0, Location::RegisterLocation(R0));
 | 
|    return locs;
 | 
| @@ -2375,11 +2408,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(R0));
 | 
|    locs->set_out(0, Location::RegisterLocation(R0));
 | 
|    return locs;
 | 
| @@ -2402,7 +2436,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    UNREACHABLE();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -2439,13 +2474,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                              bool opt) const {
 | 
|    const intptr_t kNumInputs = 0;
 | 
|    const intptr_t kNumTemps = 1;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs,
 | 
| -                          kNumTemps,
 | 
| -                          LocationSummary::kCallOnSlowPath);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
 | 
|    summary->set_temp(0, Location::RequiresRegister());
 | 
|    return summary;
 | 
|  }
 | 
| @@ -2666,11 +2700,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* BinarySmiOpInstr::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);
 | 
|    if (op_kind() == Token::kTRUNCDIV) {
 | 
|      summary->set_in(0, Location::RequiresRegister());
 | 
|      if (RightIsPowerOfTwoConstant()) {
 | 
| @@ -2988,14 +3023,15 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                             bool opt) const {
 | 
|    intptr_t left_cid = left()->Type()->ToCid();
 | 
|    intptr_t right_cid = right()->Type()->ToCid();
 | 
|    ASSERT((left_cid != kDoubleCid) && (right_cid != kDoubleCid));
 | 
|    const intptr_t kNumInputs = 2;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -    new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    summary->set_in(1, Location::RequiresRegister());
 | 
|    return summary;
 | 
| @@ -3021,13 +3057,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;
 | 
| @@ -3050,11 +3085,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnboxDoubleInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                       bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    summary->set_out(0, Location::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3098,13 +3134,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,
 | 
| -                          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;
 | 
| @@ -3128,11 +3163,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    summary->set_out(0, Location::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3156,13 +3192,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,
 | 
| -                          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;
 | 
| @@ -3186,11 +3221,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    summary->set_out(0, Location::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3214,13 +3250,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,
 | 
| -                          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;
 | 
| @@ -3276,11 +3311,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                        bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    summary->set_out(0, Location::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3304,11 +3340,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    const intptr_t kNumInputs = 2;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresFpuRegister());
 | 
|    summary->set_in(1, Location::RequiresFpuRegister());
 | 
|    summary->set_out(0, Location::RequiresFpuRegister());
 | 
| @@ -3330,11 +3367,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::RequiresFpuRegister());
 | 
| @@ -3357,11 +3395,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::RequiresFpuRegister());
 | 
| @@ -3384,7 +3423,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3395,7 +3435,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                              bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3406,7 +3447,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                               bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3418,11 +3460,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());
 | 
| @@ -3450,11 +3492,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;
 | 
|  }
 | 
| @@ -3466,11 +3509,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::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3489,7 +3533,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                               bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3500,7 +3545,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3511,7 +3557,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                         bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3522,11 +3569,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::RequiresFpuRegister());
 | 
| @@ -3550,7 +3598,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                            bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3561,7 +3610,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float32x4ClampInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float32x4ClampInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3572,7 +3622,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float32x4WithInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float32x4WithInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                         bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3583,7 +3634,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                              bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3594,11 +3646,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::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3621,11 +3674,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;
 | 
|  }
 | 
| @@ -3637,11 +3691,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::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3656,11 +3711,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::RequiresFpuRegister());
 | 
| @@ -3678,7 +3733,7 @@
 | 
|  
 | 
|  
 | 
|  LocationSummary* Float64x2ToFloat32x4Instr::MakeLocationSummary(
 | 
| -    bool opt) const {
 | 
| +    Isolate* isolate, bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3690,7 +3745,7 @@
 | 
|  
 | 
|  
 | 
|  LocationSummary* Float32x4ToFloat64x2Instr::MakeLocationSummary(
 | 
| -    bool opt) const {
 | 
| +    Isolate* isolate, bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3701,7 +3756,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                            bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3712,7 +3768,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3724,7 +3781,7 @@
 | 
|  
 | 
|  
 | 
|  LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary(
 | 
| -    bool opt) const {
 | 
| +    Isolate* isolate, bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3735,7 +3792,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3746,7 +3804,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Int32x4SelectInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Int32x4SelectInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                         bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3757,7 +3816,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3768,7 +3828,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                              bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3779,7 +3840,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -3790,12 +3852,13 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* MathUnaryInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                     bool opt) const {
 | 
|    if ((kind() == MathUnaryInstr::kSin) || (kind() == MathUnaryInstr::kCos)) {
 | 
|      const intptr_t kNumInputs = 1;
 | 
|      const intptr_t kNumTemps = 0;
 | 
| -    LocationSummary* summary =
 | 
| -        new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
| +    LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +        isolate, kNumInputs, kNumTemps, LocationSummary::kCall);
 | 
|      summary->set_in(0, Location::FpuRegisterLocation(V0));
 | 
|      summary->set_out(0, Location::FpuRegisterLocation(V0));
 | 
|      return summary;
 | 
| @@ -3804,8 +3867,8 @@
 | 
|           (kind() == MathUnaryInstr::kDoubleSquare));
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresFpuRegister());
 | 
|    summary->set_out(0, Location::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3829,12 +3892,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 = 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());
 | 
|      // Reuse the left register so that code can be made shorter.
 | 
| @@ -3844,8 +3908,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.
 | 
| @@ -3914,11 +3978,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnarySmiOpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                      bool opt) const {
 | 
|    const intptr_t kNumInputs = 1;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* summary =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* summary = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    summary->set_in(0, Location::RequiresRegister());
 | 
|    // We make use of 3-operand instructions by not requiring result register
 | 
|    // to be identical to first input register as on Intel.
 | 
| @@ -3951,11 +4016,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::RequiresFpuRegister());
 | 
|    return summary;
 | 
| @@ -3969,11 +4035,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;
 | 
| @@ -3988,11 +4055,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(R1));
 | 
|    result->set_out(0, Location::RegisterLocation(R0));
 | 
|    return result;
 | 
| @@ -4041,11 +4109,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;
 | 
| @@ -4073,7 +4142,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -4084,11 +4154,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::RequiresFpuRegister());
 | 
|    return result;
 | 
| @@ -4102,11 +4173,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::RequiresFpuRegister());
 | 
|    return result;
 | 
| @@ -4120,11 +4192,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                               bool opt) const {
 | 
|    ASSERT((InputCount() == 1) || (InputCount() == 2));
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* result =
 | 
| -      new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall);
 | 
| +  LocationSummary* result = new(isolate) LocationSummary(
 | 
| +      isolate, InputCount(), kNumTemps, LocationSummary::kCall);
 | 
|    result->set_in(0, Location::FpuRegisterLocation(V0));
 | 
|    if (InputCount() == 2) {
 | 
|      result->set_in(1, Location::FpuRegisterLocation(V1));
 | 
| @@ -4259,12 +4332,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(),
 | 
| @@ -4308,12 +4382,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);
 | 
|      summary->set_in(0, Location::RequiresRegister());
 | 
|      summary->set_in(1, Location::RequiresRegister());
 | 
|      // Output is a pair of registers.
 | 
| @@ -4389,7 +4464,7 @@
 | 
|  
 | 
|  
 | 
|  LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary(
 | 
| -    bool opt) const {
 | 
| +    Isolate* isolate, bool opt) const {
 | 
|    return MakeCallSummary();
 | 
|  }
 | 
|  
 | 
| @@ -4432,8 +4507,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();
 | 
| @@ -4445,11 +4521,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());
 | 
| @@ -4498,11 +4575,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;
 | 
|  }
 | 
| @@ -4516,11 +4594,12 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                           bool opt) const {
 | 
|    const intptr_t kNumInputs = 2;
 | 
|    const intptr_t kNumTemps = 0;
 | 
| -  LocationSummary* locs =
 | 
| -      new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
| +  LocationSummary* locs = new(isolate) LocationSummary(
 | 
| +      isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
 | 
|    locs->set_in(kLengthPos, Location::RegisterOrSmiConstant(length()));
 | 
|    locs->set_in(kIndexPos, Location::RegisterOrSmiConstant(index()));
 | 
|    return locs;
 | 
| @@ -4570,7 +4649,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnboxIntegerInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                        bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -4581,7 +4661,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* BoxIntegerInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* BoxIntegerInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                      bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -4592,7 +4673,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* BinaryMintOpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                        bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -4603,7 +4685,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* ShiftMintOpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                       bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -4614,7 +4697,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* UnaryMintOpInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                       bool opt) const {
 | 
|    UNIMPLEMENTED();
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -4625,8 +4709,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);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -4640,8 +4725,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);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -4681,8 +4767,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);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -4710,7 +4797,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* CurrentContextInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    return LocationSummary::Make(0,
 | 
|                                 Location::RequiresRegister(),
 | 
|                                 LocationSummary::kNoCall);
 | 
| @@ -4722,19 +4810,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(R0));
 | 
|      locs->set_in(1, Location::RegisterLocation(R1));
 | 
|      locs->set_out(0, Location::RegisterLocation(R0));
 | 
|      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.
 | 
| @@ -4802,7 +4891,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* BooleanNegateInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                         bool opt) const {
 | 
|    return LocationSummary::Make(1,
 | 
|                                 Location::RequiresRegister(),
 | 
|                                 LocationSummary::kNoCall);
 | 
| @@ -4820,7 +4910,8 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const {
 | 
| +LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate,
 | 
| +                                                          bool opt) const {
 | 
|    return MakeCallSummary();
 | 
|  }
 | 
|  
 | 
| 
 |