Chromium Code Reviews| Index: src/hydrogen.h |
| diff --git a/src/hydrogen.h b/src/hydrogen.h |
| index ea4da9abf1c75870cdd7c5060b869b9b882b19b9..1ac2852959ef0383254293de600a44653c92b403 100644 |
| --- a/src/hydrogen.h |
| +++ b/src/hydrogen.h |
| @@ -1629,10 +1629,24 @@ class HGraphBuilder { |
| }; |
| ElementsKind kind() { return kind_; } |
| - |
| - HValue* AllocateEmptyArray(); |
| - HValue* AllocateArray(HValue* capacity, HValue* length_field, |
| - FillMode fill_mode = FILL_WITH_HOLE); |
| + HAllocate* elements_location() { return elements_location_; } |
| + |
| + HAllocate* AllocateEmptyArray(); |
| + HAllocate* AllocateArray(HValue* capacity, |
| + HValue* length_field, |
| + FillMode fill_mode = FILL_WITH_HOLE); |
| + // Use these allocators when capacity could be unknown at compile time |
| + // but its limit is known. For constant |capacity| the value of |
| + // |capacity_upper_bound| is ignored and the actual |capacity| |
| + // value is used as an upper bound. |
| + HAllocate* AllocateArray(HValue* capacity, |
| + int capacity_upper_bound, |
| + HValue* length_field, |
| + FillMode fill_mode = FILL_WITH_HOLE); |
| + HAllocate* AllocateArray(HValue* capacity, |
| + HConstant* capacity_upper_bound, |
| + HValue* length_field, |
| + FillMode fill_mode = FILL_WITH_HOLE); |
| HValue* GetElementsLocation() { return elements_location_; } |
| HValue* EmitMapCode(); |
| @@ -1649,25 +1663,25 @@ class HGraphBuilder { |
| } |
| HValue* EmitInternalMapCode(); |
| - HValue* EstablishEmptyArrayAllocationSize(); |
| - HValue* EstablishAllocationSize(HValue* length_node); |
| - HValue* AllocateArray(HValue* size_in_bytes, HValue* capacity, |
| - HValue* length_field, |
| - FillMode fill_mode = FILL_WITH_HOLE); |
| HGraphBuilder* builder_; |
| ElementsKind kind_; |
| AllocationSiteMode mode_; |
| HValue* allocation_site_payload_; |
| HValue* constructor_function_; |
| - HInnerAllocatedObject* elements_location_; |
| + HAllocate* elements_location_; |
| }; |
| HValue* BuildAllocateArrayFromLength(JSArrayBuilder* array_builder, |
| HValue* length_argument); |
| + HValue* BuildCalculateElementsSize(ElementsKind kind, |
| + HValue* capacity); |
| + HConstant* EstablishHeaderAllocationSize(AllocationSiteMode mode); |
| + HConstant* EstablishElementsAllocationSize(ElementsKind kind, int capacity); |
| - HValue* BuildAllocateElements(ElementsKind kind, |
| - HValue* capacity); |
| + HAllocate* BuildAllocateElements(ElementsKind kind, |
| + HValue* size_in_bytes, |
| + PretenureFlag pretenure); |
| void BuildInitializeElementsHeader(HValue* elements, |
| ElementsKind kind, |
| @@ -1676,16 +1690,15 @@ class HGraphBuilder { |
| HValue* BuildAllocateElementsAndInitializeElementsHeader(ElementsKind kind, |
| HValue* capacity); |
| - // array must have been allocated with enough room for |
| - // 1) the JSArray, 2) a AllocationMemento if mode requires it, |
| - // 3) a FixedArray or FixedDoubleArray. |
| - // A pointer to the Fixed(Double)Array is returned. |
| - HInnerAllocatedObject* BuildJSArrayHeader(HValue* array, |
| - HValue* array_map, |
| - AllocationSiteMode mode, |
| - ElementsKind elements_kind, |
| - HValue* allocation_site_payload, |
| - HValue* length_field); |
| + // Array must have been allocated with enough room for |
|
Hannes Payer (out of office)
2014/01/16 12:58:39
Can you keep array lower case since it refers to t
|
| + // 1) the JSArray and 2) an AllocationMemento if mode requires it. |
| + // Initially the array elements storage is initialized with empty array. |
| + void BuildJSArrayHeader(HValue* array, |
| + HValue* array_map, |
| + AllocationSiteMode mode, |
| + ElementsKind elements_kind, |
| + HValue* allocation_site_payload, |
| + HValue* length_field); |
| HValue* BuildGrowElementsCapacity(HValue* object, |
| HValue* elements, |