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_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ | 5 #ifndef V8_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ |
6 #define V8_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ | 6 #define V8_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ |
7 | 7 |
8 #include "src/base/flags.h" | 8 #include "src/base/flags.h" |
9 #include "src/compiler/graph-reducer.h" | 9 #include "src/compiler/graph-reducer.h" |
10 #include "src/deoptimize-reason.h" | 10 #include "src/deoptimize-reason.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 // from an object with one of the {receiver_maps}; sets up appropriate | 140 // from an object with one of the {receiver_maps}; sets up appropriate |
141 // code dependencies and might use the array protector cell. | 141 // code dependencies and might use the array protector cell. |
142 bool CanTreatHoleAsUndefined(std::vector<Handle<Map>> const& receiver_maps); | 142 bool CanTreatHoleAsUndefined(std::vector<Handle<Map>> const& receiver_maps); |
143 | 143 |
144 // Extract receiver maps from {nexus} and filter based on {receiver} if | 144 // Extract receiver maps from {nexus} and filter based on {receiver} if |
145 // possible. | 145 // possible. |
146 bool ExtractReceiverMaps(Node* receiver, Node* effect, | 146 bool ExtractReceiverMaps(Node* receiver, Node* effect, |
147 FeedbackNexus const& nexus, | 147 FeedbackNexus const& nexus, |
148 MapHandleList* receiver_maps); | 148 MapHandleList* receiver_maps); |
149 | 149 |
150 // Try to infer a map for the given {receiver} at the current {effect}. | 150 // Try to infer maps for the given {receiver} at the current {effect}. |
151 // If a map is returned then you can be sure that the {receiver} definitely | 151 // If maps are returned then you can be sure that the {receiver} definitely |
152 // has the returned map at this point in the program (identified by {effect}). | 152 // has one of the returned maps at this point in the program (identified |
153 MaybeHandle<Map> InferReceiverMap(Node* receiver, Node* effect); | 153 // by {effect}). |
| 154 bool InferReceiverMaps(Node* receiver, Node* effect, |
| 155 MapHandleList* receiver_maps); |
154 // Try to infer a root map for the {receiver} independent of the current | 156 // Try to infer a root map for the {receiver} independent of the current |
155 // program location. | 157 // program location. |
156 MaybeHandle<Map> InferReceiverRootMap(Node* receiver); | 158 MaybeHandle<Map> InferReceiverRootMap(Node* receiver); |
157 | 159 |
158 ValueEffectControl InlineApiCall( | 160 ValueEffectControl InlineApiCall( |
159 Node* receiver, Node* context, Node* target, Node* frame_state, | 161 Node* receiver, Node* context, Node* target, Node* frame_state, |
160 Node* parameter, Node* effect, Node* control, | 162 Node* parameter, Node* effect, Node* control, |
161 Handle<SharedFunctionInfo> shared_info, | 163 Handle<SharedFunctionInfo> shared_info, |
162 Handle<FunctionTemplateInfo> function_template_info); | 164 Handle<FunctionTemplateInfo> function_template_info); |
163 | 165 |
(...skipping 29 matching lines...) Expand all Loading... |
193 DISALLOW_COPY_AND_ASSIGN(JSNativeContextSpecialization); | 195 DISALLOW_COPY_AND_ASSIGN(JSNativeContextSpecialization); |
194 }; | 196 }; |
195 | 197 |
196 DEFINE_OPERATORS_FOR_FLAGS(JSNativeContextSpecialization::Flags) | 198 DEFINE_OPERATORS_FOR_FLAGS(JSNativeContextSpecialization::Flags) |
197 | 199 |
198 } // namespace compiler | 200 } // namespace compiler |
199 } // namespace internal | 201 } // namespace internal |
200 } // namespace v8 | 202 } // namespace v8 |
201 | 203 |
202 #endif // V8_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ | 204 #endif // V8_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ |
OLD | NEW |