Line data Source code
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:
23 : JSFrameSpecialization(Editor* editor, JavaScriptFrame const* frame,
24 : JSGraph* jsgraph)
25 395343 : : AdvancedReducer(editor), frame_(frame), jsgraph_(jsgraph) {}
26 395343 : ~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;
36 : JavaScriptFrame const* frame() const { return frame_; }
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_
|