| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index b95fa574a05c9af262f5fbd64a206a7c203d682b..5dfe03737527b3a3a6ce098e02cf294073a88970 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -5038,7 +5038,7 @@ class SharedFunctionInfo: public HeapObject {
|
| public:
|
| // Constants for optimizing codegen for strict mode function and
|
| // native tests.
|
| - // Allows to use byte-widgh instructions.
|
| + // Allows to use byte-width instructions.
|
| static const int kStrictModeBitWithinByte =
|
| (kStrictModeFunction + kCompilerHintsSmiTagSize) % kBitsPerByte;
|
|
|
| @@ -5116,7 +5116,8 @@ class JSFunction: public JSObject {
|
| // Check whether or not this function is inlineable.
|
| bool IsInlineable();
|
|
|
| - // [literals]: Fixed array holding the materialized literals.
|
| + // [literals_or_bindings]: Fixed array holding either
|
| + // the materialized literals or the bindings of a bound function.
|
| //
|
| // If the function contains object, regexp or array literals, the
|
| // literals array prefix contains the object, regexp, and array
|
| @@ -5125,7 +5126,17 @@ class JSFunction: public JSObject {
|
| // or array functions. Performing a dynamic lookup, we might end up
|
| // using the functions from a new context that we should not have
|
| // access to.
|
| - DECL_ACCESSORS(literals, FixedArray)
|
| + //
|
| + // On bound functions, the array is a (copy-on-write) fixed-array containing
|
| + // the function that was bound, bound this-value and any bound
|
| + // arguments. Bound functions never contain literals.
|
| + DECL_ACCESSORS(literals_or_bindings, FixedArray)
|
| +
|
| + inline FixedArray* literals();
|
| + inline void set_literals(FixedArray* literals);
|
| +
|
| + inline FixedArray* function_bindings();
|
| + inline void set_function_bindings(FixedArray* bindings);
|
|
|
| // The initial map for an object created by this constructor.
|
| inline Map* initial_map();
|
| @@ -5213,6 +5224,11 @@ class JSFunction: public JSObject {
|
| static const int kLiteralsPrefixSize = 1;
|
| static const int kLiteralGlobalContextIndex = 0;
|
|
|
| + // 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);
|
| };
|
|
|