Chromium Code Reviews| Index: src/hydrogen.h |
| diff --git a/src/hydrogen.h b/src/hydrogen.h |
| index 78ab571b5c52376549a07423a1dfcc2b9decd74f..0eb14b1c4cf8df1d2dbfa0afd84365322ac9f2e3 100644 |
| --- a/src/hydrogen.h |
| +++ b/src/hydrogen.h |
| @@ -242,6 +242,8 @@ class HLoopInformation: public ZoneObject { |
| HStackCheck* stack_check_; |
| }; |
| + |
| +class MarkedTransitionElementsGroup; |
|
danno
2012/11/28 14:42:10
Marked has a meaning in the GC space, "bookmarked"
|
| class BoundsCheckTable; |
| class HGraph: public ZoneObject { |
| public: |
| @@ -370,6 +372,11 @@ class HGraph: public ZoneObject { |
| uint32_instructions_->Add(instr, zone()); |
| } |
| + void AddMarkedTransitionElementsGroup( |
| + MarkedTransitionElementsGroup* group) { |
| + marked_transitions_.Add(group, zone()); |
| + } |
| + |
| private: |
| HConstant* GetConstant(SetOncePointer<HConstant>* pointer, |
| Handle<Object> value); |
| @@ -377,6 +384,7 @@ class HGraph: public ZoneObject { |
| int32_t integer_value); |
| void MarkAsDeoptimizingRecursively(HBasicBlock* block); |
| + void InsertElementsTransitions(); |
| void InsertTypeConversions(HInstruction* instr); |
| void PropagateMinusZeroChecks(HValue* value, BitVector* visited); |
| void RecursivelyMarkPhiDeoptimizeOnUndefined(HPhi* phi); |
| @@ -398,6 +406,7 @@ class HGraph: public ZoneObject { |
| ZoneList<HValue*> values_; |
| ZoneList<HPhi*>* phi_list_; |
| ZoneList<HInstruction*>* uint32_instructions_; |
| + ZoneList<MarkedTransitionElementsGroup*> marked_transitions_; |
| SetOncePointer<HConstant> undefined_constant_; |
| SetOncePointer<HConstant> constant_1_; |
| SetOncePointer<HConstant> constant_minus1_; |
| @@ -1144,7 +1153,8 @@ class HGraphBuilder: public AstVisitor { |
| HValue* val, |
| HValue* dependency, |
| ElementsKind elements_kind, |
| - bool is_store); |
| + bool is_store, |
| + bool defer_initialization); |
| HInstruction* TryBuildConsolidatedElementLoad(HValue* object, |
| HValue* key, |
| @@ -1152,18 +1162,20 @@ class HGraphBuilder: public AstVisitor { |
| SmallMapList* maps); |
| HInstruction* BuildUncheckedMonomorphicElementAccess(HValue* object, |
| - HValue* key, |
| - HValue* val, |
| - HCheckMaps* mapcheck, |
| - Handle<Map> map, |
| - bool is_store); |
| + HValue* key, |
| + HValue* val, |
| + HCheckMaps* mapcheck, |
| + Handle<Map> map, |
| + bool is_store, |
| + bool defer_initialization); |
| HInstruction* BuildMonomorphicElementAccess(HValue* object, |
| - HValue* key, |
| - HValue* val, |
| - HValue* dependency, |
| - Handle<Map> map, |
| - bool is_store); |
| + HValue* key, |
| + HValue* val, |
| + HValue* dependency, |
| + Handle<Map> map, |
| + bool is_store, |
| + HCheckMaps** checkmap_instr = NULL); |
| HValue* HandlePolymorphicElementAccess(HValue* object, |
| HValue* key, |