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

Unified Diff: vm/object.cc

Issue 11745022: - Make Boolean 'true' and 'false' singleton VM isolate objects. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 7 years, 12 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/object_store.h » ('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 16591)
+++ vm/object.cc (working copy)
@@ -64,6 +64,8 @@
Array* Object::empty_array_ = NULL;
Instance* Object::sentinel_ = NULL;
Instance* Object::transition_sentinel_ = NULL;
+Bool* Object::bool_true_ = NULL;
+Bool* Object::bool_false_ = NULL;
RawObject* Object::null_ = reinterpret_cast<RawObject*>(RAW_NULL);
RawClass* Object::class_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
@@ -246,6 +248,8 @@
sentinel_ = reinterpret_cast<Instance*>(Dart::AllocateReadOnlyHandle());
transition_sentinel_ =
reinterpret_cast<Instance*>(Dart::AllocateReadOnlyHandle());
+ bool_true_ = reinterpret_cast<Bool*>(Dart::AllocateReadOnlyHandle());
+ bool_false_ = reinterpret_cast<Bool*>(Dart::AllocateReadOnlyHandle());
Isolate* isolate = Isolate::Current();
Heap* heap = isolate->heap();
@@ -427,6 +431,12 @@
InitializeObject(address, kArrayCid, Array::InstanceSize(0));
empty_array_->raw()->ptr()->length_ = Smi::New(0);
}
+
+ // Allocate and initialize singleton true and false boolean objects.
+ cls = Class::New<Bool>();
+ isolate->object_store()->set_bool_class(cls);
+ *bool_true_ = Bool::New(true);
+ *bool_false_ = Bool::New(false);
}
@@ -897,13 +907,6 @@
type = Type::NewNonParameterizedType(cls);
object_store->set_dynamic_type(type);
- // Allocate pre-initialized values.
- Bool& bool_value = Bool::Handle();
- bool_value = Bool::New(true);
- object_store->set_true_value(bool_value);
- bool_value = Bool::New(false);
- object_store->set_false_value(bool_value);
-
// Setup some default native field classes which can be extended for
// specifying native fields in dart classes.
Library::InitNativeWrappersLibrary(isolate);
@@ -1131,13 +1134,6 @@
cls = Class::New<WeakProperty>();
object_store->set_weak_property_class(cls);
-
- // Allocate pre-initialized values.
- Bool& bool_value = Bool::Handle();
- bool_value = Bool::New(true);
- object_store->set_true_value(bool_value);
- bool_value = Bool::New(false);
- object_store->set_false_value(bool_value);
}
@@ -11287,16 +11283,6 @@
}
-RawBool* Bool::True() {
- return Isolate::Current()->object_store()->true_value();
-}
-
-
-RawBool* Bool::False() {
- return Isolate::Current()->object_store()->false_value();
-}
-
-
RawBool* Bool::New(bool value) {
ASSERT(Isolate::Current()->object_store()->bool_class() != Class::null());
Bool& result = Bool::Handle();
@@ -11310,6 +11296,7 @@
result ^= raw;
}
result.set_value(value);
+ result.SetCanonical();
return result.raw();
}
« no previous file with comments | « vm/object.h ('k') | vm/object_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698