| 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 {
|
|
|