Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1003)

Side by Side Diff: src/ast.h

Issue 137403009: Adding a type vector to replace type cells. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed feedback. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/ast.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 14 matching lines...) Expand all
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 #ifndef V8_AST_H_ 28 #ifndef V8_AST_H_
29 #define V8_AST_H_ 29 #define V8_AST_H_
30 30
31 #include "v8.h" 31 #include "v8.h"
32 32
33 #include "assembler.h" 33 #include "assembler.h"
34 #include "factory.h" 34 #include "factory.h"
35 #include "feedback-slots.h"
35 #include "isolate.h" 36 #include "isolate.h"
36 #include "jsregexp.h" 37 #include "jsregexp.h"
37 #include "list-inl.h" 38 #include "list-inl.h"
38 #include "runtime.h" 39 #include "runtime.h"
39 #include "small-pointer-list.h" 40 #include "small-pointer-list.h"
40 #include "smart-pointers.h" 41 #include "smart-pointers.h"
41 #include "token.h" 42 #include "token.h"
42 #include "types.h" 43 #include "types.h"
43 #include "utils.h" 44 #include "utils.h"
44 #include "variables.h" 45 #include "variables.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 kDontSelfOptimize, 175 kDontSelfOptimize,
175 kDontSoftInline, 176 kDontSoftInline,
176 kDontCache 177 kDontCache
177 }; 178 };
178 179
179 180
180 class AstProperties V8_FINAL BASE_EMBEDDED { 181 class AstProperties V8_FINAL BASE_EMBEDDED {
181 public: 182 public:
182 class Flags : public EnumSet<AstPropertiesFlag, int> {}; 183 class Flags : public EnumSet<AstPropertiesFlag, int> {};
183 184
184 AstProperties() : node_count_(0) { } 185 AstProperties() : node_count_(0) {}
185 186
186 Flags* flags() { return &flags_; } 187 Flags* flags() { return &flags_; }
187 int node_count() { return node_count_; } 188 int node_count() { return node_count_; }
188 void add_node_count(int count) { node_count_ += count; } 189 void add_node_count(int count) { node_count_ += count; }
189 190
190 private: 191 private:
191 Flags flags_; 192 Flags flags_;
192 int node_count_; 193 int node_count_;
193 }; 194 };
194 195
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 each_(NULL), 908 each_(NULL),
908 subject_(NULL) { 909 subject_(NULL) {
909 } 910 }
910 911
911 private: 912 private:
912 Expression* each_; 913 Expression* each_;
913 Expression* subject_; 914 Expression* subject_;
914 }; 915 };
915 916
916 917
917 class ForInStatement V8_FINAL : public ForEachStatement { 918 class ForInStatement V8_FINAL : public ForEachStatement,
919 public FeedbackSlotInterface {
918 public: 920 public:
919 DECLARE_NODE_TYPE(ForInStatement) 921 DECLARE_NODE_TYPE(ForInStatement)
920 922
921 Expression* enumerable() const { 923 Expression* enumerable() const {
922 return subject(); 924 return subject();
923 } 925 }
924 926
925 TypeFeedbackId ForInFeedbackId() const { return reuse(PrepareId()); } 927 // Type feedback information.
928 virtual ComputablePhase GetComputablePhase() { return DURING_PARSE; }
929 virtual int ComputeFeedbackSlotCount(Isolate* isolate) { return 1; }
930 virtual void SetFirstFeedbackSlot(int slot) { for_in_feedback_slot_ = slot; }
931
932 int ForInFeedbackSlot() {
933 ASSERT(for_in_feedback_slot_ != kInvalidFeedbackSlot);
934 return for_in_feedback_slot_;
935 }
936
926 enum ForInType { FAST_FOR_IN, SLOW_FOR_IN }; 937 enum ForInType { FAST_FOR_IN, SLOW_FOR_IN };
927 ForInType for_in_type() const { return for_in_type_; } 938 ForInType for_in_type() const { return for_in_type_; }
928 void set_for_in_type(ForInType type) { for_in_type_ = type; } 939 void set_for_in_type(ForInType type) { for_in_type_ = type; }
929 940
930 BailoutId BodyId() const { return body_id_; } 941 BailoutId BodyId() const { return body_id_; }
931 BailoutId PrepareId() const { return prepare_id_; } 942 BailoutId PrepareId() const { return prepare_id_; }
932 virtual BailoutId ContinueId() const V8_OVERRIDE { return EntryId(); } 943 virtual BailoutId ContinueId() const V8_OVERRIDE { return EntryId(); }
933 virtual BailoutId StackCheckId() const V8_OVERRIDE { return body_id_; } 944 virtual BailoutId StackCheckId() const V8_OVERRIDE { return body_id_; }
934 945
935 protected: 946 protected:
936 ForInStatement(Zone* zone, ZoneStringList* labels, int pos) 947 ForInStatement(Zone* zone, ZoneStringList* labels, int pos)
937 : ForEachStatement(zone, labels, pos), 948 : ForEachStatement(zone, labels, pos),
938 for_in_type_(SLOW_FOR_IN), 949 for_in_type_(SLOW_FOR_IN),
950 for_in_feedback_slot_(kInvalidFeedbackSlot),
939 body_id_(GetNextId(zone)), 951 body_id_(GetNextId(zone)),
940 prepare_id_(GetNextId(zone)) { 952 prepare_id_(GetNextId(zone)) {
941 } 953 }
942 954
943 ForInType for_in_type_; 955 ForInType for_in_type_;
956 int for_in_feedback_slot_;
944 const BailoutId body_id_; 957 const BailoutId body_id_;
945 const BailoutId prepare_id_; 958 const BailoutId prepare_id_;
946 }; 959 };
947 960
948 961
949 class ForOfStatement V8_FINAL : public ForEachStatement { 962 class ForOfStatement V8_FINAL : public ForEachStatement {
950 public: 963 public:
951 DECLARE_NODE_TYPE(ForOfStatement) 964 DECLARE_NODE_TYPE(ForOfStatement)
952 965
953 void Initialize(Expression* each, 966 void Initialize(Expression* each,
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 const BailoutId load_id_; 1739 const BailoutId load_id_;
1727 1740
1728 SmallMapList receiver_types_; 1741 SmallMapList receiver_types_;
1729 bool is_for_call_ : 1; 1742 bool is_for_call_ : 1;
1730 bool is_uninitialized_ : 1; 1743 bool is_uninitialized_ : 1;
1731 bool is_string_access_ : 1; 1744 bool is_string_access_ : 1;
1732 bool is_function_prototype_ : 1; 1745 bool is_function_prototype_ : 1;
1733 }; 1746 };
1734 1747
1735 1748
1736 class Call V8_FINAL : public Expression { 1749 class Call V8_FINAL : public Expression, public FeedbackSlotInterface {
1737 public: 1750 public:
1738 DECLARE_NODE_TYPE(Call) 1751 DECLARE_NODE_TYPE(Call)
1739 1752
1740 Expression* expression() const { return expression_; } 1753 Expression* expression() const { return expression_; }
1741 ZoneList<Expression*>* arguments() const { return arguments_; } 1754 ZoneList<Expression*>* arguments() const { return arguments_; }
1742 1755
1743 // Type feedback information. 1756 // Type feedback information.
1744 TypeFeedbackId CallFeedbackId() const { return reuse(id()); } 1757 virtual ComputablePhase GetComputablePhase() { return AFTER_SCOPING; }
1758 virtual int ComputeFeedbackSlotCount(Isolate* isolate);
1759 virtual void SetFirstFeedbackSlot(int slot) {
1760 call_feedback_slot_ = slot;
1761 }
1762
1763 bool HasCallFeedbackSlot() const {
1764 return call_feedback_slot_ != kInvalidFeedbackSlot;
1765 }
1766 int CallFeedbackSlot() const { return call_feedback_slot_; }
1745 1767
1746 virtual SmallMapList* GetReceiverTypes() V8_OVERRIDE { 1768 virtual SmallMapList* GetReceiverTypes() V8_OVERRIDE {
1747 if (expression()->IsProperty()) { 1769 if (expression()->IsProperty()) {
1748 return expression()->AsProperty()->GetReceiverTypes(); 1770 return expression()->AsProperty()->GetReceiverTypes();
1749 } 1771 }
1750 return NULL; 1772 return NULL;
1751 } 1773 }
1752 1774
1753 virtual bool IsMonomorphic() V8_OVERRIDE { 1775 virtual bool IsMonomorphic() V8_OVERRIDE {
1754 if (expression()->IsProperty()) { 1776 if (expression()->IsProperty()) {
(...skipping 28 matching lines...) Expand all
1783 #endif 1805 #endif
1784 1806
1785 protected: 1807 protected:
1786 Call(Zone* zone, 1808 Call(Zone* zone,
1787 Expression* expression, 1809 Expression* expression,
1788 ZoneList<Expression*>* arguments, 1810 ZoneList<Expression*>* arguments,
1789 int pos) 1811 int pos)
1790 : Expression(zone, pos), 1812 : Expression(zone, pos),
1791 expression_(expression), 1813 expression_(expression),
1792 arguments_(arguments), 1814 arguments_(arguments),
1815 call_feedback_slot_(kInvalidFeedbackSlot),
1793 return_id_(GetNextId(zone)) { 1816 return_id_(GetNextId(zone)) {
1794 if (expression->IsProperty()) { 1817 if (expression->IsProperty()) {
1795 expression->AsProperty()->mark_for_call(); 1818 expression->AsProperty()->mark_for_call();
1796 } 1819 }
1797 } 1820 }
1798 1821
1799 private: 1822 private:
1800 Expression* expression_; 1823 Expression* expression_;
1801 ZoneList<Expression*>* arguments_; 1824 ZoneList<Expression*>* arguments_;
1802 1825
1803 Handle<JSFunction> target_; 1826 Handle<JSFunction> target_;
1804 Handle<Cell> cell_; 1827 Handle<Cell> cell_;
1828 int call_feedback_slot_;
1805 1829
1806 const BailoutId return_id_; 1830 const BailoutId return_id_;
1807 }; 1831 };
1808 1832
1809 1833
1810 class CallNew V8_FINAL : public Expression { 1834 class CallNew V8_FINAL : public Expression, public FeedbackSlotInterface {
1811 public: 1835 public:
1812 DECLARE_NODE_TYPE(CallNew) 1836 DECLARE_NODE_TYPE(CallNew)
1813 1837
1814 Expression* expression() const { return expression_; } 1838 Expression* expression() const { return expression_; }
1815 ZoneList<Expression*>* arguments() const { return arguments_; } 1839 ZoneList<Expression*>* arguments() const { return arguments_; }
1816 1840
1817 // Type feedback information. 1841 // Type feedback information.
1842 virtual ComputablePhase GetComputablePhase() { return DURING_PARSE; }
1843 virtual int ComputeFeedbackSlotCount(Isolate* isolate) { return 1; }
1844 virtual void SetFirstFeedbackSlot(int slot) {
1845 callnew_feedback_slot_ = slot;
1846 }
1847
1848 int CallNewFeedbackSlot() {
1849 ASSERT(callnew_feedback_slot_ != kInvalidFeedbackSlot);
1850 return callnew_feedback_slot_;
1851 }
1852
1818 TypeFeedbackId CallNewFeedbackId() const { return reuse(id()); } 1853 TypeFeedbackId CallNewFeedbackId() const { return reuse(id()); }
1819 void RecordTypeFeedback(TypeFeedbackOracle* oracle); 1854 void RecordTypeFeedback(TypeFeedbackOracle* oracle);
1820 virtual bool IsMonomorphic() V8_OVERRIDE { return is_monomorphic_; } 1855 virtual bool IsMonomorphic() V8_OVERRIDE { return is_monomorphic_; }
1821 Handle<JSFunction> target() const { return target_; } 1856 Handle<JSFunction> target() const { return target_; }
1822 ElementsKind elements_kind() const { return elements_kind_; } 1857 ElementsKind elements_kind() const { return elements_kind_; }
1823 Handle<AllocationSite> allocation_site() const { 1858 Handle<AllocationSite> allocation_site() const {
1824 return allocation_site_; 1859 return allocation_site_;
1825 } 1860 }
1826 1861
1862 static int feedback_slots() { return 1; }
1863
1827 BailoutId ReturnId() const { return return_id_; } 1864 BailoutId ReturnId() const { return return_id_; }
1828 1865
1829 protected: 1866 protected:
1830 CallNew(Zone* zone, 1867 CallNew(Zone* zone,
1831 Expression* expression, 1868 Expression* expression,
1832 ZoneList<Expression*>* arguments, 1869 ZoneList<Expression*>* arguments,
1833 int pos) 1870 int pos)
1834 : Expression(zone, pos), 1871 : Expression(zone, pos),
1835 expression_(expression), 1872 expression_(expression),
1836 arguments_(arguments), 1873 arguments_(arguments),
1837 is_monomorphic_(false), 1874 is_monomorphic_(false),
1838 elements_kind_(GetInitialFastElementsKind()), 1875 elements_kind_(GetInitialFastElementsKind()),
1876 callnew_feedback_slot_(kInvalidFeedbackSlot),
1839 return_id_(GetNextId(zone)) { } 1877 return_id_(GetNextId(zone)) { }
1840 1878
1841 private: 1879 private:
1842 Expression* expression_; 1880 Expression* expression_;
1843 ZoneList<Expression*>* arguments_; 1881 ZoneList<Expression*>* arguments_;
1844 1882
1845 bool is_monomorphic_; 1883 bool is_monomorphic_;
1846 Handle<JSFunction> target_; 1884 Handle<JSFunction> target_;
1847 ElementsKind elements_kind_; 1885 ElementsKind elements_kind_;
1848 Handle<AllocationSite> allocation_site_; 1886 Handle<AllocationSite> allocation_site_;
1887 int callnew_feedback_slot_;
1849 1888
1850 const BailoutId return_id_; 1889 const BailoutId return_id_;
1851 }; 1890 };
1852 1891
1853 1892
1854 // The CallRuntime class does not represent any official JavaScript 1893 // The CallRuntime class does not represent any official JavaScript
1855 // language construct. Instead it is used to call a C or JS function 1894 // language construct. Instead it is used to call a C or JS function
1856 // with a set of arguments. This is used from the builtins that are 1895 // with a set of arguments. This is used from the builtins that are
1857 // implemented in JavaScript (see "v8natives.js"). 1896 // implemented in JavaScript (see "v8natives.js").
1858 class CallRuntime V8_FINAL : public Expression { 1897 class CallRuntime V8_FINAL : public Expression {
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
2325 2364
2326 bool is_generator() { 2365 bool is_generator() {
2327 return IsGenerator::decode(bitfield_) == kIsGenerator; 2366 return IsGenerator::decode(bitfield_) == kIsGenerator;
2328 } 2367 }
2329 2368
2330 int ast_node_count() { return ast_properties_.node_count(); } 2369 int ast_node_count() { return ast_properties_.node_count(); }
2331 AstProperties::Flags* flags() { return ast_properties_.flags(); } 2370 AstProperties::Flags* flags() { return ast_properties_.flags(); }
2332 void set_ast_properties(AstProperties* ast_properties) { 2371 void set_ast_properties(AstProperties* ast_properties) {
2333 ast_properties_ = *ast_properties; 2372 ast_properties_ = *ast_properties;
2334 } 2373 }
2335 2374 void set_slot_processor(DeferredFeedbackSlotProcessor* slot_processor) {
2375 slot_processor_ = *slot_processor;
2376 }
2377 void ProcessFeedbackSlots(Isolate* isolate) {
2378 slot_processor_.ProcessFeedbackSlots(isolate);
2379 }
2380 int slot_count() {
2381 return slot_processor_.slot_count();
2382 }
2336 bool dont_optimize() { return dont_optimize_reason_ != kNoReason; } 2383 bool dont_optimize() { return dont_optimize_reason_ != kNoReason; }
2337 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; } 2384 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; }
2338 void set_dont_optimize_reason(BailoutReason reason) { 2385 void set_dont_optimize_reason(BailoutReason reason) {
2339 dont_optimize_reason_ = reason; 2386 dont_optimize_reason_ = reason;
2340 } 2387 }
2341 2388
2342 protected: 2389 protected:
2343 FunctionLiteral(Zone* zone, 2390 FunctionLiteral(Zone* zone,
2344 Handle<String> name, 2391 Handle<String> name,
2345 Scope* scope, 2392 Scope* scope,
(...skipping 29 matching lines...) Expand all
2375 IsGenerator::encode(is_generator); 2422 IsGenerator::encode(is_generator);
2376 } 2423 }
2377 2424
2378 private: 2425 private:
2379 Handle<String> name_; 2426 Handle<String> name_;
2380 Handle<SharedFunctionInfo> shared_info_; 2427 Handle<SharedFunctionInfo> shared_info_;
2381 Scope* scope_; 2428 Scope* scope_;
2382 ZoneList<Statement*>* body_; 2429 ZoneList<Statement*>* body_;
2383 Handle<String> inferred_name_; 2430 Handle<String> inferred_name_;
2384 AstProperties ast_properties_; 2431 AstProperties ast_properties_;
2432 DeferredFeedbackSlotProcessor slot_processor_;
2385 BailoutReason dont_optimize_reason_; 2433 BailoutReason dont_optimize_reason_;
2386 2434
2387 int materialized_literal_count_; 2435 int materialized_literal_count_;
2388 int expected_property_count_; 2436 int expected_property_count_;
2389 int handler_count_; 2437 int handler_count_;
2390 int parameter_count_; 2438 int parameter_count_;
2391 int function_token_position_; 2439 int function_token_position_;
2392 2440
2393 unsigned bitfield_; 2441 unsigned bitfield_;
2394 class IsExpression: public BitField<bool, 0, 1> {}; 2442 class IsExpression: public BitField<bool, 0, 1> {};
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
2849 \ 2897 \
2850 Zone* zone_; \ 2898 Zone* zone_; \
2851 bool stack_overflow_ 2899 bool stack_overflow_
2852 2900
2853 2901
2854 // ---------------------------------------------------------------------------- 2902 // ----------------------------------------------------------------------------
2855 // Construction time visitor. 2903 // Construction time visitor.
2856 2904
2857 class AstConstructionVisitor BASE_EMBEDDED { 2905 class AstConstructionVisitor BASE_EMBEDDED {
2858 public: 2906 public:
2859 AstConstructionVisitor() : dont_optimize_reason_(kNoReason) { } 2907 explicit AstConstructionVisitor(Zone* zone)
2908 : dont_optimize_reason_(kNoReason),
2909 zone_(zone) { }
2860 2910
2861 AstProperties* ast_properties() { return &properties_; } 2911 AstProperties* ast_properties() { return &properties_; }
2862 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; } 2912 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; }
2913 DeferredFeedbackSlotProcessor* slot_processor() { return &slot_processor_; }
2863 2914
2864 private: 2915 private:
2865 template<class> friend class AstNodeFactory; 2916 template<class> friend class AstNodeFactory;
2866 2917
2867 // Node visitors. 2918 // Node visitors.
2868 #define DEF_VISIT(type) \ 2919 #define DEF_VISIT(type) \
2869 void Visit##type(type* node); 2920 void Visit##type(type* node);
2870 AST_NODE_LIST(DEF_VISIT) 2921 AST_NODE_LIST(DEF_VISIT)
2871 #undef DEF_VISIT 2922 #undef DEF_VISIT
2872 2923
2873 void increase_node_count() { properties_.add_node_count(1); } 2924 void increase_node_count() { properties_.add_node_count(1); }
2874 void add_flag(AstPropertiesFlag flag) { properties_.flags()->Add(flag); } 2925 void add_flag(AstPropertiesFlag flag) { properties_.flags()->Add(flag); }
2875 void set_dont_optimize_reason(BailoutReason reason) { 2926 void set_dont_optimize_reason(BailoutReason reason) {
2876 dont_optimize_reason_ = reason; 2927 dont_optimize_reason_ = reason;
2877 } 2928 }
2878 2929
2930 void add_slot_node(FeedbackSlotInterface* slot_node) {
2931 slot_processor_.add_slot_node(zone_, slot_node);
2932 }
2933
2879 AstProperties properties_; 2934 AstProperties properties_;
2935 DeferredFeedbackSlotProcessor slot_processor_;
2880 BailoutReason dont_optimize_reason_; 2936 BailoutReason dont_optimize_reason_;
2937 Zone* zone_;
2881 }; 2938 };
2882 2939
2883 2940
2884 class AstNullVisitor BASE_EMBEDDED { 2941 class AstNullVisitor BASE_EMBEDDED {
2885 public: 2942 public:
2943 explicit AstNullVisitor(Zone* zone) {}
2944
2886 // Node visitors. 2945 // Node visitors.
2887 #define DEF_VISIT(type) \ 2946 #define DEF_VISIT(type) \
2888 void Visit##type(type* node) {} 2947 void Visit##type(type* node) {}
2889 AST_NODE_LIST(DEF_VISIT) 2948 AST_NODE_LIST(DEF_VISIT)
2890 #undef DEF_VISIT 2949 #undef DEF_VISIT
2891 }; 2950 };
2892 2951
2893 2952
2894 2953
2895 // ---------------------------------------------------------------------------- 2954 // ----------------------------------------------------------------------------
2896 // AstNode factory 2955 // AstNode factory
2897 2956
2898 template<class Visitor> 2957 template<class Visitor>
2899 class AstNodeFactory V8_FINAL BASE_EMBEDDED { 2958 class AstNodeFactory V8_FINAL BASE_EMBEDDED {
2900 public: 2959 public:
2901 explicit AstNodeFactory(Zone* zone) : zone_(zone) { } 2960 explicit AstNodeFactory(Zone* zone)
2961 : zone_(zone),
2962 visitor_(zone) { }
2902 2963
2903 Visitor* visitor() { return &visitor_; } 2964 Visitor* visitor() { return &visitor_; }
2904 2965
2905 #define VISIT_AND_RETURN(NodeType, node) \ 2966 #define VISIT_AND_RETURN(NodeType, node) \
2906 visitor_.Visit##NodeType((node)); \ 2967 visitor_.Visit##NodeType((node)); \
2907 return node; 2968 return node;
2908 2969
2909 VariableDeclaration* NewVariableDeclaration(VariableProxy* proxy, 2970 VariableDeclaration* NewVariableDeclaration(VariableProxy* proxy,
2910 VariableMode mode, 2971 VariableMode mode,
2911 Scope* scope, 2972 Scope* scope,
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
3296 3357
3297 private: 3358 private:
3298 Zone* zone_; 3359 Zone* zone_;
3299 Visitor visitor_; 3360 Visitor visitor_;
3300 }; 3361 };
3301 3362
3302 3363
3303 } } // namespace v8::internal 3364 } } // namespace v8::internal
3304 3365
3305 #endif // V8_AST_H_ 3366 #endif // V8_AST_H_
OLDNEW
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/ast.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698