Index: runtime/vm/kernel.h |
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h |
index ae3c5553b0a9fca602e1f682d7a3f2618a43a304..6084a2ded96ab614faea744bfb1b964d607bb456 100644 |
--- a/runtime/vm/kernel.h |
+++ b/runtime/vm/kernel.h |
@@ -13,113 +13,6 @@ |
#include "vm/token_position.h" |
-#define KERNEL_NODES_DO(M) \ |
- M(Name) \ |
- M(DartType) \ |
- M(InvalidType) \ |
- M(DynamicType) \ |
- M(VoidType) \ |
- M(BottomType) \ |
- M(InterfaceType) \ |
- M(FunctionType) \ |
- M(TypeParameterType) \ |
- M(VectorType) \ |
- M(TypedefType) |
- |
-#define KERNEL_TREE_NODES_DO(M) \ |
- M(Library) \ |
- M(Typedef) \ |
- M(Class) \ |
- M(NormalClass) \ |
- M(MixinClass) \ |
- M(Member) \ |
- M(Field) \ |
- M(Constructor) \ |
- M(Procedure) \ |
- M(Initializer) \ |
- M(InvalidInitializer) \ |
- M(FieldInitializer) \ |
- M(SuperInitializer) \ |
- M(RedirectingInitializer) \ |
- M(LocalInitializer) \ |
- M(FunctionNode) \ |
- M(Expression) \ |
- M(InvalidExpression) \ |
- M(VariableGet) \ |
- M(VariableSet) \ |
- M(PropertyGet) \ |
- M(PropertySet) \ |
- M(DirectPropertyGet) \ |
- M(DirectPropertySet) \ |
- M(StaticGet) \ |
- M(StaticSet) \ |
- M(Arguments) \ |
- M(NamedExpression) \ |
- M(MethodInvocation) \ |
- M(DirectMethodInvocation) \ |
- M(StaticInvocation) \ |
- M(ConstructorInvocation) \ |
- M(Not) \ |
- M(LogicalExpression) \ |
- M(ConditionalExpression) \ |
- M(StringConcatenation) \ |
- M(IsExpression) \ |
- M(AsExpression) \ |
- M(BasicLiteral) \ |
- M(StringLiteral) \ |
- M(BigintLiteral) \ |
- M(IntLiteral) \ |
- M(DoubleLiteral) \ |
- M(BoolLiteral) \ |
- M(NullLiteral) \ |
- M(SymbolLiteral) \ |
- M(TypeLiteral) \ |
- M(ThisExpression) \ |
- M(Rethrow) \ |
- M(Throw) \ |
- M(ListLiteral) \ |
- M(MapLiteral) \ |
- M(MapEntry) \ |
- M(AwaitExpression) \ |
- M(FunctionExpression) \ |
- M(Let) \ |
- M(VectorCreation) \ |
- M(VectorGet) \ |
- M(VectorSet) \ |
- M(VectorCopy) \ |
- M(ClosureCreation) \ |
- M(Statement) \ |
- M(InvalidStatement) \ |
- M(ExpressionStatement) \ |
- M(Block) \ |
- M(EmptyStatement) \ |
- M(AssertStatement) \ |
- M(LabeledStatement) \ |
- M(BreakStatement) \ |
- M(WhileStatement) \ |
- M(DoStatement) \ |
- M(ForStatement) \ |
- M(ForInStatement) \ |
- M(SwitchStatement) \ |
- M(SwitchCase) \ |
- M(ContinueSwitchStatement) \ |
- M(IfStatement) \ |
- M(ReturnStatement) \ |
- M(TryCatch) \ |
- M(Catch) \ |
- M(TryFinally) \ |
- M(YieldStatement) \ |
- M(VariableDeclaration) \ |
- M(FunctionDeclaration) \ |
- M(TypeParameter) \ |
- M(Program) |
- |
-#define KERNEL_ALL_NODES_DO(M) \ |
- M(Node) \ |
- KERNEL_NODES_DO(M) \ |
- M(TreeNode) \ |
- KERNEL_TREE_NODES_DO(M) |
- |
namespace dart { |
class Field; |
@@ -130,199 +23,6 @@ namespace kernel { |
class Reader; |
-class TreeNode; |
-class TypeParameter; |
- |
-// Boxes a value of type `T*` and `delete`s it on destruction. |
-template <typename T> |
-class Child { |
- public: |
- Child() : pointer_(NULL) {} |
- explicit Child(T* value) : pointer_(value) {} |
- |
- ~Child() { delete pointer_; } |
- |
- // Support `Child<T> box = T* obj`. |
- T*& operator=(T* value) { |
- ASSERT(pointer_ == NULL); |
- return pointer_ = value; |
- } |
- |
- // Implicitly convert `Child<T>` to `T*`. |
- operator T*&() { return pointer_; } |
- |
- T* operator->() { return pointer_; } |
- |
- private: |
- T* pointer_; |
-}; |
- |
-// Boxes a value of type `T*` (only used to mark a member as a weak reference). |
-template <typename T> |
-class Ref { |
- public: |
- Ref() : pointer_(NULL) {} |
- explicit Ref(T* value) : pointer_(value) {} |
- |
- // Support `Ref<T> box = T* obj`. |
- T*& operator=(T* value) { |
- ASSERT(pointer_ == NULL); |
- return pointer_ = value; |
- } |
- |
- // Implicitly convert `Ref<T>` to `T*`. |
- operator T*&() { return pointer_; } |
- |
- T* operator->() { return pointer_; } |
- |
- private: |
- T* pointer_; |
-}; |
- |
- |
-// A list of pointers that are each deleted when the list is destroyed. |
-template <typename T> |
-class List { |
- public: |
- List() : array_(NULL), length_(0) {} |
- ~List(); |
- |
- template <typename IT> |
- void ReadFrom(Reader* reader); |
- |
- template <typename IT> |
- void ReadFrom(Reader* reader, TreeNode* parent); |
- |
- template <typename IT> |
- void ReadFromStatic(Reader* reader); |
- |
- // Extends the array to at least be able to hold [length] elements. |
- // |
- // Free places will be filled with `NULL` values. |
- void EnsureInitialized(int length); |
- |
- // Returns element at [index]. |
- // |
- // If the array is not big enough, it will be grown via `EnsureInitialized`. |
- // If the element doesn't exist, it will be created via `new IT()`. |
- template <typename IT> |
- IT* GetOrCreate(int index); |
- |
- template <typename IT, typename PT> |
- IT* GetOrCreate(int index, PT* parent); |
- |
- // Returns element at [index]. |
- T*& operator[](int index) { |
- ASSERT(index < length_); |
- return array_[index]; |
- } |
- |
- int length() { return length_; } |
- |
- T** raw_array() { return array_; } |
- |
- bool CanStream() { |
- for (intptr_t i = 0; i < length_; ++i) { |
- if (!array_[i]->can_stream()) return false; |
- } |
- return true; |
- } |
- |
- private: |
- T** array_; |
- int length_; |
- |
- DISALLOW_COPY_AND_ASSIGN(List); |
-}; |
- |
- |
-// A list that cannot be resized and which, unlike List<T>, does not enforce |
-// its members to be pointers and does not `delete` its members on destruction. |
-template <typename T> |
-class RawList { |
- public: |
- RawList() : pointer_(NULL) {} |
- |
- ~RawList() { |
- if (pointer_ != NULL) { |
- delete[] pointer_; |
- } |
- } |
- |
- void Initialize(int length) { |
- ASSERT(pointer_ == NULL); |
- pointer_ = new T[length]; |
- length_ = length; |
- } |
- |
- T& operator[](int index) { return pointer_[index]; } |
- |
- int length() { return length_; } |
- |
- private: |
- int length_; |
- T* pointer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RawList); |
-}; |
- |
- |
-class TypeParameterList : public List<TypeParameter> { |
- public: |
- void ReadFrom(Reader* reader); |
- TypeParameterList() : first_offset(-1) {} |
- intptr_t first_offset; |
-}; |
- |
- |
-class Source { |
- public: |
- ~Source(); |
- |
- private: |
- uint8_t* uri_; // UTF-8 encoded. |
- intptr_t uri_size_; // In bytes. |
- uint8_t* source_code_; // UTF-8 encoded. |
- intptr_t source_code_size_; // In bytes. |
- intptr_t* line_starts_; |
- intptr_t line_count_; |
- |
- friend class SourceTable; |
-}; |
- |
- |
-class SourceTable { |
- public: |
- ~SourceTable(); |
- |
- void ReadFrom(Reader* reader); |
- |
- intptr_t size() { return size_; } |
- |
- uint8_t* UriFor(intptr_t i) { return sources_[i].uri_; } |
- intptr_t UriSizeFor(intptr_t i) { return sources_[i].uri_size_; } |
- |
- uint8_t* SourceCodeFor(intptr_t i) { return sources_[i].source_code_; } |
- intptr_t SourceCodeSizeFor(intptr_t i) { |
- return sources_[i].source_code_size_; |
- } |
- |
- intptr_t* LineStartsFor(intptr_t i) { return sources_[i].line_starts_; } |
- intptr_t LineCountFor(intptr_t i) { return sources_[i].line_count_; } |
- |
- private: |
- SourceTable() : size_(0), sources_(NULL) {} |
- |
- friend class Program; |
- |
- // The number of entries in the table. |
- intptr_t size_; |
- |
- // An array of sources. |
- Source* sources_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SourceTable); |
-}; |
class StringIndex { |
@@ -349,402 +49,26 @@ class NameIndex { |
}; |
-// Forward declare all classes. |
-#define DO(name) class name; |
-KERNEL_ALL_NODES_DO(DO) |
-#undef DO |
- |
- |
-#define DEFINE_CASTING_OPERATIONS(klass) \ |
- virtual bool Is##klass() { return true; } \ |
- \ |
- static klass* Cast(Node* node) { \ |
- ASSERT(node == NULL || node->Is##klass()); \ |
- return static_cast<klass*>(node); \ |
- } \ |
- \ |
- virtual Node::NodeType Type() { return Node::kType##klass; } |
- |
-#define DEFINE_IS_OPERATION(klass) \ |
- virtual bool Is##klass() { return false; } |
- |
-#define DEFINE_ALL_IS_OPERATIONS() \ |
- KERNEL_NODES_DO(DEFINE_IS_OPERATION) \ |
- DEFINE_IS_OPERATION(TreeNode) \ |
- KERNEL_TREE_NODES_DO(DEFINE_IS_OPERATION) |
- |
-class Typedef; |
-class Class; |
-class Constructor; |
-class Field; |
-class Library; |
-class LibraryDependency; |
-class Combinator; |
-class LinkedNode; |
-class Member; |
-class Procedure; |
- |
-class Node { |
- public: |
- virtual ~Node(); |
- |
- enum NodeType { |
-#define DO(name) kType##name, |
- KERNEL_ALL_NODES_DO(DO) |
-#undef DO |
- |
- kNumTypes |
- }; |
- |
- DEFINE_ALL_IS_OPERATIONS(); |
- DEFINE_CASTING_OPERATIONS(Node); |
- |
- protected: |
- Node() {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(Node); |
-}; |
- |
- |
-class TreeNode : public Node { |
- public: |
- virtual ~TreeNode(); |
- |
- DEFINE_CASTING_OPERATIONS(TreeNode); |
- |
- intptr_t kernel_offset() const { |
- ASSERT(kernel_offset_ > 0); |
- return kernel_offset_; |
- } |
- |
- protected: |
- TreeNode() : kernel_offset_(-1) {} |
- |
- // Offset for this node in the kernel-binary. If this node has a tag the |
- // offset includes the tag. Can be -1 to indicate "unknown" or invalid offset. |
- intptr_t kernel_offset_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(TreeNode); |
-}; |
- |
- |
-class LinkedNode : public TreeNode { |
- public: |
- virtual ~LinkedNode(); |
- |
- NameIndex canonical_name() { return canonical_name_; } |
- |
- protected: |
- LinkedNode() {} |
- |
- NameIndex canonical_name_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(LinkedNode); |
-}; |
- |
- |
-class Library : public LinkedNode { |
- public: |
- Library* ReadFrom(Reader* reader); |
- |
- virtual ~Library(); |
- |
- DEFINE_CASTING_OPERATIONS(Library); |
- |
- StringIndex import_uri() { return import_uri_index_; } |
- intptr_t source_uri_index() { return source_uri_index_; } |
- StringIndex name() { return name_index_; } |
- List<Expression>& annotations() { return annotations_; } |
- List<LibraryDependency>& dependencies() { return dependency_; } |
- List<Typedef>& typedefs() { return typedefs_; } |
- List<Class>& classes() { return classes_; } |
- List<Field>& fields() { return fields_; } |
- List<Procedure>& procedures() { return procedures_; } |
- |
- const uint8_t* kernel_data() { return kernel_data_; } |
- intptr_t kernel_data_size() { return kernel_data_size_; } |
- |
- private: |
- Library() : kernel_data_(NULL), kernel_data_size_(-1) {} |
- |
- template <typename T> |
- friend class List; |
- |
- StringIndex name_index_; |
- StringIndex import_uri_index_; |
- intptr_t source_uri_index_; |
- List<Expression> annotations_; |
- List<LibraryDependency> dependency_; |
- List<Typedef> typedefs_; |
- List<Class> classes_; |
- List<Field> fields_; |
- List<Procedure> procedures_; |
- const uint8_t* kernel_data_; |
- intptr_t kernel_data_size_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Library); |
-}; |
- |
- |
-class LibraryDependency { |
- public: |
- enum Flags { |
- kFlagExport = 1 << 0, |
- kFlagDeferred = 1 << 1, |
- }; |
- |
- static LibraryDependency* ReadFrom(Reader* reader); |
- |
- virtual ~LibraryDependency(); |
- |
- bool is_export() { return (flags_ & kFlagExport) != 0; } |
- bool is_import() { return (flags_ & kFlagExport) == 0; } |
- bool is_deferred() { return (flags_ & kFlagDeferred) != 0; } |
- List<Expression>& annotations() { return annotations_; } |
- NameIndex target() { return target_reference_; } |
- StringIndex name() { return name_index_; } |
- |
- private: |
- LibraryDependency() {} |
- |
- word flags_; |
- List<Expression> annotations_; |
- NameIndex target_reference_; |
- StringIndex name_index_; |
- List<Combinator> combinators_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LibraryDependency); |
-}; |
- |
- |
-class Combinator { |
- public: |
- static Combinator* ReadFrom(Reader* reader); |
- |
- virtual ~Combinator(); |
- |
- bool is_show() { return is_show_; } |
- RawList<intptr_t>& names() { return name_indices_; } |
- |
- private: |
- Combinator() {} |
- |
- bool is_show_; |
- RawList<intptr_t> name_indices_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Combinator); |
-}; |
- |
- |
-class Typedef : public LinkedNode { |
- public: |
- Typedef* ReadFrom(Reader* reader); |
- |
- virtual ~Typedef(); |
- |
- DEFINE_CASTING_OPERATIONS(Typedef); |
- |
- Library* parent() { return parent_; } |
- StringIndex name() { return name_index_; } |
- intptr_t source_uri_index() { return source_uri_index_; } |
- TokenPosition position() { return position_; } |
- TypeParameterList& type_parameters() { return type_parameters_; } |
- DartType* type() { return type_; } |
- |
- protected: |
- Typedef() : position_(TokenPosition::kNoSource) {} |
- |
- private: |
- template <typename T> |
- friend class List; |
- |
- StringIndex name_index_; |
- Ref<Library> parent_; |
- intptr_t source_uri_index_; |
- TokenPosition position_; |
- TypeParameterList type_parameters_; |
- Child<DartType> type_; |
-}; |
- |
- |
-class Class : public LinkedNode { |
- public: |
- Class* ReadFrom(Reader* reader); |
- |
- virtual ~Class(); |
- |
- DEFINE_CASTING_OPERATIONS(Class); |
- |
- Library* parent() { return parent_; } |
- StringIndex name() { return name_index_; } |
- intptr_t source_uri_index() { return source_uri_index_; } |
- bool is_abstract() { return is_abstract_; } |
- List<Expression>& annotations() { return annotations_; } |
- TokenPosition position() { return position_; } |
- |
- virtual List<TypeParameter>& type_parameters() = 0; |
- virtual List<InterfaceType>& implemented_classes() = 0; |
- virtual List<Field>& fields() = 0; |
- virtual List<Constructor>& constructors() = 0; |
- virtual List<Procedure>& procedures() = 0; |
- |
- protected: |
- Class() : is_abstract_(false), position_(TokenPosition::kNoSource) {} |
- |
- private: |
- template <typename T> |
- friend class List; |
- |
- StringIndex name_index_; |
- Ref<Library> parent_; |
- intptr_t source_uri_index_; |
- bool is_abstract_; |
- List<Expression> annotations_; |
- TokenPosition position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Class); |
-}; |
- |
- |
-class NormalClass : public Class { |
- public: |
- NormalClass* ReadFrom(Reader* reader); |
- |
- virtual ~NormalClass(); |
- |
- DEFINE_CASTING_OPERATIONS(NormalClass); |
- |
- virtual TypeParameterList& type_parameters() { return type_parameters_; } |
- InterfaceType* super_class() { return super_class_; } |
- virtual List<InterfaceType>& implemented_classes() { |
- return implemented_classes_; |
- } |
- virtual List<Constructor>& constructors() { return constructors_; } |
- virtual List<Procedure>& procedures() { return procedures_; } |
- virtual List<Field>& fields() { return fields_; } |
- |
- private: |
- NormalClass() {} |
- |
- template <typename T> |
- friend class List; |
- |
- TypeParameterList type_parameters_; |
- Child<InterfaceType> super_class_; |
- List<InterfaceType> implemented_classes_; |
- List<Constructor> constructors_; |
- List<Procedure> procedures_; |
- List<Field> fields_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NormalClass); |
-}; |
- |
- |
-class Member : public LinkedNode { |
- public: |
- virtual ~Member(); |
- |
- DEFINE_CASTING_OPERATIONS(Member); |
- |
- TreeNode* parent() { return parent_; } |
- Name* name() { return name_; } |
- List<Expression>& annotations() { return annotations_; } |
- TokenPosition position() { return position_; } |
- TokenPosition end_position() { return end_position_; } |
- |
- protected: |
- Member() |
- : position_(TokenPosition::kNoSource), |
- end_position_(TokenPosition::kNoSource) {} |
- |
- template <typename T> |
- friend class List; |
- |
- Ref<TreeNode> parent_; |
- Child<Name> name_; |
- List<Expression> annotations_; |
- TokenPosition position_; |
- TokenPosition end_position_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(Member); |
-}; |
- |
- |
-class Field : public Member { |
+class Field { |
public: |
enum Flags { |
kFlagFinal = 1 << 0, |
kFlagConst = 1 << 1, |
kFlagStatic = 1 << 2, |
}; |
- |
- Field* ReadFrom(Reader* reader); |
- |
- virtual ~Field(); |
- |
- DEFINE_CASTING_OPERATIONS(Field); |
- |
- bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; } |
- bool IsFinal() { return (flags_ & kFlagFinal) == kFlagFinal; } |
- bool IsStatic() { return (flags_ & kFlagStatic) == kFlagStatic; } |
- intptr_t source_uri_index() { return source_uri_index_; } |
- |
- DartType* type() { return type_; } |
- Expression* initializer() { return initializer_; } |
- |
- private: |
- Field() {} |
- |
- template <typename T> |
- friend class List; |
- |
- word flags_; |
- intptr_t source_uri_index_; |
- Child<DartType> type_; |
- Child<Expression> initializer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Field); |
}; |
-class Constructor : public Member { |
+class Constructor { |
public: |
enum Flags { |
kFlagConst = 1 << 0, |
kFlagExternal = 1 << 1, |
}; |
- |
- Constructor* ReadFrom(Reader* reader); |
- |
- virtual ~Constructor(); |
- |
- DEFINE_CASTING_OPERATIONS(Constructor); |
- |
- bool IsExternal() { return (flags_ & kFlagExternal) == kFlagExternal; } |
- bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; } |
- |
- FunctionNode* function() { return function_; } |
- List<Initializer>& initializers() { return initializers_; } |
- |
- private: |
- template <typename T> |
- friend class List; |
- |
- Constructor() {} |
- |
- uint8_t flags_; |
- Child<FunctionNode> function_; |
- List<Initializer> initializers_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Constructor); |
}; |
-class Procedure : public Member { |
+class Procedure { |
public: |
enum Flags { |
kFlagStatic = 1 << 0, |
@@ -763,1938 +87,59 @@ class Procedure : public Member { |
kIncompleteProcedure = 255 |
}; |
+}; |
- Procedure* ReadFrom(Reader* reader); |
- |
- virtual ~Procedure(); |
- |
- DEFINE_CASTING_OPERATIONS(Procedure); |
- |
- ProcedureKind kind() { return kind_; } |
- FunctionNode* function() { return function_; } |
- |
- bool IsStatic() { return (flags_ & kFlagStatic) == kFlagStatic; } |
- bool IsAbstract() { return (flags_ & kFlagAbstract) == kFlagAbstract; } |
- bool IsExternal() { return (flags_ & kFlagExternal) == kFlagExternal; } |
- bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; } |
- intptr_t source_uri_index() { return source_uri_index_; } |
- |
- private: |
- Procedure() : kind_(kIncompleteProcedure), flags_(0), function_(NULL) {} |
- template <typename T> |
- friend class List; |
+class FunctionNode { |
+ public: |
+ enum AsyncMarker { |
+ kSync = 0, |
+ kSyncStar = 1, |
+ kAsync = 2, |
+ kAsyncStar = 3, |
+ kSyncYielding = 4, |
+ }; |
+}; |
- ProcedureKind kind_; |
- word flags_; |
- intptr_t source_uri_index_; |
- Child<FunctionNode> function_; |
+class VariableDeclaration { |
+ public: |
+ enum Flags { |
+ kFlagFinal = 1 << 0, |
+ kFlagConst = 1 << 1, |
+ }; |
+}; |
- DISALLOW_COPY_AND_ASSIGN(Procedure); |
+class YieldStatement { |
+ public: |
+ enum { |
+ kFlagYieldStar = 1 << 0, |
+ kFlagNative = 1 << 1, |
+ }; |
}; |
-class Initializer : public TreeNode { |
+class LogicalExpression { |
public: |
- static Initializer* ReadFrom(Reader* reader); |
+ enum Operator { kAnd, kOr }; |
+}; |
- virtual ~Initializer(); |
- DEFINE_CASTING_OPERATIONS(Initializer); |
+class Program { |
+ public: |
+ static Program* ReadFrom(Reader* reader); |
- protected: |
- Initializer() {} |
+ NameIndex main_method() { return main_method_reference_; } |
+ intptr_t string_table_offset() { return string_table_offset_; } |
+ intptr_t name_table_offset() { return name_table_offset_; } |
+ const uint8_t* kernel_data() { return kernel_data_; } |
+ intptr_t kernel_data_size() { return kernel_data_size_; } |
+ intptr_t library_count() { return library_count_; } |
private: |
- DISALLOW_COPY_AND_ASSIGN(Initializer); |
-}; |
+ Program() : kernel_data_(NULL), kernel_data_size_(-1) {} |
- |
-class InvalidInitializer : public Initializer { |
- public: |
- static InvalidInitializer* ReadFromImpl(Reader* reader); |
- |
- virtual ~InvalidInitializer(); |
- |
- DEFINE_CASTING_OPERATIONS(InvalidInitializer); |
- |
- private: |
- InvalidInitializer() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(InvalidInitializer); |
-}; |
- |
- |
-class FieldInitializer : public Initializer { |
- public: |
- static FieldInitializer* ReadFromImpl(Reader* reader); |
- |
- virtual ~FieldInitializer(); |
- |
- DEFINE_CASTING_OPERATIONS(FieldInitializer); |
- |
- NameIndex field() { return field_reference_; } |
- Expression* value() { return value_; } |
- |
- private: |
- FieldInitializer() {} |
- |
- NameIndex field_reference_; // Field canonical name. |
- Child<Expression> value_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FieldInitializer); |
-}; |
- |
- |
-class SuperInitializer : public Initializer { |
- public: |
- static SuperInitializer* ReadFromImpl(Reader* reader); |
- |
- virtual ~SuperInitializer(); |
- |
- DEFINE_CASTING_OPERATIONS(SuperInitializer); |
- |
- NameIndex target() { return target_reference_; } |
- Arguments* arguments() { return arguments_; } |
- |
- private: |
- SuperInitializer() {} |
- |
- NameIndex target_reference_; // Constructor canonical name. |
- Child<Arguments> arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SuperInitializer); |
-}; |
- |
- |
-class RedirectingInitializer : public Initializer { |
- public: |
- static RedirectingInitializer* ReadFromImpl(Reader* reader); |
- |
- virtual ~RedirectingInitializer(); |
- |
- DEFINE_CASTING_OPERATIONS(RedirectingInitializer); |
- |
- NameIndex target() { return target_reference_; } |
- Arguments* arguments() { return arguments_; } |
- |
- private: |
- RedirectingInitializer() {} |
- |
- NameIndex target_reference_; // Constructor canonical name. |
- Child<Arguments> arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RedirectingInitializer); |
-}; |
- |
- |
-class LocalInitializer : public Initializer { |
- public: |
- static LocalInitializer* ReadFromImpl(Reader* reader); |
- |
- virtual ~LocalInitializer(); |
- |
- DEFINE_CASTING_OPERATIONS(LocalInitializer); |
- |
- VariableDeclaration* variable() { return variable_; } |
- |
- private: |
- LocalInitializer() {} |
- |
- Child<VariableDeclaration> variable_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LocalInitializer); |
-}; |
- |
- |
-class FunctionNode : public TreeNode { |
- public: |
- enum AsyncMarker { |
- kSync = 0, |
- kSyncStar = 1, |
- kAsync = 2, |
- kAsyncStar = 3, |
- kSyncYielding = 4, |
- }; |
- |
- static FunctionNode* ReadFrom(Reader* reader); |
- |
- virtual ~FunctionNode(); |
- |
- DEFINE_CASTING_OPERATIONS(FunctionNode); |
- |
- AsyncMarker async_marker() { return async_marker_; } |
- AsyncMarker dart_async_marker() { return dart_async_marker_; } |
- TypeParameterList& type_parameters() { return type_parameters_; } |
- int required_parameter_count() { return required_parameter_count_; } |
- List<VariableDeclaration>& positional_parameters() { |
- return positional_parameters_; |
- } |
- List<VariableDeclaration>& named_parameters() { return named_parameters_; } |
- DartType* return_type() { return return_type_; } |
- |
- Statement* body() { return body_; } |
- void ReplaceBody(Statement* body); |
- |
- TokenPosition position() { return position_; } |
- TokenPosition end_position() { return end_position_; } |
- |
- private: |
- FunctionNode() |
- : position_(TokenPosition::kNoSource), |
- end_position_(TokenPosition::kNoSource) {} |
- |
- AsyncMarker async_marker_; |
- AsyncMarker dart_async_marker_; |
- TypeParameterList type_parameters_; |
- int required_parameter_count_; |
- List<VariableDeclaration> positional_parameters_; |
- List<VariableDeclaration> named_parameters_; |
- Child<DartType> return_type_; |
- Child<Statement> body_; |
- TokenPosition position_; |
- TokenPosition end_position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FunctionNode); |
-}; |
- |
- |
-class Expression : public TreeNode { |
- public: |
- static Expression* ReadFrom(Reader* reader); |
- |
- virtual ~Expression(); |
- |
- DEFINE_CASTING_OPERATIONS(Expression); |
- |
- TokenPosition position() { return position_; } |
- void set_position(TokenPosition position) { position_ = position; } |
- |
- protected: |
- Expression() : position_(TokenPosition::kNoSource) {} |
- TokenPosition position_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(Expression); |
-}; |
- |
- |
-class InvalidExpression : public Expression { |
- public: |
- static InvalidExpression* ReadFrom(Reader* reader); |
- |
- virtual ~InvalidExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(InvalidExpression); |
- |
- private: |
- InvalidExpression() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(InvalidExpression); |
-}; |
- |
- |
-class VariableGet : public Expression { |
- public: |
- static VariableGet* ReadFrom(Reader* reader); |
- static VariableGet* ReadFrom(Reader* reader, uint8_t payload); |
- |
- virtual ~VariableGet(); |
- |
- DEFINE_CASTING_OPERATIONS(VariableGet); |
- |
- VariableDeclaration* variable() { return variable_; } |
- |
- private: |
- VariableGet() {} |
- |
- Ref<VariableDeclaration> variable_; |
- intptr_t variable_kernel_offset_; |
- |
- DISALLOW_COPY_AND_ASSIGN(VariableGet); |
-}; |
- |
- |
-class VariableSet : public Expression { |
- public: |
- static VariableSet* ReadFrom(Reader* reader); |
- static VariableSet* ReadFrom(Reader* reader, uint8_t payload); |
- |
- virtual ~VariableSet(); |
- |
- DEFINE_CASTING_OPERATIONS(VariableSet); |
- |
- VariableDeclaration* variable() { return variable_; } |
- Expression* expression() { return expression_; } |
- |
- private: |
- VariableSet() {} |
- |
- Ref<VariableDeclaration> variable_; |
- intptr_t variable_kernel_offset_; |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(VariableSet); |
-}; |
- |
- |
-class PropertyGet : public Expression { |
- public: |
- static PropertyGet* ReadFrom(Reader* reader); |
- |
- virtual ~PropertyGet(); |
- |
- DEFINE_CASTING_OPERATIONS(PropertyGet); |
- |
- Expression* receiver() { return receiver_; } |
- Name* name() { return name_; } |
- |
- private: |
- PropertyGet() {} |
- |
- NameIndex interface_target_reference_; |
- Child<Expression> receiver_; |
- Child<Name> name_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PropertyGet); |
-}; |
- |
- |
-class PropertySet : public Expression { |
- public: |
- static PropertySet* ReadFrom(Reader* reader); |
- |
- virtual ~PropertySet(); |
- |
- DEFINE_CASTING_OPERATIONS(PropertySet); |
- |
- Expression* receiver() { return receiver_; } |
- Name* name() { return name_; } |
- Expression* value() { return value_; } |
- |
- private: |
- PropertySet() {} |
- |
- NameIndex interface_target_reference_; |
- Child<Expression> receiver_; |
- Child<Name> name_; |
- Child<Expression> value_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PropertySet); |
-}; |
- |
- |
-class DirectPropertyGet : public Expression { |
- public: |
- static DirectPropertyGet* ReadFrom(Reader* reader); |
- |
- virtual ~DirectPropertyGet(); |
- |
- DEFINE_CASTING_OPERATIONS(DirectPropertyGet); |
- |
- Expression* receiver() { return receiver_; } |
- NameIndex target() { return target_reference_; } |
- |
- private: |
- DirectPropertyGet() {} |
- |
- NameIndex target_reference_; // Member canonical name. |
- Child<Expression> receiver_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DirectPropertyGet); |
-}; |
- |
- |
-class DirectPropertySet : public Expression { |
- public: |
- static DirectPropertySet* ReadFrom(Reader* reader); |
- |
- virtual ~DirectPropertySet(); |
- |
- DEFINE_CASTING_OPERATIONS(DirectPropertySet); |
- |
- NameIndex target() { return target_reference_; } |
- Expression* receiver() { return receiver_; } |
- Expression* value() { return value_; } |
- |
- private: |
- DirectPropertySet() {} |
- |
- NameIndex target_reference_; // Member canonical name. |
- Child<Expression> receiver_; |
- Child<Expression> value_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DirectPropertySet); |
-}; |
- |
- |
-class StaticGet : public Expression { |
- public: |
- static StaticGet* ReadFrom(Reader* reader); |
- |
- virtual ~StaticGet(); |
- |
- DEFINE_CASTING_OPERATIONS(StaticGet); |
- |
- NameIndex target() { return target_reference_; } |
- |
- private: |
- StaticGet() {} |
- |
- NameIndex target_reference_; // Member canonical name. |
- |
- DISALLOW_COPY_AND_ASSIGN(StaticGet); |
-}; |
- |
- |
-class StaticSet : public Expression { |
- public: |
- static StaticSet* ReadFrom(Reader* reader); |
- |
- virtual ~StaticSet(); |
- |
- DEFINE_CASTING_OPERATIONS(StaticSet); |
- |
- NameIndex target() { return target_reference_; } |
- Expression* expression() { return expression_; } |
- |
- private: |
- StaticSet() {} |
- |
- NameIndex target_reference_; // Member canonical name. |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(StaticSet); |
-}; |
- |
- |
-class Arguments : public TreeNode { |
- public: |
- static Arguments* ReadFrom(Reader* reader); |
- |
- virtual ~Arguments(); |
- |
- DEFINE_CASTING_OPERATIONS(Arguments); |
- |
- |
- // TODO(regis): Support type arguments of generic functions. |
- List<DartType>& types() { return types_; } |
- List<Expression>& positional() { return positional_; } |
- List<NamedExpression>& named() { return named_; } |
- |
- int count() { return positional_.length() + named_.length(); } |
- |
- private: |
- Arguments() {} |
- |
- List<DartType> types_; |
- List<Expression> positional_; |
- List<NamedExpression> named_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Arguments); |
-}; |
- |
- |
-class NamedExpression : public TreeNode { |
- public: |
- static NamedExpression* ReadFrom(Reader* reader); |
- |
- NamedExpression(StringIndex name_index, Expression* expr) |
- : name_index_(name_index), expression_(expr) {} |
- virtual ~NamedExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(NamedExpression); |
- |
- StringIndex name() { return name_index_; } |
- Expression* expression() { return expression_; } |
- |
- private: |
- NamedExpression() {} |
- |
- StringIndex name_index_; |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NamedExpression); |
-}; |
- |
- |
-class MethodInvocation : public Expression { |
- public: |
- static MethodInvocation* ReadFrom(Reader* reader); |
- |
- virtual ~MethodInvocation(); |
- |
- DEFINE_CASTING_OPERATIONS(MethodInvocation); |
- |
- Expression* receiver() { return receiver_; } |
- Name* name() { return name_; } |
- Arguments* arguments() { return arguments_; } |
- |
- private: |
- MethodInvocation() {} |
- |
- NameIndex interface_target_reference_; |
- Child<Expression> receiver_; |
- Child<Name> name_; |
- Child<Arguments> arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MethodInvocation); |
-}; |
- |
- |
-class DirectMethodInvocation : public Expression { |
- public: |
- static DirectMethodInvocation* ReadFrom(Reader* reader); |
- |
- virtual ~DirectMethodInvocation(); |
- |
- DEFINE_CASTING_OPERATIONS(DirectMethodInvocation); |
- |
- Expression* receiver() { return receiver_; } |
- NameIndex target() { return target_reference_; } |
- Arguments* arguments() { return arguments_; } |
- |
- private: |
- DirectMethodInvocation() {} |
- |
- NameIndex target_reference_; // Procedure canonical name. |
- Child<Expression> receiver_; |
- Child<Arguments> arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DirectMethodInvocation); |
-}; |
- |
- |
-class StaticInvocation : public Expression { |
- public: |
- static StaticInvocation* ReadFrom(Reader* reader, bool is_const); |
- ~StaticInvocation(); |
- |
- DEFINE_CASTING_OPERATIONS(StaticInvocation); |
- |
- NameIndex procedure() { return procedure_reference_; } |
- Arguments* arguments() { return arguments_; } |
- bool is_const() { return is_const_; } |
- |
- private: |
- StaticInvocation() {} |
- |
- NameIndex procedure_reference_; // Procedure canonical name. |
- bool is_const_; |
- Child<Arguments> arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(StaticInvocation); |
-}; |
- |
- |
-class ConstructorInvocation : public Expression { |
- public: |
- static ConstructorInvocation* ReadFrom(Reader* reader, bool is_const); |
- |
- virtual ~ConstructorInvocation(); |
- |
- DEFINE_CASTING_OPERATIONS(ConstructorInvocation); |
- |
- bool is_const() { return is_const_; } |
- NameIndex target() { return target_reference_; } |
- Arguments* arguments() { return arguments_; } |
- |
- private: |
- ConstructorInvocation() {} |
- |
- bool is_const_; |
- NameIndex target_reference_; // Constructor canonical name. |
- Child<Arguments> arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ConstructorInvocation); |
-}; |
- |
- |
-class Not : public Expression { |
- public: |
- static Not* ReadFrom(Reader* reader); |
- |
- virtual ~Not(); |
- |
- DEFINE_CASTING_OPERATIONS(Not); |
- |
- Expression* expression() { return expression_; } |
- |
- private: |
- Not() {} |
- |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Not); |
-}; |
- |
- |
-class LogicalExpression : public Expression { |
- public: |
- enum Operator { kAnd, kOr }; |
- |
- static LogicalExpression* ReadFrom(Reader* reader); |
- |
- virtual ~LogicalExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(LogicalExpression); |
- |
- Expression* left() { return left_; } |
- Operator op() { return operator_; } |
- Expression* right() { return right_; } |
- |
- private: |
- LogicalExpression() {} |
- |
- Child<Expression> left_; |
- Operator operator_; |
- Child<Expression> right_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LogicalExpression); |
-}; |
- |
- |
-class ConditionalExpression : public Expression { |
- public: |
- static ConditionalExpression* ReadFrom(Reader* reader); |
- |
- virtual ~ConditionalExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(ConditionalExpression); |
- |
- Expression* condition() { return condition_; } |
- Expression* then() { return then_; } |
- Expression* otherwise() { return otherwise_; } |
- |
- private: |
- ConditionalExpression() {} |
- |
- Child<Expression> condition_; |
- Child<Expression> then_; |
- Child<Expression> otherwise_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ConditionalExpression); |
-}; |
- |
- |
-class StringConcatenation : public Expression { |
- public: |
- static StringConcatenation* ReadFrom(Reader* reader); |
- |
- virtual ~StringConcatenation(); |
- |
- DEFINE_CASTING_OPERATIONS(StringConcatenation); |
- |
- List<Expression>& expressions() { return expressions_; } |
- |
- private: |
- StringConcatenation() {} |
- |
- List<Expression> expressions_; |
- |
- DISALLOW_COPY_AND_ASSIGN(StringConcatenation); |
-}; |
- |
- |
-class IsExpression : public Expression { |
- public: |
- static IsExpression* ReadFrom(Reader* reader); |
- |
- virtual ~IsExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(IsExpression); |
- |
- Expression* operand() { return operand_; } |
- DartType* type() { return type_; } |
- |
- private: |
- IsExpression() {} |
- |
- Child<Expression> operand_; |
- Child<DartType> type_; |
- |
- DISALLOW_COPY_AND_ASSIGN(IsExpression); |
-}; |
- |
- |
-class AsExpression : public Expression { |
- public: |
- static AsExpression* ReadFrom(Reader* reader); |
- |
- virtual ~AsExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(AsExpression); |
- |
- Expression* operand() { return operand_; } |
- DartType* type() { return type_; } |
- |
- private: |
- AsExpression() {} |
- |
- Child<Expression> operand_; |
- Child<DartType> type_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AsExpression); |
-}; |
- |
- |
-class BasicLiteral : public Expression { |
- public: |
- virtual ~BasicLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(BasicLiteral); |
-}; |
- |
- |
-class StringLiteral : public BasicLiteral { |
- public: |
- static StringLiteral* ReadFrom(Reader* reader); |
- |
- explicit StringLiteral(StringIndex string_index) |
- : value_index_(string_index) {} |
- virtual ~StringLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(StringLiteral); |
- |
- StringIndex value() { return value_index_; } |
- |
- protected: |
- StringLiteral() {} |
- |
- StringIndex value_index_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(StringLiteral); |
-}; |
- |
- |
-class BigintLiteral : public StringLiteral { |
- public: |
- static BigintLiteral* ReadFrom(Reader* reader); |
- |
- explicit BigintLiteral(StringIndex string_index) |
- : StringLiteral(string_index) {} |
- virtual ~BigintLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(BigintLiteral); |
- |
- private: |
- BigintLiteral() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(BigintLiteral); |
-}; |
- |
- |
-class IntLiteral : public BasicLiteral { |
- public: |
- static IntLiteral* ReadFrom(Reader* reader, bool is_negative); |
- static IntLiteral* ReadFrom(Reader* reader, uint8_t payload); |
- |
- virtual ~IntLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(IntLiteral); |
- |
- int64_t value() { return value_; } |
- |
- private: |
- IntLiteral() {} |
- |
- int64_t value_; |
- |
- DISALLOW_COPY_AND_ASSIGN(IntLiteral); |
-}; |
- |
- |
-class DoubleLiteral : public BasicLiteral { |
- public: |
- static DoubleLiteral* ReadFrom(Reader* reader); |
- |
- virtual ~DoubleLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(DoubleLiteral); |
- |
- StringIndex value() { return value_index_; } |
- |
- private: |
- DoubleLiteral() {} |
- |
- StringIndex value_index_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DoubleLiteral); |
-}; |
- |
- |
-class BoolLiteral : public BasicLiteral { |
- public: |
- static BoolLiteral* ReadFrom(Reader* reader, bool value); |
- |
- virtual ~BoolLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(BoolLiteral); |
- |
- bool value() { return value_; } |
- |
- private: |
- BoolLiteral() {} |
- |
- bool value_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BoolLiteral); |
-}; |
- |
- |
-class NullLiteral : public BasicLiteral { |
- public: |
- static NullLiteral* ReadFrom(Reader* reader); |
- |
- virtual ~NullLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(NullLiteral); |
- |
- private: |
- NullLiteral() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(NullLiteral); |
-}; |
- |
- |
-class SymbolLiteral : public Expression { |
- public: |
- static SymbolLiteral* ReadFrom(Reader* reader); |
- |
- virtual ~SymbolLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(SymbolLiteral); |
- |
- StringIndex value() { return value_index_; } |
- |
- private: |
- SymbolLiteral() {} |
- |
- StringIndex value_index_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SymbolLiteral); |
-}; |
- |
- |
-class TypeLiteral : public Expression { |
- public: |
- static TypeLiteral* ReadFrom(Reader* reader); |
- |
- virtual ~TypeLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(TypeLiteral); |
- |
- DartType* type() { return type_; } |
- |
- private: |
- TypeLiteral() {} |
- |
- Child<DartType> type_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TypeLiteral); |
-}; |
- |
- |
-class ThisExpression : public Expression { |
- public: |
- static ThisExpression* ReadFrom(Reader* reader); |
- |
- virtual ~ThisExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(ThisExpression); |
- |
- private: |
- ThisExpression() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(ThisExpression); |
-}; |
- |
- |
-class Rethrow : public Expression { |
- public: |
- static Rethrow* ReadFrom(Reader* reader); |
- |
- virtual ~Rethrow(); |
- |
- DEFINE_CASTING_OPERATIONS(Rethrow); |
- |
- private: |
- Rethrow() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(Rethrow); |
-}; |
- |
- |
-class Throw : public Expression { |
- public: |
- static Throw* ReadFrom(Reader* reader); |
- |
- virtual ~Throw(); |
- |
- DEFINE_CASTING_OPERATIONS(Throw); |
- |
- Expression* expression() { return expression_; } |
- |
- private: |
- Throw() {} |
- |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Throw); |
-}; |
- |
- |
-class ListLiteral : public Expression { |
- public: |
- static ListLiteral* ReadFrom(Reader* reader, bool is_const); |
- |
- virtual ~ListLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(ListLiteral); |
- |
- bool is_const() { return is_const_; } |
- DartType* type() { return type_; } |
- List<Expression>& expressions() { return expressions_; } |
- |
- private: |
- ListLiteral() {} |
- |
- bool is_const_; |
- Child<DartType> type_; |
- List<Expression> expressions_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ListLiteral); |
-}; |
- |
- |
-class MapLiteral : public Expression { |
- public: |
- static MapLiteral* ReadFrom(Reader* reader, bool is_const); |
- |
- virtual ~MapLiteral(); |
- |
- DEFINE_CASTING_OPERATIONS(MapLiteral); |
- |
- bool is_const() { return is_const_; } |
- DartType* key_type() { return key_type_; } |
- DartType* value_type() { return value_type_; } |
- List<MapEntry>& entries() { return entries_; } |
- |
- private: |
- MapLiteral() {} |
- |
- bool is_const_; |
- Child<DartType> key_type_; |
- Child<DartType> value_type_; |
- List<MapEntry> entries_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MapLiteral); |
-}; |
- |
- |
-class MapEntry : public TreeNode { |
- public: |
- static MapEntry* ReadFrom(Reader* reader); |
- |
- virtual ~MapEntry(); |
- |
- DEFINE_CASTING_OPERATIONS(MapEntry); |
- |
- Expression* key() { return key_; } |
- Expression* value() { return value_; } |
- |
- private: |
- MapEntry() {} |
- |
- template <typename T> |
- friend class List; |
- |
- Child<Expression> key_; |
- Child<Expression> value_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MapEntry); |
-}; |
- |
- |
-class AwaitExpression : public Expression { |
- public: |
- static AwaitExpression* ReadFrom(Reader* reader); |
- |
- virtual ~AwaitExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(AwaitExpression); |
- |
- Expression* operand() { return operand_; } |
- |
- private: |
- AwaitExpression() {} |
- |
- Child<Expression> operand_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AwaitExpression); |
-}; |
- |
- |
-class FunctionExpression : public Expression { |
- public: |
- static FunctionExpression* ReadFrom(Reader* reader); |
- |
- virtual ~FunctionExpression(); |
- |
- DEFINE_CASTING_OPERATIONS(FunctionExpression); |
- |
- FunctionNode* function() { return function_; } |
- |
- private: |
- FunctionExpression() {} |
- |
- Child<FunctionNode> function_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FunctionExpression); |
-}; |
- |
- |
-class Let : public Expression { |
- public: |
- static Let* ReadFrom(Reader* reader); |
- |
- virtual ~Let(); |
- |
- DEFINE_CASTING_OPERATIONS(Let); |
- |
- VariableDeclaration* variable() { return variable_; } |
- Expression* body() { return body_; } |
- TokenPosition position() { return position_; } |
- TokenPosition end_position() { return end_position_; } |
- |
- private: |
- Let() |
- : position_(TokenPosition::kNoSource), |
- end_position_(TokenPosition::kNoSource) {} |
- |
- Child<VariableDeclaration> variable_; |
- Child<Expression> body_; |
- TokenPosition position_; |
- TokenPosition end_position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Let); |
-}; |
- |
- |
-class VectorCreation : public Expression { |
- public: |
- static VectorCreation* ReadFrom(Reader* reader); |
- |
- virtual ~VectorCreation(); |
- |
- DEFINE_CASTING_OPERATIONS(VectorCreation); |
- |
- 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); |
- |
- 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); |
- |
- 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); |
- |
- 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); |
- |
- NameIndex top_level_function() { return top_level_function_reference_; } |
- Expression* context_vector() { return context_vector_; } |
- FunctionType* function_type() { return function_type_; } |
- |
- private: |
- ClosureCreation() {} |
- |
- NameIndex top_level_function_reference_; // Procedure canonical name. |
- Child<Expression> context_vector_; |
- Child<FunctionType> function_type_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ClosureCreation); |
-}; |
- |
- |
-class Statement : public TreeNode { |
- public: |
- static Statement* ReadFrom(Reader* reader); |
- |
- virtual ~Statement(); |
- |
- DEFINE_CASTING_OPERATIONS(Statement); |
- |
- TokenPosition position() { return position_; } |
- |
- protected: |
- Statement() : position_(TokenPosition::kNoSource) {} |
- TokenPosition position_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(Statement); |
-}; |
- |
- |
-class InvalidStatement : public Statement { |
- public: |
- static InvalidStatement* ReadFrom(Reader* reader); |
- |
- virtual ~InvalidStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(InvalidStatement); |
- |
- private: |
- InvalidStatement() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(InvalidStatement); |
-}; |
- |
- |
-class ExpressionStatement : public Statement { |
- public: |
- static ExpressionStatement* ReadFrom(Reader* reader); |
- |
- explicit ExpressionStatement(Expression* exp) : expression_(exp) {} |
- virtual ~ExpressionStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(ExpressionStatement); |
- |
- Expression* expression() { return expression_; } |
- |
- private: |
- ExpressionStatement() {} |
- |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ExpressionStatement); |
-}; |
- |
- |
-class Block : public Statement { |
- public: |
- static Block* ReadFromImpl(Reader* reader); |
- |
- virtual ~Block(); |
- |
- DEFINE_CASTING_OPERATIONS(Block); |
- |
- List<Statement>& statements() { return statements_; } |
- TokenPosition end_position() { return end_position_; } |
- |
- private: |
- Block() : end_position_(TokenPosition::kNoSource) {} |
- |
- List<Statement> statements_; |
- TokenPosition end_position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Block); |
-}; |
- |
- |
-class EmptyStatement : public Statement { |
- public: |
- static EmptyStatement* ReadFrom(Reader* reader); |
- |
- virtual ~EmptyStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(EmptyStatement); |
- |
- private: |
- EmptyStatement() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(EmptyStatement); |
-}; |
- |
- |
-class AssertStatement : public Statement { |
- public: |
- static AssertStatement* ReadFrom(Reader* reader); |
- |
- virtual ~AssertStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(AssertStatement); |
- |
- Expression* condition() { return condition_; } |
- Expression* message() { return message_; } |
- |
- private: |
- AssertStatement() {} |
- |
- Child<Expression> condition_; |
- Child<Expression> message_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AssertStatement); |
-}; |
- |
- |
-class LabeledStatement : public Statement { |
- public: |
- static LabeledStatement* ReadFrom(Reader* reader); |
- |
- virtual ~LabeledStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(LabeledStatement); |
- |
- Statement* body() { return body_; } |
- |
- private: |
- LabeledStatement() {} |
- |
- Child<Statement> body_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LabeledStatement); |
-}; |
- |
- |
-class BreakStatement : public Statement { |
- public: |
- static BreakStatement* ReadFrom(Reader* reader); |
- |
- virtual ~BreakStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(BreakStatement); |
- |
- intptr_t target_index() { return target_index_; } |
- |
- private: |
- BreakStatement() {} |
- |
- intptr_t target_index_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BreakStatement); |
-}; |
- |
- |
-class WhileStatement : public Statement { |
- public: |
- static WhileStatement* ReadFrom(Reader* reader); |
- |
- virtual ~WhileStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(WhileStatement); |
- |
- Expression* condition() { return condition_; } |
- Statement* body() { return body_; } |
- |
- private: |
- WhileStatement() {} |
- |
- Child<Expression> condition_; |
- Child<Statement> body_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WhileStatement); |
-}; |
- |
- |
-class DoStatement : public Statement { |
- public: |
- static DoStatement* ReadFrom(Reader* reader); |
- |
- virtual ~DoStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(DoStatement); |
- |
- Expression* condition() { return condition_; } |
- Statement* body() { return body_; } |
- |
- private: |
- DoStatement() {} |
- |
- Child<Expression> condition_; |
- Child<Statement> body_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DoStatement); |
-}; |
- |
- |
-class ForStatement : public Statement { |
- public: |
- static ForStatement* ReadFrom(Reader* reader); |
- |
- virtual ~ForStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(ForStatement); |
- |
- List<VariableDeclaration>& variables() { return variables_; } |
- Expression* condition() { return condition_; } |
- List<Expression>& updates() { return updates_; } |
- Statement* body() { return body_; } |
- TokenPosition position() { return position_; } |
- TokenPosition end_position() { return end_position_; } |
- |
- private: |
- ForStatement() |
- : position_(TokenPosition::kNoSource), |
- end_position_(TokenPosition::kNoSource) {} |
- |
- List<VariableDeclaration> variables_; |
- Child<Expression> condition_; |
- List<Expression> updates_; |
- Child<Statement> body_; |
- TokenPosition position_; |
- TokenPosition end_position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ForStatement); |
-}; |
- |
- |
-class ForInStatement : public Statement { |
- public: |
- static ForInStatement* ReadFrom(Reader* reader, bool is_async); |
- |
- virtual ~ForInStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(ForInStatement); |
- |
- VariableDeclaration* variable() { return variable_; } |
- Expression* iterable() { return iterable_; } |
- Statement* body() { return body_; } |
- bool is_async() { return is_async_; } |
- TokenPosition position() { return position_; } |
- TokenPosition end_position() { return end_position_; } |
- |
- private: |
- ForInStatement() |
- : position_(TokenPosition::kNoSource), |
- end_position_(TokenPosition::kNoSource) {} |
- |
- Child<VariableDeclaration> variable_; |
- Child<Expression> iterable_; |
- Child<Statement> body_; |
- bool is_async_; |
- TokenPosition position_; |
- TokenPosition end_position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ForInStatement); |
-}; |
- |
- |
-class SwitchStatement : public Statement { |
- public: |
- static SwitchStatement* ReadFrom(Reader* reader); |
- |
- virtual ~SwitchStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(SwitchStatement); |
- |
- Expression* condition() { return condition_; } |
- List<SwitchCase>& cases() { return cases_; } |
- |
- private: |
- SwitchStatement() {} |
- |
- Child<Expression> condition_; |
- List<SwitchCase> cases_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SwitchStatement); |
-}; |
- |
- |
-class SwitchCase : public TreeNode { |
- public: |
- SwitchCase* ReadFrom(Reader* reader); |
- |
- virtual ~SwitchCase(); |
- |
- DEFINE_CASTING_OPERATIONS(SwitchCase); |
- |
- List<Expression>& expressions() { return expressions_; } |
- bool is_default() { return is_default_; } |
- Statement* body() { return body_; } |
- |
- private: |
- SwitchCase() {} |
- |
- template <typename T> |
- friend class List; |
- |
- List<Expression> expressions_; |
- bool is_default_; |
- Child<Statement> body_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SwitchCase); |
-}; |
- |
- |
-class ContinueSwitchStatement : public Statement { |
- public: |
- static ContinueSwitchStatement* ReadFrom(Reader* reader); |
- |
- virtual ~ContinueSwitchStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(ContinueSwitchStatement); |
- |
- intptr_t target_index() { return target_index_; } |
- |
- private: |
- ContinueSwitchStatement() {} |
- |
- intptr_t target_index_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ContinueSwitchStatement); |
-}; |
- |
- |
-class IfStatement : public Statement { |
- public: |
- static IfStatement* ReadFrom(Reader* reader); |
- |
- virtual ~IfStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(IfStatement); |
- |
- Expression* condition() { return condition_; } |
- Statement* then() { return then_; } |
- Statement* otherwise() { return otherwise_; } |
- |
- private: |
- IfStatement() {} |
- |
- Child<Expression> condition_; |
- Child<Statement> then_; |
- Child<Statement> otherwise_; |
- |
- DISALLOW_COPY_AND_ASSIGN(IfStatement); |
-}; |
- |
- |
-class ReturnStatement : public Statement { |
- public: |
- static ReturnStatement* ReadFrom(Reader* reader); |
- |
- virtual ~ReturnStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(ReturnStatement); |
- |
- Expression* expression() { return expression_; } |
- |
- private: |
- ReturnStatement() {} |
- |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ReturnStatement); |
-}; |
- |
- |
-class TryCatch : public Statement { |
- public: |
- static TryCatch* ReadFrom(Reader* reader); |
- |
- virtual ~TryCatch(); |
- |
- DEFINE_CASTING_OPERATIONS(TryCatch); |
- |
- Statement* body() { return body_; } |
- List<Catch>& catches() { return catches_; } |
- |
- private: |
- TryCatch() {} |
- |
- Child<Statement> body_; |
- List<Catch> catches_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TryCatch); |
-}; |
- |
- |
-class Catch : public TreeNode { |
- public: |
- static Catch* ReadFrom(Reader* reader); |
- |
- virtual ~Catch(); |
- |
- DEFINE_CASTING_OPERATIONS(Catch); |
- |
- DartType* guard() { return guard_; } |
- VariableDeclaration* exception() { return exception_; } |
- VariableDeclaration* stack_trace() { return stack_trace_; } |
- Statement* body() { return body_; } |
- TokenPosition position() { return position_; } |
- TokenPosition end_position() { return end_position_; } |
- |
- private: |
- Catch() |
- : position_(TokenPosition::kNoSource), |
- end_position_(TokenPosition::kNoSource) {} |
- |
- template <typename T> |
- friend class List; |
- |
- Child<DartType> guard_; |
- Child<VariableDeclaration> exception_; |
- Child<VariableDeclaration> stack_trace_; |
- Child<Statement> body_; |
- TokenPosition position_; |
- TokenPosition end_position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Catch); |
-}; |
- |
- |
-class TryFinally : public Statement { |
- public: |
- static TryFinally* ReadFrom(Reader* reader); |
- |
- virtual ~TryFinally(); |
- |
- DEFINE_CASTING_OPERATIONS(TryFinally); |
- |
- Statement* body() { return body_; } |
- Statement* finalizer() { return finalizer_; } |
- |
- private: |
- TryFinally() {} |
- |
- Child<Statement> body_; |
- Child<Statement> finalizer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TryFinally); |
-}; |
- |
- |
-class YieldStatement : public Statement { |
- public: |
- enum { |
- kFlagYieldStar = 1 << 0, |
- kFlagNative = 1 << 1, |
- }; |
- static YieldStatement* ReadFrom(Reader* reader); |
- |
- virtual ~YieldStatement(); |
- |
- DEFINE_CASTING_OPERATIONS(YieldStatement); |
- |
- bool is_yield_start() { return (flags_ & kFlagYieldStar) == kFlagYieldStar; } |
- bool is_native() { return (flags_ & kFlagNative) == kFlagNative; } |
- Expression* expression() { return expression_; } |
- |
- private: |
- YieldStatement() {} |
- |
- word flags_; |
- Child<Expression> expression_; |
- |
- DISALLOW_COPY_AND_ASSIGN(YieldStatement); |
-}; |
- |
- |
-class VariableDeclaration : public Statement { |
- public: |
- enum Flags { |
- kFlagFinal = 1 << 0, |
- kFlagConst = 1 << 1, |
- }; |
- |
- static VariableDeclaration* ReadFrom(Reader* reader); |
- static VariableDeclaration* ReadFromImpl(Reader* reader, bool read_tag); |
- |
- virtual ~VariableDeclaration(); |
- |
- DEFINE_CASTING_OPERATIONS(VariableDeclaration); |
- |
- bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; } |
- bool IsFinal() { return (flags_ & kFlagFinal) == kFlagFinal; } |
- |
- StringIndex name() { return name_index_; } |
- DartType* type() { return type_; } |
- Expression* initializer() { return initializer_; } |
- TokenPosition equals_position() { return equals_position_; } |
- TokenPosition end_position() { return end_position_; } |
- void set_end_position(TokenPosition position) { end_position_ = position; } |
- intptr_t kernel_offset_no_tag() const { return kernel_offset_no_tag_; } |
- |
- private: |
- VariableDeclaration() |
- : equals_position_(TokenPosition::kNoSourcePos), |
- end_position_(TokenPosition::kNoSource), |
- kernel_offset_no_tag_(-1) {} |
- |
- template <typename T> |
- friend class List; |
- |
- StringIndex name_index_; |
- word flags_; |
- Child<DartType> type_; |
- Child<Expression> initializer_; |
- TokenPosition equals_position_; |
- TokenPosition end_position_; |
- |
- // Offset for this node in the kernel-binary. Always without the tag. |
- // Can be -1 to indicate "unknown" or invalid offset. |
- intptr_t kernel_offset_no_tag_; |
- |
- DISALLOW_COPY_AND_ASSIGN(VariableDeclaration); |
-}; |
- |
- |
-class FunctionDeclaration : public Statement { |
- public: |
- static FunctionDeclaration* ReadFrom(Reader* reader); |
- |
- virtual ~FunctionDeclaration(); |
- |
- DEFINE_CASTING_OPERATIONS(FunctionDeclaration); |
- |
- VariableDeclaration* variable() { return variable_; } |
- FunctionNode* function() { return function_; } |
- |
- private: |
- FunctionDeclaration() {} |
- |
- Child<VariableDeclaration> variable_; |
- Child<FunctionNode> function_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FunctionDeclaration); |
-}; |
- |
- |
-class Name : public Node { |
- public: |
- static Name* ReadFrom(Reader* reader); |
- |
- virtual ~Name(); |
- |
- DEFINE_CASTING_OPERATIONS(Name); |
- |
- StringIndex string_index() { return string_index_; } |
- NameIndex library() { return library_reference_; } |
- |
- private: |
- Name(intptr_t string_index, intptr_t library_reference) |
- : string_index_(string_index), |
- library_reference_(library_reference) {} // NOLINT |
- |
- StringIndex string_index_; |
- NameIndex library_reference_; // Library canonical name. |
- |
- DISALLOW_COPY_AND_ASSIGN(Name); |
-}; |
- |
- |
-class DartType : public Node { |
- public: |
- static DartType* ReadFrom(Reader* reader); |
- |
- virtual ~DartType(); |
- |
- DEFINE_CASTING_OPERATIONS(DartType); |
- |
- protected: |
- DartType() {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(DartType); |
-}; |
- |
- |
-class InvalidType : public DartType { |
- public: |
- static InvalidType* ReadFrom(Reader* reader); |
- |
- virtual ~InvalidType(); |
- |
- DEFINE_CASTING_OPERATIONS(InvalidType); |
- |
- private: |
- InvalidType() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(InvalidType); |
-}; |
- |
- |
-class DynamicType : public DartType { |
- public: |
- static DynamicType* ReadFrom(Reader* reader); |
- |
- virtual ~DynamicType(); |
- |
- DEFINE_CASTING_OPERATIONS(DynamicType); |
- |
- private: |
- DynamicType() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(DynamicType); |
-}; |
- |
- |
-class VoidType : public DartType { |
- public: |
- static VoidType* ReadFrom(Reader* reader); |
- |
- virtual ~VoidType(); |
- |
- DEFINE_CASTING_OPERATIONS(VoidType); |
- |
- private: |
- VoidType() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(VoidType); |
-}; |
- |
- |
-class BottomType : public DartType { |
- public: |
- static BottomType* ReadFrom(Reader* reader); |
- |
- virtual ~BottomType(); |
- |
- DEFINE_CASTING_OPERATIONS(BottomType); |
- |
- private: |
- BottomType() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(BottomType); |
-}; |
- |
- |
-class InterfaceType : public DartType { |
- public: |
- static InterfaceType* ReadFrom(Reader* reader); |
- static InterfaceType* ReadFrom(Reader* reader, bool _without_type_arguments_); |
- |
- explicit InterfaceType(NameIndex class_reference) |
- : class_reference_(class_reference) {} |
- virtual ~InterfaceType(); |
- |
- DEFINE_CASTING_OPERATIONS(InterfaceType); |
- |
- NameIndex klass() { return class_reference_; } |
- List<DartType>& type_arguments() { return type_arguments_; } |
- |
- private: |
- InterfaceType() {} |
- |
- NameIndex class_reference_; // Class canonical name. |
- List<DartType> type_arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(InterfaceType); |
-}; |
- |
- |
-class TypedefType : public DartType { |
- public: |
- static TypedefType* ReadFrom(Reader* reader); |
- |
- explicit TypedefType(NameIndex class_reference) |
- : typedef_reference_(class_reference) {} |
- virtual ~TypedefType(); |
- |
- DEFINE_CASTING_OPERATIONS(TypedefType); |
- |
- NameIndex typedef_reference() { return typedef_reference_; } |
- List<DartType>& type_arguments() { return type_arguments_; } |
- |
- private: |
- TypedefType() {} |
- |
- NameIndex typedef_reference_; // Typedef canonical name. |
- List<DartType> type_arguments_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TypedefType); |
-}; |
- |
- |
-class NamedParameter { |
- public: |
- static NamedParameter* ReadFrom(Reader* reader); |
- |
- NamedParameter(StringIndex name_index, DartType* type) |
- : name_index_(name_index), type_(type) {} |
- |
- StringIndex name() { return name_index_; } |
- DartType* type() { return type_; } |
- |
- private: |
- NamedParameter() {} |
- |
- StringIndex name_index_; |
- Child<DartType> type_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NamedParameter); |
-}; |
- |
- |
-class FunctionType : public DartType { |
- public: |
- static FunctionType* ReadFrom(Reader* reader); |
- static FunctionType* ReadFrom(Reader* reader, bool _without_type_arguments_); |
- |
- virtual ~FunctionType(); |
- |
- DEFINE_CASTING_OPERATIONS(FunctionType); |
- |
- TypeParameterList& type_parameters() { return type_parameters_; } |
- int required_parameter_count() { return required_parameter_count_; } |
- List<DartType>& positional_parameters() { return positional_parameters_; } |
- List<NamedParameter>& named_parameters() { return named_parameters_; } |
- DartType* return_type() { return return_type_; } |
- |
- private: |
- FunctionType() {} |
- |
- TypeParameterList type_parameters_; |
- int required_parameter_count_; |
- List<DartType> positional_parameters_; |
- List<NamedParameter> named_parameters_; |
- Child<DartType> return_type_; |
- |
- DISALLOW_COPY_AND_ASSIGN(FunctionType); |
-}; |
- |
- |
-class TypeParameterType : public DartType { |
- public: |
- static TypeParameterType* ReadFrom(Reader* reader); |
- |
- virtual ~TypeParameterType(); |
- |
- DEFINE_CASTING_OPERATIONS(TypeParameterType); |
- |
- TypeParameter* parameter() { return parameter_; } |
- |
- private: |
- TypeParameterType() {} |
- |
- Ref<TypeParameter> parameter_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TypeParameterType); |
-}; |
- |
- |
-class VectorType : public DartType { |
- public: |
- static VectorType* ReadFrom(Reader* reader); |
- |
- virtual ~VectorType(); |
- |
- DEFINE_CASTING_OPERATIONS(VectorType); |
- |
- private: |
- VectorType() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(VectorType); |
-}; |
- |
- |
-class TypeParameter : public TreeNode { |
- public: |
- TypeParameter* ReadFrom(Reader* reader); |
- |
- virtual ~TypeParameter(); |
- |
- DEFINE_CASTING_OPERATIONS(TypeParameter); |
- |
- StringIndex name() { return name_index_; } |
- DartType* bound() { return bound_; } |
- |
- private: |
- TypeParameter() {} |
- |
- template <typename T> |
- friend class List; |
- friend class TypeParameterList; |
- |
- StringIndex name_index_; |
- Child<DartType> bound_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TypeParameter); |
-}; |
- |
- |
-class Program : public TreeNode { |
- public: |
- static Program* ReadFrom(Reader* reader); |
- |
- virtual ~Program(); |
- |
- DEFINE_CASTING_OPERATIONS(Program); |
- |
- SourceTable& source_table() { return source_table_; } |
- List<Library>& libraries() { return libraries_; } |
- NameIndex main_method() { return main_method_reference_; } |
- MallocGrowableArray<MallocGrowableArray<intptr_t>*> valid_token_positions; |
- MallocGrowableArray<MallocGrowableArray<intptr_t>*> yield_token_positions; |
- intptr_t string_table_offset() { return string_table_offset_; } |
- intptr_t name_table_offset() { return name_table_offset_; } |
- |
- private: |
- Program() {} |
- |
- NameIndex main_method_reference_; // Procedure. |
- List<Library> libraries_; |
- SourceTable source_table_; |
+ NameIndex main_method_reference_; // Procedure. |
+ intptr_t library_count_; |
// The offset from the start of the binary to the start of the string table. |
intptr_t string_table_offset_; |
@@ -2702,86 +147,13 @@ class Program : public TreeNode { |
// The offset from the start of the binary to the canonical name table. |
intptr_t name_table_offset_; |
- DISALLOW_COPY_AND_ASSIGN(Program); |
-}; |
- |
+ const uint8_t* kernel_data_; |
+ intptr_t kernel_data_size_; |
-class Reference : public AllStatic { |
- public: |
- // Read canonical name references. |
- static NameIndex ReadMemberFrom(Reader* reader, bool allow_null = false); |
- static NameIndex ReadClassFrom(Reader* reader, bool allow_null = false); |
- static NameIndex ReadTypedefFrom(Reader* reader); |
- static NameIndex ReadLibraryFrom(Reader* reader); |
+ DISALLOW_COPY_AND_ASSIGN(Program); |
}; |
-template <typename T> |
-List<T>::~List() { |
- for (int i = 0; i < length_; i++) { |
- delete array_[i]; |
- } |
- delete[] array_; |
-} |
- |
- |
-template <typename T> |
-void List<T>::EnsureInitialized(int length) { |
- if (length < length_) return; |
- |
- T** old_array = array_; |
- int old_length = length_; |
- |
- // TODO(27590) Maybe we should use double-growth instead to avoid running |
- // into the quadratic case. |
- length_ = length; |
- array_ = new T*[length_]; |
- |
- // Move old elements at the start (if necessary). |
- int offset = 0; |
- if (old_array != NULL) { |
- for (; offset < old_length; offset++) { |
- array_[offset] = old_array[offset]; |
- } |
- } |
- |
- // Set the rest to NULL. |
- for (; offset < length_; offset++) { |
- array_[offset] = NULL; |
- } |
- |
- delete[] old_array; |
-} |
- |
- |
-template <typename T> |
-template <typename IT> |
-IT* List<T>::GetOrCreate(int index) { |
- EnsureInitialized(index + 1); |
- |
- T* member = array_[index]; |
- if (member == NULL) { |
- member = array_[index] = new IT(); |
- } |
- return IT::Cast(member); |
-} |
- |
- |
-template <typename T> |
-template <typename IT, typename PT> |
-IT* List<T>::GetOrCreate(int index, PT* parent) { |
- EnsureInitialized(index + 1); |
- |
- T* member = array_[index]; |
- if (member == NULL) { |
- member = array_[index] = new IT(); |
- member->parent_ = parent; |
- } else { |
- ASSERT(member->parent_ == parent); |
- } |
- return IT::Cast(member); |
-} |
- |
ParsedFunction* ParseStaticFieldInitializer(Zone* zone, |
const dart::Field& field); |