Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 0d1a69cb9882985fa282c4e2f3dc4a5fa98c9523..359f94509c39e4d9fac26092f90c3c3b1c780827 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -769,6 +769,13 @@ class MaybeObject BASE_EMBEDDED { |
return true; |
} |
+ template<typename T> |
+ inline bool ToHandle(Handle<T>* obj) { |
+ if (IsFailure()) return false; |
+ *obj = handle(T::cast(reinterpret_cast<Object*>(this))); |
+ return true; |
+ } |
+ |
#ifdef OBJECT_PRINT |
// Prints this object with details. |
inline void Print() { |
@@ -1686,6 +1693,7 @@ class JSObject: public JSReceiver { |
Handle<Object> getter, |
Handle<Object> setter, |
PropertyAttributes attributes); |
+ // Can cause GC. |
MUST_USE_RESULT MaybeObject* DefineAccessor(String* name, |
Object* getter, |
Object* setter, |
@@ -1761,6 +1769,7 @@ class JSObject: public JSReceiver { |
static Handle<Object> DeleteProperty(Handle<JSObject> obj, |
Handle<String> name); |
+ // Can cause GC. |
MUST_USE_RESULT MaybeObject* DeleteProperty(String* name, DeleteMode mode); |
static Handle<Object> DeleteElement(Handle<JSObject> obj, uint32_t index); |
@@ -2008,7 +2017,7 @@ class JSObject: public JSReceiver { |
Object* value, |
PropertyAttributes attributes); |
- // Add a property to an object. |
+ // Add a property to an object. May cause GC. |
MUST_USE_RESULT MaybeObject* AddProperty( |
String* name, |
Object* value, |
@@ -2276,6 +2285,11 @@ class JSObject: public JSReceiver { |
MUST_USE_RESULT MaybeObject* SetHiddenPropertiesHashTable( |
Object* value); |
+ // Enqueue change record for Object.observe. May cause GC. |
+ void EnqueueChangeRecord(const char* type, |
+ Handle<String> name, |
+ Handle<Object> old_value); |
+ |
DISALLOW_IMPLICIT_CONSTRUCTORS(JSObject); |
}; |
@@ -4701,6 +4715,7 @@ class Map: public HeapObject { |
class FunctionWithPrototype: public BitField<bool, 23, 1> {}; |
class DictionaryMap: public BitField<bool, 24, 1> {}; |
class OwnsDescriptors: public BitField<bool, 25, 1> {}; |
+ class IsObserved: public BitField<bool, 26, 1> {}; |
// Tells whether the object in the prototype property will be used |
// for instances created from this function. If the prototype |
@@ -4968,6 +4983,8 @@ class Map: public HeapObject { |
inline bool owns_descriptors(); |
inline void set_owns_descriptors(bool is_shared); |
+ inline bool is_observed(); |
+ inline void set_is_observed(bool is_observed); |
MUST_USE_RESULT MaybeObject* RawCopy(int instance_size); |
MUST_USE_RESULT MaybeObject* CopyWithPreallocatedFieldDescriptors(); |