| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef RUNTIME_VM_KERNEL_H_ | 5 #ifndef RUNTIME_VM_KERNEL_H_ |
| 6 #define RUNTIME_VM_KERNEL_H_ | 6 #define RUNTIME_VM_KERNEL_H_ |
| 7 | 7 |
| 8 #if !defined(DART_PRECOMPILED_RUNTIME) | 8 #if !defined(DART_PRECOMPILED_RUNTIME) |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "vm/allocation.h" | 10 #include "vm/allocation.h" |
| 11 #include "vm/globals.h" | 11 #include "vm/globals.h" |
| 12 #include "vm/growable_array.h" | 12 #include "vm/growable_array.h" |
| 13 #include "vm/token_position.h" | 13 #include "vm/token_position.h" |
| 14 | 14 |
| 15 | 15 |
| 16 #define KERNEL_NODES_DO(M) \ | 16 #define KERNEL_NODES_DO(M) \ |
| 17 M(Name) \ | 17 M(Name) \ |
| 18 M(DartType) \ | 18 M(DartType) \ |
| 19 M(InvalidType) \ | 19 M(InvalidType) \ |
| 20 M(DynamicType) \ | 20 M(DynamicType) \ |
| 21 M(VoidType) \ | 21 M(VoidType) \ |
| 22 M(InterfaceType) \ | 22 M(InterfaceType) \ |
| 23 M(FunctionType) \ | 23 M(FunctionType) \ |
| 24 M(TypeParameterType) | 24 M(TypeParameterType) \ |
| 25 M(VectorType) |
| 25 | 26 |
| 26 #define KERNEL_TREE_NODES_DO(M) \ | 27 #define KERNEL_TREE_NODES_DO(M) \ |
| 27 M(Library) \ | 28 M(Library) \ |
| 28 M(Class) \ | 29 M(Class) \ |
| 29 M(NormalClass) \ | 30 M(NormalClass) \ |
| 30 M(MixinClass) \ | 31 M(MixinClass) \ |
| 31 M(Member) \ | 32 M(Member) \ |
| 32 M(Field) \ | 33 M(Field) \ |
| 33 M(Constructor) \ | 34 M(Constructor) \ |
| 34 M(Procedure) \ | 35 M(Procedure) \ |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 M(TypeLiteral) \ | 73 M(TypeLiteral) \ |
| 73 M(ThisExpression) \ | 74 M(ThisExpression) \ |
| 74 M(Rethrow) \ | 75 M(Rethrow) \ |
| 75 M(Throw) \ | 76 M(Throw) \ |
| 76 M(ListLiteral) \ | 77 M(ListLiteral) \ |
| 77 M(MapLiteral) \ | 78 M(MapLiteral) \ |
| 78 M(MapEntry) \ | 79 M(MapEntry) \ |
| 79 M(AwaitExpression) \ | 80 M(AwaitExpression) \ |
| 80 M(FunctionExpression) \ | 81 M(FunctionExpression) \ |
| 81 M(Let) \ | 82 M(Let) \ |
| 83 M(VectorCreation) \ |
| 84 M(VectorGet) \ |
| 85 M(VectorSet) \ |
| 86 M(VectorCopy) \ |
| 87 M(ClosureCreation) \ |
| 82 M(Statement) \ | 88 M(Statement) \ |
| 83 M(InvalidStatement) \ | 89 M(InvalidStatement) \ |
| 84 M(ExpressionStatement) \ | 90 M(ExpressionStatement) \ |
| 85 M(Block) \ | 91 M(Block) \ |
| 86 M(EmptyStatement) \ | 92 M(EmptyStatement) \ |
| 87 M(AssertStatement) \ | 93 M(AssertStatement) \ |
| 88 M(LabeledStatement) \ | 94 M(LabeledStatement) \ |
| 89 M(BreakStatement) \ | 95 M(BreakStatement) \ |
| 90 M(WhileStatement) \ | 96 M(WhileStatement) \ |
| 91 M(DoStatement) \ | 97 M(DoStatement) \ |
| (...skipping 1836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1928 | 1934 |
| 1929 Child<VariableDeclaration> variable_; | 1935 Child<VariableDeclaration> variable_; |
| 1930 Child<Expression> body_; | 1936 Child<Expression> body_; |
| 1931 TokenPosition position_; | 1937 TokenPosition position_; |
| 1932 TokenPosition end_position_; | 1938 TokenPosition end_position_; |
| 1933 | 1939 |
| 1934 DISALLOW_COPY_AND_ASSIGN(Let); | 1940 DISALLOW_COPY_AND_ASSIGN(Let); |
| 1935 }; | 1941 }; |
| 1936 | 1942 |
| 1937 | 1943 |
| 1944 class VectorCreation : public Expression { |
| 1945 public: |
| 1946 static VectorCreation* ReadFrom(Reader* reader); |
| 1947 |
| 1948 virtual ~VectorCreation(); |
| 1949 |
| 1950 DEFINE_CASTING_OPERATIONS(VectorCreation); |
| 1951 |
| 1952 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1953 virtual void VisitChildren(Visitor* visitor); |
| 1954 |
| 1955 intptr_t value() { return value_; } |
| 1956 |
| 1957 private: |
| 1958 VectorCreation() {} |
| 1959 |
| 1960 intptr_t value_; |
| 1961 |
| 1962 DISALLOW_COPY_AND_ASSIGN(VectorCreation); |
| 1963 }; |
| 1964 |
| 1965 |
| 1966 class VectorGet : public Expression { |
| 1967 public: |
| 1968 static VectorGet* ReadFrom(Reader* reader); |
| 1969 |
| 1970 virtual ~VectorGet(); |
| 1971 |
| 1972 DEFINE_CASTING_OPERATIONS(VectorGet); |
| 1973 |
| 1974 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1975 virtual void VisitChildren(Visitor* visitor); |
| 1976 |
| 1977 Expression* vector_expression() { return vector_expression_; } |
| 1978 intptr_t index() { return index_; } |
| 1979 |
| 1980 private: |
| 1981 VectorGet() {} |
| 1982 |
| 1983 Child<Expression> vector_expression_; |
| 1984 intptr_t index_; |
| 1985 |
| 1986 DISALLOW_COPY_AND_ASSIGN(VectorGet); |
| 1987 }; |
| 1988 |
| 1989 |
| 1990 class VectorSet : public Expression { |
| 1991 public: |
| 1992 static VectorSet* ReadFrom(Reader* reader); |
| 1993 |
| 1994 virtual ~VectorSet(); |
| 1995 |
| 1996 DEFINE_CASTING_OPERATIONS(VectorSet); |
| 1997 |
| 1998 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1999 virtual void VisitChildren(Visitor* visitor); |
| 2000 |
| 2001 Expression* vector_expression() { return vector_expression_; } |
| 2002 intptr_t index() { return index_; } |
| 2003 Expression* value() { return value_; } |
| 2004 |
| 2005 private: |
| 2006 VectorSet() {} |
| 2007 |
| 2008 Child<Expression> vector_expression_; |
| 2009 intptr_t index_; |
| 2010 Child<Expression> value_; |
| 2011 |
| 2012 DISALLOW_COPY_AND_ASSIGN(VectorSet); |
| 2013 }; |
| 2014 |
| 2015 |
| 2016 class VectorCopy : public Expression { |
| 2017 public: |
| 2018 static VectorCopy* ReadFrom(Reader* reader); |
| 2019 |
| 2020 virtual ~VectorCopy(); |
| 2021 |
| 2022 DEFINE_CASTING_OPERATIONS(VectorCopy); |
| 2023 |
| 2024 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 2025 virtual void VisitChildren(Visitor* visitor); |
| 2026 |
| 2027 Expression* vector_expression() { return vector_expression_; } |
| 2028 |
| 2029 private: |
| 2030 VectorCopy() {} |
| 2031 |
| 2032 Child<Expression> vector_expression_; |
| 2033 |
| 2034 DISALLOW_COPY_AND_ASSIGN(VectorCopy); |
| 2035 }; |
| 2036 |
| 2037 |
| 2038 class ClosureCreation : public Expression { |
| 2039 public: |
| 2040 static ClosureCreation* ReadFrom(Reader* reader); |
| 2041 |
| 2042 virtual ~ClosureCreation(); |
| 2043 |
| 2044 DEFINE_CASTING_OPERATIONS(ClosureCreation); |
| 2045 |
| 2046 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 2047 virtual void VisitChildren(Visitor* visitor); |
| 2048 |
| 2049 CanonicalName* top_level_function() { return top_level_function_reference_; } |
| 2050 Expression* context_vector() { return context_vector_; } |
| 2051 FunctionType* function_type() { return function_type_; } |
| 2052 |
| 2053 private: |
| 2054 ClosureCreation() {} |
| 2055 |
| 2056 Ref<CanonicalName> top_level_function_reference_; // Procedure. |
| 2057 Child<Expression> context_vector_; |
| 2058 Child<FunctionType> function_type_; |
| 2059 |
| 2060 DISALLOW_COPY_AND_ASSIGN(ClosureCreation); |
| 2061 }; |
| 2062 |
| 2063 |
| 1938 class Statement : public TreeNode { | 2064 class Statement : public TreeNode { |
| 1939 public: | 2065 public: |
| 1940 static Statement* ReadFrom(Reader* reader); | 2066 static Statement* ReadFrom(Reader* reader); |
| 1941 | 2067 |
| 1942 virtual ~Statement(); | 2068 virtual ~Statement(); |
| 1943 | 2069 |
| 1944 DEFINE_CASTING_OPERATIONS(Statement); | 2070 DEFINE_CASTING_OPERATIONS(Statement); |
| 1945 | 2071 |
| 1946 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 2072 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
| 1947 virtual void AcceptStatementVisitor(StatementVisitor* visitor) = 0; | 2073 virtual void AcceptStatementVisitor(StatementVisitor* visitor) = 0; |
| (...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2703 | 2829 |
| 2704 private: | 2830 private: |
| 2705 TypeParameterType() {} | 2831 TypeParameterType() {} |
| 2706 | 2832 |
| 2707 Ref<TypeParameter> parameter_; | 2833 Ref<TypeParameter> parameter_; |
| 2708 | 2834 |
| 2709 DISALLOW_COPY_AND_ASSIGN(TypeParameterType); | 2835 DISALLOW_COPY_AND_ASSIGN(TypeParameterType); |
| 2710 }; | 2836 }; |
| 2711 | 2837 |
| 2712 | 2838 |
| 2839 class VectorType : public DartType { |
| 2840 public: |
| 2841 static VectorType* ReadFrom(Reader* reader); |
| 2842 |
| 2843 virtual ~VectorType(); |
| 2844 |
| 2845 DEFINE_CASTING_OPERATIONS(VectorType); |
| 2846 |
| 2847 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); |
| 2848 virtual void VisitChildren(Visitor* visitor); |
| 2849 |
| 2850 private: |
| 2851 VectorType() {} |
| 2852 |
| 2853 DISALLOW_COPY_AND_ASSIGN(VectorType); |
| 2854 }; |
| 2855 |
| 2856 |
| 2713 class TypeParameter : public TreeNode { | 2857 class TypeParameter : public TreeNode { |
| 2714 public: | 2858 public: |
| 2715 TypeParameter* ReadFrom(Reader* reader); | 2859 TypeParameter* ReadFrom(Reader* reader); |
| 2716 | 2860 |
| 2717 virtual ~TypeParameter(); | 2861 virtual ~TypeParameter(); |
| 2718 | 2862 |
| 2719 DEFINE_CASTING_OPERATIONS(TypeParameter); | 2863 DEFINE_CASTING_OPERATIONS(TypeParameter); |
| 2720 | 2864 |
| 2721 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 2865 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
| 2722 virtual void VisitChildren(Visitor* visitor); | 2866 virtual void VisitChildren(Visitor* visitor); |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2876 virtual void VisitDoubleLiteral(DoubleLiteral* node) { | 3020 virtual void VisitDoubleLiteral(DoubleLiteral* node) { |
| 2877 VisitDefaultBasicLiteral(node); | 3021 VisitDefaultBasicLiteral(node); |
| 2878 } | 3022 } |
| 2879 virtual void VisitBoolLiteral(BoolLiteral* node) { | 3023 virtual void VisitBoolLiteral(BoolLiteral* node) { |
| 2880 VisitDefaultBasicLiteral(node); | 3024 VisitDefaultBasicLiteral(node); |
| 2881 } | 3025 } |
| 2882 virtual void VisitNullLiteral(NullLiteral* node) { | 3026 virtual void VisitNullLiteral(NullLiteral* node) { |
| 2883 VisitDefaultBasicLiteral(node); | 3027 VisitDefaultBasicLiteral(node); |
| 2884 } | 3028 } |
| 2885 virtual void VisitLet(Let* node) { VisitDefaultExpression(node); } | 3029 virtual void VisitLet(Let* node) { VisitDefaultExpression(node); } |
| 3030 virtual void VisitVectorCreation(VectorCreation* node) { |
| 3031 VisitDefaultExpression(node); |
| 3032 } |
| 3033 virtual void VisitVectorGet(VectorGet* node) { VisitDefaultExpression(node); } |
| 3034 virtual void VisitVectorSet(VectorSet* node) { VisitDefaultExpression(node); } |
| 3035 virtual void VisitVectorCopy(VectorCopy* node) { |
| 3036 VisitDefaultExpression(node); |
| 3037 } |
| 3038 virtual void VisitClosureCreation(ClosureCreation* node) { |
| 3039 VisitDefaultExpression(node); |
| 3040 } |
| 2886 }; | 3041 }; |
| 2887 | 3042 |
| 2888 | 3043 |
| 2889 class StatementVisitor { | 3044 class StatementVisitor { |
| 2890 public: | 3045 public: |
| 2891 virtual ~StatementVisitor() {} | 3046 virtual ~StatementVisitor() {} |
| 2892 | 3047 |
| 2893 virtual void VisitDefaultStatement(Statement* node) = 0; | 3048 virtual void VisitDefaultStatement(Statement* node) = 0; |
| 2894 virtual void VisitInvalidStatement(InvalidStatement* node) { | 3049 virtual void VisitInvalidStatement(InvalidStatement* node) { |
| 2895 VisitDefaultStatement(node); | 3050 VisitDefaultStatement(node); |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3008 virtual void VisitVoidType(VoidType* node) { VisitDefaultDartType(node); } | 3163 virtual void VisitVoidType(VoidType* node) { VisitDefaultDartType(node); } |
| 3009 virtual void VisitInterfaceType(InterfaceType* node) { | 3164 virtual void VisitInterfaceType(InterfaceType* node) { |
| 3010 VisitDefaultDartType(node); | 3165 VisitDefaultDartType(node); |
| 3011 } | 3166 } |
| 3012 virtual void VisitFunctionType(FunctionType* node) { | 3167 virtual void VisitFunctionType(FunctionType* node) { |
| 3013 VisitDefaultDartType(node); | 3168 VisitDefaultDartType(node); |
| 3014 } | 3169 } |
| 3015 virtual void VisitTypeParameterType(TypeParameterType* node) { | 3170 virtual void VisitTypeParameterType(TypeParameterType* node) { |
| 3016 VisitDefaultDartType(node); | 3171 VisitDefaultDartType(node); |
| 3017 } | 3172 } |
| 3173 virtual void VisitVectorType(VectorType* node) { VisitDefaultDartType(node); } |
| 3018 }; | 3174 }; |
| 3019 | 3175 |
| 3020 | 3176 |
| 3021 class TreeVisitor : public ExpressionVisitor, | 3177 class TreeVisitor : public ExpressionVisitor, |
| 3022 public StatementVisitor, | 3178 public StatementVisitor, |
| 3023 public MemberVisitor, | 3179 public MemberVisitor, |
| 3024 public ClassVisitor, | 3180 public ClassVisitor, |
| 3025 public InitializerVisitor { | 3181 public InitializerVisitor { |
| 3026 public: | 3182 public: |
| 3027 virtual ~TreeVisitor() {} | 3183 virtual ~TreeVisitor() {} |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3153 | 3309 |
| 3154 ParsedFunction* ParseStaticFieldInitializer(Zone* zone, | 3310 ParsedFunction* ParseStaticFieldInitializer(Zone* zone, |
| 3155 const dart::Field& field); | 3311 const dart::Field& field); |
| 3156 | 3312 |
| 3157 } // namespace kernel | 3313 } // namespace kernel |
| 3158 | 3314 |
| 3159 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, | 3315 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, |
| 3160 intptr_t buffer_length); | 3316 intptr_t buffer_length); |
| 3161 | 3317 |
| 3162 | 3318 |
| 3163 | |
| 3164 } // namespace dart | 3319 } // namespace dart |
| 3165 | 3320 |
| 3166 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 3321 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| 3167 #endif // RUNTIME_VM_KERNEL_H_ | 3322 #endif // RUNTIME_VM_KERNEL_H_ |
| OLD | NEW |