| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 3698a322c046681ec8471a14fa3db2110a8b678a..bebdc98eb837f8a973c3c5713403f002a5564915 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -2243,8 +2243,11 @@ HValue* HGraphBuilder::BuildAllocateElements(ElementsKind kind,
|
| HValue* total_size = AddUncasted<HAdd>(mul, header_size);
|
| total_size->ClearFlag(HValue::kCanOverflow);
|
|
|
| - return Add<HAllocate>(total_size, HType::JSArray(),
|
| - isolate()->heap()->GetPretenureMode(), instance_type);
|
| + PretenureFlag pretenure_flag = !FLAG_allocation_site_pretenuring ?
|
| + isolate()->heap()->GetPretenureMode() : NOT_TENURED;
|
| +
|
| + return Add<HAllocate>(total_size, HType::JSArray(), pretenure_flag,
|
| + instance_type);
|
| }
|
|
|
|
|
| @@ -5258,8 +5261,13 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField(
|
| // The store requires a mutable HeapNumber to be allocated.
|
| NoObservableSideEffectsScope no_side_effects(this);
|
| HInstruction* heap_number_size = Add<HConstant>(HeapNumber::kSize);
|
| +
|
| + PretenureFlag pretenure_flag = !FLAG_allocation_site_pretenuring ?
|
| + isolate()->heap()->GetPretenureMode() : NOT_TENURED;
|
| +
|
| HInstruction* heap_number = Add<HAllocate>(heap_number_size,
|
| - HType::HeapNumber(), isolate()->heap()->GetPretenureMode(),
|
| + HType::HeapNumber(),
|
| + pretenure_flag,
|
| HEAP_NUMBER_TYPE);
|
| AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map());
|
| Add<HStoreNamedField>(heap_number, HObjectAccess::ForHeapNumberValue(),
|
| @@ -8173,9 +8181,8 @@ void HOptimizedGraphBuilder::VisitCallNew(CallNew* expr) {
|
| // Allocate an instance of the implicit receiver object.
|
| HValue* size_in_bytes = Add<HConstant>(instance_size);
|
| PretenureFlag pretenure_flag =
|
| - (FLAG_pretenuring_call_new &&
|
| - isolate()->heap()->GetPretenureMode() == TENURED)
|
| - ? TENURED : NOT_TENURED;
|
| + (FLAG_pretenuring_call_new && !FLAG_allocation_site_pretenuring) ?
|
| + isolate()->heap()->GetPretenureMode() : NOT_TENURED;
|
| HAllocate* receiver =
|
| Add<HAllocate>(size_in_bytes, HType::JSObject(), pretenure_flag,
|
| JS_OBJECT_TYPE);
|
| @@ -8938,12 +8945,15 @@ HValue* HOptimizedGraphBuilder::BuildBinaryOperation(
|
| Maybe<int> fixed_right_arg = expr->fixed_right_arg();
|
| Handle<AllocationSite> allocation_site = expr->allocation_site();
|
|
|
| + PretenureFlag pretenure_flag = !FLAG_allocation_site_pretenuring ?
|
| + isolate()->heap()->GetPretenureMode() : NOT_TENURED;
|
| +
|
| HAllocationMode allocation_mode =
|
| FLAG_allocation_site_pretenuring
|
| ? (allocation_site.is_null()
|
| ? HAllocationMode(NOT_TENURED)
|
| : HAllocationMode(allocation_site))
|
| - : HAllocationMode(isolate()->heap()->GetPretenureMode());
|
| + : HAllocationMode(pretenure_flag);
|
|
|
| HValue* result = HGraphBuilder::BuildBinaryOperation(
|
| expr->op(), left, right, left_type, right_type, result_type,
|
|
|