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