| Index: src/hydrogen.cc | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc | 
| index d98ce2ff3c8ca0f0322464e1387bbae1d6848653..ed963bd747c6bb00d2e7d6aae3a10f768530fa2f 100644 | 
| --- a/src/hydrogen.cc | 
| +++ b/src/hydrogen.cc | 
| @@ -1324,20 +1324,8 @@ HValue* HGraphBuilder::BuildAllocateElements(HValue* context, | 
| HAdd::New(zone, context, mul, header_size)); | 
| total_size->ClearFlag(HValue::kCanOverflow); | 
|  | 
| -  HAllocate::Flags flags = HAllocate::DefaultFlags(kind); | 
| -  if (isolate()->heap()->ShouldGloballyPretenure()) { | 
| -    // TODO(hpayer): When pretenuring can be internalized, flags can become | 
| -    // private to HAllocate. | 
| -    if (IsFastDoubleElementsKind(kind)) { | 
| -      flags = static_cast<HAllocate::Flags>( | 
| -          flags | HAllocate::CAN_ALLOCATE_IN_OLD_DATA_SPACE); | 
| -    } else { | 
| -      flags = static_cast<HAllocate::Flags>( | 
| -          flags | HAllocate::CAN_ALLOCATE_IN_OLD_POINTER_SPACE); | 
| -    } | 
| -  } | 
| - | 
| -  return Add<HAllocate>(context, total_size, HType::JSArray(), flags); | 
| +  return Add<HAllocate>(context, total_size, HType::JSArray(), | 
| +      isolate()->heap()->ShouldGloballyPretenure(), kind); | 
| } | 
|  | 
|  | 
| @@ -1668,14 +1656,14 @@ HValue* HGraphBuilder::BuildCloneShallowArray(HContext* context, | 
| : FixedArray::SizeFor(length); | 
| } | 
|  | 
| -  HAllocate::Flags allocate_flags = HAllocate::DefaultFlags(kind); | 
| // Allocate both the JS array and the elements array in one big | 
| // allocation. This avoids multiple limit checks. | 
| HValue* size_in_bytes = Add<HConstant>(size); | 
| HInstruction* object = Add<HAllocate>(context, | 
| size_in_bytes, | 
| HType::JSObject(), | 
| -                                        allocate_flags); | 
| +                                        false, | 
| +                                        kind); | 
|  | 
| // Copy the JS array part. | 
| for (int i = 0; i < JSArray::kSize; i += kPointerSize) { | 
| @@ -1957,9 +1945,8 @@ HValue* HGraphBuilder::JSArrayBuilder::AllocateArray(HValue* size_in_bytes, | 
| Representation::Smi()); | 
|  | 
| // Allocate (dealing with failure appropriately) | 
| -  HAllocate::Flags flags = HAllocate::DefaultFlags(kind_); | 
| HAllocate* new_object = builder()->Add<HAllocate>(context, size_in_bytes, | 
| -                                                    HType::JSArray(), flags); | 
| +      HType::JSArray(), false, kind_); | 
|  | 
| // Fill in the fields: map, properties, length | 
| HValue* map; | 
| @@ -4604,7 +4591,7 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField( | 
| HInstruction* heap_number_size = Add<HConstant>(HeapNumber::kSize); | 
| HInstruction* heap_number = Add<HAllocate>( | 
| environment()->LookupContext(), heap_number_size, | 
| -          HType::HeapNumber(), HAllocate::CAN_ALLOCATE_IN_NEW_SPACE); | 
| +          HType::HeapNumber(), false); | 
| AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map()); | 
| AddStore(heap_number, HObjectAccess::ForHeapNumberValue(), value); | 
| instr = new(zone()) HStoreNamedField( | 
| @@ -7240,14 +7227,10 @@ void HOptimizedGraphBuilder::VisitCallNew(CallNew* expr) { | 
|  | 
| // Allocate an instance of the implicit receiver object. | 
| HValue* size_in_bytes = Add<HConstant>(instance_size); | 
| -    HAllocate::Flags flags = HAllocate::DefaultFlags(); | 
| -    if (FLAG_pretenuring_call_new && | 
| -        isolate()->heap()->ShouldGloballyPretenure()) { | 
| -      flags = static_cast<HAllocate::Flags>( | 
| -          flags | HAllocate::CAN_ALLOCATE_IN_OLD_POINTER_SPACE); | 
| -    } | 
| +    bool pretenure = FLAG_pretenuring_call_new && | 
| +        isolate()->heap()->ShouldGloballyPretenure(); | 
| HAllocate* receiver = | 
| -        Add<HAllocate>(context, size_in_bytes, HType::JSObject(), flags); | 
| +        Add<HAllocate>(context, size_in_bytes, HType::JSObject(), pretenure); | 
| receiver->set_known_initial_map(initial_map); | 
|  | 
| // Load the initial map from the constructor. | 
| @@ -8329,12 +8312,9 @@ HInstruction* HOptimizedGraphBuilder::BuildFastLiteral( | 
|  | 
| if (isolate()->heap()->ShouldGloballyPretenure()) { | 
| if (data_size != 0) { | 
| -      HAllocate::Flags data_flags = | 
| -          static_cast<HAllocate::Flags>(HAllocate::DefaultFlags(kind) | | 
| -              HAllocate::CAN_ALLOCATE_IN_OLD_DATA_SPACE); | 
| HValue* size_in_bytes = Add<HConstant>(data_size); | 
| data_target = Add<HAllocate>(context, size_in_bytes, HType::JSObject(), | 
| -          data_flags); | 
| +          true, FAST_DOUBLE_ELEMENTS); | 
| Handle<Map> free_space_map = isolate()->factory()->free_space_map(); | 
| AddStoreMapConstant(data_target, free_space_map); | 
| HObjectAccess access = | 
| @@ -8342,17 +8322,14 @@ HInstruction* HOptimizedGraphBuilder::BuildFastLiteral( | 
| AddStore(data_target, access, size_in_bytes); | 
| } | 
| if (pointer_size != 0) { | 
| -      HAllocate::Flags pointer_flags = | 
| -          static_cast<HAllocate::Flags>(HAllocate::DefaultFlags() | | 
| -              HAllocate::CAN_ALLOCATE_IN_OLD_POINTER_SPACE); | 
| HValue* size_in_bytes = Add<HConstant>(pointer_size); | 
| target = Add<HAllocate>(context, size_in_bytes, HType::JSObject(), | 
| -          pointer_flags); | 
| +          true); | 
| } | 
| } else { | 
| -    HAllocate::Flags flags = HAllocate::DefaultFlags(kind); | 
| HValue* size_in_bytes = Add<HConstant>(data_size + pointer_size); | 
| -    target = Add<HAllocate>(context, size_in_bytes, HType::JSObject(), flags); | 
| +    target = Add<HAllocate>(context, size_in_bytes, HType::JSObject(), false, | 
| +        kind); | 
| } | 
|  | 
| int offset = 0; | 
|  |