Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 514d4a42e53afda47ae5a7d463f07608cc0bd733..e9dfe6ca55b94b8a923137b3cdfbcd47355ae79e 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -664,12 +664,13 @@ enum CompareResult { |
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); \ |
+class AccessorPair; |
class DictionaryElementsAccessor; |
class ElementsAccessor; |
+class Failure; |
class FixedArrayBase; |
class ObjectVisitor; |
class StringStream; |
-class Failure; |
struct ValueInfo : public Malloced { |
ValueInfo() : type(FIRST_TYPE), ptr(NULL), str(NULL), number(0) { } |
@@ -1608,6 +1609,14 @@ class JSObject: public JSReceiver { |
Object* getter, |
Object* setter, |
PropertyAttributes attributes); |
+ // Try to define a single accessor paying attention to map transitions. |
+ // Returns a JavaScript null if this was not possible and we have to use the |
+ // slow case. Note that we can fail due to allocations, too. |
+ MUST_USE_RESULT MaybeObject* DefineFastAccessor( |
+ String* name, |
+ AccessorComponent component, |
+ Object* accessor, |
+ PropertyAttributes attributes); |
Object* LookupAccessor(String* name, AccessorComponent component); |
MUST_USE_RESULT MaybeObject* DefineAccessor(AccessorInfo* info); |
@@ -8100,6 +8109,18 @@ class AccessorPair: public Struct { |
MUST_USE_RESULT MaybeObject* CopyWithoutTransitions(); |
+ Object* get(AccessorComponent component) { |
+ return component == ACCESSOR_GETTER ? getter() : setter(); |
+ } |
+ |
+ void set(AccessorComponent component, Object* value) { |
+ if (component == ACCESSOR_GETTER) { |
+ set_getter(value); |
+ } else { |
+ set_setter(value); |
+ } |
+ } |
+ |
// Note: Returns undefined instead in case of a hole. |
Object* GetComponent(AccessorComponent component); |