| Index: src/factory.cc | 
| diff --git a/src/factory.cc b/src/factory.cc | 
| index 9104d60a099574cf768ac86fe7ad2b35e21aa0f5..84cc00d2800468e3c6e125c36b586285514eaecc 100644 | 
| --- a/src/factory.cc | 
| +++ b/src/factory.cc | 
| @@ -1626,15 +1626,15 @@ Handle<JSGeneratorObject> Factory::NewJSGeneratorObject( | 
| } | 
|  | 
|  | 
| -Handle<JSArrayBuffer> Factory::NewJSArrayBuffer(SharedFlag shared) { | 
| +Handle<JSArrayBuffer> Factory::NewJSArrayBuffer(SharedFlag shared, | 
| +                                                PretenureFlag pretenure) { | 
| Handle<JSFunction> array_buffer_fun( | 
| shared == SharedFlag::kShared | 
| ? isolate()->native_context()->shared_array_buffer_fun() | 
| : isolate()->native_context()->array_buffer_fun()); | 
| -  CALL_HEAP_FUNCTION( | 
| -      isolate(), | 
| -      isolate()->heap()->AllocateJSObject(*array_buffer_fun), | 
| -      JSArrayBuffer); | 
| +  CALL_HEAP_FUNCTION(isolate(), isolate()->heap()->AllocateJSObject( | 
| +                                    *array_buffer_fun, pretenure), | 
| +                     JSArrayBuffer); | 
| } | 
|  | 
|  | 
| @@ -1784,18 +1784,19 @@ JSFunction* GetTypedArrayFun(ElementsKind elements_kind, Isolate* isolate) { | 
| void SetupArrayBufferView(i::Isolate* isolate, | 
| i::Handle<i::JSArrayBufferView> obj, | 
| i::Handle<i::JSArrayBuffer> buffer, | 
| -                          size_t byte_offset, size_t byte_length) { | 
| +                          size_t byte_offset, size_t byte_length, | 
| +                          PretenureFlag pretenure = NOT_TENURED) { | 
| DCHECK(byte_offset + byte_length <= | 
| static_cast<size_t>(buffer->byte_length()->Number())); | 
|  | 
| obj->set_buffer(*buffer); | 
|  | 
| i::Handle<i::Object> byte_offset_object = | 
| -      isolate->factory()->NewNumberFromSize(byte_offset); | 
| +      isolate->factory()->NewNumberFromSize(byte_offset, pretenure); | 
| obj->set_byte_offset(*byte_offset_object); | 
|  | 
| i::Handle<i::Object> byte_length_object = | 
| -      isolate->factory()->NewNumberFromSize(byte_length); | 
| +      isolate->factory()->NewNumberFromSize(byte_length, pretenure); | 
| obj->set_byte_length(*byte_length_object); | 
| } | 
|  | 
| @@ -1803,31 +1804,32 @@ void SetupArrayBufferView(i::Isolate* isolate, | 
| }  // namespace | 
|  | 
|  | 
| -Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type) { | 
| +Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type, | 
| +                                              PretenureFlag pretenure) { | 
| Handle<JSFunction> typed_array_fun_handle(GetTypedArrayFun(type, isolate())); | 
|  | 
| -  CALL_HEAP_FUNCTION( | 
| -      isolate(), | 
| -      isolate()->heap()->AllocateJSObject(*typed_array_fun_handle), | 
| -      JSTypedArray); | 
| +  CALL_HEAP_FUNCTION(isolate(), isolate()->heap()->AllocateJSObject( | 
| +                                    *typed_array_fun_handle, pretenure), | 
| +                     JSTypedArray); | 
| } | 
|  | 
|  | 
| -Handle<JSTypedArray> Factory::NewJSTypedArray(ElementsKind elements_kind) { | 
| +Handle<JSTypedArray> Factory::NewJSTypedArray(ElementsKind elements_kind, | 
| +                                              PretenureFlag pretenure) { | 
| Handle<JSFunction> typed_array_fun_handle( | 
| GetTypedArrayFun(elements_kind, isolate())); | 
|  | 
| -  CALL_HEAP_FUNCTION( | 
| -      isolate(), isolate()->heap()->AllocateJSObject(*typed_array_fun_handle), | 
| -      JSTypedArray); | 
| +  CALL_HEAP_FUNCTION(isolate(), isolate()->heap()->AllocateJSObject( | 
| +                                    *typed_array_fun_handle, pretenure), | 
| +                     JSTypedArray); | 
| } | 
|  | 
|  | 
| Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type, | 
| Handle<JSArrayBuffer> buffer, | 
| -                                              size_t byte_offset, | 
| -                                              size_t length) { | 
| -  Handle<JSTypedArray> obj = NewJSTypedArray(type); | 
| +                                              size_t byte_offset, size_t length, | 
| +                                              PretenureFlag pretenure) { | 
| +  Handle<JSTypedArray> obj = NewJSTypedArray(type, pretenure); | 
|  | 
| size_t element_size = GetExternalArrayElementSize(type); | 
| ElementsKind elements_kind = GetExternalArrayElementsKind(type); | 
| @@ -1837,14 +1839,15 @@ Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type, | 
| CHECK(length <= (std::numeric_limits<size_t>::max() / element_size)); | 
| CHECK(length <= static_cast<size_t>(Smi::kMaxValue)); | 
| size_t byte_length = length * element_size; | 
| -  SetupArrayBufferView(isolate(), obj, buffer, byte_offset, byte_length); | 
| +  SetupArrayBufferView(isolate(), obj, buffer, byte_offset, byte_length, | 
| +                       pretenure); | 
|  | 
| -  Handle<Object> length_object = NewNumberFromSize(length); | 
| +  Handle<Object> length_object = NewNumberFromSize(length, pretenure); | 
| obj->set_length(*length_object); | 
|  | 
| Handle<FixedTypedArrayBase> elements = NewFixedTypedArrayWithExternalPointer( | 
| static_cast<int>(length), type, | 
| -      static_cast<uint8_t*>(buffer->backing_store()) + byte_offset); | 
| +      static_cast<uint8_t*>(buffer->backing_store()) + byte_offset, pretenure); | 
| Handle<Map> map = JSObject::GetElementsTransitionMap(obj, elements_kind); | 
| JSObject::SetMapAndElements(obj, map, elements); | 
| return obj; | 
| @@ -1852,8 +1855,9 @@ Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type, | 
|  | 
|  | 
| Handle<JSTypedArray> Factory::NewJSTypedArray(ElementsKind elements_kind, | 
| -                                              size_t number_of_elements) { | 
| -  Handle<JSTypedArray> obj = NewJSTypedArray(elements_kind); | 
| +                                              size_t number_of_elements, | 
| +                                              PretenureFlag pretenure) { | 
| +  Handle<JSTypedArray> obj = NewJSTypedArray(elements_kind, pretenure); | 
|  | 
| size_t element_size = GetFixedTypedArraysElementSize(elements_kind); | 
| ExternalArrayType array_type = GetArrayTypeFromElementsKind(elements_kind); | 
| @@ -1865,18 +1869,19 @@ Handle<JSTypedArray> Factory::NewJSTypedArray(ElementsKind elements_kind, | 
|  | 
| obj->set_byte_offset(Smi::FromInt(0)); | 
| i::Handle<i::Object> byte_length_object = | 
| -      isolate()->factory()->NewNumberFromSize(byte_length); | 
| +      NewNumberFromSize(byte_length, pretenure); | 
| obj->set_byte_length(*byte_length_object); | 
| -  Handle<Object> length_object = NewNumberFromSize(number_of_elements); | 
| +  Handle<Object> length_object = | 
| +      NewNumberFromSize(number_of_elements, pretenure); | 
| obj->set_length(*length_object); | 
|  | 
| -  Handle<JSArrayBuffer> buffer = isolate()->factory()->NewJSArrayBuffer(); | 
| +  Handle<JSArrayBuffer> buffer = | 
| +      NewJSArrayBuffer(SharedFlag::kNotShared, pretenure); | 
| JSArrayBuffer::Setup(buffer, isolate(), true, NULL, byte_length, | 
| SharedFlag::kNotShared); | 
| obj->set_buffer(*buffer); | 
| -  Handle<FixedTypedArrayBase> elements = | 
| -      isolate()->factory()->NewFixedTypedArray( | 
| -          static_cast<int>(number_of_elements), array_type, true); | 
| +  Handle<FixedTypedArrayBase> elements = NewFixedTypedArray( | 
| +      static_cast<int>(number_of_elements), array_type, true, pretenure); | 
| obj->set_elements(*elements); | 
| return obj; | 
| } | 
|  |