| Index: vm/object.h | 
| =================================================================== | 
| --- vm/object.h	(revision 10409) | 
| +++ vm/object.h	(working copy) | 
| @@ -106,7 +106,7 @@ | 
| return reinterpret_cast<Raw##object*>(Object::null());                     \ | 
| }                                                                            \ | 
| virtual const char* ToCString() const;                                       \ | 
| -  static const ObjectKind kInstanceKind = k##object;                           \ | 
| +  static const ClassId kClassId = k##object##Cid;                              \ | 
| protected:  /* NOLINT */                                                      \ | 
| object() : super() {}                                                        \ | 
| private:  /* NOLINT */                                                        \ | 
| @@ -145,46 +145,6 @@ | 
|  | 
| class Object { | 
| public: | 
| -  // Index for Singleton internal VM classes, | 
| -  // this index is used in snapshots to refer to these classes directly. | 
| -  enum { | 
| -    kNullObject = 0, | 
| -    kSentinelObject, | 
| -    kClassClass, | 
| -    kNullClass, | 
| -    kDynamicClass, | 
| -    kVoidClass, | 
| -    kUnresolvedClassClass, | 
| -    kTypeClass, | 
| -    kTypeParameterClass, | 
| -    kTypeArgumentsClass, | 
| -    kInstantiatedTypeArgumentsClass, | 
| -    kFunctionClass, | 
| -    kFieldClass, | 
| -    kLiteralTokenClass, | 
| -    kTokenStreamClass, | 
| -    kScriptClass, | 
| -    kLibraryClass, | 
| -    kLibraryPrefixClass, | 
| -    kCodeClass, | 
| -    kInstructionsClass, | 
| -    kPcDescriptorsClass, | 
| -    kStackmapClass, | 
| -    kLocalVarDescriptorsClass, | 
| -    kExceptionHandlersClass, | 
| -    kDeoptInfoClass, | 
| -    kContextClass, | 
| -    kContextScopeClass, | 
| -    kICDataClass, | 
| -    kSubtypeTestCacheClass, | 
| -    kApiErrorClass, | 
| -    kLanguageErrorClass, | 
| -    kUnhandledExceptionClass, | 
| -    kUnwindErrorClass, | 
| -    kMaxId, | 
| -    kInvalidIndex = -1, | 
| -  }; | 
| - | 
| virtual ~Object() { } | 
|  | 
| RawObject* raw() const { return raw_; } | 
| @@ -324,9 +284,7 @@ | 
| static RawClass* icdata_class() { return icdata_class_; } | 
| static RawClass* subtypetestcache_class() { return subtypetestcache_class_; } | 
|  | 
| -  static int GetSingletonClassIndex(const RawClass* raw_class); | 
| -  static RawClass* GetSingletonClass(int index); | 
| -  static const char* GetSingletonClassName(int index); | 
| +  static const char* GetSingletonClassName(intptr_t class_id); | 
|  | 
| static RawClass* CreateAndRegisterInterface(const char* cname, | 
| const Script& script, | 
| @@ -349,7 +307,7 @@ | 
| return RoundedAllocationSize(sizeof(RawObject)); | 
| } | 
|  | 
| -  static const ObjectKind kInstanceKind = kObject; | 
| +  static const ClassId kClassId = kObjectCid; | 
|  | 
| // Different kinds of type tests. | 
| enum TypeTestKind { | 
| @@ -413,7 +371,7 @@ | 
| } | 
|  | 
| static cpp_vtable handle_vtable_; | 
| -  static cpp_vtable builtin_vtables_[kNumPredefinedKinds]; | 
| +  static cpp_vtable builtin_vtables_[kNumPredefinedCids]; | 
|  | 
| // The static values below are singletons shared between the different | 
| // isolates. They are all allocated in the non-GC'd Dart::vm_isolate_. | 
| @@ -495,11 +453,6 @@ | 
| raw_ptr()->handle_vtable_ = value; | 
| } | 
|  | 
| -  ObjectKind instance_kind() const { return raw_ptr()->instance_kind_; } | 
| -  void set_instance_kind(ObjectKind value) const { | 
| -    raw_ptr()->instance_kind_ = value; | 
| -  } | 
| - | 
| intptr_t id() const { return raw_ptr()->id_; } | 
| void set_id(intptr_t value) const { | 
| raw_ptr()->id_ = value; | 
| @@ -624,6 +577,9 @@ | 
| bool IsSignatureClass() const { | 
| return signature_function() != Object::null(); | 
| } | 
| +  static bool IsSignatureClass(RawClass* cls) { | 
| +    return cls->ptr()->signature_function_ != Object::null(); | 
| +  } | 
|  | 
| // Check if this class represents a canonical signature class, i.e. not an | 
| // alias as defined in a typedef. | 
| @@ -758,7 +714,7 @@ | 
| // Return a class object corresponding to the specified kind. If | 
| // a canonicalized version of it exists then that object is returned | 
| // otherwise a new object is allocated and returned. | 
| -  static RawClass* GetClass(ObjectKind kind); | 
| +  static RawClass* GetClass(intptr_t class_id, bool is_signature_class); | 
|  | 
| private: | 
| void set_name(const String& value) const; | 
| @@ -5386,7 +5342,7 @@ | 
| vm_isolate_heap->Contains(reinterpret_cast<uword>(raw_->ptr()))); | 
| #endif | 
| intptr_t cid = raw_->GetClassId(); | 
| -  if (cid < kNumPredefinedKinds) { | 
| +  if (cid < kNumPredefinedCids) { | 
| #if defined(DEBUG) | 
| ASSERT(builtin_vtables_[cid] == | 
| isolate->class_table()->At(cid)->ptr()->handle_vtable_); | 
|  |