blob: eef29d6a74f68f24176fa9b4aa62e9afcf0f8dda [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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_INLINING_H_
6#define V8_COMPILER_JS_INLINING_H_
7
8#include "src/compiler/js-graph.h"
9#include "src/v8.h"
10
11namespace v8 {
12namespace internal {
13namespace compiler {
14
15class JSCallFunctionAccessor;
16
17class JSInliner {
18 public:
Emily Bernierd0a1eb72015-03-24 16:35:39 -040019 JSInliner(Zone* local_zone, CompilationInfo* info, JSGraph* jsgraph)
20 : local_zone_(local_zone), info_(info), jsgraph_(jsgraph) {}
Ben Murdochb8a8cc12014-11-26 15:28:44 +000021
22 void Inline();
Emily Bernierd0a1eb72015-03-24 16:35:39 -040023 void TryInlineJSCall(Node* node);
24 void TryInlineRuntimeCall(Node* node);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000025
26 private:
27 friend class InlinerVisitor;
Emily Bernierd0a1eb72015-03-24 16:35:39 -040028 Zone* local_zone_;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000029 CompilationInfo* info_;
30 JSGraph* jsgraph_;
31
32 Node* CreateArgumentsAdaptorFrameState(JSCallFunctionAccessor* call,
33 Handle<JSFunction> jsfunction,
34 Zone* temp_zone);
35 void AddClosureToFrameState(Node* frame_state, Handle<JSFunction> jsfunction);
36 static void UnifyReturn(Graph* graph);
37};
38}
39}
40} // namespace v8::internal::compiler
41
42#endif // V8_COMPILER_JS_INLINING_H_