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_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:
19  JSInliner(CompilationInfo* info, JSGraph* jsgraph)
20      : info_(info), jsgraph_(jsgraph) {}
21
22  void Inline();
23  void TryInlineCall(Node* node);
24
25 private:
26  friend class InlinerVisitor;
27  CompilationInfo* info_;
28  JSGraph* jsgraph_;
29
30  Node* CreateArgumentsAdaptorFrameState(JSCallFunctionAccessor* call,
31                                         Handle<JSFunction> jsfunction,
32                                         Zone* temp_zone);
33  void AddClosureToFrameState(Node* frame_state, Handle<JSFunction> jsfunction);
34  static void UnifyReturn(Graph* graph);
35};
36}
37}
38}  // namespace v8::internal::compiler
39
40#endif  // V8_COMPILER_JS_INLINING_H_
41