| 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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 private: | 167 private: |
| 168 int slots_; | 168 int slots_; |
| 169 int ic_slots_; | 169 int ic_slots_; |
| 170 }; | 170 }; |
| 171 | 171 |
| 172 | 172 |
| 173 class AstProperties FINAL BASE_EMBEDDED { | 173 class AstProperties FINAL BASE_EMBEDDED { |
| 174 public: | 174 public: |
| 175 class Flags : public EnumSet<AstPropertiesFlag, int> {}; | 175 class Flags : public EnumSet<AstPropertiesFlag, int> {}; |
| 176 | 176 |
| 177 AstProperties() : node_count_(0), feedback_slots_(0), ic_feedback_slots_(0) {} | 177 AstProperties() : node_count_(0) {} |
| 178 | 178 |
| 179 Flags* flags() { return &flags_; } | 179 Flags* flags() { return &flags_; } |
| 180 int node_count() { return node_count_; } | 180 int node_count() { return node_count_; } |
| 181 void add_node_count(int count) { node_count_ += count; } | 181 void add_node_count(int count) { node_count_ += count; } |
| 182 | 182 |
| 183 int feedback_slots() const { return feedback_slots_; } | 183 int slots() const { return spec_.slots(); } |
| 184 void increase_feedback_slots(int count) { | 184 void increase_slots(int count) { spec_.increase_slots(count); } |
| 185 feedback_slots_ += count; | |
| 186 } | |
| 187 | 185 |
| 188 int ic_feedback_slots() const { return ic_feedback_slots_; } | 186 int ic_slots() const { return spec_.ic_slots(); } |
| 189 void increase_ic_feedback_slots(int count) { ic_feedback_slots_ += count; } | 187 void increase_ic_slots(int count) { spec_.increase_ic_slots(count); } |
| 188 void SetKind(int ic_slot, Code::Kind kind) { spec_.SetKind(ic_slot, kind); } |
| 189 const FeedbackVectorSpec& get_spec() const { return spec_; } |
| 190 | 190 |
| 191 private: | 191 private: |
| 192 Flags flags_; | 192 Flags flags_; |
| 193 int node_count_; | 193 int node_count_; |
| 194 int feedback_slots_; | 194 FeedbackVectorSpec spec_; |
| 195 int ic_feedback_slots_; | |
| 196 }; | 195 }; |
| 197 | 196 |
| 198 | 197 |
| 199 class AstNode: public ZoneObject { | 198 class AstNode: public ZoneObject { |
| 200 public: | 199 public: |
| 201 #define DECLARE_TYPE_ENUM(type) k##type, | 200 #define DECLARE_TYPE_ENUM(type) k##type, |
| 202 enum NodeType { | 201 enum NodeType { |
| 203 AST_NODE_LIST(DECLARE_TYPE_ENUM) | 202 AST_NODE_LIST(DECLARE_TYPE_ENUM) |
| 204 kInvalid = -1 | 203 kInvalid = -1 |
| 205 }; | 204 }; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 // not really nice, but multiple inheritance would introduce yet another | 237 // not really nice, but multiple inheritance would introduce yet another |
| 239 // vtable entry per node, something we don't want for space reasons. | 238 // vtable entry per node, something we don't want for space reasons. |
| 240 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 239 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
| 241 Isolate* isolate) { | 240 Isolate* isolate) { |
| 242 return FeedbackVectorRequirements(0, 0); | 241 return FeedbackVectorRequirements(0, 0); |
| 243 } | 242 } |
| 244 virtual void SetFirstFeedbackSlot(FeedbackVectorSlot slot) { UNREACHABLE(); } | 243 virtual void SetFirstFeedbackSlot(FeedbackVectorSlot slot) { UNREACHABLE(); } |
| 245 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) { | 244 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) { |
| 246 UNREACHABLE(); | 245 UNREACHABLE(); |
| 247 } | 246 } |
| 247 // Each ICSlot stores a kind of IC which the participating node should know. |
| 248 virtual Code::Kind FeedbackICSlotKind(int index) { |
| 249 UNREACHABLE(); |
| 250 return Code::NUMBER_OF_KINDS; |
| 251 } |
| 248 | 252 |
| 249 private: | 253 private: |
| 250 // Hidden to prevent accidental usage. It would have to load the | 254 // Hidden to prevent accidental usage. It would have to load the |
| 251 // current zone from the TLS. | 255 // current zone from the TLS. |
| 252 void* operator new(size_t size); | 256 void* operator new(size_t size); |
| 253 | 257 |
| 254 friend class CaseClause; // Generates AST IDs. | 258 friend class CaseClause; // Generates AST IDs. |
| 255 | 259 |
| 256 int position_; | 260 int position_; |
| 257 }; | 261 }; |
| (...skipping 1433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1691 bool is_resolved() const { return IsResolvedField::decode(bit_field_); } | 1695 bool is_resolved() const { return IsResolvedField::decode(bit_field_); } |
| 1692 void set_is_resolved() { | 1696 void set_is_resolved() { |
| 1693 bit_field_ = IsResolvedField::update(bit_field_, true); | 1697 bit_field_ = IsResolvedField::update(bit_field_, true); |
| 1694 } | 1698 } |
| 1695 | 1699 |
| 1696 Interface* interface() const { return interface_; } | 1700 Interface* interface() const { return interface_; } |
| 1697 | 1701 |
| 1698 // Bind this proxy to the variable var. Interfaces must match. | 1702 // Bind this proxy to the variable var. Interfaces must match. |
| 1699 void BindTo(Variable* var); | 1703 void BindTo(Variable* var); |
| 1700 | 1704 |
| 1705 bool UsesVariableFeedbackSlot() const { |
| 1706 return FLAG_vector_ics && (var()->IsUnallocated() || var()->IsLookupSlot()); |
| 1707 } |
| 1708 |
| 1701 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1709 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
| 1702 Isolate* isolate) OVERRIDE { | 1710 Isolate* isolate) OVERRIDE { |
| 1703 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); | 1711 return FeedbackVectorRequirements(0, UsesVariableFeedbackSlot() ? 1 : 0); |
| 1704 } | 1712 } |
| 1713 |
| 1705 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 1714 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { |
| 1706 variable_feedback_slot_ = slot; | 1715 variable_feedback_slot_ = slot; |
| 1707 } | 1716 } |
| 1708 | 1717 virtual Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
| 1718 return Code::LOAD_IC; |
| 1719 } |
| 1709 FeedbackVectorICSlot VariableFeedbackSlot() { | 1720 FeedbackVectorICSlot VariableFeedbackSlot() { |
| 1710 DCHECK(!FLAG_vector_ics || !variable_feedback_slot_.IsInvalid()); | 1721 DCHECK(!UsesVariableFeedbackSlot() || !variable_feedback_slot_.IsInvalid()); |
| 1711 return variable_feedback_slot_; | 1722 return variable_feedback_slot_; |
| 1712 } | 1723 } |
| 1713 | 1724 |
| 1714 protected: | 1725 protected: |
| 1715 VariableProxy(Zone* zone, Variable* var, int position); | 1726 VariableProxy(Zone* zone, Variable* var, int position); |
| 1716 | 1727 |
| 1717 VariableProxy(Zone* zone, const AstRawString* name, bool is_this, | 1728 VariableProxy(Zone* zone, const AstRawString* name, bool is_this, |
| 1718 Interface* interface, int position); | 1729 Interface* interface, int position); |
| 1719 | 1730 |
| 1720 class IsThisField : public BitField8<bool, 0, 1> {}; | 1731 class IsThisField : public BitField8<bool, 0, 1> {}; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1785 return obj()->IsSuperReference(); | 1796 return obj()->IsSuperReference(); |
| 1786 } | 1797 } |
| 1787 | 1798 |
| 1788 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1799 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
| 1789 Isolate* isolate) OVERRIDE { | 1800 Isolate* isolate) OVERRIDE { |
| 1790 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); | 1801 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); |
| 1791 } | 1802 } |
| 1792 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 1803 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { |
| 1793 property_feedback_slot_ = slot; | 1804 property_feedback_slot_ = slot; |
| 1794 } | 1805 } |
| 1806 virtual Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
| 1807 return key()->IsPropertyName() ? Code::LOAD_IC : Code::KEYED_LOAD_IC; |
| 1808 } |
| 1795 | 1809 |
| 1796 FeedbackVectorICSlot PropertyFeedbackSlot() const { | 1810 FeedbackVectorICSlot PropertyFeedbackSlot() const { |
| 1797 DCHECK(!FLAG_vector_ics || !property_feedback_slot_.IsInvalid()); | 1811 DCHECK(!FLAG_vector_ics || !property_feedback_slot_.IsInvalid()); |
| 1798 return property_feedback_slot_; | 1812 return property_feedback_slot_; |
| 1799 } | 1813 } |
| 1800 | 1814 |
| 1801 protected: | 1815 protected: |
| 1802 Property(Zone* zone, Expression* obj, Expression* key, int pos) | 1816 Property(Zone* zone, Expression* obj, Expression* key, int pos) |
| 1803 : Expression(zone, pos), | 1817 : Expression(zone, pos), |
| 1804 bit_field_(IsForCallField::encode(false) | | 1818 bit_field_(IsForCallField::encode(false) | |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1829 | 1843 |
| 1830 Expression* expression() const { return expression_; } | 1844 Expression* expression() const { return expression_; } |
| 1831 ZoneList<Expression*>* arguments() const { return arguments_; } | 1845 ZoneList<Expression*>* arguments() const { return arguments_; } |
| 1832 | 1846 |
| 1833 // Type feedback information. | 1847 // Type feedback information. |
| 1834 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 1848 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
| 1835 Isolate* isolate) OVERRIDE; | 1849 Isolate* isolate) OVERRIDE; |
| 1836 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 1850 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { |
| 1837 call_feedback_slot_ = slot; | 1851 call_feedback_slot_ = slot; |
| 1838 } | 1852 } |
| 1853 virtual Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
| 1854 return Code::CALL_IC; |
| 1855 } |
| 1839 | 1856 |
| 1840 bool HasCallFeedbackSlot() const { return !call_feedback_slot_.IsInvalid(); } | 1857 bool HasCallFeedbackSlot() const { return !call_feedback_slot_.IsInvalid(); } |
| 1841 FeedbackVectorICSlot CallFeedbackSlot() const { | 1858 FeedbackVectorICSlot CallFeedbackSlot() const { |
| 1842 DCHECK(!call_feedback_slot_.IsInvalid()); | 1859 DCHECK(!call_feedback_slot_.IsInvalid()); |
| 1843 return call_feedback_slot_; | 1860 return call_feedback_slot_; |
| 1844 } | 1861 } |
| 1845 | 1862 |
| 1846 virtual SmallMapList* GetReceiverTypes() OVERRIDE { | 1863 virtual SmallMapList* GetReceiverTypes() OVERRIDE { |
| 1847 if (expression()->IsProperty()) { | 1864 if (expression()->IsProperty()) { |
| 1848 return expression()->AsProperty()->GetReceiverTypes(); | 1865 return expression()->AsProperty()->GetReceiverTypes(); |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2002 public: | 2019 public: |
| 2003 DECLARE_NODE_TYPE(CallRuntime) | 2020 DECLARE_NODE_TYPE(CallRuntime) |
| 2004 | 2021 |
| 2005 Handle<String> name() const { return raw_name_->string(); } | 2022 Handle<String> name() const { return raw_name_->string(); } |
| 2006 const AstRawString* raw_name() const { return raw_name_; } | 2023 const AstRawString* raw_name() const { return raw_name_; } |
| 2007 const Runtime::Function* function() const { return function_; } | 2024 const Runtime::Function* function() const { return function_; } |
| 2008 ZoneList<Expression*>* arguments() const { return arguments_; } | 2025 ZoneList<Expression*>* arguments() const { return arguments_; } |
| 2009 bool is_jsruntime() const { return function_ == NULL; } | 2026 bool is_jsruntime() const { return function_ == NULL; } |
| 2010 | 2027 |
| 2011 // Type feedback information. | 2028 // Type feedback information. |
| 2029 bool HasCallRuntimeFeedbackSlot() const { |
| 2030 return FLAG_vector_ics && is_jsruntime(); |
| 2031 } |
| 2012 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 2032 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
| 2013 Isolate* isolate) OVERRIDE { | 2033 Isolate* isolate) OVERRIDE { |
| 2014 return FeedbackVectorRequirements( | 2034 return FeedbackVectorRequirements(0, HasCallRuntimeFeedbackSlot() ? 1 : 0); |
| 2015 0, (FLAG_vector_ics && is_jsruntime()) ? 1 : 0); | |
| 2016 } | 2035 } |
| 2017 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 2036 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { |
| 2018 callruntime_feedback_slot_ = slot; | 2037 callruntime_feedback_slot_ = slot; |
| 2019 } | 2038 } |
| 2039 virtual Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
| 2040 return Code::LOAD_IC; |
| 2041 } |
| 2020 | 2042 |
| 2021 FeedbackVectorICSlot CallRuntimeFeedbackSlot() { | 2043 FeedbackVectorICSlot CallRuntimeFeedbackSlot() { |
| 2022 DCHECK(!(FLAG_vector_ics && is_jsruntime()) || | 2044 DCHECK(!HasCallRuntimeFeedbackSlot() || |
| 2023 !callruntime_feedback_slot_.IsInvalid()); | 2045 !callruntime_feedback_slot_.IsInvalid()); |
| 2024 return callruntime_feedback_slot_; | 2046 return callruntime_feedback_slot_; |
| 2025 } | 2047 } |
| 2026 | 2048 |
| 2027 static int num_ids() { return parent_num_ids() + 1; } | 2049 static int num_ids() { return parent_num_ids() + 1; } |
| 2028 TypeFeedbackId CallRuntimeFeedbackId() const { | 2050 TypeFeedbackId CallRuntimeFeedbackId() const { |
| 2029 return TypeFeedbackId(local_id(0)); | 2051 return TypeFeedbackId(local_id(0)); |
| 2030 } | 2052 } |
| 2031 | 2053 |
| 2032 protected: | 2054 protected: |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2382 int index() const { | 2404 int index() const { |
| 2383 DCHECK_EQ(kDelegating, yield_kind()); | 2405 DCHECK_EQ(kDelegating, yield_kind()); |
| 2384 return index_; | 2406 return index_; |
| 2385 } | 2407 } |
| 2386 void set_index(int index) { | 2408 void set_index(int index) { |
| 2387 DCHECK_EQ(kDelegating, yield_kind()); | 2409 DCHECK_EQ(kDelegating, yield_kind()); |
| 2388 index_ = index; | 2410 index_ = index; |
| 2389 } | 2411 } |
| 2390 | 2412 |
| 2391 // Type feedback information. | 2413 // Type feedback information. |
| 2414 bool HasFeedbackSlots() const { |
| 2415 return FLAG_vector_ics && (yield_kind() == kDelegating); |
| 2416 } |
| 2392 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 2417 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
| 2393 Isolate* isolate) OVERRIDE { | 2418 Isolate* isolate) OVERRIDE { |
| 2394 return FeedbackVectorRequirements( | 2419 return FeedbackVectorRequirements(0, HasFeedbackSlots() ? 3 : 0); |
| 2395 0, (FLAG_vector_ics && yield_kind() == kDelegating) ? 3 : 0); | |
| 2396 } | 2420 } |
| 2397 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 2421 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { |
| 2398 yield_first_feedback_slot_ = slot; | 2422 yield_first_feedback_slot_ = slot; |
| 2399 } | 2423 } |
| 2424 virtual Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
| 2425 return index == 0 ? Code::KEYED_LOAD_IC : Code::LOAD_IC; |
| 2426 } |
| 2400 | 2427 |
| 2401 FeedbackVectorICSlot KeyedLoadFeedbackSlot() { | 2428 FeedbackVectorICSlot KeyedLoadFeedbackSlot() { |
| 2402 DCHECK(!FLAG_vector_ics || !yield_first_feedback_slot_.IsInvalid()); | 2429 DCHECK(!HasFeedbackSlots() || !yield_first_feedback_slot_.IsInvalid()); |
| 2403 return yield_first_feedback_slot_; | 2430 return yield_first_feedback_slot_; |
| 2404 } | 2431 } |
| 2405 | 2432 |
| 2406 FeedbackVectorICSlot DoneFeedbackSlot() { | 2433 FeedbackVectorICSlot DoneFeedbackSlot() { |
| 2407 return KeyedLoadFeedbackSlot().next(); | 2434 return KeyedLoadFeedbackSlot().next(); |
| 2408 } | 2435 } |
| 2409 | 2436 |
| 2410 FeedbackVectorICSlot ValueFeedbackSlot() { return DoneFeedbackSlot().next(); } | 2437 FeedbackVectorICSlot ValueFeedbackSlot() { return DoneFeedbackSlot().next(); } |
| 2411 | 2438 |
| 2412 protected: | 2439 protected: |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2573 } | 2600 } |
| 2574 bool is_default_constructor() { | 2601 bool is_default_constructor() { |
| 2575 return IsDefaultConstructor(FunctionKindBits::decode(bitfield_)); | 2602 return IsDefaultConstructor(FunctionKindBits::decode(bitfield_)); |
| 2576 } | 2603 } |
| 2577 | 2604 |
| 2578 int ast_node_count() { return ast_properties_.node_count(); } | 2605 int ast_node_count() { return ast_properties_.node_count(); } |
| 2579 AstProperties::Flags* flags() { return ast_properties_.flags(); } | 2606 AstProperties::Flags* flags() { return ast_properties_.flags(); } |
| 2580 void set_ast_properties(AstProperties* ast_properties) { | 2607 void set_ast_properties(AstProperties* ast_properties) { |
| 2581 ast_properties_ = *ast_properties; | 2608 ast_properties_ = *ast_properties; |
| 2582 } | 2609 } |
| 2583 int slot_count() { | 2610 const FeedbackVectorSpec& feedback_vector_spec() const { |
| 2584 return ast_properties_.feedback_slots(); | 2611 return ast_properties_.get_spec(); |
| 2585 } | 2612 } |
| 2586 int ic_slot_count() { return ast_properties_.ic_feedback_slots(); } | |
| 2587 bool dont_optimize() { return dont_optimize_reason_ != kNoReason; } | 2613 bool dont_optimize() { return dont_optimize_reason_ != kNoReason; } |
| 2588 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; } | 2614 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; } |
| 2589 void set_dont_optimize_reason(BailoutReason reason) { | 2615 void set_dont_optimize_reason(BailoutReason reason) { |
| 2590 dont_optimize_reason_ = reason; | 2616 dont_optimize_reason_ = reason; |
| 2591 } | 2617 } |
| 2592 | 2618 |
| 2593 protected: | 2619 protected: |
| 2594 FunctionLiteral(Zone* zone, const AstRawString* name, | 2620 FunctionLiteral(Zone* zone, const AstRawString* name, |
| 2595 AstValueFactory* ast_value_factory, Scope* scope, | 2621 AstValueFactory* ast_value_factory, Scope* scope, |
| 2596 ZoneList<Statement*>* body, int materialized_literal_count, | 2622 ZoneList<Statement*>* body, int materialized_literal_count, |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2727 TypeFeedbackId HomeObjectFeedbackId() { return TypeFeedbackId(local_id(0)); } | 2753 TypeFeedbackId HomeObjectFeedbackId() { return TypeFeedbackId(local_id(0)); } |
| 2728 | 2754 |
| 2729 // Type feedback information. | 2755 // Type feedback information. |
| 2730 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 2756 virtual FeedbackVectorRequirements ComputeFeedbackRequirements( |
| 2731 Isolate* isolate) OVERRIDE { | 2757 Isolate* isolate) OVERRIDE { |
| 2732 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); | 2758 return FeedbackVectorRequirements(0, FLAG_vector_ics ? 1 : 0); |
| 2733 } | 2759 } |
| 2734 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { | 2760 virtual void SetFirstFeedbackICSlot(FeedbackVectorICSlot slot) OVERRIDE { |
| 2735 homeobject_feedback_slot_ = slot; | 2761 homeobject_feedback_slot_ = slot; |
| 2736 } | 2762 } |
| 2763 virtual Code::Kind FeedbackICSlotKind(int index) OVERRIDE { |
| 2764 return Code::LOAD_IC; |
| 2765 } |
| 2737 | 2766 |
| 2738 FeedbackVectorICSlot HomeObjectFeedbackSlot() { | 2767 FeedbackVectorICSlot HomeObjectFeedbackSlot() { |
| 2739 DCHECK(!FLAG_vector_ics || !homeobject_feedback_slot_.IsInvalid()); | 2768 DCHECK(!FLAG_vector_ics || !homeobject_feedback_slot_.IsInvalid()); |
| 2740 return homeobject_feedback_slot_; | 2769 return homeobject_feedback_slot_; |
| 2741 } | 2770 } |
| 2742 | 2771 |
| 2743 protected: | 2772 protected: |
| 2744 SuperReference(Zone* zone, VariableProxy* this_var, int pos) | 2773 SuperReference(Zone* zone, VariableProxy* this_var, int pos) |
| 2745 : Expression(zone, pos), | 2774 : Expression(zone, pos), |
| 2746 this_var_(this_var), | 2775 this_var_(this_var), |
| (...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3550 | 3579 |
| 3551 private: | 3580 private: |
| 3552 Zone* zone_; | 3581 Zone* zone_; |
| 3553 AstValueFactory* ast_value_factory_; | 3582 AstValueFactory* ast_value_factory_; |
| 3554 }; | 3583 }; |
| 3555 | 3584 |
| 3556 | 3585 |
| 3557 } } // namespace v8::internal | 3586 } } // namespace v8::internal |
| 3558 | 3587 |
| 3559 #endif // V8_AST_H_ | 3588 #endif // V8_AST_H_ |
| OLD | NEW |