• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 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_BUILTINS_BUILTINS_LAZY_GEN_H_
6 #define V8_BUILTINS_BUILTINS_LAZY_GEN_H_
7 
8 #include "src/codegen/code-stub-assembler.h"
9 
10 namespace v8 {
11 namespace internal {
12 
13 class LazyBuiltinsAssembler : public CodeStubAssembler {
14  public:
15   using Descriptor = JSTrampolineDescriptor;
16 
LazyBuiltinsAssembler(compiler::CodeAssemblerState * state)17   explicit LazyBuiltinsAssembler(compiler::CodeAssemblerState* state)
18       : CodeStubAssembler(state) {}
19 
20   void GenerateTailCallToJSCode(TNode<CodeT> code, TNode<JSFunction> function);
21 
22   void GenerateTailCallToReturnedCode(Runtime::FunctionId function_id,
23                                       TNode<JSFunction> function);
24   void TailCallRuntimeIfStateEquals(TNode<Uint32T> state,
25                                     TieringState expected_state,
26                                     Runtime::FunctionId function_id,
27                                     TNode<JSFunction> function);
28 
29   void MaybeTailCallOptimizedCodeSlot(TNode<JSFunction> function,
30                                       TNode<FeedbackVector> feedback_vector);
31   void CompileLazy(TNode<JSFunction> function);
32 };
33 
34 }  // namespace internal
35 }  // namespace v8
36 
37 #endif  // V8_BUILTINS_BUILTINS_LAZY_GEN_H_
38