| 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 CompilationDependencies* dependencies, | 50 CompilationDependencies* dependencies, |
| 51 Zone* zone); | 51 Zone* zone); |
| 52 | 52 |
| 53 Reduction Reduce(Node* node) final; | 53 Reduction Reduce(Node* node) final; |
| 54 | 54 |
| 55 private: | 55 private: |
| 56 Reduction ReduceJSGetSuperConstructor(Node* node); | 56 Reduction ReduceJSGetSuperConstructor(Node* node); |
| 57 Reduction ReduceJSInstanceOf(Node* node); | 57 Reduction ReduceJSInstanceOf(Node* node); |
| 58 Reduction ReduceJSOrdinaryHasInstance(Node* node); | 58 Reduction ReduceJSOrdinaryHasInstance(Node* node); |
| 59 Reduction ReduceJSLoadContext(Node* node); | 59 Reduction ReduceJSLoadContext(Node* node); |
| 60 Reduction ReduceJSLoadGlobal(Node* node); |
| 61 Reduction ReduceJSStoreGlobal(Node* node); |
| 60 Reduction ReduceJSLoadNamed(Node* node); | 62 Reduction ReduceJSLoadNamed(Node* node); |
| 61 Reduction ReduceJSStoreNamed(Node* node); | 63 Reduction ReduceJSStoreNamed(Node* node); |
| 62 Reduction ReduceJSLoadProperty(Node* node); | 64 Reduction ReduceJSLoadProperty(Node* node); |
| 63 Reduction ReduceJSStoreProperty(Node* node); | 65 Reduction ReduceJSStoreProperty(Node* node); |
| 64 Reduction ReduceJSStoreDataPropertyInLiteral(Node* node); | 66 Reduction ReduceJSStoreDataPropertyInLiteral(Node* node); |
| 65 | 67 |
| 66 Reduction ReduceElementAccess(Node* node, Node* index, Node* value, | 68 Reduction ReduceElementAccess(Node* node, Node* index, Node* value, |
| 67 MapHandleList const& receiver_maps, | 69 MapHandleList const& receiver_maps, |
| 68 AccessMode access_mode, | 70 AccessMode access_mode, |
| 69 LanguageMode language_mode, | 71 LanguageMode language_mode, |
| 70 KeyedAccessStoreMode store_mode); | 72 KeyedAccessStoreMode store_mode); |
| 71 template <typename KeyedICNexus> | 73 template <typename KeyedICNexus> |
| 72 Reduction ReduceKeyedAccess(Node* node, Node* index, Node* value, | 74 Reduction ReduceKeyedAccess(Node* node, Node* index, Node* value, |
| 73 KeyedICNexus const& nexus, AccessMode access_mode, | 75 KeyedICNexus const& nexus, AccessMode access_mode, |
| 74 LanguageMode language_mode, | 76 LanguageMode language_mode, |
| 75 KeyedAccessStoreMode store_mode); | 77 KeyedAccessStoreMode store_mode); |
| 76 Reduction ReduceNamedAccessFromNexus(Node* node, Node* value, | 78 Reduction ReduceNamedAccessFromNexus(Node* node, Node* value, |
| 77 FeedbackNexus const& nexus, | 79 FeedbackNexus const& nexus, |
| 78 Handle<Name> name, | 80 Handle<Name> name, |
| 79 AccessMode access_mode, | 81 AccessMode access_mode, |
| 80 LanguageMode language_mode); | 82 LanguageMode language_mode); |
| 81 Reduction ReduceNamedAccess(Node* node, Node* value, | 83 Reduction ReduceNamedAccess(Node* node, Node* value, |
| 82 MapHandleList const& receiver_maps, | 84 MapHandleList const& receiver_maps, |
| 83 Handle<Name> name, AccessMode access_mode, | 85 Handle<Name> name, AccessMode access_mode, |
| 84 LanguageMode language_mode, | 86 LanguageMode language_mode, |
| 85 Handle<TypeFeedbackVector> vector, | 87 Handle<TypeFeedbackVector> vector, |
| 86 FeedbackVectorSlot slot, Node* index = nullptr); | 88 FeedbackVectorSlot slot, Node* index = nullptr); |
| 89 Reduction ReduceGlobalAccess(Node* node, Node* receiver, Node* value, |
| 90 Handle<Name> name, AccessMode access_mode); |
| 87 | 91 |
| 88 Reduction ReduceSoftDeoptimize(Node* node, DeoptimizeReason reason); | 92 Reduction ReduceSoftDeoptimize(Node* node, DeoptimizeReason reason); |
| 89 | 93 |
| 90 // A triple of nodes that represents a continuation. | 94 // A triple of nodes that represents a continuation. |
| 91 class ValueEffectControl final { | 95 class ValueEffectControl final { |
| 92 public: | 96 public: |
| 93 ValueEffectControl(Node* value, Node* effect, Node* control) | 97 ValueEffectControl(Node* value, Node* effect, Node* control) |
| 94 : value_(value), effect_(effect), control_(control) {} | 98 : value_(value), effect_(effect), control_(control) {} |
| 95 | 99 |
| 96 Node* value() const { return value_; } | 100 Node* value() const { return value_; } |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 // Try to infer a root map for the {receiver} independent of the current | 153 // Try to infer a root map for the {receiver} independent of the current |
| 150 // program location. | 154 // program location. |
| 151 MaybeHandle<Map> InferReceiverRootMap(Node* receiver); | 155 MaybeHandle<Map> InferReceiverRootMap(Node* receiver); |
| 152 | 156 |
| 153 ValueEffectControl InlineApiCall( | 157 ValueEffectControl InlineApiCall( |
| 154 Node* receiver, Node* context, Node* target, Node* frame_state, | 158 Node* receiver, Node* context, Node* target, Node* frame_state, |
| 155 Node* parameter, Node* effect, Node* control, | 159 Node* parameter, Node* effect, Node* control, |
| 156 Handle<SharedFunctionInfo> shared_info, | 160 Handle<SharedFunctionInfo> shared_info, |
| 157 Handle<FunctionTemplateInfo> function_template_info); | 161 Handle<FunctionTemplateInfo> function_template_info); |
| 158 | 162 |
| 163 // Script context lookup logic. |
| 164 struct ScriptContextTableLookupResult; |
| 165 bool LookupInScriptContextTable(Handle<Name> name, |
| 166 ScriptContextTableLookupResult* result); |
| 167 |
| 159 Graph* graph() const; | 168 Graph* graph() const; |
| 160 JSGraph* jsgraph() const { return jsgraph_; } | 169 JSGraph* jsgraph() const { return jsgraph_; } |
| 161 Isolate* isolate() const; | 170 Isolate* isolate() const; |
| 162 Factory* factory() const; | 171 Factory* factory() const; |
| 163 CommonOperatorBuilder* common() const; | 172 CommonOperatorBuilder* common() const; |
| 164 JSOperatorBuilder* javascript() const; | 173 JSOperatorBuilder* javascript() const; |
| 165 SimplifiedOperatorBuilder* simplified() const; | 174 SimplifiedOperatorBuilder* simplified() const; |
| 166 MachineOperatorBuilder* machine() const; | 175 MachineOperatorBuilder* machine() const; |
| 167 Flags flags() const { return flags_; } | 176 Flags flags() const { return flags_; } |
| 177 Handle<JSGlobalObject> global_object() const { return global_object_; } |
| 178 Handle<JSGlobalProxy> global_proxy() const { return global_proxy_; } |
| 168 Handle<Context> native_context() const { return native_context_; } | 179 Handle<Context> native_context() const { return native_context_; } |
| 169 CompilationDependencies* dependencies() const { return dependencies_; } | 180 CompilationDependencies* dependencies() const { return dependencies_; } |
| 170 Zone* zone() const { return zone_; } | 181 Zone* zone() const { return zone_; } |
| 171 | 182 |
| 172 JSGraph* const jsgraph_; | 183 JSGraph* const jsgraph_; |
| 173 Flags const flags_; | 184 Flags const flags_; |
| 185 Handle<JSGlobalObject> global_object_; |
| 186 Handle<JSGlobalProxy> global_proxy_; |
| 174 Handle<Context> native_context_; | 187 Handle<Context> native_context_; |
| 175 CompilationDependencies* const dependencies_; | 188 CompilationDependencies* const dependencies_; |
| 176 Zone* const zone_; | 189 Zone* const zone_; |
| 177 TypeCache const& type_cache_; | 190 TypeCache const& type_cache_; |
| 178 | 191 |
| 179 DISALLOW_COPY_AND_ASSIGN(JSNativeContextSpecialization); | 192 DISALLOW_COPY_AND_ASSIGN(JSNativeContextSpecialization); |
| 180 }; | 193 }; |
| 181 | 194 |
| 182 DEFINE_OPERATORS_FOR_FLAGS(JSNativeContextSpecialization::Flags) | 195 DEFINE_OPERATORS_FOR_FLAGS(JSNativeContextSpecialization::Flags) |
| 183 | 196 |
| 184 } // namespace compiler | 197 } // namespace compiler |
| 185 } // namespace internal | 198 } // namespace internal |
| 186 } // namespace v8 | 199 } // namespace v8 |
| 187 | 200 |
| 188 #endif // V8_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ | 201 #endif // V8_COMPILER_JS_NATIVE_CONTEXT_SPECIALIZATION_H_ |
| OLD | NEW |