Index: vm/object.cc |
=================================================================== |
--- vm/object.cc (revision 10409) |
+++ vm/object.cc (working copy) |
@@ -49,7 +49,7 @@ |
static const intptr_t kSetterPrefixLength = strlen(kSetterPrefix); |
cpp_vtable Object::handle_vtable_ = 0; |
-cpp_vtable Object::builtin_vtables_[kNumPredefinedKinds] = { 0 }; |
+cpp_vtable Object::builtin_vtables_[kNumPredefinedCids] = { 0 }; |
cpp_vtable Smi::handle_vtable_ = 0; |
// These are initialized to a value that will force a illegal memory access if |
@@ -185,152 +185,43 @@ |
} |
-int Object::GetSingletonClassIndex(const RawClass* raw_class) { |
- ASSERT(raw_class->IsHeapObject()); |
- if (raw_class == class_class()) { |
- return kClassClass; |
- } else if (raw_class == null_class()) { |
- return kNullClass; |
- } else if (raw_class == dynamic_class()) { |
- return kDynamicClass; |
- } else if (raw_class == void_class()) { |
- return kVoidClass; |
- } else if (raw_class == unresolved_class_class()) { |
- return kUnresolvedClassClass; |
- } else if (raw_class == type_class()) { |
- return kTypeClass; |
- } else if (raw_class == type_parameter_class()) { |
- return kTypeParameterClass; |
- } else if (raw_class == type_arguments_class()) { |
- return kTypeArgumentsClass; |
- } else if (raw_class == instantiated_type_arguments_class()) { |
- return kInstantiatedTypeArgumentsClass; |
- } else if (raw_class == function_class()) { |
- return kFunctionClass; |
- } else if (raw_class == field_class()) { |
- return kFieldClass; |
- } else if (raw_class == literal_token_class()) { |
- return kLiteralTokenClass; |
- } else if (raw_class == token_stream_class()) { |
- return kTokenStreamClass; |
- } else if (raw_class == script_class()) { |
- return kScriptClass; |
- } else if (raw_class == library_class()) { |
- return kLibraryClass; |
- } else if (raw_class == library_prefix_class()) { |
- return kLibraryPrefixClass; |
- } else if (raw_class == code_class()) { |
- return kCodeClass; |
- } else if (raw_class == instructions_class()) { |
- return kInstructionsClass; |
- } else if (raw_class == pc_descriptors_class()) { |
- return kPcDescriptorsClass; |
- } else if (raw_class == stackmap_class()) { |
- return kStackmapClass; |
- } else if (raw_class == var_descriptors_class()) { |
- return kLocalVarDescriptorsClass; |
- } else if (raw_class == exception_handlers_class()) { |
- return kExceptionHandlersClass; |
- } else if (raw_class == deopt_info_class()) { |
- return kDeoptInfoClass; |
- } else if (raw_class == context_class()) { |
- return kContextClass; |
- } else if (raw_class == context_scope_class()) { |
- return kContextScopeClass; |
- } else if (raw_class == icdata_class()) { |
- return kICDataClass; |
- } else if (raw_class == subtypetestcache_class()) { |
- return kSubtypeTestCacheClass; |
- } else if (raw_class == api_error_class()) { |
- return kApiErrorClass; |
- } else if (raw_class == language_error_class()) { |
- return kLanguageErrorClass; |
- } else if (raw_class == unhandled_exception_class()) { |
- return kUnhandledExceptionClass; |
- } else if (raw_class == unwind_error_class()) { |
- return kUnwindErrorClass; |
- } |
- return kInvalidIndex; |
-} |
- |
- |
-RawClass* Object::GetSingletonClass(int index) { |
- switch (index) { |
- case kClassClass: return class_class(); |
- case kNullClass: return null_class(); |
- case kDynamicClass: return dynamic_class(); |
- case kVoidClass: return void_class(); |
- case kUnresolvedClassClass: return unresolved_class_class(); |
- case kTypeClass: return type_class(); |
- case kTypeParameterClass: return type_parameter_class(); |
- case kTypeArgumentsClass: return type_arguments_class(); |
- case kInstantiatedTypeArgumentsClass: |
- return instantiated_type_arguments_class(); |
- case kFunctionClass: return function_class(); |
- case kFieldClass: return field_class(); |
- case kLiteralTokenClass: return literal_token_class(); |
- case kTokenStreamClass: return token_stream_class(); |
- case kScriptClass: return script_class(); |
- case kLibraryClass: return library_class(); |
- case kLibraryPrefixClass: return library_prefix_class(); |
- case kCodeClass: return code_class(); |
- case kInstructionsClass: return instructions_class(); |
- case kPcDescriptorsClass: return pc_descriptors_class(); |
- case kStackmapClass: return stackmap_class(); |
- case kLocalVarDescriptorsClass: return var_descriptors_class(); |
- case kExceptionHandlersClass: return exception_handlers_class(); |
- case kDeoptInfoClass: return deopt_info_class(); |
- case kContextClass: return context_class(); |
- case kContextScopeClass: return context_scope_class(); |
- case kICDataClass: return icdata_class(); |
- case kSubtypeTestCacheClass: return subtypetestcache_class(); |
- case kApiErrorClass: return api_error_class(); |
- case kLanguageErrorClass: return language_error_class(); |
- case kUnhandledExceptionClass: return unhandled_exception_class(); |
- case kUnwindErrorClass: return unwind_error_class(); |
+// TODO(asiva): Get rid of this function once we have predefined names for |
+// the shared classes and set that up in the name field. |
+const char* Object::GetSingletonClassName(intptr_t class_id) { |
+ switch (class_id) { |
+ case kClassCid: return "Class"; |
+ case kNullCid: return "Null"; |
+ case kDynamicCid: return "Dynamic"; |
+ case kVoidCid: return "void"; |
+ case kUnresolvedClassCid: return "UnresolvedClass"; |
+ case kTypeCid: return "Type"; |
+ case kTypeParameterCid: return "TypeParameter"; |
+ case kTypeArgumentsCid: return "TypeArguments"; |
+ case kInstantiatedTypeArgumentsCid: return "InstantiatedTypeArguments"; |
+ case kFunctionCid: return "Function"; |
+ case kFieldCid: return "Field"; |
+ case kLiteralTokenCid: return "LiteralToken"; |
+ case kTokenStreamCid: return "TokenStream"; |
+ case kScriptCid: return "Script"; |
+ case kLibraryCid: return "Library"; |
+ case kLibraryPrefixCid: return "LibraryPrefix"; |
+ case kCodeCid: return "Code"; |
+ case kInstructionsCid: return "Instructions"; |
+ case kPcDescriptorsCid: return "PcDescriptors"; |
+ case kStackmapCid: return "Stackmap"; |
+ case kLocalVarDescriptorsCid: return "LocalVarDescriptors"; |
+ case kExceptionHandlersCid: return "ExceptionHandlers"; |
+ case kContextCid: return "Context"; |
+ case kContextScopeCid: return "ContextScope"; |
+ case kICDataCid: return "ICData"; |
+ case kSubtypeTestCacheCid: return "SubtypeTestCache"; |
+ case kApiErrorCid: return "ApiError"; |
+ case kLanguageErrorCid: return "LanguageError"; |
+ case kUnhandledExceptionCid: return "UnhandledException"; |
+ case kUnwindErrorCid: return "UnwindError"; |
default: break; |
} |
UNREACHABLE(); |
- return reinterpret_cast<RawClass*>(kHeapObjectTag); // return RAW_NULL. |
-} |
- |
- |
-const char* Object::GetSingletonClassName(int index) { |
- switch (index) { |
- case kClassClass: return "Class"; |
- case kNullClass: return "Null"; |
- case kDynamicClass: return "Dynamic"; |
- case kVoidClass: return "void"; |
- case kUnresolvedClassClass: return "UnresolvedClass"; |
- case kTypeClass: return "Type"; |
- case kTypeParameterClass: return "TypeParameter"; |
- case kTypeArgumentsClass: return "TypeArguments"; |
- case kInstantiatedTypeArgumentsClass: return "InstantiatedTypeArguments"; |
- case kFunctionClass: return "Function"; |
- case kFieldClass: return "Field"; |
- case kLiteralTokenClass: return "LiteralToken"; |
- case kTokenStreamClass: return "TokenStream"; |
- case kScriptClass: return "Script"; |
- case kLibraryClass: return "Library"; |
- case kLibraryPrefixClass: return "LibraryPrefix"; |
- case kCodeClass: return "Code"; |
- case kInstructionsClass: return "Instructions"; |
- case kPcDescriptorsClass: return "PcDescriptors"; |
- case kStackmapClass: return "Stackmap"; |
- case kLocalVarDescriptorsClass: return "LocalVarDescriptors"; |
- case kExceptionHandlersClass: return "ExceptionHandlers"; |
- case kDeoptInfoClass: return "DeoptInfo"; |
- case kContextClass: return "Context"; |
- case kContextScopeClass: return "ContextScope"; |
- case kICDataClass: return "ICData"; |
- case kSubtypeTestCacheClass: return "SubtypeTestCache"; |
- case kApiErrorClass: return "ApiError"; |
- case kLanguageErrorClass: return "LanguageError"; |
- case kUnhandledExceptionClass: return "UnhandledException"; |
- case kUnwindErrorClass: return "UnwindError"; |
- default: break; |
- } |
- UNREACHABLE(); |
return NULL; |
} |
@@ -355,7 +246,7 @@ |
uword address = heap->Allocate(Instance::InstanceSize(), Heap::kOld); |
null_ = reinterpret_cast<RawInstance*>(address + kHeapObjectTag); |
// The call below is using 'null_' to initialize itself. |
- InitializeObject(address, kNullClassId, Instance::InstanceSize()); |
+ InitializeObject(address, kNullCid, Instance::InstanceSize()); |
} |
// Initialize object_store empty array to null_ in order to be able to check |
@@ -369,7 +260,7 @@ |
intptr_t size = Class::InstanceSize(); |
uword address = heap->Allocate(size, Heap::kOld); |
class_class_ = reinterpret_cast<RawClass*>(address + kHeapObjectTag); |
- InitializeObject(address, Class::kInstanceKind, size); |
+ InitializeObject(address, Class::kClassId, size); |
Class fake; |
// Initialization from Class::New<Class>. |
@@ -379,8 +270,7 @@ |
cls.set_handle_vtable(fake.vtable()); |
cls.set_instance_size(Class::InstanceSize()); |
cls.set_next_field_offset(Class::InstanceSize()); |
- cls.set_instance_kind(Class::kInstanceKind); |
- cls.set_id(Class::kInstanceKind); |
+ cls.set_id(Class::kClassId); |
cls.raw_ptr()->is_const_ = false; |
cls.raw_ptr()->is_interface_ = false; |
cls.set_is_finalized(); |
@@ -392,7 +282,7 @@ |
} |
// Allocate and initialize the null class. |
- cls = Class::New<Instance>(kNullClassId); |
+ cls = Class::New<Instance>(kNullCid); |
cls.set_is_finalized(); |
null_class_ = cls.raw(); |
@@ -404,24 +294,24 @@ |
{ |
Instance& sentinel = Instance::Handle(); |
sentinel ^= |
- Object::Allocate(kNullClassId, Instance::InstanceSize(), Heap::kOld); |
+ Object::Allocate(kNullCid, Instance::InstanceSize(), Heap::kOld); |
sentinel_ = sentinel.raw(); |
Instance& transition_sentinel = Instance::Handle(); |
transition_sentinel ^= |
- Object::Allocate(kNullClassId, Instance::InstanceSize(), Heap::kOld); |
+ Object::Allocate(kNullCid, Instance::InstanceSize(), Heap::kOld); |
transition_sentinel_ = transition_sentinel.raw(); |
} |
// The interface "Dynamic" is not a VM internal class. It is the type class of |
// the "unknown type". For efficiency, we allocate it in the VM isolate. |
// Therefore, it cannot have a heap allocated name (the name is hard coded, |
- // see GetSingletonClassIndex) and its array fields cannot be set to the empty |
+ // see GetSingletonClassName) and its array fields cannot be set to the empty |
// array, but remain null. |
// |
// TODO(turnidge): Once the empty array is allocated in the vm |
// isolate, use it here. |
- cls = Class::New<Instance>(kDynamicClassId); |
+ cls = Class::New<Instance>(kDynamicCid); |
cls.set_is_finalized(); |
cls.set_is_interface(); |
dynamic_class_ = cls.raw(); |
@@ -430,7 +320,7 @@ |
cls = Class::New<UnresolvedClass>(); |
unresolved_class_class_ = cls.raw(); |
- cls = Class::New<Instance>(kVoidClassId); |
+ cls = Class::New<Instance>(kVoidCid); |
cls.set_is_finalized(); |
void_class_ = cls.raw(); |
@@ -521,9 +411,6 @@ |
isolate->object_store()->set_array_class(cls); |
cls = Class::New<OneByteString>(); |
isolate->object_store()->set_one_byte_string_class(cls); |
- |
- // TODO(asiva): Assign the names of shared classes instead of relying on the |
- // lookup switch in Object::GetSingletonClassName. |
} |
@@ -1074,7 +961,7 @@ |
} |
-void Object::InitializeObject(uword address, intptr_t index, intptr_t size) { |
+void Object::InitializeObject(uword address, intptr_t class_id, intptr_t size) { |
// TODO(iposva): Get a proper halt instruction from the assembler which |
// would be needed here for code objects. |
uword initial_value = reinterpret_cast<uword>(null_); |
@@ -1085,8 +972,8 @@ |
cur += kWordSize; |
} |
uword tags = 0; |
- ASSERT(index != kIllegalObjectKind); |
- tags = RawObject::ClassIdTag::update(index, tags); |
+ ASSERT(class_id != kIllegalCid); |
+ tags = RawObject::ClassIdTag::update(class_id, tags); |
tags = RawObject::SizeTag::update(size, tags); |
reinterpret_cast<RawObject*>(address)->tags_ = tags; |
} |
@@ -1154,8 +1041,7 @@ |
return raw_ptr()->name_; |
} |
ASSERT(class_class() != Class::null()); // class_class_ should be set up. |
- intptr_t index = GetSingletonClassIndex(raw()); |
- return Symbols::New(GetSingletonClassName(index)); |
+ return Symbols::New(GetSingletonClassName(raw_ptr()->id_)); |
} |
@@ -1164,55 +1050,55 @@ |
return Name(); |
} |
switch (id()) { |
- case kInteger: |
- case kSmi: |
- case kMint: |
- case kBigint: |
+ case kIntegerCid: |
+ case kSmiCid: |
+ case kMintCid: |
+ case kBigintCid: |
return Symbols::New("int"); |
- case kDouble: |
+ case kDoubleCid: |
return Symbols::New("double"); |
- case kOneByteString: |
- case kTwoByteString: |
- case kFourByteString: |
- case kExternalOneByteString: |
- case kExternalTwoByteString: |
- case kExternalFourByteString: |
+ case kOneByteStringCid: |
+ case kTwoByteStringCid: |
+ case kFourByteStringCid: |
+ case kExternalOneByteStringCid: |
+ case kExternalTwoByteStringCid: |
+ case kExternalFourByteStringCid: |
return Symbols::New("String"); |
- case kBool: |
+ case kBoolCid: |
return Symbols::New("bool"); |
- case kArray: |
- case kImmutableArray: |
- case kGrowableObjectArray: |
+ case kArrayCid: |
+ case kImmutableArrayCid: |
+ case kGrowableObjectArrayCid: |
return Symbols::New("List"); |
- case kInt8Array: |
- case kExternalInt8Array: |
+ case kInt8ArrayCid: |
+ case kExternalInt8ArrayCid: |
return Symbols::New("Int8List"); |
- case kUint8Array: |
- case kExternalUint8Array: |
+ case kUint8ArrayCid: |
+ case kExternalUint8ArrayCid: |
return Symbols::New("Uint8List"); |
- case kInt16Array: |
- case kExternalInt16Array: |
+ case kInt16ArrayCid: |
+ case kExternalInt16ArrayCid: |
return Symbols::New("Int16List"); |
- case kUint16Array: |
- case kExternalUint16Array: |
+ case kUint16ArrayCid: |
+ case kExternalUint16ArrayCid: |
return Symbols::New("Uint16List"); |
- case kInt32Array: |
- case kExternalInt32Array: |
+ case kInt32ArrayCid: |
+ case kExternalInt32ArrayCid: |
return Symbols::New("Int32List"); |
- case kUint32Array: |
- case kExternalUint32Array: |
+ case kUint32ArrayCid: |
+ case kExternalUint32ArrayCid: |
return Symbols::New("Uint32List"); |
- case kInt64Array: |
- case kExternalInt64Array: |
+ case kInt64ArrayCid: |
+ case kExternalInt64ArrayCid: |
return Symbols::New("Int64List"); |
- case kUint64Array: |
- case kExternalUint64Array: |
+ case kUint64ArrayCid: |
+ case kExternalUint64ArrayCid: |
return Symbols::New("Uint64List"); |
- case kFloat32Array: |
- case kExternalFloat32Array: |
+ case kFloat32ArrayCid: |
+ case kExternalFloat32ArrayCid: |
return Symbols::New("Float32List"); |
- case kFloat64Array: |
- case kExternalFloat64Array: |
+ case kFloat64ArrayCid: |
+ case kExternalFloat64ArrayCid: |
return Symbols::New("Float64List"); |
default: |
const String& name = String::Handle(Name()); |
@@ -1267,7 +1153,7 @@ |
ASSERT(Object::class_class() != Class::null()); |
Class& result = Class::Handle(); |
{ |
- RawObject* raw = Object::Allocate(Class::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Class::kClassId, |
Class::InstanceSize(), |
Heap::kOld); |
NoGCScope no_gc; |
@@ -1277,9 +1163,9 @@ |
result.set_handle_vtable(fake.vtable()); |
result.set_instance_size(FakeObject::InstanceSize()); |
result.set_next_field_offset(FakeObject::InstanceSize()); |
- result.set_instance_kind(FakeObject::kInstanceKind); |
- result.set_id((FakeObject::kInstanceKind != kInstance) ? |
- FakeObject::kInstanceKind : kIllegalObjectKind); |
+ result.set_id((FakeObject::kClassId != kInstanceCid && |
+ FakeObject::kClassId != kClosureCid) ? |
+ FakeObject::kClassId : kIllegalCid); |
result.raw_ptr()->is_const_ = false; |
result.raw_ptr()->is_interface_ = false; |
// VM backed classes are almost ready: run checks and resolve class |
@@ -1604,7 +1490,7 @@ |
ASSERT(Object::class_class() != Class::null()); |
Class& result = Class::Handle(); |
{ |
- RawObject* raw = Object::Allocate(Class::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Class::kClassId, |
Class::InstanceSize(), |
Heap::kOld); |
NoGCScope no_gc; |
@@ -1615,7 +1501,6 @@ |
result.set_handle_vtable(fake.vtable()); |
result.set_instance_size(FakeInstance::InstanceSize()); |
result.set_next_field_offset(FakeInstance::InstanceSize()); |
- result.set_instance_kind(FakeInstance::kInstanceKind); |
result.set_id(index); |
result.raw_ptr()->is_const_ = false; |
result.raw_ptr()->is_interface_ = false; |
@@ -1632,7 +1517,7 @@ |
RawClass* Class::New(const String& name, |
const Script& script, |
intptr_t token_pos) { |
- Class& result = Class::Handle(New<FakeInstance>(kIllegalObjectKind)); |
+ Class& result = Class::Handle(New<FakeInstance>(kIllegalCid)); |
result.set_name(name); |
result.set_script(script); |
result.set_token_pos(token_pos); |
@@ -1713,128 +1598,18 @@ |
} |
-RawClass* Class::GetClass(ObjectKind kind) { |
- ObjectStore* object_store = Isolate::Current()->object_store(); |
- switch (kind) { |
- case kInteger: |
- ASSERT(object_store->integer_implementation_class() != Class::null()); |
- return object_store->integer_implementation_class(); |
- case kSmi: |
- ASSERT(object_store->smi_class() != Class::null()); |
- return object_store->smi_class(); |
- case kMint: |
- ASSERT(object_store->mint_class() != Class::null()); |
- return object_store->mint_class(); |
- case kBigint: |
- ASSERT(object_store->bigint_class() != Class::null()); |
- return object_store->bigint_class(); |
- case kDouble: |
- ASSERT(object_store->double_class() != Class::null()); |
- return object_store->double_class(); |
- case kOneByteString: |
- ASSERT(object_store->one_byte_string_class() != Class::null()); |
- return object_store->one_byte_string_class(); |
- case kTwoByteString: |
- ASSERT(object_store->two_byte_string_class() != Class::null()); |
- return object_store->two_byte_string_class(); |
- case kFourByteString: |
- ASSERT(object_store->four_byte_string_class() != Class::null()); |
- return object_store->four_byte_string_class(); |
- case kExternalOneByteString: |
- ASSERT(object_store->external_one_byte_string_class() != Class::null()); |
- return object_store->external_one_byte_string_class(); |
- case kExternalTwoByteString: |
- ASSERT(object_store->external_two_byte_string_class() != Class::null()); |
- return object_store->external_two_byte_string_class(); |
- case kExternalFourByteString: |
- ASSERT(object_store->external_four_byte_string_class() != Class::null()); |
- return object_store->external_four_byte_string_class(); |
- case kBool: |
- ASSERT(object_store->bool_class() != Class::null()); |
- return object_store->bool_class(); |
- case kArray: |
- ASSERT(object_store->array_class() != Class::null()); |
- return object_store->array_class(); |
- case kImmutableArray: |
- ASSERT(object_store->immutable_array_class() != Class::null()); |
- return object_store->immutable_array_class(); |
- case kGrowableObjectArray: |
- ASSERT(object_store->growable_object_array_class() != Class::null()); |
- return object_store->growable_object_array_class(); |
- case kInt8Array: |
- ASSERT(object_store->int8_array_class() != Class::null()); |
- return object_store->int8_array_class(); |
- case kUint8Array: |
- ASSERT(object_store->uint8_array_class() != Class::null()); |
- return object_store->uint8_array_class(); |
- case kInt16Array: |
- ASSERT(object_store->int16_array_class() != Class::null()); |
- return object_store->int16_array_class(); |
- case kUint16Array: |
- ASSERT(object_store->uint16_array_class() != Class::null()); |
- return object_store->uint16_array_class(); |
- case kInt32Array: |
- ASSERT(object_store->int32_array_class() != Class::null()); |
- return object_store->int32_array_class(); |
- case kUint32Array: |
- ASSERT(object_store->uint32_array_class() != Class::null()); |
- return object_store->uint32_array_class(); |
- case kInt64Array: |
- ASSERT(object_store->int64_array_class() != Class::null()); |
- return object_store->int64_array_class(); |
- case kUint64Array: |
- ASSERT(object_store->uint64_array_class() != Class::null()); |
- return object_store->uint64_array_class(); |
- case kFloat32Array: |
- ASSERT(object_store->float32_array_class() != Class::null()); |
- return object_store->float32_array_class(); |
- case kFloat64Array: |
- ASSERT(object_store->float64_array_class() != Class::null()); |
- return object_store->float64_array_class(); |
- case kExternalInt8Array: |
- ASSERT(object_store->external_int8_array_class() != Class::null()); |
- return object_store->external_int8_array_class(); |
- case kExternalUint8Array: |
- ASSERT(object_store->external_uint8_array_class() != Class::null()); |
- return object_store->external_uint8_array_class(); |
- case kExternalInt16Array: |
- ASSERT(object_store->external_int16_array_class() != Class::null()); |
- return object_store->external_int16_array_class(); |
- case kExternalUint16Array: |
- ASSERT(object_store->external_uint16_array_class() != Class::null()); |
- return object_store->external_uint16_array_class(); |
- case kExternalInt32Array: |
- ASSERT(object_store->external_int32_array_class() != Class::null()); |
- return object_store->external_int32_array_class(); |
- case kExternalUint32Array: |
- ASSERT(object_store->external_uint32_array_class() != Class::null()); |
- return object_store->external_uint32_array_class(); |
- case kExternalInt64Array: |
- ASSERT(object_store->external_int64_array_class() != Class::null()); |
- return object_store->external_int64_array_class(); |
- case kExternalUint64Array: |
- ASSERT(object_store->external_uint64_array_class() != Class::null()); |
- return object_store->external_uint64_array_class(); |
- case kExternalFloat32Array: |
- ASSERT(object_store->external_float32_array_class() != Class::null()); |
- return object_store->external_float32_array_class(); |
- case kExternalFloat64Array: |
- ASSERT(object_store->external_float64_array_class() != Class::null()); |
- return object_store->external_float64_array_class(); |
- case kStacktrace: |
- ASSERT(object_store->stacktrace_class() != Class::null()); |
- return object_store->stacktrace_class(); |
- case kJSRegExp: |
- ASSERT(object_store->jsregexp_class() != Class::null()); |
- return object_store->jsregexp_class(); |
- case kClosure: |
+RawClass* Class::GetClass(intptr_t class_id, bool is_signature_class) { |
+ if (class_id >= kIntegerCid && class_id <= kJSRegExpCid) { |
+ return Isolate::Current()->class_table()->At(class_id); |
+ } |
+ if (class_id >= kNumPredefinedCids) { |
+ if (is_signature_class) { |
return Class::New<Closure>(); |
- case kInstance: |
- return Class::New<Instance>(); |
- default: |
- OS::Print("Class::GetClass kind unknown: %d\n", kind); |
- UNREACHABLE(); |
+ } |
+ return Class::New<Instance>(); |
} |
+ OS::Print("Class::GetClass id unknown: %d\n", class_id); |
+ UNREACHABLE(); |
return Class::null(); |
} |
@@ -2327,7 +2102,7 @@ |
RawUnresolvedClass* UnresolvedClass::New() { |
ASSERT(Object::unresolved_class_class() != Class::null()); |
- RawObject* raw = Object::Allocate(UnresolvedClass::kInstanceKind, |
+ RawObject* raw = Object::Allocate(UnresolvedClass::kClassId, |
UnresolvedClass::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawUnresolvedClass*>(raw); |
@@ -2976,7 +2751,7 @@ |
RawType* Type::New(Heap::Space space) { |
ASSERT(Object::type_class() != Class::null()); |
- RawObject* raw = Object::Allocate(Type::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Type::kClassId, |
Type::InstanceSize(), |
space); |
return reinterpret_cast<RawType*>(raw); |
@@ -3135,7 +2910,7 @@ |
RawTypeParameter* TypeParameter::New() { |
ASSERT(Object::type_parameter_class() != Class::null()); |
- RawObject* raw = Object::Allocate(TypeParameter::kInstanceKind, |
+ RawObject* raw = Object::Allocate(TypeParameter::kClassId, |
TypeParameter::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawTypeParameter*>(raw); |
@@ -3558,7 +3333,7 @@ |
} |
TypeArguments& result = TypeArguments::Handle(); |
{ |
- RawObject* raw = Object::Allocate(TypeArguments::kInstanceKind, |
+ RawObject* raw = Object::Allocate(TypeArguments::kClassId, |
TypeArguments::InstanceSize(len), |
space); |
NoGCScope no_gc; |
@@ -3678,7 +3453,7 @@ |
RawInstantiatedTypeArguments* InstantiatedTypeArguments::New() { |
ASSERT(Object::instantiated_type_arguments_class() != Class::null()); |
- RawObject* raw = Object::Allocate(InstantiatedTypeArguments::kInstanceKind, |
+ RawObject* raw = Object::Allocate(InstantiatedTypeArguments::kClassId, |
InstantiatedTypeArguments::InstanceSize(), |
Heap::kNew); |
return reinterpret_cast<RawInstantiatedTypeArguments*>(raw); |
@@ -4206,7 +3981,7 @@ |
RawFunction* Function::New() { |
ASSERT(Object::function_class() != Class::null()); |
- RawObject* raw = Object::Allocate(Function::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Function::kClassId, |
Function::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawFunction*>(raw); |
@@ -4610,7 +4385,7 @@ |
RawField* Field::New() { |
ASSERT(Object::field_class() != Class::null()); |
- RawObject* raw = Object::Allocate(Field::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Field::kClassId, |
Field::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawField*>(raw); |
@@ -4676,7 +4451,7 @@ |
RawLiteralToken* LiteralToken::New() { |
ASSERT(Object::literal_token_class() != Class::null()); |
- RawObject* raw = Object::Allocate(LiteralToken::kInstanceKind, |
+ RawObject* raw = Object::Allocate(LiteralToken::kClassId, |
LiteralToken::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawLiteralToken*>(raw); |
@@ -4862,7 +4637,7 @@ |
} |
TokenStream& result = TokenStream::Handle(); |
{ |
- RawObject* raw = Object::Allocate(TokenStream::kInstanceKind, |
+ RawObject* raw = Object::Allocate(TokenStream::kClassId, |
TokenStream::InstanceSize(len), |
Heap::kOld); |
NoGCScope no_gc; |
@@ -5359,7 +5134,7 @@ |
RawScript* Script::New() { |
ASSERT(Object::script_class() != Class::null()); |
- RawObject* raw = Object::Allocate(Script::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Script::kClassId, |
Script::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawScript*>(raw); |
@@ -6184,7 +5959,7 @@ |
RawLibrary* Library::New() { |
ASSERT(Object::library_class() != Class::null()); |
- RawObject* raw = Object::Allocate(Library::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Library::kClassId, |
Library::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawLibrary*>(raw); |
@@ -6511,7 +6286,7 @@ |
RawLibraryPrefix* LibraryPrefix::New() { |
ASSERT(Object::library_prefix_class() != Class::null()); |
- RawObject* raw = Object::Allocate(LibraryPrefix::kInstanceKind, |
+ RawObject* raw = Object::Allocate(LibraryPrefix::kClassId, |
LibraryPrefix::InstanceSize(), |
Heap::kOld); |
return reinterpret_cast<RawLibraryPrefix*>(raw); |
@@ -6643,7 +6418,7 @@ |
Instructions& result = Instructions::Handle(); |
{ |
uword aligned_size = Instructions::InstanceSize(size); |
- RawObject* raw = Object::Allocate(Instructions::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Instructions::kClassId, |
aligned_size, |
Heap::kCode); |
NoGCScope no_gc; |
@@ -6740,7 +6515,7 @@ |
PcDescriptors& result = PcDescriptors::Handle(); |
{ |
uword size = PcDescriptors::InstanceSize(num_descriptors); |
- RawObject* raw = Object::Allocate(PcDescriptors::kInstanceKind, |
+ RawObject* raw = Object::Allocate(PcDescriptors::kClassId, |
size, |
Heap::kOld); |
NoGCScope no_gc; |
@@ -6875,7 +6650,7 @@ |
{ |
// Stackmap data objects are associated with a code object, allocate them |
// in old generation. |
- RawObject* raw = Object::Allocate(Stackmap::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Stackmap::kClassId, |
Stackmap::InstanceSize(size), |
Heap::kOld); |
NoGCScope no_gc; |
@@ -6970,7 +6745,7 @@ |
LocalVarDescriptors& result = LocalVarDescriptors::Handle(); |
{ |
uword size = LocalVarDescriptors::InstanceSize(num_variables); |
- RawObject* raw = Object::Allocate(LocalVarDescriptors::kInstanceKind, |
+ RawObject* raw = Object::Allocate(LocalVarDescriptors::kClassId, |
size, |
Heap::kOld); |
NoGCScope no_gc; |
@@ -7031,7 +6806,7 @@ |
ExceptionHandlers& result = ExceptionHandlers::Handle(); |
{ |
uword size = ExceptionHandlers::InstanceSize(num_handlers); |
- RawObject* raw = Object::Allocate(ExceptionHandlers::kInstanceKind, |
+ RawObject* raw = Object::Allocate(ExceptionHandlers::kClassId, |
size, |
Heap::kOld); |
NoGCScope no_gc; |
@@ -7115,7 +6890,7 @@ |
DeoptInfo& result = DeoptInfo::Handle(); |
{ |
uword size = DeoptInfo::InstanceSize(num_commands); |
- RawObject* raw = Object::Allocate(DeoptInfo::kInstanceKind, |
+ RawObject* raw = Object::Allocate(DeoptInfo::kClassId, |
size, |
Heap::kOld); |
NoGCScope no_gc; |
@@ -7228,7 +7003,7 @@ |
Code& result = Code::Handle(); |
{ |
uword size = Code::InstanceSize(pointer_offsets_length); |
- RawObject* raw = Object::Allocate(Code::kInstanceKind, size, Heap::kOld); |
+ RawObject* raw = Object::Allocate(Code::kClassId, size, Heap::kOld); |
NoGCScope no_gc; |
result ^= raw; |
result.set_pointer_offsets_length(pointer_offsets_length); |
@@ -7466,7 +7241,7 @@ |
} |
Context& result = Context::Handle(); |
{ |
- RawObject* raw = Object::Allocate(Context::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Context::kClassId, |
Context::InstanceSize(num_variables), |
space); |
NoGCScope no_gc; |
@@ -7493,7 +7268,7 @@ |
intptr_t size = ContextScope::InstanceSize(num_variables); |
ContextScope& result = ContextScope::Handle(); |
{ |
- RawObject* raw = Object::Allocate(ContextScope::kInstanceKind, |
+ RawObject* raw = Object::Allocate(ContextScope::kClassId, |
size, |
Heap::kOld); |
NoGCScope no_gc; |
@@ -7620,7 +7395,7 @@ |
void ICData::WriteSentinel() const { |
- const Smi& sentinel_value = Smi::Handle(Smi::New(kIllegalObjectKind)); |
+ const Smi& sentinel_value = Smi::Handle(Smi::New(kIllegalCid)); |
const Array& data = Array::Handle(ic_data()); |
for (intptr_t i = 1; i <= TestEntryLength(); i++) { |
data.SetAt(data.Length() - i, sentinel_value); |
@@ -7640,8 +7415,8 @@ |
WriteSentinel(); |
intptr_t data_pos = old_num * TestEntryLength(); |
for (intptr_t i = 0; i < class_ids.length(); i++) { |
- // kIllegalObjectKind is used as terminating value, do not add it. |
- ASSERT(class_ids[i] != kIllegalObjectKind); |
+ // kIllegalCid is used as terminating value, do not add it. |
+ ASSERT(class_ids[i] != kIllegalCid); |
data.SetAt(data_pos++, Smi::Handle(Smi::New(class_ids[i]))); |
} |
ASSERT(!target.IsNull()); |
@@ -7652,7 +7427,7 @@ |
void ICData::AddReceiverCheck(intptr_t receiver_class_id, |
const Function& target) const { |
ASSERT(num_args_tested() == 1); // Otherwise use 'AddCheck'. |
- ASSERT(receiver_class_id != kIllegalObjectKind); |
+ ASSERT(receiver_class_id != kIllegalCid); |
ASSERT(!target.IsNull()); |
const intptr_t old_num = NumberOfChecks(); |
@@ -7662,10 +7437,10 @@ |
set_ic_data(data); |
WriteSentinel(); |
intptr_t data_pos = old_num * TestEntryLength(); |
- if ((receiver_class_id == kSmi) && (data_pos > 0)) { |
- // Instert kSmi in position 0. |
+ if ((receiver_class_id == kSmiCid) && (data_pos > 0)) { |
+ // Instert kSmiCid in position 0. |
const intptr_t zero_class_id = GetReceiverClassIdAt(0); |
- ASSERT(zero_class_id != kSmi); // Simple duplicate entry check. |
+ ASSERT(zero_class_id != kSmiCid); // Simple duplicate entry check. |
const Function& zero_target = Function::Handle(GetTargetAt(0)); |
data.SetAt(0, Smi::Handle(Smi::New(receiver_class_id))); |
data.SetAt(1, target); |
@@ -7778,7 +7553,7 @@ |
ICData& result = ICData::Handle(); |
{ |
// IC data objects are long living objects, allocate them in old generation. |
- RawObject* raw = Object::Allocate(ICData::kInstanceKind, |
+ RawObject* raw = Object::Allocate(ICData::kClassId, |
ICData::InstanceSize(), |
Heap::kOld); |
NoGCScope no_gc; |
@@ -7804,7 +7579,7 @@ |
{ |
// SubtypeTestCache objects are long living objects, allocate them in the |
// old generation. |
- RawObject* raw = Object::Allocate(SubtypeTestCache::kInstanceKind, |
+ RawObject* raw = Object::Allocate(SubtypeTestCache::kClassId, |
SubtypeTestCache::InstanceSize(), |
Heap::kOld); |
NoGCScope no_gc; |
@@ -7887,7 +7662,7 @@ |
ASSERT(Object::api_error_class() != Class::null()); |
ApiError& result = ApiError::Handle(); |
{ |
- RawObject* raw = Object::Allocate(ApiError::kInstanceKind, |
+ RawObject* raw = Object::Allocate(ApiError::kClassId, |
ApiError::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -7918,7 +7693,7 @@ |
ASSERT(Object::language_error_class() != Class::null()); |
LanguageError& result = LanguageError::Handle(); |
{ |
- RawObject* raw = Object::Allocate(LanguageError::kInstanceKind, |
+ RawObject* raw = Object::Allocate(LanguageError::kClassId, |
LanguageError::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -7951,7 +7726,7 @@ |
ASSERT(Object::unhandled_exception_class() != Class::null()); |
UnhandledException& result = UnhandledException::Handle(); |
{ |
- RawObject* raw = Object::Allocate(UnhandledException::kInstanceKind, |
+ RawObject* raw = Object::Allocate(UnhandledException::kClassId, |
UnhandledException::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -8012,7 +7787,7 @@ |
ASSERT(Object::unwind_error_class() != Class::null()); |
UnwindError& result = UnwindError::Handle(); |
{ |
- RawObject* raw = Object::Allocate(UnwindError::kInstanceKind, |
+ RawObject* raw = Object::Allocate(UnwindError::kClassId, |
UnwindError::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -8427,7 +8202,7 @@ |
ASSERT(Isolate::Current()->object_store()->mint_class() != Class::null()); |
Mint& result = Mint::Handle(); |
{ |
- RawObject* raw = Object::Allocate(Mint::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Mint::kClassId, |
Mint::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -8554,7 +8329,7 @@ |
ASSERT(Isolate::Current()->object_store()->double_class() != Class::null()); |
Double& result = Double::Handle(); |
{ |
- RawObject* raw = Object::Allocate(Double::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Double::kClassId, |
Double::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -8717,7 +8492,7 @@ |
ASSERT(Isolate::Current()->object_store()->bigint_class() != Class::null()); |
Bigint& result = Bigint::Handle(); |
{ |
- RawObject* raw = Object::Allocate(Bigint::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Bigint::kClassId, |
Bigint::InstanceSize(length), |
space); |
NoGCScope no_gc; |
@@ -9480,7 +9255,7 @@ |
} |
OneByteString& result = OneByteString::Handle(); |
{ |
- RawObject* raw = Object::Allocate(OneByteString::kInstanceKind, |
+ RawObject* raw = Object::Allocate(OneByteString::kClassId, |
OneByteString::InstanceSize(len), |
space); |
NoGCScope no_gc; |
@@ -9622,7 +9397,7 @@ |
} |
TwoByteString& result = TwoByteString::Handle(); |
{ |
- RawObject* raw = Object::Allocate(TwoByteString::kInstanceKind, |
+ RawObject* raw = Object::Allocate(TwoByteString::kClassId, |
TwoByteString::InstanceSize(len), |
space); |
NoGCScope no_gc; |
@@ -9755,7 +9530,7 @@ |
} |
FourByteString& result = FourByteString::Handle(); |
{ |
- RawObject* raw = Object::Allocate(FourByteString::kInstanceKind, |
+ RawObject* raw = Object::Allocate(FourByteString::kClassId, |
FourByteString::InstanceSize(len), |
space); |
NoGCScope no_gc; |
@@ -9868,7 +9643,7 @@ |
ExternalStringData<uint8_t>* external_data = |
new ExternalStringData<uint8_t>(data, peer, callback); |
{ |
- RawObject* raw = Object::Allocate(ExternalOneByteString::kInstanceKind, |
+ RawObject* raw = Object::Allocate(ExternalOneByteString::kClassId, |
ExternalOneByteString::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -9919,7 +9694,7 @@ |
ExternalStringData<uint16_t>* external_data = |
new ExternalStringData<uint16_t>(data, peer, callback); |
{ |
- RawObject* raw = Object::Allocate(ExternalTwoByteString::kInstanceKind, |
+ RawObject* raw = Object::Allocate(ExternalTwoByteString::kClassId, |
ExternalTwoByteString::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -9961,7 +9736,7 @@ |
ExternalStringData<uint32_t>* external_data = |
new ExternalStringData<uint32_t>(data, peer, callback); |
{ |
- RawObject* raw = Object::Allocate(ExternalFourByteString::kInstanceKind, |
+ RawObject* raw = Object::Allocate(ExternalFourByteString::kClassId, |
ExternalFourByteString::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -10002,7 +9777,7 @@ |
{ |
// Since the two boolean instances are singletons we allocate them straight |
// in the old generation. |
- RawObject* raw = Object::Allocate(Bool::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Bool::kClassId, |
Bool::InstanceSize(), |
Heap::kOld); |
NoGCScope no_gc; |
@@ -10131,7 +9906,7 @@ |
// Update the size in the header field and length of the array object. |
uword tags = array.raw_ptr()->tags_; |
- ASSERT(kArray == RawObject::ClassIdTag::decode(tags)); |
+ ASSERT(kArrayCid == RawObject::ClassIdTag::decode(tags)); |
tags = RawObject::SizeTag::update(used_size, tags); |
array.raw_ptr()->tags_ = tags; |
array.SetLength(used_len); |
@@ -10288,7 +10063,7 @@ |
!= Class::null()); |
GrowableObjectArray& result = GrowableObjectArray::Handle(); |
{ |
- RawObject* raw = Object::Allocate(GrowableObjectArray::kInstanceKind, |
+ RawObject* raw = Object::Allocate(GrowableObjectArray::kClassId, |
GrowableObjectArray::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -10990,7 +10765,7 @@ |
Class::null()); |
Stacktrace& result = Stacktrace::Handle(); |
{ |
- RawObject* raw = Object::Allocate(Stacktrace::kInstanceKind, |
+ RawObject* raw = Object::Allocate(Stacktrace::kClassId, |
Stacktrace::InstanceSize(), |
space); |
NoGCScope no_gc; |
@@ -11115,7 +10890,7 @@ |
} |
JSRegExp& result = JSRegExp::Handle(); |
{ |
- RawObject* raw = Object::Allocate(JSRegExp::kInstanceKind, |
+ RawObject* raw = Object::Allocate(JSRegExp::kClassId, |
JSRegExp::InstanceSize(len), |
space); |
NoGCScope no_gc; |