Index: runtime/vm/kernel.h |
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h |
index f8568ee5b44eabc076deee6b90ba409ee9a848c7..db31ad73d6511c582f06579146eb2bb119e47113 100644 |
--- a/runtime/vm/kernel.h |
+++ b/runtime/vm/kernel.h |
@@ -21,7 +21,8 @@ |
M(VoidType) \ |
M(InterfaceType) \ |
M(FunctionType) \ |
- M(TypeParameterType) |
+ M(TypeParameterType) \ |
+ M(VectorType) |
#define KERNEL_TREE_NODES_DO(M) \ |
M(Library) \ |
@@ -79,6 +80,11 @@ |
M(AwaitExpression) \ |
M(FunctionExpression) \ |
M(Let) \ |
+ M(VectorCreation) \ |
+ M(VectorGet) \ |
+ M(VectorSet) \ |
+ M(VectorCopy) \ |
+ M(ClosureCreation) \ |
M(Statement) \ |
M(InvalidStatement) \ |
M(ExpressionStatement) \ |
@@ -1935,6 +1941,126 @@ class Let : public Expression { |
}; |
+class VectorCreation : public Expression { |
+ public: |
+ static VectorCreation* ReadFrom(Reader* reader); |
+ |
+ virtual ~VectorCreation(); |
+ |
+ DEFINE_CASTING_OPERATIONS(VectorCreation); |
+ |
+ virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
+ virtual void VisitChildren(Visitor* visitor); |
+ |
+ intptr_t value() { return value_; } |
+ |
+ private: |
+ VectorCreation() {} |
+ |
+ intptr_t value_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(VectorCreation); |
+}; |
+ |
+ |
+class VectorGet : public Expression { |
+ public: |
+ static VectorGet* ReadFrom(Reader* reader); |
+ |
+ virtual ~VectorGet(); |
+ |
+ DEFINE_CASTING_OPERATIONS(VectorGet); |
+ |
+ virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
+ virtual void VisitChildren(Visitor* visitor); |
+ |
+ Expression* vector_expression() { return vector_expression_; } |
+ intptr_t index() { return index_; } |
+ |
+ private: |
+ VectorGet() {} |
+ |
+ Child<Expression> vector_expression_; |
+ intptr_t index_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(VectorGet); |
+}; |
+ |
+ |
+class VectorSet : public Expression { |
+ public: |
+ static VectorSet* ReadFrom(Reader* reader); |
+ |
+ virtual ~VectorSet(); |
+ |
+ DEFINE_CASTING_OPERATIONS(VectorSet); |
+ |
+ virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
+ virtual void VisitChildren(Visitor* visitor); |
+ |
+ Expression* vector_expression() { return vector_expression_; } |
+ intptr_t index() { return index_; } |
+ Expression* value() { return value_; } |
+ |
+ private: |
+ VectorSet() {} |
+ |
+ Child<Expression> vector_expression_; |
+ intptr_t index_; |
+ Child<Expression> value_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(VectorSet); |
+}; |
+ |
+ |
+class VectorCopy : public Expression { |
+ public: |
+ static VectorCopy* ReadFrom(Reader* reader); |
+ |
+ virtual ~VectorCopy(); |
+ |
+ DEFINE_CASTING_OPERATIONS(VectorCopy); |
+ |
+ virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
+ virtual void VisitChildren(Visitor* visitor); |
+ |
+ Expression* vector_expression() { return vector_expression_; } |
+ |
+ private: |
+ VectorCopy() {} |
+ |
+ Child<Expression> vector_expression_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(VectorCopy); |
+}; |
+ |
+ |
+class ClosureCreation : public Expression { |
+ public: |
+ static ClosureCreation* ReadFrom(Reader* reader); |
+ |
+ virtual ~ClosureCreation(); |
+ |
+ DEFINE_CASTING_OPERATIONS(ClosureCreation); |
+ |
+ virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
+ virtual void VisitChildren(Visitor* visitor); |
+ |
+ CanonicalName* top_level_function() { return top_level_function_reference_; } |
+ Expression* context_vector() { return context_vector_; } |
+ FunctionType* function_type() { return function_type_; } |
+ |
+ private: |
+ ClosureCreation() {} |
+ |
+ Ref<CanonicalName> top_level_function_reference_; // Procedure. |
+ Child<Expression> context_vector_; |
+ Child<FunctionType> function_type_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ClosureCreation); |
+}; |
+ |
+ |
class Statement : public TreeNode { |
public: |
static Statement* ReadFrom(Reader* reader); |
@@ -2710,6 +2836,24 @@ class TypeParameterType : public DartType { |
}; |
+class VectorType : public DartType { |
+ public: |
+ static VectorType* ReadFrom(Reader* reader); |
+ |
+ virtual ~VectorType(); |
+ |
+ DEFINE_CASTING_OPERATIONS(VectorType); |
+ |
+ virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); |
+ virtual void VisitChildren(Visitor* visitor); |
+ |
+ private: |
+ VectorType() {} |
+ |
+ DISALLOW_COPY_AND_ASSIGN(VectorType); |
+}; |
+ |
+ |
class TypeParameter : public TreeNode { |
public: |
TypeParameter* ReadFrom(Reader* reader); |
@@ -2883,6 +3027,17 @@ class ExpressionVisitor { |
VisitDefaultBasicLiteral(node); |
} |
virtual void VisitLet(Let* node) { VisitDefaultExpression(node); } |
+ virtual void VisitVectorCreation(VectorCreation* node) { |
+ VisitDefaultExpression(node); |
+ } |
+ virtual void VisitVectorGet(VectorGet* node) { VisitDefaultExpression(node); } |
+ virtual void VisitVectorSet(VectorSet* node) { VisitDefaultExpression(node); } |
+ virtual void VisitVectorCopy(VectorCopy* node) { |
+ VisitDefaultExpression(node); |
+ } |
+ virtual void VisitClosureCreation(ClosureCreation* node) { |
+ VisitDefaultExpression(node); |
+ } |
}; |
@@ -3015,6 +3170,7 @@ class DartTypeVisitor { |
virtual void VisitTypeParameterType(TypeParameterType* node) { |
VisitDefaultDartType(node); |
} |
+ virtual void VisitVectorType(VectorType* node) { VisitDefaultDartType(node); } |
}; |
@@ -3160,7 +3316,6 @@ kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, |
intptr_t buffer_length); |
- |
} // namespace dart |
#endif // !defined(DART_PRECOMPILED_RUNTIME) |