Chromium Code Reviews| Index: src/heap.cc |
| diff --git a/src/heap.cc b/src/heap.cc |
| index 777661570aaf7d86736695d6a09f9c20d0877988..7b4e7f91c32af4cf35937f0e48d9a01a99928e54 100644 |
| --- a/src/heap.cc |
| +++ b/src/heap.cc |
| @@ -4512,8 +4512,37 @@ MaybeObject* Heap::AllocateJSObjectFromMap(Map* map, PretenureFlag pretenure) { |
| } |
| -MaybeObject* Heap::AllocateJSObjectFromMapWithAllocationSite(Map* map, |
| - Handle<AllocationSite> allocation_site) { |
| +MaybeObject* Heap::AllocateJSObjectFromMapForDeoptimizer( |
| + Map* map, PretenureFlag pretenure) { |
|
titzer
2013/08/06 12:15:47
Seems to be a lot of overlap with the above functi
Michael Starzinger
2013/08/07 10:51:16
Done. Merged together and added a flag.
|
| + // JSFunctions should be allocated using AllocateFunction to be |
| + // properly initialized. |
| + ASSERT(map->instance_type() != JS_FUNCTION_TYPE); |
| + |
| + // Both types of global objects should be allocated using |
| + // AllocateGlobalObject to be properly initialized. |
| + ASSERT(map->instance_type() != JS_GLOBAL_OBJECT_TYPE); |
| + ASSERT(map->instance_type() != JS_BUILTINS_OBJECT_TYPE); |
| + |
| + // Allocate the JSObject. |
| + AllocationSpace space = |
| + (pretenure == TENURED) ? OLD_POINTER_SPACE : NEW_SPACE; |
| + if (map->instance_size() > Page::kMaxNonCodeHeapObjectSize) space = LO_SPACE; |
| + Object* obj; |
| + MaybeObject* maybe_obj = Allocate(map, space); |
| + if (!maybe_obj->To(&obj)) return maybe_obj; |
| + |
| + // Initialize the JSObject. |
| + InitializeJSObjectFromMap(JSObject::cast(obj), |
| + empty_fixed_array(), |
| + map); |
| + ASSERT(JSObject::cast(obj)->HasFastElements() || |
| + JSObject::cast(obj)->HasExternalArrayElements()); |
| + return obj; |
| +} |
| + |
| + |
| +MaybeObject* Heap::AllocateJSObjectFromMapWithAllocationSite( |
| + Map* map, Handle<AllocationSite> allocation_site) { |
| // JSFunctions should be allocated using AllocateFunction to be |
| // properly initialized. |
| ASSERT(map->instance_type() != JS_FUNCTION_TYPE); |