| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index be4652bed5894264ca48baea2205f8ecf8209078..6fb17acfcfcf73fce4152d092b1227abb55992ad 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -90,6 +90,7 @@
|
| // - Code
|
| // - Map
|
| // - Oddball
|
| +// - JSProxy
|
| // - Proxy
|
| // - SharedFunctionInfo
|
| // - Struct
|
| @@ -287,6 +288,7 @@ static const int kVariableSizeSentinel = 0;
|
| V(JS_GLOBAL_PROPERTY_CELL_TYPE) \
|
| \
|
| V(HEAP_NUMBER_TYPE) \
|
| + V(JS_PROXY_TYPE) \
|
| V(PROXY_TYPE) \
|
| V(BYTE_ARRAY_TYPE) \
|
| /* Note: the order of these external array */ \
|
| @@ -515,6 +517,7 @@ enum InstanceType {
|
| // objects.
|
| HEAP_NUMBER_TYPE,
|
| PROXY_TYPE,
|
| + JS_PROXY_TYPE,
|
| BYTE_ARRAY_TYPE,
|
| EXTERNAL_BYTE_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE
|
| EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE,
|
| @@ -720,6 +723,7 @@ class MaybeObject BASE_EMBEDDED {
|
| V(Proxy) \
|
| V(Boolean) \
|
| V(JSArray) \
|
| + V(JSProxy) \
|
| V(JSRegExp) \
|
| V(HashTable) \
|
| V(Dictionary) \
|
| @@ -3947,7 +3951,7 @@ class Map: public HeapObject {
|
|
|
|
|
| // An abstract superclass, a marker class really, for simple structure classes.
|
| -// It doesn't carry much functionality but allows struct classes to me
|
| +// It doesn't carry much functionality but allows struct classes to be
|
| // identified in the type system.
|
| class Struct: public HeapObject {
|
| public:
|
| @@ -6077,6 +6081,39 @@ class JSGlobalPropertyCell: public HeapObject {
|
| };
|
|
|
|
|
| +// The JSProxy describes EcmaScript Harmony proxies
|
| +class JSProxy: public HeapObject {
|
| + public:
|
| + // [handler]: The handler property.
|
| + DECL_ACCESSORS(handler, Object)
|
| +
|
| + // Casting.
|
| + static inline JSProxy* cast(Object* obj);
|
| +
|
| + // Dispatched behavior.
|
| +#ifdef OBJECT_PRINT
|
| + inline void JSProxyPrint() {
|
| + JSProxyPrint(stdout);
|
| + }
|
| + void JSProxyPrint(FILE* out);
|
| +#endif
|
| +#ifdef DEBUG
|
| + void JSProxyVerify();
|
| +#endif
|
| +
|
| + // Layout description.
|
| + static const int kHandlerOffset = HeapObject::kHeaderSize;
|
| + static const int kSize = kHandlerOffset + kPointerSize;
|
| +
|
| + typedef FixedBodyDescriptor<kHandlerOffset,
|
| + kHandlerOffset + kPointerSize,
|
| + kSize> BodyDescriptor;
|
| +
|
| + private:
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy);
|
| +};
|
| +
|
| +
|
|
|
| // Proxy describes objects pointing from JavaScript to C structures.
|
| // Since they cannot contain references to JS HeapObjects they can be
|
|
|