Home | History | Annotate | Download | only in compiler
      1 // Copyright 2014 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_COMPILER_JS_CONTEXT_SPECIALIZATION_H_
      6 #define V8_COMPILER_JS_CONTEXT_SPECIALIZATION_H_
      7 
      8 #include "src/compiler/graph-reducer.h"
      9 #include "src/compiler/js-graph.h"
     10 #include "src/contexts.h"
     11 #include "src/v8.h"
     12 
     13 namespace v8 {
     14 namespace internal {
     15 namespace compiler {
     16 
     17 // Specializes a given JSGraph to a given context, potentially constant folding
     18 // some {LoadContext} nodes or strength reducing some {StoreContext} nodes.
     19 class JSContextSpecializer {
     20  public:
     21   JSContextSpecializer(CompilationInfo* info, JSGraph* jsgraph, Node* context)
     22       : info_(info), jsgraph_(jsgraph), context_(context) {}
     23 
     24   void SpecializeToContext();
     25   Reduction ReduceJSLoadContext(Node* node);
     26   Reduction ReduceJSStoreContext(Node* node);
     27 
     28  private:
     29   CompilationInfo* info_;
     30   JSGraph* jsgraph_;
     31   Node* context_;
     32 };
     33 }
     34 }
     35 }  // namespace v8::internal::compiler
     36 
     37 #endif  // V8_COMPILER_JS_CONTEXT_SPECIALIZATION_H_
     38