Index: vm/object.h |
=================================================================== |
--- vm/object.h (revision 16415) |
+++ vm/object.h (working copy) |
@@ -210,6 +210,8 @@ |
return VMHandles::IsZoneHandle(reinterpret_cast<uword>(this)); |
} |
+ bool IsReadOnlyHandle() const; |
+ |
bool IsNotTemporaryScopedHandle() const; |
static RawObject* Clone(const Object& src, Heap::Space space = Heap::kNew); |
@@ -248,15 +250,24 @@ |
} |
static RawObject* null() { return null_; } |
- static RawArray* empty_array() { return empty_array_; } |
+ static const Array& empty_array() { |
+ ASSERT(empty_array_ != NULL); |
+ return *empty_array_; |
+ } |
// The sentinel is a value that cannot be produced by Dart code. |
// It can be used to mark special values, for example to distinguish |
// "uninitialized" fields. |
- static RawInstance* sentinel() { return sentinel_; } |
+ static const Instance& sentinel() { |
+ ASSERT(sentinel_ != NULL); |
+ return *sentinel_; |
+ } |
// Value marking that we are transitioning from sentinel, e.g., computing |
// a field value. Used to detect circular initialization. |
- static RawInstance* transition_sentinel() { return transition_sentinel_; } |
+ static const Instance& transition_sentinel() { |
+ ASSERT(transition_sentinel_ != NULL); |
+ return *transition_sentinel_; |
+ } |
static RawClass* class_class() { return class_class_; } |
static RawClass* null_class() { return null_class_; } |
@@ -400,9 +411,6 @@ |
// The static values below are singletons shared between the different |
// isolates. They are all allocated in the non-GC'd Dart::vm_isolate_. |
static RawObject* null_; |
- static RawArray* empty_array_; |
- static RawInstance* sentinel_; |
- static RawInstance* transition_sentinel_; |
static RawClass* class_class_; // Class of the Class vm object. |
static RawClass* null_class_; // Class of the null object. |
@@ -440,6 +448,12 @@ |
static RawClass* unhandled_exception_class_; // Class of UnhandledException. |
static RawClass* unwind_error_class_; // Class of UnwindError. |
+ // The static values below are read-only handle pointers for singleton |
+ // objects that are shared between the different isolates. |
+ static Array* empty_array_; |
+ static Instance* sentinel_; |
+ static Instance* transition_sentinel_; |
+ |
friend void ClassTable::Register(const Class& cls); |
friend void RawObject::Validate(Isolate* isolate) const; |
friend class Closure; |
@@ -2552,7 +2566,7 @@ |
const String& CommentAt(intptr_t idx) const; |
private: |
- explicit Comments(RawArray* comments); |
+ explicit Comments(const Array& comments); |
// Layout of entries describing comments. |
enum { |