| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 7ea36cc4545d4a7c5f76c9d1394075fc81892791..225a7db42e0cfab92c786cea07095731304ffa22 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -76,6 +76,7 @@
|
| // - BytecodeArray
|
| // - FixedArray
|
| // - DescriptorArray
|
| +// - LiteralsArray
|
| // - HashTable
|
| // - Dictionary
|
| // - StringTable
|
| @@ -852,6 +853,7 @@ class FunctionLiteral;
|
| class GlobalObject;
|
| class JSBuiltinsObject;
|
| class LayoutDescriptor;
|
| +class LiteralsArray;
|
| class LookupIterator;
|
| class ObjectHashTable;
|
| class ObjectVisitor;
|
| @@ -940,6 +942,7 @@ template <class C> inline bool Is(Object* obj);
|
| V(Map) \
|
| V(DescriptorArray) \
|
| V(TransitionArray) \
|
| + V(LiteralsArray) \
|
| V(TypeFeedbackVector) \
|
| V(DeoptimizationInputData) \
|
| V(DeoptimizationOutputData) \
|
| @@ -4568,6 +4571,40 @@ class DeoptimizationOutputData: public FixedArray {
|
| };
|
|
|
|
|
| +// A literals array contains the literals for a JSFunction. It also holds
|
| +// the type feedback vector.
|
| +class LiteralsArray : public FixedArray {
|
| + public:
|
| + static const int kVectorIndex = 0;
|
| + static const int kFirstLiteralIndex = 1;
|
| + static const int kOffsetToFirstLiteral =
|
| + FixedArray::kHeaderSize + kPointerSize;
|
| +
|
| + static int OffsetOfLiteralAt(int index) {
|
| + return SizeFor(index + kFirstLiteralIndex);
|
| + }
|
| +
|
| + inline TypeFeedbackVector* feedback_vector() const;
|
| + inline void set_feedback_vector(TypeFeedbackVector* vector);
|
| + inline Object* literal(int literal_index) const;
|
| + inline void set_literal(int literal_index, Object* literal);
|
| + inline int literals_count() const;
|
| +
|
| + static Handle<LiteralsArray> New(Isolate* isolate,
|
| + Handle<TypeFeedbackVector> vector,
|
| + int number_of_literals,
|
| + PretenureFlag pretenure);
|
| +
|
| + DECLARE_CAST(LiteralsArray)
|
| +
|
| + private:
|
| + 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);
|
| +};
|
| +
|
| +
|
| // 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
|
| @@ -6292,7 +6329,7 @@ enum BuiltinFunctionId {
|
| // that both {code} and {literals} can be NULL to pass search result status.
|
| struct CodeAndLiterals {
|
| Code* code; // Cached optimized code.
|
| - FixedArray* literals; // Cached literals array.
|
| + LiteralsArray* literals; // Cached literals array.
|
| };
|
|
|
|
|
| @@ -6339,7 +6376,7 @@ class SharedFunctionInfo: public HeapObject {
|
| static void AddToOptimizedCodeMap(Handle<SharedFunctionInfo> shared,
|
| Handle<Context> native_context,
|
| Handle<HeapObject> code,
|
| - Handle<FixedArray> literals,
|
| + Handle<LiteralsArray> literals,
|
| BailoutId osr_ast_id);
|
|
|
| // Set up the link between shared function info and the script. The shared
|
| @@ -7135,8 +7172,8 @@ class JSFunction: public JSObject {
|
| // arguments. Bound functions never contain literals.
|
| DECL_ACCESSORS(literals_or_bindings, FixedArray)
|
|
|
| - inline FixedArray* literals();
|
| - inline void set_literals(FixedArray* literals);
|
| + inline LiteralsArray* literals();
|
| + inline void set_literals(LiteralsArray* literals);
|
|
|
| inline FixedArray* function_bindings();
|
| inline void set_function_bindings(FixedArray* bindings);
|
|
|