| Index: src/hydrogen-instructions.cc
 | 
| diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
 | 
| index 734cd2ed3dcb90f46b60c3dd0cb48fdee075b6a4..5bf5b48c22e4ee57fe50f9bc10948e043ac14b6e 100644
 | 
| --- a/src/hydrogen-instructions.cc
 | 
| +++ b/src/hydrogen-instructions.cc
 | 
| @@ -336,7 +336,8 @@ HUseListNode* HValue::RemoveUse(HValue* value, int index) {
 | 
|    // Do not reuse use list nodes in debug mode, zap them.
 | 
|    if (current != NULL) {
 | 
|      HUseListNode* temp =
 | 
| -        new HUseListNode(current->value(), current->index(), NULL);
 | 
| +        new(block()->zone())
 | 
| +        HUseListNode(current->value(), current->index(), NULL);
 | 
|      current->Zap();
 | 
|      current = temp;
 | 
|    }
 | 
| @@ -495,8 +496,8 @@ void HValue::RegisterUse(int index, HValue* new_value) {
 | 
|  
 | 
|    if (new_value != NULL) {
 | 
|      if (removed == NULL) {
 | 
| -      new_value->use_list_ =
 | 
| -          new HUseListNode(this, index, new_value->use_list_);
 | 
| +      new_value->use_list_ = new(new_value->block()->zone()) HUseListNode(
 | 
| +          this, index, new_value->use_list_);
 | 
|      } else {
 | 
|        removed->set_tail(new_value->use_list_);
 | 
|        new_value->use_list_ = removed;
 | 
| @@ -964,7 +965,7 @@ HValue* HUnaryMathOperation::Canonicalize() {
 | 
|            !HInstruction::cast(new_right)->IsLinked()) {
 | 
|          HInstruction::cast(new_right)->InsertBefore(this);
 | 
|        }
 | 
| -      HMathFloorOfDiv* instr =  new HMathFloorOfDiv(context(),
 | 
| +      HMathFloorOfDiv* instr =  new(block()->zone()) HMathFloorOfDiv(context(),
 | 
|            new_left,
 | 
|            new_right);
 | 
|        // Replace this HMathFloor instruction by the new HMathFloorOfDiv.
 | 
| @@ -1251,7 +1252,7 @@ void HPhi::PrintTo(StringStream* stream) {
 | 
|  
 | 
|  
 | 
|  void HPhi::AddInput(HValue* value) {
 | 
| -  inputs_.Add(NULL);
 | 
| +  inputs_.Add(NULL, value->block()->zone());
 | 
|    SetOperandAt(OperandCount() - 1, value);
 | 
|    // Mark phis that may have 'arguments' directly or indirectly as an operand.
 | 
|    if (!CheckFlag(kIsArguments) && value->CheckFlag(kIsArguments)) {
 | 
| @@ -1397,18 +1398,18 @@ HConstant::HConstant(Handle<Object> handle, Representation r)
 | 
|  }
 | 
|  
 | 
|  
 | 
| -HConstant* HConstant::CopyToRepresentation(Representation r) const {
 | 
| +HConstant* HConstant::CopyToRepresentation(Representation r, Zone* zone) const {
 | 
|    if (r.IsInteger32() && !has_int32_value_) return NULL;
 | 
|    if (r.IsDouble() && !has_double_value_) return NULL;
 | 
| -  return new HConstant(handle_, r);
 | 
| +  return new(zone) HConstant(handle_, r);
 | 
|  }
 | 
|  
 | 
|  
 | 
| -HConstant* HConstant::CopyToTruncatedInt32() const {
 | 
| +HConstant* HConstant::CopyToTruncatedInt32(Zone* zone) const {
 | 
|    if (!has_double_value_) return NULL;
 | 
|    int32_t truncated = NumberToInt32(*handle_);
 | 
| -  return new HConstant(FACTORY->NewNumberFromInt(truncated),
 | 
| -                       Representation::Integer32());
 | 
| +  return new(zone) HConstant(FACTORY->NewNumberFromInt(truncated),
 | 
| +                             Representation::Integer32());
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1620,8 +1621,9 @@ void HLoadNamedField::PrintDataTo(StringStream* stream) {
 | 
|  HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context,
 | 
|                                                         HValue* object,
 | 
|                                                         SmallMapList* types,
 | 
| -                                                       Handle<String> name)
 | 
| -    : types_(Min(types->length(), kMaxLoadPolymorphism)),
 | 
| +                                                       Handle<String> name,
 | 
| +                                                       Zone* zone)
 | 
| +    : types_(Min(types->length(), kMaxLoadPolymorphism), zone),
 | 
|        name_(name),
 | 
|        need_generic_(false) {
 | 
|    SetOperandAt(0, context);
 | 
| @@ -1644,11 +1646,11 @@ HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context,
 | 
|            } else {
 | 
|              SetGVNFlag(kDependsOnBackingStoreFields);
 | 
|            }
 | 
| -          types_.Add(types->at(i));
 | 
| +          types_.Add(types->at(i), zone);
 | 
|            break;
 | 
|          }
 | 
|          case CONSTANT_FUNCTION:
 | 
| -          types_.Add(types->at(i));
 | 
| +          types_.Add(types->at(i), zone);
 | 
|            break;
 | 
|          case MAP_TRANSITION:
 | 
|            // We should just ignore these since they are not relevant to a load
 | 
| @@ -1765,10 +1767,10 @@ HValue* HLoadKeyedGeneric::Canonicalize() {
 | 
|              index_cache,
 | 
|              key_load->key(),
 | 
|              OMIT_HOLE_CHECK);
 | 
| -        HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex(
 | 
| -            object(), index);
 | 
|          map_check->InsertBefore(this);
 | 
|          index->InsertBefore(this);
 | 
| +        HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex(
 | 
| +            object(), index);
 | 
|          load->InsertBefore(this);
 | 
|          return load;
 | 
|        }
 | 
| 
 |