Index: runtime/vm/object.h |
=================================================================== |
--- runtime/vm/object.h (revision 3964) |
+++ runtime/vm/object.h (working copy) |
@@ -453,6 +453,8 @@ |
RawScript* script() const { return raw_ptr()->script_; } |
+ intptr_t token_index() const { return raw_ptr()->token_index_; } |
+ |
// This class represents the signature class of a closure function if |
// signature_function() is not null. |
// The associated function may be a closure function (with code) or a |
@@ -476,6 +478,7 @@ |
void set_library(const Library& value) const; |
// The type parameters are specified as an array of Strings. |
+ // TODO(regis): Store them as an array of TypeParameter with token_index. |
RawArray* type_parameters() const { return raw_ptr()->type_parameters_; } |
void set_type_parameters(const Array& value) const; |
intptr_t NumTypeParameters() const; |
@@ -489,7 +492,8 @@ |
// Return a TypeParameter if the type_name is a type parameter of this class. |
// Return null otherwise. |
- RawTypeParameter* LookupTypeParameter(const String& type_name) const; |
+ RawTypeParameter* LookupTypeParameter(const String& type_name, |
+ intptr_t token_index) const; |
// The type argument vector is flattened and includes the type arguments of |
// the super class. |
@@ -659,11 +663,16 @@ |
// Allocate an instance class which has a VM implementation. |
template <class FakeInstance> static RawClass* New(const String& name, |
- const Script& script); |
+ const Script& script, |
+ intptr_t token_index); |
// Allocate instance classes and interfaces. |
- static RawClass* New(const String& name, const Script& script); |
- static RawClass* NewInterface(const String& name, const Script& script); |
+ static RawClass* New(const String& name, |
+ const Script& script, |
+ intptr_t token_index); |
+ static RawClass* NewInterface(const String& name, |
+ const Script& script, |
+ intptr_t token_index); |
static RawClass* NewNativeWrapper(Library* library, |
const String& name, |
int num_fields); |
@@ -686,6 +695,7 @@ |
private: |
void set_name(const String& value) const; |
void set_script(const Script& value) const; |
+ void set_token_index(intptr_t value) const; |
void set_signature_function(const Function& value) const; |
void set_signature_type(const AbstractType& value) const; |
void set_class_state(int8_t state) const; |
@@ -737,14 +747,14 @@ |
static intptr_t InstanceSize() { |
return RoundedAllocationSize(sizeof(RawUnresolvedClass)); |
} |
- static RawUnresolvedClass* New(intptr_t token_index, |
- const LibraryPrefix& library_prefix, |
- const String& ident); |
+ static RawUnresolvedClass* New(const LibraryPrefix& library_prefix, |
+ const String& ident, |
+ intptr_t token_index); |
private: |
+ void set_library_prefix(const LibraryPrefix& library_prefix) const; |
+ void set_ident(const String& ident) const; |
void set_token_index(intptr_t token_index) const; |
- void set_ident(const String& ident) const; |
- void set_library_prefix(const LibraryPrefix& library_prefix) const; |
static RawUnresolvedClass* New(); |
@@ -770,6 +780,7 @@ |
virtual RawClass* type_class() const; |
virtual RawUnresolvedClass* unresolved_class() const; |
virtual RawAbstractTypeArguments* arguments() const; |
+ virtual intptr_t token_index() const; |
virtual bool IsInstantiated() const; |
virtual bool Equals(const AbstractType& other) const; |
@@ -849,7 +860,9 @@ |
return Test(kIsAssignableTo, dst); |
} |
- static RawAbstractType* NewTypeParameter(intptr_t index, const String& name); |
+ static RawAbstractType* NewTypeParameter(intptr_t index, |
+ const String& name, |
+ intptr_t token_index); |
static RawAbstractType* NewInstantiatedType( |
const AbstractType& uninstantiated_type, |
@@ -884,6 +897,7 @@ |
virtual RawUnresolvedClass* unresolved_class() const; |
virtual RawAbstractTypeArguments* arguments() const; |
void set_arguments(const AbstractTypeArguments& value) const; |
+ virtual intptr_t token_index() const { return raw_ptr()->token_index_; } |
virtual bool IsInstantiated() const; |
virtual bool Equals(const AbstractType& other) const; |
virtual RawAbstractType* InstantiateFrom( |
@@ -930,15 +944,17 @@ |
// The least specific valid raw type of the given class. |
// For example, type A<Dynamic> would be returned for class A<T>, and type |
// B<Dynamic, A<Dynamic>> would be returned for B<U, V extends A>. |
- static RawType* NewRawType(const Class& type_class); |
+ static RawType* NewRawType(const Class& type_class, intptr_t token_index); |
// The finalized type of the given non-parameterized class. |
static RawType* NewNonParameterizedType(const Class& type_class); |
static RawType* New(const Object& clazz, |
- const AbstractTypeArguments& arguments); |
+ const AbstractTypeArguments& arguments, |
+ intptr_t token_index); |
private: |
+ void set_token_index(intptr_t token_index) const; |
void set_type_state(int8_t state) const; |
static RawType* New(); |
@@ -967,6 +983,7 @@ |
virtual RawString* Name() const { return raw_ptr()->name_; } |
virtual intptr_t Index() const { return raw_ptr()->index_; } |
void set_index(intptr_t value) const; |
+ virtual intptr_t token_index() const { return raw_ptr()->token_index_; } |
virtual bool IsInstantiated() const { return false; } |
virtual bool Equals(const AbstractType& other) const; |
virtual RawAbstractType* InstantiateFrom( |
@@ -977,10 +994,13 @@ |
return RoundedAllocationSize(sizeof(RawTypeParameter)); |
} |
- static RawTypeParameter* New(intptr_t index, const String& name); |
+ static RawTypeParameter* New(intptr_t index, |
+ const String& name, |
+ intptr_t token_index); |
private: |
void set_name(const String& value) const; |
+ void set_token_index(intptr_t token_index) const; |
void set_type_state(int8_t state) const; |
static RawTypeParameter* New(); |
@@ -1006,6 +1026,7 @@ |
virtual bool HasResolvedTypeClass() const { return true; } |
virtual RawClass* type_class() const; |
virtual RawAbstractTypeArguments* arguments() const; |
+ virtual intptr_t token_index() const; |
virtual bool IsInstantiated() const { return true; } |
RawAbstractType* uninstantiated_type() const { |