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