| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 80d1fd47d02ab60dd015704d7836b20bf9b9189a..18d52f9838099560e34fed4149a6d316e0946ceb 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -704,12 +704,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) { }
|
| @@ -1642,6 +1643,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);
|
| @@ -8101,6 +8110,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);
|
|
|
|
|