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

Unified Diff: runtime/vm/raw_object.h

Issue 10979058: - Implement first class types in the VM. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/raw_object.h
===================================================================
--- runtime/vm/raw_object.h (revision 12980)
+++ runtime/vm/raw_object.h (working copy)
@@ -16,9 +16,6 @@
#define CLASS_LIST_NO_OBJECT(V) \
V(Class) \
V(UnresolvedClass) \
- V(AbstractType) \
- V(Type) \
- V(TypeParameter) \
V(AbstractTypeArguments) \
V(TypeArguments) \
V(InstantiatedTypeArguments) \
@@ -50,6 +47,9 @@
V(UnhandledException) \
V(UnwindError) \
V(Instance) \
+ V(AbstractType) \
+ V(Type) \
+ V(TypeParameter) \
V(Number) \
V(Integer) \
V(Smi) \
@@ -457,57 +457,6 @@
};
-class RawAbstractType : public RawObject {
- protected:
- enum TypeState {
- kAllocated, // Initial state.
- kBeingFinalized, // In the process of being finalized.
- kFinalizedInstantiated, // Instantiated type ready for use.
- kFinalizedUninstantiated, // Uninstantiated type ready for use.
- };
-
- private:
- RAW_HEAP_OBJECT_IMPLEMENTATION(AbstractType);
-
- friend class ObjectStore;
-};
-
-
-class RawType : public RawAbstractType {
- private:
- RAW_HEAP_OBJECT_IMPLEMENTATION(Type);
-
- RawObject** from() {
- return reinterpret_cast<RawObject**>(&ptr()->type_class_);
- }
- RawObject* type_class_; // Either resolved class or unresolved class.
- RawAbstractTypeArguments* arguments_;
- RawError* malformed_error_; // Error object if type is malformed.
- RawObject** to() {
- return reinterpret_cast<RawObject**>(&ptr()->malformed_error_);
- }
- intptr_t token_pos_;
- int8_t type_state_;
-};
-
-
-class RawTypeParameter : public RawAbstractType {
- private:
- RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter);
-
- RawObject** from() {
- return reinterpret_cast<RawObject**>(&ptr()->parameterized_class_);
- }
- RawClass* parameterized_class_;
- RawString* name_;
- RawAbstractType* bound_; // DynamicType if no explicit bound specified.
- RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); }
- intptr_t index_;
- intptr_t token_pos_;
- int8_t type_state_;
-};
-
-
class RawAbstractTypeArguments : public RawObject {
private:
RAW_HEAP_OBJECT_IMPLEMENTATION(AbstractTypeArguments);
@@ -1038,6 +987,57 @@
};
+class RawAbstractType : public RawInstance {
+ protected:
+ enum TypeState {
+ kAllocated, // Initial state.
+ kBeingFinalized, // In the process of being finalized.
+ kFinalizedInstantiated, // Instantiated type ready for use.
+ kFinalizedUninstantiated, // Uninstantiated type ready for use.
+ };
+
+ private:
+ RAW_HEAP_OBJECT_IMPLEMENTATION(AbstractType);
+
+ friend class ObjectStore;
+};
+
+
+class RawType : public RawAbstractType {
+ private:
+ RAW_HEAP_OBJECT_IMPLEMENTATION(Type);
+
+ RawObject** from() {
+ return reinterpret_cast<RawObject**>(&ptr()->type_class_);
+ }
+ RawObject* type_class_; // Either resolved class or unresolved class.
+ RawAbstractTypeArguments* arguments_;
+ RawError* malformed_error_; // Error object if type is malformed.
+ RawObject** to() {
+ return reinterpret_cast<RawObject**>(&ptr()->malformed_error_);
+ }
+ intptr_t token_pos_;
+ int8_t type_state_;
+};
+
+
+class RawTypeParameter : public RawAbstractType {
+ private:
+ RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter);
+
+ RawObject** from() {
+ return reinterpret_cast<RawObject**>(&ptr()->parameterized_class_);
+ }
+ RawClass* parameterized_class_;
+ RawString* name_;
+ RawAbstractType* bound_; // DynamicType if no explicit bound specified.
+ RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); }
+ intptr_t index_;
+ intptr_t token_pos_;
+ int8_t type_state_;
+};
+
+
class RawNumber : public RawInstance {
RAW_OBJECT_IMPLEMENTATION(Number);
};

Powered by Google App Engine
This is Rietveld 408576698