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; |