Line data Source code
1 : // Copyright 2017 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_CALL_GEN_H_
6 : #define V8_BUILTINS_BUILTINS_CALL_GEN_H_
7 :
8 : #include "src/code-stub-assembler.h"
9 :
10 : namespace v8 {
11 : namespace internal {
12 :
13 392 : class CallOrConstructBuiltinsAssembler : public CodeStubAssembler {
14 : public:
15 : explicit CallOrConstructBuiltinsAssembler(compiler::CodeAssemblerState* state)
16 392 : : CodeStubAssembler(state) {}
17 :
18 : void CallOrConstructWithArrayLike(TNode<Object> target,
19 : SloppyTNode<Object> new_target,
20 : TNode<Object> arguments_list,
21 : TNode<Context> context);
22 : void CallOrConstructDoubleVarargs(TNode<Object> target,
23 : SloppyTNode<Object> new_target,
24 : TNode<FixedDoubleArray> elements,
25 : TNode<Int32T> length,
26 : TNode<Int32T> args_count,
27 : TNode<Context> context, TNode<Int32T> kind);
28 : void CallOrConstructWithSpread(TNode<Object> target, TNode<Object> new_target,
29 : TNode<Object> spread, TNode<Int32T> args_count,
30 : TNode<Context> context);
31 :
32 : enum class CallFunctionTemplateMode : uint8_t {
33 : kCheckAccess,
34 : kCheckCompatibleReceiver,
35 : kCheckAccessAndCompatibleReceiver,
36 : };
37 :
38 : void CallFunctionTemplate(CallFunctionTemplateMode mode,
39 : TNode<FunctionTemplateInfo> function_template_info,
40 : TNode<IntPtrT> argc, TNode<Context> context);
41 :
42 : private:
43 : TNode<JSReceiver> GetCompatibleReceiver(TNode<JSReceiver> receiver,
44 : TNode<HeapObject> signature,
45 : TNode<Context> context);
46 : };
47 :
48 : } // namespace internal
49 : } // namespace v8
50 :
51 : #endif // V8_BUILTINS_BUILTINS_CALL_GEN_H_
|