OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_AST_H_ | 5 #ifndef V8_AST_H_ |
6 #define V8_AST_H_ | 6 #define V8_AST_H_ |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/assembler.h" | 10 #include "src/assembler.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 | 158 |
159 int slots() const { return slots_; } | 159 int slots() const { return slots_; } |
160 int ic_slots() const { return ic_slots_; } | 160 int ic_slots() const { return ic_slots_; } |
161 | 161 |
162 private: | 162 private: |
163 int slots_; | 163 int slots_; |
164 int ic_slots_; | 164 int ic_slots_; |
165 }; | 165 }; |
166 | 166 |
167 | 167 |
| 168 class VariableICSlotPair FINAL { |
| 169 public: |
| 170 VariableICSlotPair(Variable* variable, FeedbackVectorICSlot slot) |
| 171 : variable_(variable), slot_(slot) {} |
| 172 VariableICSlotPair() |
| 173 : variable_(NULL), slot_(FeedbackVectorICSlot::Invalid()) {} |
| 174 |
| 175 Variable* variable() const { return variable_; } |
| 176 FeedbackVectorICSlot slot() const { return slot_; } |
| 177 |
| 178 private: |
| 179 Variable* variable_; |
| 180 FeedbackVectorICSlot slot_; |
| 181 }; |
| 182 |
| 183 |
| 184 typedef List<VariableICSlotPair> ICSlotCache; |
| 185 |
| 186 |
168 class AstProperties FINAL BASE_EMBEDDED { | 187 class AstProperties FINAL BASE_EMBEDDED { |
169 public: | 188 public: |
170 class Flags : public EnumSet<AstPropertiesFlag, int> {}; | 189 class Flags : public EnumSet<AstPropertiesFlag, int> {}; |
171 | 190 |
172 AstProperties() : node_count_(0) {} | 191 AstProperties() : node_count_(0) {} |
173 | 192 |
174 Flags* flags() { return &flags_; } | 193 Flags* flags() { return &flags_; } |
175 int node_count() { return node_count_; } | 194 int node_count() { return node_count_; } |
176 void add_node_count(int count) { node_count_ += count; } | 195 void add_node_count(int count) { node_count_ += count; } |
177 | 196 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 | 241 |
223 virtual BreakableStatement* AsBreakableStatement() { return NULL; } | 242 virtual BreakableStatement* AsBreakableStatement() { return NULL; } |
224 virtual IterationStatement* AsIterationStatement() { return NULL; } | 243 virtual IterationStatement* AsIterationStatement() { return NULL; } |
225 virtual MaterializedLiteral* AsMaterializedLiteral() { return NULL; } | 244 virtual MaterializedLiteral* AsMaterializedLiteral() { return NULL; } |
226 | 245 |
227 // The interface for feedback slots, with default no-op implementations for | 246 // The interface for feedback slots, with default no-op implementations for |
228 // node types which don't actually have this. Note that this is conceptually | 247 // node types which don't actually have this. Note that this is conceptually |
229 // not really nice, but multiple inheritance would introduce yet another | 248 // not really nice, but multiple inheritance would introduce yet another |
230 // vtable entry per node, something we don't want for space reasons. | 249 // vtable entry per node, something we don't want for space reasons. |
231 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 250 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
232 Isolate* isolate) { | 251 Isolate* isolate, const ICSlotCache* cache) { |
233 return FeedbackVectorRequirements(0, 0); | 252 return FeedbackVectorRequirements(0, 0); |
234 } | 253 } |
235 virtual void SetFirstFeedbackSlot(FeedbackVectorSlot slot) { UNREACHABLE(); } | 254 virtual void SetFirstFeedbackSlot(FeedbackVectorSlot slot) { UNREACHABLE(); } |
236 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) { | 255 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, |
| 256 ICSlotCache* cache) { |
237 UNREACHABLE(); | 257 UNREACHABLE(); |
238 } | 258 } |
239 // Each ICSlot stores a kind of IC which the participating node should know. | 259 // Each ICSlot stores a kind of IC which the participating node should know. |
240 virtual Code::Kind FeedbackICSlotKind(int index) { | 260 virtual Code::Kind FeedbackICSlotKind(int index) { |
241 UNREACHABLE(); | 261 UNREACHABLE(); |
242 return Code::NUMBER_OF_KINDS; | 262 return Code::NUMBER_OF_KINDS; |
243 } | 263 } |
244 | 264 |
245 private: | 265 private: |
246 // Hidden to prevent accidental usage. It would have to load the | 266 // Hidden to prevent accidental usage. It would have to load the |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
877 class ForInStatement FINAL : public ForEachStatement { | 897 class ForInStatement FINAL : public ForEachStatement { |
878 public: | 898 public: |
879 DECLARE_NODE_TYPE(ForInStatement) | 899 DECLARE_NODE_TYPE(ForInStatement) |
880 | 900 |
881 Expression* enumerable() const { | 901 Expression* enumerable() const { |
882 return subject(); | 902 return subject(); |
883 } | 903 } |
884 | 904 |
885 // Type feedback information. | 905 // Type feedback information. |
886 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 906 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
887 Isolate* isolate) OVERRIDE { | 907 Isolate* isolate, const ICSlotCache* cache) OVERRIDE { |
888 return FeedbackVectorRequirements(1, 0); | 908 return FeedbackVectorRequirements(1, 0); |
889 } | 909 } |
890 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) OVERRIDE { | 910 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) OVERRIDE { |
891 for_in_feedback_slot_ = slot; | 911 for_in_feedback_slot_ = slot; |
892 } | 912 } |
893 | 913 |
894 FeedbackVectorSlot ForInFeedbackSlot() { | 914 FeedbackVectorSlot ForInFeedbackSlot() { |
895 DCHECK(!for_in_feedback_slot_.IsInvalid()); | 915 DCHECK(!for_in_feedback_slot_.IsInvalid()); |
896 return for_in_feedback_slot_; | 916 return for_in_feedback_slot_; |
897 } | 917 } |
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1639 int end_position() const { return end_position_; } | 1659 int end_position() const { return end_position_; } |
1640 | 1660 |
1641 // Bind this proxy to the variable var. | 1661 // Bind this proxy to the variable var. |
1642 void BindTo(Variable* var); | 1662 void BindTo(Variable* var); |
1643 | 1663 |
1644 bool UsesVariableFeedbackSlot() const { | 1664 bool UsesVariableFeedbackSlot() const { |
1645 return FLAG_vector_ics && (var()->IsUnallocated() || var()->IsLookupSlot()); | 1665 return FLAG_vector_ics && (var()->IsUnallocated() || var()->IsLookupSlot()); |
1646 } | 1666 } |
1647 | 1667 |
1648 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1668 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
1649 Isolate* isolate) OVERRIDE { | 1669 Isolate* isolate, const ICSlotCache* cache) OVERRIDE; |
1650 return FeedbackVectorRequirements(0, UsesVariableFeedbackSlot() ? 1 : 0); | |
1651 } | |
1652 | 1670 |
1653 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 1671 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, |
1654 variable_feedback_slot_ = slot; | 1672 ICSlotCache* cache) OVERRIDE; |
1655 } | |
1656 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; } | 1673 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; } |
1657 FeedbackVectorICSlot VariableFeedbackSlot() { | 1674 FeedbackVectorICSlot VariableFeedbackSlot() { |
1658 DCHECK(!UsesVariableFeedbackSlot() || !variable_feedback_slot_.IsInvalid()); | 1675 DCHECK(!UsesVariableFeedbackSlot() || !variable_feedback_slot_.IsInvalid()); |
1659 return variable_feedback_slot_; | 1676 return variable_feedback_slot_; |
1660 } | 1677 } |
1661 | 1678 |
1662 protected: | 1679 protected: |
1663 VariableProxy(Zone* zone, Variable* var, int start_position, | 1680 VariableProxy(Zone* zone, Variable* var, int start_position, |
1664 int end_position); | 1681 int end_position); |
1665 | 1682 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1727 void mark_for_call() { | 1744 void mark_for_call() { |
1728 bit_field_ = IsForCallField::update(bit_field_, true); | 1745 bit_field_ = IsForCallField::update(bit_field_, true); |
1729 } | 1746 } |
1730 bool is_for_call() const { return IsForCallField::decode(bit_field_); } | 1747 bool is_for_call() const { return IsForCallField::decode(bit_field_); } |
1731 | 1748 |
1732 bool IsSuperAccess() { | 1749 bool IsSuperAccess() { |
1733 return obj()->IsSuperReference(); | 1750 return obj()->IsSuperReference(); |
1734 } | 1751 } |
1735 | 1752 |
1736 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1753 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
1737 Isolate* isolate) OVERRIDE { | 1754 Isolate* isolate, const ICSlotCache* cache) OVERRIDE { |
1738 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); | 1755 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); |
1739 } | 1756 } |
1740 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 1757 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, |
| 1758 ICSlotCache* cache) OVERRIDE { |
1741 property_feedback_slot_ = slot; | 1759 property_feedback_slot_ = slot; |
1742 } | 1760 } |
1743 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { | 1761 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
1744 return key()->IsPropertyName() ? Code::LOAD_IC : Code::KEYED_LOAD_IC; | 1762 return key()->IsPropertyName() ? Code::LOAD_IC : Code::KEYED_LOAD_IC; |
1745 } | 1763 } |
1746 | 1764 |
1747 FeedbackVectorICSlot PropertyFeedbackSlot() const { | 1765 FeedbackVectorICSlot PropertyFeedbackSlot() const { |
1748 DCHECK(!FLAG_vector_ics || !property_feedback_slot_.IsInvalid()); | 1766 DCHECK(!FLAG_vector_ics || !property_feedback_slot_.IsInvalid()); |
1749 return property_feedback_slot_; | 1767 return property_feedback_slot_; |
1750 } | 1768 } |
(...skipping 26 matching lines...) Expand all Loading... |
1777 | 1795 |
1778 class Call FINAL : public Expression { | 1796 class Call FINAL : public Expression { |
1779 public: | 1797 public: |
1780 DECLARE_NODE_TYPE(Call) | 1798 DECLARE_NODE_TYPE(Call) |
1781 | 1799 |
1782 Expression* expression() const { return expression_; } | 1800 Expression* expression() const { return expression_; } |
1783 ZoneList<Expression*>* arguments() const { return arguments_; } | 1801 ZoneList<Expression*>* arguments() const { return arguments_; } |
1784 | 1802 |
1785 // Type feedback information. | 1803 // Type feedback information. |
1786 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1804 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
1787 Isolate* isolate) OVERRIDE; | 1805 Isolate* isolate, const ICSlotCache* cache) OVERRIDE; |
1788 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 1806 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, |
| 1807 ICSlotCache* cache) OVERRIDE { |
1789 ic_slot_or_slot_ = slot.ToInt(); | 1808 ic_slot_or_slot_ = slot.ToInt(); |
1790 } | 1809 } |
1791 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) OVERRIDE { | 1810 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) OVERRIDE { |
1792 ic_slot_or_slot_ = slot.ToInt(); | 1811 ic_slot_or_slot_ = slot.ToInt(); |
1793 } | 1812 } |
1794 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::CALL_IC; } | 1813 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::CALL_IC; } |
1795 | 1814 |
1796 FeedbackVectorSlot CallFeedbackSlot() const { | 1815 FeedbackVectorSlot CallFeedbackSlot() const { |
1797 DCHECK(ic_slot_or_slot_ != FeedbackVectorSlot::Invalid().ToInt()); | 1816 DCHECK(ic_slot_or_slot_ != FeedbackVectorSlot::Invalid().ToInt()); |
1798 return FeedbackVectorSlot(ic_slot_or_slot_); | 1817 return FeedbackVectorSlot(ic_slot_or_slot_); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1900 | 1919 |
1901 class CallNew FINAL : public Expression { | 1920 class CallNew FINAL : public Expression { |
1902 public: | 1921 public: |
1903 DECLARE_NODE_TYPE(CallNew) | 1922 DECLARE_NODE_TYPE(CallNew) |
1904 | 1923 |
1905 Expression* expression() const { return expression_; } | 1924 Expression* expression() const { return expression_; } |
1906 ZoneList<Expression*>* arguments() const { return arguments_; } | 1925 ZoneList<Expression*>* arguments() const { return arguments_; } |
1907 | 1926 |
1908 // Type feedback information. | 1927 // Type feedback information. |
1909 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1928 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
1910 Isolate* isolate) OVERRIDE { | 1929 Isolate* isolate, const ICSlotCache* cache) OVERRIDE { |
1911 return FeedbackVectorRequirements(FLAG_pretenuring_call_new ? 2 : 1, 0); | 1930 return FeedbackVectorRequirements(FLAG_pretenuring_call_new ? 2 : 1, 0); |
1912 } | 1931 } |
1913 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) OVERRIDE { | 1932 void SetFirstFeedbackSlot(FeedbackVectorSlot slot) OVERRIDE { |
1914 callnew_feedback_slot_ = slot; | 1933 callnew_feedback_slot_ = slot; |
1915 } | 1934 } |
1916 | 1935 |
1917 FeedbackVectorSlot CallNewFeedbackSlot() { | 1936 FeedbackVectorSlot CallNewFeedbackSlot() { |
1918 DCHECK(!callnew_feedback_slot_.IsInvalid()); | 1937 DCHECK(!callnew_feedback_slot_.IsInvalid()); |
1919 return callnew_feedback_slot_; | 1938 return callnew_feedback_slot_; |
1920 } | 1939 } |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1974 const AstRawString* raw_name() const { return raw_name_; } | 1993 const AstRawString* raw_name() const { return raw_name_; } |
1975 const Runtime::Function* function() const { return function_; } | 1994 const Runtime::Function* function() const { return function_; } |
1976 ZoneList<Expression*>* arguments() const { return arguments_; } | 1995 ZoneList<Expression*>* arguments() const { return arguments_; } |
1977 bool is_jsruntime() const { return function_ == NULL; } | 1996 bool is_jsruntime() const { return function_ == NULL; } |
1978 | 1997 |
1979 // Type feedback information. | 1998 // Type feedback information. |
1980 bool HasCallRuntimeFeedbackSlot() const { | 1999 bool HasCallRuntimeFeedbackSlot() const { |
1981 return FLAG_vector_ics && is_jsruntime(); | 2000 return FLAG_vector_ics && is_jsruntime(); |
1982 } | 2001 } |
1983 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 2002 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
1984 Isolate* isolate) OVERRIDE { | 2003 Isolate* isolate, const ICSlotCache* cache) OVERRIDE { |
1985 return FeedbackVectorRequirements(0, HasCallRuntimeFeedbackSlot() ? 1 : 0); | 2004 return FeedbackVectorRequirements(0, HasCallRuntimeFeedbackSlot() ? 1 : 0); |
1986 } | 2005 } |
1987 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 2006 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, |
| 2007 ICSlotCache* cache) OVERRIDE { |
1988 callruntime_feedback_slot_ = slot; | 2008 callruntime_feedback_slot_ = slot; |
1989 } | 2009 } |
1990 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; } | 2010 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; } |
1991 | 2011 |
1992 FeedbackVectorICSlot CallRuntimeFeedbackSlot() { | 2012 FeedbackVectorICSlot CallRuntimeFeedbackSlot() { |
1993 DCHECK(!HasCallRuntimeFeedbackSlot() || | 2013 DCHECK(!HasCallRuntimeFeedbackSlot() || |
1994 !callruntime_feedback_slot_.IsInvalid()); | 2014 !callruntime_feedback_slot_.IsInvalid()); |
1995 return callruntime_feedback_slot_; | 2015 return callruntime_feedback_slot_; |
1996 } | 2016 } |
1997 | 2017 |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2347 void set_index(int index) { | 2367 void set_index(int index) { |
2348 DCHECK_EQ(kDelegating, yield_kind()); | 2368 DCHECK_EQ(kDelegating, yield_kind()); |
2349 index_ = index; | 2369 index_ = index; |
2350 } | 2370 } |
2351 | 2371 |
2352 // Type feedback information. | 2372 // Type feedback information. |
2353 bool HasFeedbackSlots() const { | 2373 bool HasFeedbackSlots() const { |
2354 return FLAG_vector_ics && (yield_kind() == kDelegating); | 2374 return FLAG_vector_ics && (yield_kind() == kDelegating); |
2355 } | 2375 } |
2356 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 2376 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
2357 Isolate* isolate) OVERRIDE { | 2377 Isolate* isolate, const ICSlotCache* cache) OVERRIDE { |
2358 return FeedbackVectorRequirements(0, HasFeedbackSlots() ? 3 : 0); | 2378 return FeedbackVectorRequirements(0, HasFeedbackSlots() ? 3 : 0); |
2359 } | 2379 } |
2360 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 2380 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, |
| 2381 ICSlotCache* cache) OVERRIDE { |
2361 yield_first_feedback_slot_ = slot; | 2382 yield_first_feedback_slot_ = slot; |
2362 } | 2383 } |
2363 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { | 2384 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
2364 return index == 0 ? Code::KEYED_LOAD_IC : Code::LOAD_IC; | 2385 return index == 0 ? Code::KEYED_LOAD_IC : Code::LOAD_IC; |
2365 } | 2386 } |
2366 | 2387 |
2367 FeedbackVectorICSlot KeyedLoadFeedbackSlot() { | 2388 FeedbackVectorICSlot KeyedLoadFeedbackSlot() { |
2368 DCHECK(!HasFeedbackSlots() || !yield_first_feedback_slot_.IsInvalid()); | 2389 DCHECK(!HasFeedbackSlots() || !yield_first_feedback_slot_.IsInvalid()); |
2369 return yield_first_feedback_slot_; | 2390 return yield_first_feedback_slot_; |
2370 } | 2391 } |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2688 public: | 2709 public: |
2689 DECLARE_NODE_TYPE(SuperReference) | 2710 DECLARE_NODE_TYPE(SuperReference) |
2690 | 2711 |
2691 VariableProxy* this_var() const { return this_var_; } | 2712 VariableProxy* this_var() const { return this_var_; } |
2692 | 2713 |
2693 static int num_ids() { return parent_num_ids() + 1; } | 2714 static int num_ids() { return parent_num_ids() + 1; } |
2694 TypeFeedbackId HomeObjectFeedbackId() { return TypeFeedbackId(local_id(0)); } | 2715 TypeFeedbackId HomeObjectFeedbackId() { return TypeFeedbackId(local_id(0)); } |
2695 | 2716 |
2696 // Type feedback information. | 2717 // Type feedback information. |
2697 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 2718 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
2698 Isolate* isolate) OVERRIDE { | 2719 Isolate* isolate, const ICSlotCache* cache) OVERRIDE { |
2699 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); | 2720 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); |
2700 } | 2721 } |
2701 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 2722 void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot, |
| 2723 ICSlotCache* cache) OVERRIDE { |
2702 homeobject_feedback_slot_ = slot; | 2724 homeobject_feedback_slot_ = slot; |
2703 } | 2725 } |
2704 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; } | 2726 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; } |
2705 | 2727 |
2706 FeedbackVectorICSlot HomeObjectFeedbackSlot() { | 2728 FeedbackVectorICSlot HomeObjectFeedbackSlot() { |
2707 DCHECK(!FLAG_vector_ics || !homeobject_feedback_slot_.IsInvalid()); | 2729 DCHECK(!FLAG_vector_ics || !homeobject_feedback_slot_.IsInvalid()); |
2708 return homeobject_feedback_slot_; | 2730 return homeobject_feedback_slot_; |
2709 } | 2731 } |
2710 | 2732 |
2711 protected: | 2733 protected: |
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3509 | 3531 |
3510 private: | 3532 private: |
3511 Zone* zone_; | 3533 Zone* zone_; |
3512 AstValueFactory* ast_value_factory_; | 3534 AstValueFactory* ast_value_factory_; |
3513 }; | 3535 }; |
3514 | 3536 |
3515 | 3537 |
3516 } } // namespace v8::internal | 3538 } } // namespace v8::internal |
3517 | 3539 |
3518 #endif // V8_AST_H_ | 3540 #endif // V8_AST_H_ |
OLD | NEW |