• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef V8_COMPILER_JS_FRAME_SPECIALIZATION_H_
6 #define V8_COMPILER_JS_FRAME_SPECIALIZATION_H_
7 
8 #include "src/compiler/graph-reducer.h"
9 
10 namespace v8 {
11 namespace internal {
12 
13 // Forward declarations.
14 class JavaScriptFrame;
15 
16 namespace compiler {
17 
18 // Forward declarations.
19 class JSGraph;
20 
21 class JSFrameSpecialization final : public AdvancedReducer {
22  public:
JSFrameSpecialization(Editor * editor,JavaScriptFrame const * frame,JSGraph * jsgraph)23   JSFrameSpecialization(Editor* editor, JavaScriptFrame const* frame,
24                         JSGraph* jsgraph)
25       : AdvancedReducer(editor), frame_(frame), jsgraph_(jsgraph) {}
~JSFrameSpecialization()26   ~JSFrameSpecialization() final {}
27 
28   Reduction Reduce(Node* node) final;
29 
30  private:
31   Reduction ReduceOsrValue(Node* node);
32   Reduction ReduceOsrGuard(Node* node);
33   Reduction ReduceParameter(Node* node);
34 
35   Isolate* isolate() const;
frame()36   JavaScriptFrame const* frame() const { return frame_; }
jsgraph()37   JSGraph* jsgraph() const { return jsgraph_; }
38 
39   JavaScriptFrame const* const frame_;
40   JSGraph* const jsgraph_;
41 
42   DISALLOW_COPY_AND_ASSIGN(JSFrameSpecialization);
43 };
44 
45 }  // namespace compiler
46 }  // namespace internal
47 }  // namespace v8
48 
49 #endif  // V8_COMPILER_JS_FRAME_SPECIALIZATION_H_
50