| 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) \ | |
| 901 V(MAP_CODE_CACHE_SUB_TYPE) \ | 899 V(MAP_CODE_CACHE_SUB_TYPE) \ |
| 902 V(NOSCRIPT_SHARED_FUNCTION_INFOS_SUB_TYPE) \ | 900 V(NOSCRIPT_SHARED_FUNCTION_INFOS_SUB_TYPE) \ |
| 903 V(NUMBER_STRING_CACHE_SUB_TYPE) \ | 901 V(NUMBER_STRING_CACHE_SUB_TYPE) \ |
| 904 V(OBJECT_TO_CODE_SUB_TYPE) \ | 902 V(OBJECT_TO_CODE_SUB_TYPE) \ |
| 905 V(OPTIMIZED_CODE_LITERALS_SUB_TYPE) \ | 903 V(OPTIMIZED_CODE_LITERALS_SUB_TYPE) \ |
| 906 V(OPTIMIZED_CODE_MAP_SUB_TYPE) \ | 904 V(OPTIMIZED_CODE_MAP_SUB_TYPE) \ |
| 907 V(PROTOTYPE_USERS_SUB_TYPE) \ | 905 V(PROTOTYPE_USERS_SUB_TYPE) \ |
| 908 V(REGEXP_MULTIPLE_CACHE_SUB_TYPE) \ | 906 V(REGEXP_MULTIPLE_CACHE_SUB_TYPE) \ |
| 909 V(RETAINED_MAPS_SUB_TYPE) \ | 907 V(RETAINED_MAPS_SUB_TYPE) \ |
| 910 V(SCOPE_INFO_SUB_TYPE) \ | 908 V(SCOPE_INFO_SUB_TYPE) \ |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 class AllocationSiteCreationContext; | 952 class AllocationSiteCreationContext; |
| 955 class AllocationSiteUsageContext; | 953 class AllocationSiteUsageContext; |
| 956 class Cell; | 954 class Cell; |
| 957 class ConsString; | 955 class ConsString; |
| 958 class ElementsAccessor; | 956 class ElementsAccessor; |
| 959 class FixedArrayBase; | 957 class FixedArrayBase; |
| 960 class FunctionLiteral; | 958 class FunctionLiteral; |
| 961 class JSGlobalObject; | 959 class JSGlobalObject; |
| 962 class KeyAccumulator; | 960 class KeyAccumulator; |
| 963 class LayoutDescriptor; | 961 class LayoutDescriptor; |
| 964 class LiteralsArray; | |
| 965 class LookupIterator; | 962 class LookupIterator; |
| 966 class FieldType; | 963 class FieldType; |
| 967 class Module; | 964 class Module; |
| 968 class ModuleDescriptor; | 965 class ModuleDescriptor; |
| 969 class ModuleInfoEntry; | 966 class ModuleInfoEntry; |
| 970 class ModuleInfo; | 967 class ModuleInfo; |
| 971 class ObjectHashTable; | 968 class ObjectHashTable; |
| 972 class ObjectVisitor; | 969 class ObjectVisitor; |
| 973 class PropertyCell; | 970 class PropertyCell; |
| 974 class PropertyDescriptor; | 971 class PropertyDescriptor; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1043 V(JSReceiver) \ | 1040 V(JSReceiver) \ |
| 1044 V(JSObject) \ | 1041 V(JSObject) \ |
| 1045 V(JSArgumentsObject) \ | 1042 V(JSArgumentsObject) \ |
| 1046 V(JSContextExtensionObject) \ | 1043 V(JSContextExtensionObject) \ |
| 1047 V(JSGeneratorObject) \ | 1044 V(JSGeneratorObject) \ |
| 1048 V(JSModuleNamespace) \ | 1045 V(JSModuleNamespace) \ |
| 1049 V(Map) \ | 1046 V(Map) \ |
| 1050 V(DescriptorArray) \ | 1047 V(DescriptorArray) \ |
| 1051 V(FrameArray) \ | 1048 V(FrameArray) \ |
| 1052 V(TransitionArray) \ | 1049 V(TransitionArray) \ |
| 1053 V(LiteralsArray) \ | |
| 1054 V(TypeFeedbackMetadata) \ | 1050 V(TypeFeedbackMetadata) \ |
| 1055 V(TypeFeedbackVector) \ | 1051 V(TypeFeedbackVector) \ |
| 1056 V(DeoptimizationInputData) \ | 1052 V(DeoptimizationInputData) \ |
| 1057 V(DeoptimizationOutputData) \ | 1053 V(DeoptimizationOutputData) \ |
| 1058 V(DependentCode) \ | 1054 V(DependentCode) \ |
| 1059 V(HandlerTable) \ | 1055 V(HandlerTable) \ |
| 1060 V(FixedArray) \ | 1056 V(FixedArray) \ |
| 1061 V(BoilerplateDescription) \ | 1057 V(BoilerplateDescription) \ |
| 1062 V(FixedDoubleArray) \ | 1058 V(FixedDoubleArray) \ |
| 1063 V(WeakFixedArray) \ | 1059 V(WeakFixedArray) \ |
| (...skipping 3864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4928 int number_of_deopt_points, | 4924 int number_of_deopt_points, |
| 4929 PretenureFlag pretenure); | 4925 PretenureFlag pretenure); |
| 4930 | 4926 |
| 4931 DECLARE_CAST(DeoptimizationOutputData) | 4927 DECLARE_CAST(DeoptimizationOutputData) |
| 4932 | 4928 |
| 4933 #ifdef ENABLE_DISASSEMBLER | 4929 #ifdef ENABLE_DISASSEMBLER |
| 4934 void DeoptimizationOutputDataPrint(std::ostream& os); // NOLINT | 4930 void DeoptimizationOutputDataPrint(std::ostream& os); // NOLINT |
| 4935 #endif | 4931 #endif |
| 4936 }; | 4932 }; |
| 4937 | 4933 |
| 4938 | |
| 4939 // A literals array contains the literals for a JSFunction. It also holds | |
| 4940 // the type feedback vector. | |
| 4941 class LiteralsArray : public FixedArray { | |
| 4942 public: | |
| 4943 static const int kVectorIndex = 0; | |
| 4944 static const int kFirstLiteralIndex = 1; | |
| 4945 V8_EXPORT_PRIVATE static const int kFeedbackVectorOffset; | |
| 4946 static const int kOffsetToFirstLiteral; | |
| 4947 | |
| 4948 static int OffsetOfLiteralAt(int index) { | |
| 4949 return OffsetOfElementAt(index + kFirstLiteralIndex); | |
| 4950 } | |
| 4951 | |
| 4952 inline TypeFeedbackVector* feedback_vector() const; | |
| 4953 inline void set_feedback_vector(TypeFeedbackVector* vector); | |
| 4954 inline Object* literal(int literal_index) const; | |
| 4955 inline void set_literal(int literal_index, Object* literal); | |
| 4956 inline void set_literal_undefined(int literal_index); | |
| 4957 inline int literals_count() const; | |
| 4958 | |
| 4959 static Handle<LiteralsArray> New(Isolate* isolate, | |
| 4960 Handle<TypeFeedbackVector> vector, | |
| 4961 int number_of_literals, | |
| 4962 PretenureFlag pretenure = TENURED); | |
| 4963 | |
| 4964 DECLARE_CAST(LiteralsArray) | |
| 4965 | |
| 4966 private: | |
| 4967 inline Object* get(int index) const; | |
| 4968 inline void set(int index, Object* value); | |
| 4969 inline void set(int index, Smi* value); | |
| 4970 inline void set(int index, Object* value, WriteBarrierMode mode); | |
| 4971 }; | |
| 4972 | |
| 4973 | |
| 4974 class TemplateList : public FixedArray { | 4934 class TemplateList : public FixedArray { |
| 4975 public: | 4935 public: |
| 4976 static Handle<TemplateList> New(Isolate* isolate, int size); | 4936 static Handle<TemplateList> New(Isolate* isolate, int size); |
| 4977 inline int length() const; | 4937 inline int length() const; |
| 4978 inline Object* get(int index) const; | 4938 inline Object* get(int index) const; |
| 4979 inline void set(int index, Object* value); | 4939 inline void set(int index, Object* value); |
| 4980 static Handle<TemplateList> Add(Isolate* isolate, Handle<TemplateList> list, | 4940 static Handle<TemplateList> Add(Isolate* isolate, Handle<TemplateList> list, |
| 4981 Handle<Object> value); | 4941 Handle<Object> value); |
| 4982 DECLARE_CAST(TemplateList) | 4942 DECLARE_CAST(TemplateList) |
| 4983 private: | 4943 private: |
| (...skipping 2095 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7079 kTypedArrayEntries, | 7039 kTypedArrayEntries, |
| 7080 kTypedArrayKeys, | 7040 kTypedArrayKeys, |
| 7081 kTypedArrayLength, | 7041 kTypedArrayLength, |
| 7082 kTypedArrayValues, | 7042 kTypedArrayValues, |
| 7083 kSharedArrayBufferByteLength, | 7043 kSharedArrayBufferByteLength, |
| 7084 kStringIterator, | 7044 kStringIterator, |
| 7085 kStringIteratorNext, | 7045 kStringIteratorNext, |
| 7086 }; | 7046 }; |
| 7087 | 7047 |
| 7088 // Result of searching in an optimized code map of a SharedFunctionInfo. Note | 7048 // Result of searching in an optimized code map of a SharedFunctionInfo. Note |
| 7089 // that both {code} and {literals} can be NULL to pass search result status. | 7049 // that both {code} and {vector} can be NULL to pass search result status. |
| 7090 struct CodeAndLiterals { | 7050 struct CodeAndVector { |
| 7091 Code* code; // Cached optimized code. | 7051 Code* code; // Cached optimized code. |
| 7092 LiteralsArray* literals; // Cached literals array. | 7052 TypeFeedbackVector* vector; // Cached feedback vector. |
| 7093 }; | 7053 }; |
| 7094 | 7054 |
| 7095 // SharedFunctionInfo describes the JSFunction information that can be | 7055 // SharedFunctionInfo describes the JSFunction information that can be |
| 7096 // shared by multiple instances of the function. | 7056 // shared by multiple instances of the function. |
| 7097 class SharedFunctionInfo: public HeapObject { | 7057 class SharedFunctionInfo: public HeapObject { |
| 7098 public: | 7058 public: |
| 7099 // [name]: Function name. | 7059 // [name]: Function name. |
| 7100 DECL_ACCESSORS(name, Object) | 7060 DECL_ACCESSORS(name, Object) |
| 7101 | 7061 |
| 7102 // [code]: Function code. | 7062 // [code]: Function code. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 7118 inline bool HasBaselineCode() const; | 7078 inline bool HasBaselineCode() const; |
| 7119 | 7079 |
| 7120 // [optimized_code_map]: Map from native context to optimized code | 7080 // [optimized_code_map]: Map from native context to optimized code |
| 7121 // and a shared literals array. | 7081 // and a shared literals array. |
| 7122 DECL_ACCESSORS(optimized_code_map, FixedArray) | 7082 DECL_ACCESSORS(optimized_code_map, FixedArray) |
| 7123 | 7083 |
| 7124 // Returns entry from optimized code map for specified context and OSR entry. | 7084 // Returns entry from optimized code map for specified context and OSR entry. |
| 7125 // Note that {code == nullptr, literals == nullptr} indicates no matching | 7085 // Note that {code == nullptr, literals == nullptr} indicates no matching |
| 7126 // entry has been found, whereas {code, literals == nullptr} indicates that | 7086 // entry has been found, whereas {code, literals == nullptr} indicates that |
| 7127 // code is context-independent. | 7087 // code is context-independent. |
| 7128 CodeAndLiterals SearchOptimizedCodeMap(Context* native_context, | 7088 CodeAndVector SearchOptimizedCodeMap(Context* native_context, |
| 7129 BailoutId osr_ast_id); | 7089 BailoutId osr_ast_id); |
| 7130 | 7090 |
| 7131 // Clear optimized code map. | 7091 // Clear optimized code map. |
| 7132 void ClearOptimizedCodeMap(); | 7092 void ClearOptimizedCodeMap(); |
| 7133 | 7093 |
| 7134 // Like ClearOptimizedCodeMap, but preserves literals. | 7094 // Like ClearOptimizedCodeMap, but preserves literals. |
| 7135 void ClearCodeFromOptimizedCodeMap(); | 7095 void ClearCodeFromOptimizedCodeMap(); |
| 7136 | 7096 |
| 7137 // We have a special root FixedArray with the right shape and values | 7097 // We have a special root FixedArray with the right shape and values |
| 7138 // to represent the cleared optimized code map. This predicate checks | 7098 // to represent the cleared optimized code map. This predicate checks |
| 7139 // if that root is installed. | 7099 // if that root is installed. |
| 7140 inline bool OptimizedCodeMapIsCleared() const; | 7100 inline bool OptimizedCodeMapIsCleared() const; |
| 7141 | 7101 |
| 7142 // Removes a specific optimized code object from the optimized code map. | 7102 // Removes a specific optimized code object from the optimized code map. |
| 7143 // In case of non-OSR the code reference is cleared from the cache entry but | 7103 // In case of non-OSR the code reference is cleared from the cache entry but |
| 7144 // the entry itself is left in the map in order to proceed sharing literals. | 7104 // the entry itself is left in the map in order to proceed sharing literals. |
| 7145 void EvictFromOptimizedCodeMap(Code* optimized_code, const char* reason); | 7105 void EvictFromOptimizedCodeMap(Code* optimized_code, const char* reason); |
| 7146 | 7106 |
| 7147 static Handle<LiteralsArray> FindOrCreateLiterals( | 7107 static Handle<TypeFeedbackVector> FindOrCreateVector( |
| 7148 Handle<SharedFunctionInfo> shared, Handle<Context> native_context); | 7108 Handle<SharedFunctionInfo> shared, Handle<Context> native_context); |
| 7149 | 7109 |
| 7150 // Add or update entry in the optimized code map for context-dependent code. | 7110 // Add or update entry in the optimized code map for context-dependent code. |
| 7151 // If {code} is not given, then an existing entry's code won't be overwritten. | 7111 // If {code} is not given, then an existing entry's code won't be overwritten. |
| 7152 static void AddToOptimizedCodeMap(Handle<SharedFunctionInfo> shared, | 7112 static void AddToOptimizedCodeMap(Handle<SharedFunctionInfo> shared, |
| 7153 Handle<Context> native_context, | 7113 Handle<Context> native_context, |
| 7154 MaybeHandle<Code> code, | 7114 MaybeHandle<Code> code, |
| 7155 Handle<LiteralsArray> literals, | 7115 Handle<TypeFeedbackVector> vector, |
| 7156 BailoutId osr_ast_id); | 7116 BailoutId osr_ast_id); |
| 7157 | 7117 |
| 7158 // Set up the link between shared function info and the script. The shared | 7118 // Set up the link between shared function info and the script. The shared |
| 7159 // function info is added to the list on the script. | 7119 // function info is added to the list on the script. |
| 7160 V8_EXPORT_PRIVATE static void SetScript(Handle<SharedFunctionInfo> shared, | 7120 V8_EXPORT_PRIVATE static void SetScript(Handle<SharedFunctionInfo> shared, |
| 7161 Handle<Object> script_object); | 7121 Handle<Object> script_object); |
| 7162 | 7122 |
| 7163 // Layout description of the optimized code map. | 7123 // Layout description of the optimized code map. |
| 7164 static const int kEntriesStart = 0; | 7124 static const int kEntriesStart = 0; |
| 7165 static const int kContextOffset = 0; | 7125 static const int kContextOffset = 0; |
| 7166 static const int kCachedCodeOffset = 1; | 7126 static const int kCachedCodeOffset = 1; |
| 7167 static const int kLiteralsOffset = 2; | 7127 static const int kFeedbackVectorOffset = 2; |
| 7168 static const int kEntryLength = 3; | 7128 static const int kEntryLength = 3; |
| 7169 static const int kInitialLength = kEntriesStart + kEntryLength; | 7129 static const int kInitialLength = kEntriesStart + kEntryLength; |
| 7170 | 7130 |
| 7171 static const int kNotFound = -1; | 7131 static const int kNotFound = -1; |
| 7172 | 7132 |
| 7173 // Helpers for assembly code that does a backwards walk of the optimized code | 7133 // Helpers for assembly code that does a backwards walk of the optimized code |
| 7174 // map. | 7134 // map. |
| 7175 static const int kOffsetToPreviousContext = | 7135 static const int kOffsetToPreviousContext = |
| 7176 FixedArray::kHeaderSize + kPointerSize * (kContextOffset - kEntryLength); | 7136 FixedArray::kHeaderSize + kPointerSize * (kContextOffset - kEntryLength); |
| 7177 static const int kOffsetToPreviousCachedCode = | 7137 static const int kOffsetToPreviousCachedCode = |
| 7178 FixedArray::kHeaderSize + | 7138 FixedArray::kHeaderSize + |
| 7179 kPointerSize * (kCachedCodeOffset - kEntryLength); | 7139 kPointerSize * (kCachedCodeOffset - kEntryLength); |
| 7180 static const int kOffsetToPreviousLiterals = | 7140 static const int kOffsetToPreviousLiterals = |
| 7181 FixedArray::kHeaderSize + kPointerSize * (kLiteralsOffset - kEntryLength); | 7141 FixedArray::kHeaderSize + |
| 7142 kPointerSize * (kFeedbackVectorOffset - kEntryLength); |
| 7182 | 7143 |
| 7183 // [scope_info]: Scope info. | 7144 // [scope_info]: Scope info. |
| 7184 DECL_ACCESSORS(scope_info, ScopeInfo) | 7145 DECL_ACCESSORS(scope_info, ScopeInfo) |
| 7185 | 7146 |
| 7186 // The outer scope info for the purpose of parsing this function, or the hole | 7147 // The outer scope info for the purpose of parsing this function, or the hole |
| 7187 // value if it isn't yet known. | 7148 // value if it isn't yet known. |
| 7188 DECL_ACCESSORS(outer_scope_info, HeapObject) | 7149 DECL_ACCESSORS(outer_scope_info, HeapObject) |
| 7189 | 7150 |
| 7190 // [construct stub]: Code stub for constructing instances of this function. | 7151 // [construct stub]: Code stub for constructing instances of this function. |
| 7191 DECL_ACCESSORS(construct_stub, Code) | 7152 DECL_ACCESSORS(construct_stub, Code) |
| (...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8131 inline bool IsMarkedForBaseline(); | 8092 inline bool IsMarkedForBaseline(); |
| 8132 inline bool IsMarkedForOptimization(); | 8093 inline bool IsMarkedForOptimization(); |
| 8133 inline bool IsMarkedForConcurrentOptimization(); | 8094 inline bool IsMarkedForConcurrentOptimization(); |
| 8134 | 8095 |
| 8135 // Tells whether or not the function is on the concurrent recompilation queue. | 8096 // Tells whether or not the function is on the concurrent recompilation queue. |
| 8136 inline bool IsInOptimizationQueue(); | 8097 inline bool IsInOptimizationQueue(); |
| 8137 | 8098 |
| 8138 // Completes inobject slack tracking on initial map if it is active. | 8099 // Completes inobject slack tracking on initial map if it is active. |
| 8139 inline void CompleteInobjectSlackTrackingIfActive(); | 8100 inline void CompleteInobjectSlackTrackingIfActive(); |
| 8140 | 8101 |
| 8141 // [literals]: Fixed array holding the materialized literals. | 8102 // [feedback_vector]: Fixed array holding the feedback vector. |
| 8142 // | 8103 DECL_ACCESSORS(feedback_vector, TypeFeedbackVector) |
| 8143 // If the function contains object, regexp or array literals, the | |
| 8144 // literals array prefix contains the object, regexp, and array | |
| 8145 // function to be used when creating these literals. This is | |
| 8146 // necessary so that we do not dynamically lookup the object, regexp | |
| 8147 // or array functions. Performing a dynamic lookup, we might end up | |
| 8148 // using the functions from a new context that we should not have | |
| 8149 // access to. For API objects we store the boilerplate in the literal array. | |
| 8150 DECL_ACCESSORS(literals, LiteralsArray) | |
| 8151 | 8104 |
| 8152 static void EnsureLiterals(Handle<JSFunction> function); | 8105 static void EnsureLiterals(Handle<JSFunction> function); |
| 8153 inline TypeFeedbackVector* feedback_vector(); | |
| 8154 | 8106 |
| 8155 // Unconditionally clear the type feedback vector (including vector ICs). | 8107 // Unconditionally clear the type feedback vector (including vector ICs). |
| 8156 void ClearTypeFeedbackInfo(); | 8108 void ClearTypeFeedbackInfo(); |
| 8157 | 8109 |
| 8158 // Clear the type feedback vector with a more subtle policy at GC time. | 8110 // Clear the type feedback vector with a more subtle policy at GC time. |
| 8159 void ClearTypeFeedbackInfoAtGCTime(); | 8111 void ClearTypeFeedbackInfoAtGCTime(); |
| 8160 | 8112 |
| 8161 // The initial map for an object created by this constructor. | 8113 // The initial map for an object created by this constructor. |
| 8162 inline Map* initial_map(); | 8114 inline Map* initial_map(); |
| 8163 static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map, | 8115 static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8259 // The function's string representation implemented according to | 8211 // The function's string representation implemented according to |
| 8260 // ES6 section 19.2.3.5 Function.prototype.toString ( ). | 8212 // ES6 section 19.2.3.5 Function.prototype.toString ( ). |
| 8261 static Handle<String> ToString(Handle<JSFunction> function); | 8213 static Handle<String> ToString(Handle<JSFunction> function); |
| 8262 | 8214 |
| 8263 // Layout descriptors. The last property (from kNonWeakFieldsEndOffset to | 8215 // Layout descriptors. The last property (from kNonWeakFieldsEndOffset to |
| 8264 // kSize) is weak and has special handling during garbage collection. | 8216 // kSize) is weak and has special handling during garbage collection. |
| 8265 static const int kPrototypeOrInitialMapOffset = JSObject::kHeaderSize; | 8217 static const int kPrototypeOrInitialMapOffset = JSObject::kHeaderSize; |
| 8266 static const int kSharedFunctionInfoOffset = | 8218 static const int kSharedFunctionInfoOffset = |
| 8267 kPrototypeOrInitialMapOffset + kPointerSize; | 8219 kPrototypeOrInitialMapOffset + kPointerSize; |
| 8268 static const int kContextOffset = kSharedFunctionInfoOffset + kPointerSize; | 8220 static const int kContextOffset = kSharedFunctionInfoOffset + kPointerSize; |
| 8269 static const int kLiteralsOffset = kContextOffset + kPointerSize; | 8221 static const int kFeedbackVectorOffset = kContextOffset + kPointerSize; |
| 8270 static const int kNonWeakFieldsEndOffset = kLiteralsOffset + kPointerSize; | 8222 static const int kNonWeakFieldsEndOffset = |
| 8223 kFeedbackVectorOffset + kPointerSize; |
| 8271 static const int kCodeEntryOffset = kNonWeakFieldsEndOffset; | 8224 static const int kCodeEntryOffset = kNonWeakFieldsEndOffset; |
| 8272 static const int kNextFunctionLinkOffset = kCodeEntryOffset + kPointerSize; | 8225 static const int kNextFunctionLinkOffset = kCodeEntryOffset + kPointerSize; |
| 8273 static const int kSize = kNextFunctionLinkOffset + kPointerSize; | 8226 static const int kSize = kNextFunctionLinkOffset + kPointerSize; |
| 8274 | 8227 |
| 8275 private: | 8228 private: |
| 8276 DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunction); | 8229 DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunction); |
| 8277 }; | 8230 }; |
| 8278 | 8231 |
| 8279 | 8232 |
| 8280 // JSGlobalProxy's prototype must be a JSGlobalObject or null, | 8233 // JSGlobalProxy's prototype must be a JSGlobalObject or null, |
| (...skipping 3395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11676 } | 11629 } |
| 11677 }; | 11630 }; |
| 11678 | 11631 |
| 11679 | 11632 |
| 11680 } // NOLINT, false-positive due to second-order macros. | 11633 } // NOLINT, false-positive due to second-order macros. |
| 11681 } // NOLINT, false-positive due to second-order macros. | 11634 } // NOLINT, false-positive due to second-order macros. |
| 11682 | 11635 |
| 11683 #include "src/objects/object-macros-undef.h" | 11636 #include "src/objects/object-macros-undef.h" |
| 11684 | 11637 |
| 11685 #endif // V8_OBJECTS_H_ | 11638 #endif // V8_OBJECTS_H_ |
| OLD | NEW |