| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 225a7db42e0cfab92c786cea07095731304ffa22..630942232a96893f9d1eba99dea97b95b126972f 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -77,6 +77,7 @@
|
| // - FixedArray
|
| // - DescriptorArray
|
| // - LiteralsArray
|
| +// - BindingsArray
|
| // - HashTable
|
| // - Dictionary
|
| // - StringTable
|
| @@ -941,6 +942,7 @@ template <class C> inline bool Is(Object* obj);
|
| V(LayoutDescriptor) \
|
| V(Map) \
|
| V(DescriptorArray) \
|
| + V(BindingsArray) \
|
| V(TransitionArray) \
|
| V(LiteralsArray) \
|
| V(TypeFeedbackVector) \
|
| @@ -4605,6 +4607,48 @@ class LiteralsArray : public FixedArray {
|
| };
|
|
|
|
|
| +// A bindings array contains the bindings for a bound function. It also holds
|
| +// the type feedback vector.
|
| +class BindingsArray : public FixedArray {
|
| + public:
|
| + inline TypeFeedbackVector* feedback_vector() const;
|
| + inline void set_feedback_vector(TypeFeedbackVector* vector);
|
| +
|
| + inline JSReceiver* bound_function() const;
|
| + inline void set_bound_function(JSReceiver* function);
|
| + inline Object* bound_this() const;
|
| + inline void set_bound_this(Object* bound_this);
|
| +
|
| + inline Object* binding(int binding_index) const;
|
| + inline void set_binding(int binding_index, Object* binding);
|
| + inline int bindings_count() const;
|
| +
|
| + static Handle<BindingsArray> New(Isolate* isolate,
|
| + Handle<TypeFeedbackVector> vector,
|
| + Handle<JSReceiver> bound_function,
|
| + Handle<Object> bound_this,
|
| + int number_of_bindings);
|
| +
|
| + static Handle<JSArray> CreateBoundArguments(Handle<BindingsArray> bindings);
|
| + static Handle<JSArray> CreateRuntimeBindings(Handle<BindingsArray> bindings);
|
| +
|
| + DECLARE_CAST(BindingsArray)
|
| +
|
| + private:
|
| + static const int kVectorIndex = 0;
|
| + static const int kBoundFunctionIndex = 1;
|
| + static const int kBoundThisIndex = 2;
|
| + static const int kFirstBindingIndex = 3;
|
| +
|
| + inline Object* get(int index) const;
|
| + inline void set(int index, Object* value);
|
| + inline void set(int index, Smi* value);
|
| + inline void set(int index, Object* value, WriteBarrierMode mode);
|
| +
|
| + inline int length() const;
|
| +};
|
| +
|
| +
|
| // HandlerTable is a fixed array containing entries for exception handlers in
|
| // the code object it is associated with. The tables comes in two flavors:
|
| // 1) Based on ranges: Used for unoptimized code. Contains one entry per
|
| @@ -7175,8 +7219,8 @@ class JSFunction: public JSObject {
|
| inline LiteralsArray* literals();
|
| inline void set_literals(LiteralsArray* literals);
|
|
|
| - inline FixedArray* function_bindings();
|
| - inline void set_function_bindings(FixedArray* bindings);
|
| + inline BindingsArray* function_bindings();
|
| + inline void set_function_bindings(BindingsArray* bindings);
|
|
|
| // The initial map for an object created by this constructor.
|
| inline Map* initial_map();
|
| @@ -7263,11 +7307,6 @@ class JSFunction: public JSObject {
|
| static const int kNextFunctionLinkOffset = kNonWeakFieldsEndOffset;
|
| static const int kSize = kNextFunctionLinkOffset + kPointerSize;
|
|
|
| - // Layout of the bound-function binding array.
|
| - static const int kBoundFunctionIndex = 0;
|
| - static const int kBoundThisIndex = 1;
|
| - static const int kBoundArgumentsStartIndex = 2;
|
| -
|
| private:
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunction);
|
| };
|
|
|