OLD | NEW |
---|---|
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
74 // - JSDate | 74 // - JSDate |
75 // - JSMessageObject | 75 // - JSMessageObject |
76 // - JSModuleNamespace | 76 // - JSModuleNamespace |
77 // - JSProxy | 77 // - JSProxy |
78 // - FixedArrayBase | 78 // - FixedArrayBase |
79 // - ByteArray | 79 // - ByteArray |
80 // - BytecodeArray | 80 // - BytecodeArray |
81 // - FixedArray | 81 // - FixedArray |
82 // - DescriptorArray | 82 // - DescriptorArray |
83 // - FrameArray | 83 // - FrameArray |
84 // - LiteralsArray | |
85 // - HashTable | 84 // - HashTable |
86 // - Dictionary | 85 // - Dictionary |
87 // - StringTable | 86 // - StringTable |
88 // - StringSet | 87 // - StringSet |
89 // - CompilationCacheTable | 88 // - CompilationCacheTable |
90 // - CodeCacheHashTable | 89 // - CodeCacheHashTable |
91 // - MapCache | 90 // - MapCache |
92 // - OrderedHashTable | 91 // - OrderedHashTable |
93 // - OrderedHashSet | 92 // - OrderedHashSet |
94 // - OrderedHashMap | 93 // - OrderedHashMap |
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
890 V(DEPENDENT_CODE_SUB_TYPE) \ | 889 V(DEPENDENT_CODE_SUB_TYPE) \ |
891 V(DICTIONARY_ELEMENTS_SUB_TYPE) \ | 890 V(DICTIONARY_ELEMENTS_SUB_TYPE) \ |
892 V(DICTIONARY_PROPERTIES_SUB_TYPE) \ | 891 V(DICTIONARY_PROPERTIES_SUB_TYPE) \ |
893 V(EMPTY_PROPERTIES_DICTIONARY_SUB_TYPE) \ | 892 V(EMPTY_PROPERTIES_DICTIONARY_SUB_TYPE) \ |
894 V(FAST_ELEMENTS_SUB_TYPE) \ | 893 V(FAST_ELEMENTS_SUB_TYPE) \ |
895 V(FAST_PROPERTIES_SUB_TYPE) \ | 894 V(FAST_PROPERTIES_SUB_TYPE) \ |
896 V(FAST_TEMPLATE_INSTANTIATIONS_CACHE_SUB_TYPE) \ | 895 V(FAST_TEMPLATE_INSTANTIATIONS_CACHE_SUB_TYPE) \ |
897 V(HANDLER_TABLE_SUB_TYPE) \ | 896 V(HANDLER_TABLE_SUB_TYPE) \ |
898 V(JS_COLLECTION_SUB_TYPE) \ | 897 V(JS_COLLECTION_SUB_TYPE) \ |
899 V(JS_WEAK_COLLECTION_SUB_TYPE) \ | 898 V(JS_WEAK_COLLECTION_SUB_TYPE) \ |
900 V(LITERALS_ARRAY_SUB_TYPE) \ | 899 V(LITERALS_ARRAY_SUB_TYPE) \ |
Michael Starzinger
2017/01/30 11:16:44
nit: I think we can drop this sub-type now.
mvstanton
2017/01/30 11:57:04
Done.
| |
901 V(MAP_CODE_CACHE_SUB_TYPE) \ | 900 V(MAP_CODE_CACHE_SUB_TYPE) \ |
902 V(NOSCRIPT_SHARED_FUNCTION_INFOS_SUB_TYPE) \ | 901 V(NOSCRIPT_SHARED_FUNCTION_INFOS_SUB_TYPE) \ |
903 V(NUMBER_STRING_CACHE_SUB_TYPE) \ | 902 V(NUMBER_STRING_CACHE_SUB_TYPE) \ |
904 V(OBJECT_TO_CODE_SUB_TYPE) \ | 903 V(OBJECT_TO_CODE_SUB_TYPE) \ |
905 V(OPTIMIZED_CODE_LITERALS_SUB_TYPE) \ | 904 V(OPTIMIZED_CODE_LITERALS_SUB_TYPE) \ |
906 V(OPTIMIZED_CODE_MAP_SUB_TYPE) \ | 905 V(OPTIMIZED_CODE_MAP_SUB_TYPE) \ |
907 V(PROTOTYPE_USERS_SUB_TYPE) \ | 906 V(PROTOTYPE_USERS_SUB_TYPE) \ |
908 V(REGEXP_MULTIPLE_CACHE_SUB_TYPE) \ | 907 V(REGEXP_MULTIPLE_CACHE_SUB_TYPE) \ |
909 V(RETAINED_MAPS_SUB_TYPE) \ | 908 V(RETAINED_MAPS_SUB_TYPE) \ |
910 V(SCOPE_INFO_SUB_TYPE) \ | 909 V(SCOPE_INFO_SUB_TYPE) \ |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
954 class AllocationSiteCreationContext; | 953 class AllocationSiteCreationContext; |
955 class AllocationSiteUsageContext; | 954 class AllocationSiteUsageContext; |
956 class Cell; | 955 class Cell; |
957 class ConsString; | 956 class ConsString; |
958 class ElementsAccessor; | 957 class ElementsAccessor; |
959 class FixedArrayBase; | 958 class FixedArrayBase; |
960 class FunctionLiteral; | 959 class FunctionLiteral; |
961 class JSGlobalObject; | 960 class JSGlobalObject; |
962 class KeyAccumulator; | 961 class KeyAccumulator; |
963 class LayoutDescriptor; | 962 class LayoutDescriptor; |
964 class LiteralsArray; | |
965 class LookupIterator; | 963 class LookupIterator; |
966 class FieldType; | 964 class FieldType; |
967 class Module; | 965 class Module; |
968 class ModuleDescriptor; | 966 class ModuleDescriptor; |
969 class ModuleInfoEntry; | 967 class ModuleInfoEntry; |
970 class ModuleInfo; | 968 class ModuleInfo; |
971 class ObjectHashTable; | 969 class ObjectHashTable; |
972 class ObjectVisitor; | 970 class ObjectVisitor; |
973 class PropertyCell; | 971 class PropertyCell; |
974 class PropertyDescriptor; | 972 class PropertyDescriptor; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1043 V(JSReceiver) \ | 1041 V(JSReceiver) \ |
1044 V(JSObject) \ | 1042 V(JSObject) \ |
1045 V(JSArgumentsObject) \ | 1043 V(JSArgumentsObject) \ |
1046 V(JSContextExtensionObject) \ | 1044 V(JSContextExtensionObject) \ |
1047 V(JSGeneratorObject) \ | 1045 V(JSGeneratorObject) \ |
1048 V(JSModuleNamespace) \ | 1046 V(JSModuleNamespace) \ |
1049 V(Map) \ | 1047 V(Map) \ |
1050 V(DescriptorArray) \ | 1048 V(DescriptorArray) \ |
1051 V(FrameArray) \ | 1049 V(FrameArray) \ |
1052 V(TransitionArray) \ | 1050 V(TransitionArray) \ |
1053 V(LiteralsArray) \ | |
1054 V(TypeFeedbackMetadata) \ | 1051 V(TypeFeedbackMetadata) \ |
1055 V(TypeFeedbackVector) \ | 1052 V(TypeFeedbackVector) \ |
1056 V(DeoptimizationInputData) \ | 1053 V(DeoptimizationInputData) \ |
1057 V(DeoptimizationOutputData) \ | 1054 V(DeoptimizationOutputData) \ |
1058 V(DependentCode) \ | 1055 V(DependentCode) \ |
1059 V(HandlerTable) \ | 1056 V(HandlerTable) \ |
1060 V(FixedArray) \ | 1057 V(FixedArray) \ |
1061 V(BoilerplateDescription) \ | 1058 V(BoilerplateDescription) \ |
1062 V(FixedDoubleArray) \ | 1059 V(FixedDoubleArray) \ |
1063 V(WeakFixedArray) \ | 1060 V(WeakFixedArray) \ |
(...skipping 3888 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4952 int number_of_deopt_points, | 4949 int number_of_deopt_points, |
4953 PretenureFlag pretenure); | 4950 PretenureFlag pretenure); |
4954 | 4951 |
4955 DECLARE_CAST(DeoptimizationOutputData) | 4952 DECLARE_CAST(DeoptimizationOutputData) |
4956 | 4953 |
4957 #ifdef ENABLE_DISASSEMBLER | 4954 #ifdef ENABLE_DISASSEMBLER |
4958 void DeoptimizationOutputDataPrint(std::ostream& os); // NOLINT | 4955 void DeoptimizationOutputDataPrint(std::ostream& os); // NOLINT |
4959 #endif | 4956 #endif |
4960 }; | 4957 }; |
4961 | 4958 |
4962 | |
4963 // A literals array contains the literals for a JSFunction. It also holds | |
4964 // the type feedback vector. | |
4965 class LiteralsArray : public FixedArray { | |
4966 public: | |
4967 static const int kVectorIndex = 0; | |
4968 static const int kFirstLiteralIndex = 1; | |
4969 V8_EXPORT_PRIVATE static const int kFeedbackVectorOffset; | |
4970 static const int kOffsetToFirstLiteral; | |
4971 | |
4972 static int OffsetOfLiteralAt(int index) { | |
4973 return OffsetOfElementAt(index + kFirstLiteralIndex); | |
4974 } | |
4975 | |
4976 inline TypeFeedbackVector* feedback_vector() const; | |
4977 inline void set_feedback_vector(TypeFeedbackVector* vector); | |
4978 inline Object* literal(int literal_index) const; | |
4979 inline void set_literal(int literal_index, Object* literal); | |
4980 inline void set_literal_undefined(int literal_index); | |
4981 inline int literals_count() const; | |
4982 | |
4983 static Handle<LiteralsArray> New(Isolate* isolate, | |
4984 Handle<TypeFeedbackVector> vector, | |
4985 int number_of_literals, | |
4986 PretenureFlag pretenure = TENURED); | |
4987 | |
4988 DECLARE_CAST(LiteralsArray) | |
4989 | |
4990 private: | |
4991 inline Object* get(int index) const; | |
4992 inline void set(int index, Object* value); | |
4993 inline void set(int index, Smi* value); | |
4994 inline void set(int index, Object* value, WriteBarrierMode mode); | |
4995 }; | |
4996 | |
4997 | |
4998 class TemplateList : public FixedArray { | 4959 class TemplateList : public FixedArray { |
4999 public: | 4960 public: |
5000 static Handle<TemplateList> New(Isolate* isolate, int size); | 4961 static Handle<TemplateList> New(Isolate* isolate, int size); |
5001 inline int length() const; | 4962 inline int length() const; |
5002 inline Object* get(int index) const; | 4963 inline Object* get(int index) const; |
5003 inline void set(int index, Object* value); | 4964 inline void set(int index, Object* value); |
5004 static Handle<TemplateList> Add(Isolate* isolate, Handle<TemplateList> list, | 4965 static Handle<TemplateList> Add(Isolate* isolate, Handle<TemplateList> list, |
5005 Handle<Object> value); | 4966 Handle<Object> value); |
5006 DECLARE_CAST(TemplateList) | 4967 DECLARE_CAST(TemplateList) |
5007 private: | 4968 private: |
(...skipping 2117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7125 kTypedArrayEntries, | 7086 kTypedArrayEntries, |
7126 kTypedArrayKeys, | 7087 kTypedArrayKeys, |
7127 kTypedArrayLength, | 7088 kTypedArrayLength, |
7128 kTypedArrayValues, | 7089 kTypedArrayValues, |
7129 kSharedArrayBufferByteLength, | 7090 kSharedArrayBufferByteLength, |
7130 kStringIterator, | 7091 kStringIterator, |
7131 kStringIteratorNext, | 7092 kStringIteratorNext, |
7132 }; | 7093 }; |
7133 | 7094 |
7134 // Result of searching in an optimized code map of a SharedFunctionInfo. Note | 7095 // Result of searching in an optimized code map of a SharedFunctionInfo. Note |
7135 // that both {code} and {literals} can be NULL to pass search result status. | 7096 // that both {code} and {vector} can be NULL to pass search result status. |
7136 struct CodeAndLiterals { | 7097 struct CodeAndVector { |
7137 Code* code; // Cached optimized code. | 7098 Code* code; // Cached optimized code. |
7138 LiteralsArray* literals; // Cached literals array. | 7099 TypeFeedbackVector* vector; // Cached feedback vector. |
7139 }; | 7100 }; |
7140 | 7101 |
7141 // SharedFunctionInfo describes the JSFunction information that can be | 7102 // SharedFunctionInfo describes the JSFunction information that can be |
7142 // shared by multiple instances of the function. | 7103 // shared by multiple instances of the function. |
7143 class SharedFunctionInfo: public HeapObject { | 7104 class SharedFunctionInfo: public HeapObject { |
7144 public: | 7105 public: |
7145 // [name]: Function name. | 7106 // [name]: Function name. |
7146 DECL_ACCESSORS(name, Object) | 7107 DECL_ACCESSORS(name, Object) |
7147 | 7108 |
7148 // [code]: Function code. | 7109 // [code]: Function code. |
(...skipping 15 matching lines...) Expand all Loading... | |
7164 inline bool HasBaselineCode() const; | 7125 inline bool HasBaselineCode() const; |
7165 | 7126 |
7166 // [optimized_code_map]: Map from native context to optimized code | 7127 // [optimized_code_map]: Map from native context to optimized code |
7167 // and a shared literals array. | 7128 // and a shared literals array. |
7168 DECL_ACCESSORS(optimized_code_map, FixedArray) | 7129 DECL_ACCESSORS(optimized_code_map, FixedArray) |
7169 | 7130 |
7170 // Returns entry from optimized code map for specified context and OSR entry. | 7131 // Returns entry from optimized code map for specified context and OSR entry. |
7171 // Note that {code == nullptr, literals == nullptr} indicates no matching | 7132 // Note that {code == nullptr, literals == nullptr} indicates no matching |
7172 // entry has been found, whereas {code, literals == nullptr} indicates that | 7133 // entry has been found, whereas {code, literals == nullptr} indicates that |
7173 // code is context-independent. | 7134 // code is context-independent. |
7174 CodeAndLiterals SearchOptimizedCodeMap(Context* native_context, | 7135 CodeAndVector SearchOptimizedCodeMap(Context* native_context, |
7175 BailoutId osr_ast_id); | 7136 BailoutId osr_ast_id); |
7176 | 7137 |
7177 // Clear optimized code map. | 7138 // Clear optimized code map. |
7178 void ClearOptimizedCodeMap(); | 7139 void ClearOptimizedCodeMap(); |
7179 | 7140 |
7180 // Like ClearOptimizedCodeMap, but preserves literals. | 7141 // Like ClearOptimizedCodeMap, but preserves literals. |
7181 void ClearCodeFromOptimizedCodeMap(); | 7142 void ClearCodeFromOptimizedCodeMap(); |
7182 | 7143 |
7183 // We have a special root FixedArray with the right shape and values | 7144 // We have a special root FixedArray with the right shape and values |
7184 // to represent the cleared optimized code map. This predicate checks | 7145 // to represent the cleared optimized code map. This predicate checks |
7185 // if that root is installed. | 7146 // if that root is installed. |
7186 inline bool OptimizedCodeMapIsCleared() const; | 7147 inline bool OptimizedCodeMapIsCleared() const; |
7187 | 7148 |
7188 // Removes a specific optimized code object from the optimized code map. | 7149 // Removes a specific optimized code object from the optimized code map. |
7189 // In case of non-OSR the code reference is cleared from the cache entry but | 7150 // In case of non-OSR the code reference is cleared from the cache entry but |
7190 // the entry itself is left in the map in order to proceed sharing literals. | 7151 // the entry itself is left in the map in order to proceed sharing literals. |
7191 void EvictFromOptimizedCodeMap(Code* optimized_code, const char* reason); | 7152 void EvictFromOptimizedCodeMap(Code* optimized_code, const char* reason); |
7192 | 7153 |
7193 static Handle<LiteralsArray> FindOrCreateLiterals( | 7154 static Handle<TypeFeedbackVector> FindOrCreateVector( |
7194 Handle<SharedFunctionInfo> shared, Handle<Context> native_context); | 7155 Handle<SharedFunctionInfo> shared, Handle<Context> native_context); |
7195 | 7156 |
7196 // Add or update entry in the optimized code map for context-dependent code. | 7157 // Add or update entry in the optimized code map for context-dependent code. |
7197 // If {code} is not given, then an existing entry's code won't be overwritten. | 7158 // If {code} is not given, then an existing entry's code won't be overwritten. |
7198 static void AddToOptimizedCodeMap(Handle<SharedFunctionInfo> shared, | 7159 static void AddToOptimizedCodeMap(Handle<SharedFunctionInfo> shared, |
7199 Handle<Context> native_context, | 7160 Handle<Context> native_context, |
7200 MaybeHandle<Code> code, | 7161 MaybeHandle<Code> code, |
7201 Handle<LiteralsArray> literals, | 7162 Handle<TypeFeedbackVector> vector, |
7202 BailoutId osr_ast_id); | 7163 BailoutId osr_ast_id); |
7203 | 7164 |
7204 // Set up the link between shared function info and the script. The shared | 7165 // Set up the link between shared function info and the script. The shared |
7205 // function info is added to the list on the script. | 7166 // function info is added to the list on the script. |
7206 V8_EXPORT_PRIVATE static void SetScript(Handle<SharedFunctionInfo> shared, | 7167 V8_EXPORT_PRIVATE static void SetScript(Handle<SharedFunctionInfo> shared, |
7207 Handle<Object> script_object); | 7168 Handle<Object> script_object); |
7208 | 7169 |
7209 // Layout description of the optimized code map. | 7170 // Layout description of the optimized code map. |
7210 static const int kEntriesStart = 0; | 7171 static const int kEntriesStart = 0; |
7211 static const int kContextOffset = 0; | 7172 static const int kContextOffset = 0; |
7212 static const int kCachedCodeOffset = 1; | 7173 static const int kCachedCodeOffset = 1; |
7213 static const int kLiteralsOffset = 2; | 7174 static const int kFeedbackVectorOffset = 2; |
7214 static const int kEntryLength = 3; | 7175 static const int kEntryLength = 3; |
7215 static const int kInitialLength = kEntriesStart + kEntryLength; | 7176 static const int kInitialLength = kEntriesStart + kEntryLength; |
7216 | 7177 |
7217 static const int kNotFound = -1; | 7178 static const int kNotFound = -1; |
7218 | 7179 |
7219 // Helpers for assembly code that does a backwards walk of the optimized code | 7180 // Helpers for assembly code that does a backwards walk of the optimized code |
7220 // map. | 7181 // map. |
7221 static const int kOffsetToPreviousContext = | 7182 static const int kOffsetToPreviousContext = |
7222 FixedArray::kHeaderSize + kPointerSize * (kContextOffset - kEntryLength); | 7183 FixedArray::kHeaderSize + kPointerSize * (kContextOffset - kEntryLength); |
7223 static const int kOffsetToPreviousCachedCode = | 7184 static const int kOffsetToPreviousCachedCode = |
7224 FixedArray::kHeaderSize + | 7185 FixedArray::kHeaderSize + |
7225 kPointerSize * (kCachedCodeOffset - kEntryLength); | 7186 kPointerSize * (kCachedCodeOffset - kEntryLength); |
7226 static const int kOffsetToPreviousLiterals = | 7187 static const int kOffsetToPreviousLiterals = |
7227 FixedArray::kHeaderSize + kPointerSize * (kLiteralsOffset - kEntryLength); | 7188 FixedArray::kHeaderSize + |
7189 kPointerSize * (kFeedbackVectorOffset - kEntryLength); | |
7228 | 7190 |
7229 // [scope_info]: Scope info. | 7191 // [scope_info]: Scope info. |
7230 DECL_ACCESSORS(scope_info, ScopeInfo) | 7192 DECL_ACCESSORS(scope_info, ScopeInfo) |
7231 | 7193 |
7232 // The outer scope info for the purpose of parsing this function, or the hole | 7194 // The outer scope info for the purpose of parsing this function, or the hole |
7233 // value if it isn't yet known. | 7195 // value if it isn't yet known. |
7234 DECL_ACCESSORS(outer_scope_info, HeapObject) | 7196 DECL_ACCESSORS(outer_scope_info, HeapObject) |
7235 | 7197 |
7236 // [construct stub]: Code stub for constructing instances of this function. | 7198 // [construct stub]: Code stub for constructing instances of this function. |
7237 DECL_ACCESSORS(construct_stub, Code) | 7199 DECL_ACCESSORS(construct_stub, Code) |
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
8177 inline bool IsMarkedForBaseline(); | 8139 inline bool IsMarkedForBaseline(); |
8178 inline bool IsMarkedForOptimization(); | 8140 inline bool IsMarkedForOptimization(); |
8179 inline bool IsMarkedForConcurrentOptimization(); | 8141 inline bool IsMarkedForConcurrentOptimization(); |
8180 | 8142 |
8181 // Tells whether or not the function is on the concurrent recompilation queue. | 8143 // Tells whether or not the function is on the concurrent recompilation queue. |
8182 inline bool IsInOptimizationQueue(); | 8144 inline bool IsInOptimizationQueue(); |
8183 | 8145 |
8184 // Completes inobject slack tracking on initial map if it is active. | 8146 // Completes inobject slack tracking on initial map if it is active. |
8185 inline void CompleteInobjectSlackTrackingIfActive(); | 8147 inline void CompleteInobjectSlackTrackingIfActive(); |
8186 | 8148 |
8187 // [literals]: Fixed array holding the materialized literals. | 8149 // [feedback_vector]: Fixed array holding the feedback vector. |
8188 // | 8150 DECL_ACCESSORS(feedback_vector, TypeFeedbackVector) |
8189 // If the function contains object, regexp or array literals, the | |
8190 // literals array prefix contains the object, regexp, and array | |
8191 // function to be used when creating these literals. This is | |
8192 // necessary so that we do not dynamically lookup the object, regexp | |
8193 // or array functions. Performing a dynamic lookup, we might end up | |
8194 // using the functions from a new context that we should not have | |
8195 // access to. For API objects we store the boilerplate in the literal array. | |
8196 DECL_ACCESSORS(literals, LiteralsArray) | |
8197 | 8151 |
8198 static void EnsureLiterals(Handle<JSFunction> function); | 8152 static void EnsureLiterals(Handle<JSFunction> function); |
8199 inline TypeFeedbackVector* feedback_vector(); | |
8200 | 8153 |
8201 // Unconditionally clear the type feedback vector (including vector ICs). | 8154 // Unconditionally clear the type feedback vector (including vector ICs). |
8202 void ClearTypeFeedbackInfo(); | 8155 void ClearTypeFeedbackInfo(); |
8203 | 8156 |
8204 // Clear the type feedback vector with a more subtle policy at GC time. | 8157 // Clear the type feedback vector with a more subtle policy at GC time. |
8205 void ClearTypeFeedbackInfoAtGCTime(); | 8158 void ClearTypeFeedbackInfoAtGCTime(); |
8206 | 8159 |
8207 // The initial map for an object created by this constructor. | 8160 // The initial map for an object created by this constructor. |
8208 inline Map* initial_map(); | 8161 inline Map* initial_map(); |
8209 static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map, | 8162 static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map, |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
8305 // The function's string representation implemented according to | 8258 // The function's string representation implemented according to |
8306 // ES6 section 19.2.3.5 Function.prototype.toString ( ). | 8259 // ES6 section 19.2.3.5 Function.prototype.toString ( ). |
8307 static Handle<String> ToString(Handle<JSFunction> function); | 8260 static Handle<String> ToString(Handle<JSFunction> function); |
8308 | 8261 |
8309 // Layout descriptors. The last property (from kNonWeakFieldsEndOffset to | 8262 // Layout descriptors. The last property (from kNonWeakFieldsEndOffset to |
8310 // kSize) is weak and has special handling during garbage collection. | 8263 // kSize) is weak and has special handling during garbage collection. |
8311 static const int kPrototypeOrInitialMapOffset = JSObject::kHeaderSize; | 8264 static const int kPrototypeOrInitialMapOffset = JSObject::kHeaderSize; |
8312 static const int kSharedFunctionInfoOffset = | 8265 static const int kSharedFunctionInfoOffset = |
8313 kPrototypeOrInitialMapOffset + kPointerSize; | 8266 kPrototypeOrInitialMapOffset + kPointerSize; |
8314 static const int kContextOffset = kSharedFunctionInfoOffset + kPointerSize; | 8267 static const int kContextOffset = kSharedFunctionInfoOffset + kPointerSize; |
8315 static const int kLiteralsOffset = kContextOffset + kPointerSize; | 8268 static const int kFeedbackVectorOffset = kContextOffset + kPointerSize; |
8316 static const int kNonWeakFieldsEndOffset = kLiteralsOffset + kPointerSize; | 8269 static const int kNonWeakFieldsEndOffset = |
8270 kFeedbackVectorOffset + kPointerSize; | |
8317 static const int kCodeEntryOffset = kNonWeakFieldsEndOffset; | 8271 static const int kCodeEntryOffset = kNonWeakFieldsEndOffset; |
8318 static const int kNextFunctionLinkOffset = kCodeEntryOffset + kPointerSize; | 8272 static const int kNextFunctionLinkOffset = kCodeEntryOffset + kPointerSize; |
8319 static const int kSize = kNextFunctionLinkOffset + kPointerSize; | 8273 static const int kSize = kNextFunctionLinkOffset + kPointerSize; |
8320 | 8274 |
8321 private: | 8275 private: |
8322 DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunction); | 8276 DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunction); |
8323 }; | 8277 }; |
8324 | 8278 |
8325 | 8279 |
8326 // JSGlobalProxy's prototype must be a JSGlobalObject or null, | 8280 // JSGlobalProxy's prototype must be a JSGlobalObject or null, |
(...skipping 3395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
11722 } | 11676 } |
11723 }; | 11677 }; |
11724 | 11678 |
11725 | 11679 |
11726 } // NOLINT, false-positive due to second-order macros. | 11680 } // NOLINT, false-positive due to second-order macros. |
11727 } // NOLINT, false-positive due to second-order macros. | 11681 } // NOLINT, false-positive due to second-order macros. |
11728 | 11682 |
11729 #include "src/objects/object-macros-undef.h" | 11683 #include "src/objects/object-macros-undef.h" |
11730 | 11684 |
11731 #endif // V8_OBJECTS_H_ | 11685 #endif // V8_OBJECTS_H_ |
OLD | NEW |