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

Unified Diff: vm/object.cc

Issue 11293031: Remove some unnecessary class handle creations. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 2 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
« no previous file with comments | « vm/object.h ('k') | vm/raw_object_snapshot.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/object.cc
===================================================================
--- vm/object.cc (revision 14311)
+++ vm/object.cc (working copy)
@@ -11056,21 +11056,19 @@
RawArray* Array::New(intptr_t len, Heap::Space space) {
- ObjectStore* object_store = Isolate::Current()->object_store();
- ASSERT(object_store->array_class() != Class::null());
- Class& cls = Class::Handle(object_store->array_class());
- return New(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->array_class() != Class::null());
+ return New(kClassId, len, space);
}
-RawArray* Array::New(const Class& cls, intptr_t len, Heap::Space space) {
+RawArray* Array::New(intptr_t class_id, intptr_t len, Heap::Space space) {
if (len < 0 || len > Array::kMaxElements) {
// This should be caught before we reach here.
FATAL1("Fatal error in Array::New: invalid len %"Pd"\n", len);
}
Array& result = Array::Handle();
{
- RawObject* raw = Object::Allocate(cls.id(),
+ RawObject* raw = Object::Allocate(class_id,
Array::InstanceSize(len),
space);
NoGCScope no_gc;
@@ -11082,15 +11080,10 @@
void Array::MakeImmutable() const {
- Isolate* isolate = Isolate::Current();
- const Class& cls = Class::Handle(
- isolate, isolate->object_store()->immutable_array_class());
- {
- NoGCScope no_gc;
- uword tags = raw_ptr()->tags_;
- tags = RawObject::ClassIdTag::update(cls.id(), tags);
- raw_ptr()->tags_ = tags;
- }
+ NoGCScope no_gc;
+ uword tags = raw_ptr()->tags_;
+ tags = RawObject::ClassIdTag::update(kImmutableArrayCid, tags);
+ raw_ptr()->tags_ = tags;
}
@@ -11151,10 +11144,9 @@
// As we have enough space to use an array object, update the leftover
// space as an Array object.
RawArray* raw = reinterpret_cast<RawArray*>(RawObject::FromAddr(addr));
- const Class& cls = Class::Handle(isolate->object_store()->array_class());
tags = 0;
tags = RawObject::SizeTag::update(leftover_size, tags);
- tags = RawObject::ClassIdTag::update(cls.id(), tags);
+ tags = RawObject::ClassIdTag::update(kArrayCid, tags);
raw->ptr()->tags_ = tags;
intptr_t leftover_len =
((leftover_size - Array::InstanceSize(0)) / kWordSize);
@@ -11176,10 +11168,9 @@
RawImmutableArray* ImmutableArray::New(intptr_t len,
Heap::Space space) {
- ObjectStore* object_store = Isolate::Current()->object_store();
- ASSERT(object_store->immutable_array_class() != Class::null());
- Class& cls = Class::Handle(object_store->immutable_array_class());
- return reinterpret_cast<RawImmutableArray*>(Array::New(cls, len, space));
+ ASSERT(Isolate::Current()->object_store()->immutable_array_class() !=
+ Class::null());
+ return reinterpret_cast<RawImmutableArray*>(Array::New(kClassId, len, space));
}
@@ -11355,7 +11346,7 @@
template<typename HandleT, typename RawT, typename ElementT>
-RawT* ByteArray::NewExternalImpl(const Class& cls,
+RawT* ByteArray::NewExternalImpl(intptr_t class_id,
ElementT* data,
intptr_t len,
void* peer,
@@ -11370,7 +11361,7 @@
ExternalByteArrayData<ElementT>* external_data =
new ExternalByteArrayData<ElementT>(data, peer, callback);
{
- RawObject* raw = Object::Allocate(cls.id(), HandleT::InstanceSize(), space);
+ RawObject* raw = Object::Allocate(class_id, HandleT::InstanceSize(), space);
NoGCScope no_gc;
result ^= raw;
result.SetLength(len);
@@ -11403,14 +11394,14 @@
template<typename HandleT, typename RawT>
-RawT* ByteArray::NewImpl(const Class& cls, intptr_t len, Heap::Space space) {
+RawT* ByteArray::NewImpl(intptr_t class_id, intptr_t len, Heap::Space space) {
if (len < 0 || len > HandleT::kMaxElements) {
// This should be caught before we reach here.
FATAL1("Fatal error in ByteArray::NewImpl: invalid len %"Pd"\n", len);
}
HandleT& result = HandleT::Handle();
{
- RawObject* raw = Object::Allocate(cls.id(),
+ RawObject* raw = Object::Allocate(class_id,
HandleT::InstanceSize(len),
space);
NoGCScope no_gc;
@@ -11425,7 +11416,7 @@
template<typename HandleT, typename RawT, typename ElementT>
-RawT* ByteArray::NewImpl(const Class& cls,
+RawT* ByteArray::NewImpl(intptr_t class_id,
const ElementT* data,
intptr_t len,
Heap::Space space) {
@@ -11435,7 +11426,7 @@
}
HandleT& result = HandleT::Handle();
{
- RawObject* raw = Object::Allocate(cls.id(),
+ RawObject* raw = Object::Allocate(class_id,
HandleT::InstanceSize(len),
space);
NoGCScope no_gc;
@@ -11450,22 +11441,18 @@
RawInt8Array* Int8Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int8_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int8_array_class());
- return NewImpl<Int8Array, RawInt8Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->int8_array_class() !=
+ Class::null());
+ return NewImpl<Int8Array, RawInt8Array>(kClassId, len, space);
}
RawInt8Array* Int8Array::New(const int8_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int8_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int8_array_class());
- return NewImpl<Int8Array, RawInt8Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->int8_array_class() !=
+ Class::null());
+ return NewImpl<Int8Array, RawInt8Array>(kClassId, data, len, space);
}
@@ -11475,22 +11462,18 @@
RawUint8Array* Uint8Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint8_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint8_array_class());
- return NewImpl<Uint8Array, RawUint8Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint8_array_class() !=
+ Class::null());
+ return NewImpl<Uint8Array, RawUint8Array>(kClassId, len, space);
}
RawUint8Array* Uint8Array::New(const uint8_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint8_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint8_array_class());
- return NewImpl<Uint8Array, RawUint8Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint8_array_class() !=
+ Class::null());
+ return NewImpl<Uint8Array, RawUint8Array>(kClassId, data, len, space);
}
@@ -11500,22 +11483,18 @@
RawInt16Array* Int16Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int16_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int16_array_class());
- return NewImpl<Int16Array, RawInt16Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->int16_array_class() !=
+ Class::null());
+ return NewImpl<Int16Array, RawInt16Array>(kClassId, len, space);
}
RawInt16Array* Int16Array::New(const int16_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int16_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int16_array_class());
- return NewImpl<Int16Array, RawInt16Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->int16_array_class() !=
+ Class::null());
+ return NewImpl<Int16Array, RawInt16Array>(kClassId, data, len, space);
}
@@ -11525,22 +11504,18 @@
RawUint16Array* Uint16Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint16_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint16_array_class());
- return NewImpl<Uint16Array, RawUint16Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint16_array_class() !=
+ Class::null());
+ return NewImpl<Uint16Array, RawUint16Array>(kClassId, len, space);
}
RawUint16Array* Uint16Array::New(const uint16_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint16_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint16_array_class());
- return NewImpl<Uint16Array, RawUint16Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint16_array_class() !=
+ Class::null());
+ return NewImpl<Uint16Array, RawUint16Array>(kClassId, data, len, space);
}
@@ -11550,22 +11525,18 @@
RawInt32Array* Int32Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int32_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int32_array_class());
- return NewImpl<Int32Array, RawInt32Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->int32_array_class() !=
+ Class::null());
+ return NewImpl<Int32Array, RawInt32Array>(kClassId, len, space);
}
RawInt32Array* Int32Array::New(const int32_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int32_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int32_array_class());
- return NewImpl<Int32Array, RawInt32Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->int32_array_class() !=
+ Class::null());
+ return NewImpl<Int32Array, RawInt32Array>(kClassId, data, len, space);
}
@@ -11575,22 +11546,18 @@
RawUint32Array* Uint32Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint32_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint32_array_class());
- return NewImpl<Uint32Array, RawUint32Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint32_array_class() !=
+ Class::null());
+ return NewImpl<Uint32Array, RawUint32Array>(kClassId, len, space);
}
RawUint32Array* Uint32Array::New(const uint32_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint32_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint32_array_class());
- return NewImpl<Uint32Array, RawUint32Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint32_array_class() !=
+ Class::null());
+ return NewImpl<Uint32Array, RawUint32Array>(kClassId, data, len, space);
}
@@ -11600,22 +11567,18 @@
RawInt64Array* Int64Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int64_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int64_array_class());
- return NewImpl<Int64Array, RawInt64Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->int64_array_class() !=
+ Class::null());
+ return NewImpl<Int64Array, RawInt64Array>(kClassId, len, space);
}
RawInt64Array* Int64Array::New(const int64_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->int64_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->int64_array_class());
- return NewImpl<Int64Array, RawInt64Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->int64_array_class() !=
+ Class::null());
+ return NewImpl<Int64Array, RawInt64Array>(kClassId, data, len, space);
}
@@ -11625,22 +11588,18 @@
RawUint64Array* Uint64Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint64_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint64_array_class());
- return NewImpl<Uint64Array, RawUint64Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint64_array_class() !=
+ Class::null());
+ return NewImpl<Uint64Array, RawUint64Array>(kClassId, len, space);
}
RawUint64Array* Uint64Array::New(const uint64_t* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->uint64_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->uint64_array_class());
- return NewImpl<Uint64Array, RawUint64Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->uint64_array_class() !=
+ Class::null());
+ return NewImpl<Uint64Array, RawUint64Array>(kClassId, data, len, space);
}
@@ -11650,22 +11609,18 @@
RawFloat32Array* Float32Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->float32_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->float32_array_class());
- return NewImpl<Float32Array, RawFloat32Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->float32_array_class() !=
+ Class::null());
+ return NewImpl<Float32Array, RawFloat32Array>(kClassId, len, space);
}
RawFloat32Array* Float32Array::New(const float* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->float32_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->float32_array_class());
- return NewImpl<Float32Array, RawFloat32Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->float32_array_class() !=
+ Class::null());
+ return NewImpl<Float32Array, RawFloat32Array>(kClassId, data, len, space);
}
@@ -11675,22 +11630,18 @@
RawFloat64Array* Float64Array::New(intptr_t len, Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->float64_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->float64_array_class());
- return NewImpl<Float64Array, RawFloat64Array>(cls, len, space);
+ ASSERT(Isolate::Current()->object_store()->float64_array_class() !=
+ Class::null());
+ return NewImpl<Float64Array, RawFloat64Array>(kClassId, len, space);
}
RawFloat64Array* Float64Array::New(const double* data,
intptr_t len,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->float64_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->float64_array_class());
- return NewImpl<Float64Array, RawFloat64Array>(cls, data, len, space);
+ ASSERT(Isolate::Current()->object_store()->float64_array_class() !=
+ Class::null());
+ return NewImpl<Float64Array, RawFloat64Array>(kClassId, data, len, space);
}
@@ -11704,12 +11655,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_int8_array_class() != Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_int8_array_class());
+ ASSERT(Isolate::Current()->object_store()->external_int8_array_class() !=
+ Class::null());
return NewExternalImpl<ExternalInt8Array, RawExternalInt8Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11723,13 +11672,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_uint8_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_uint8_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_uint8_array_class());
return NewExternalImpl<ExternalUint8Array, RawExternalUint8Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11743,13 +11689,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_int16_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_int16_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_int16_array_class());
return NewExternalImpl<ExternalInt16Array, RawExternalInt16Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11763,13 +11706,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_uint16_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_uint16_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_uint16_array_class());
return NewExternalImpl<ExternalUint16Array, RawExternalUint16Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11783,13 +11723,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_int32_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_int32_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_int32_array_class());
return NewExternalImpl<ExternalInt32Array, RawExternalInt32Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11803,13 +11740,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_uint32_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_uint32_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_uint32_array_class());
return NewExternalImpl<ExternalUint32Array, RawExternalUint32Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11823,13 +11757,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_int64_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_int64_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_int64_array_class());
return NewExternalImpl<ExternalInt64Array, RawExternalInt64Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11843,13 +11774,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_uint64_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_uint64_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_uint64_array_class());
return NewExternalImpl<ExternalUint64Array, RawExternalUint64Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11863,13 +11791,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_float32_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_float32_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_float32_array_class());
return NewExternalImpl<ExternalFloat32Array, RawExternalFloat32Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
@@ -11883,13 +11808,10 @@
void* peer,
Dart_PeerFinalizer callback,
Heap::Space space) {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate->object_store()->external_float64_array_class() !=
+ ASSERT(Isolate::Current()->object_store()->external_float64_array_class() !=
Class::null());
- const Class& cls =
- Class::Handle(isolate->object_store()->external_float64_array_class());
return NewExternalImpl<ExternalFloat64Array, RawExternalFloat64Array>(
- cls, data, len, peer, callback, space);
+ kClassId, data, len, peer, callback, space);
}
« no previous file with comments | « vm/object.h ('k') | vm/raw_object_snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698