| 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);
|
|
|
|
|