Coverage Report

Created: 2025-12-30 08:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/node/deps/v8/include/v8-fast-api-calls.h
Line
Count
Source
1
// Copyright 2020 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 INCLUDE_V8_FAST_API_CALLS_H_
6
#define INCLUDE_V8_FAST_API_CALLS_H_
7
8
/**
9
 * This file provides additional API on top of the default one for making
10
 * API calls, which come from embedder C++ functions. The functions are being
11
 * called directly from optimized code, doing all the necessary typechecks
12
 * in the compiler itself, instead of on the embedder side. Hence the "fast"
13
 * in the name. Example usage might look like:
14
 *
15
 * \code
16
 *    void FastMethod(int param, bool another_param);
17
 *
18
 *    v8::FunctionTemplate::New(isolate, SlowCallback, data,
19
 *                              signature, length, constructor_behavior
20
 *                              side_effect_type,
21
 *                              &v8::CFunction::Make(FastMethod));
22
 * \endcode
23
 *
24
 * By design, fast calls are limited by the following requirements, which
25
 * the embedder should enforce themselves:
26
 *   - they should not allocate on the JS heap;
27
 *   - they should not trigger JS execution.
28
 * To enforce them, the embedder could use the existing
29
 * v8::Isolate::DisallowJavascriptExecutionScope and a utility similar to
30
 * Blink's NoAllocationScope:
31
 * https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/platform/heap/thread_state_scopes.h;l=16
32
 *
33
 * Due to these limitations, it's not directly possible to report errors by
34
 * throwing a JS exception or to otherwise do an allocation. There is an
35
 * alternative way of creating fast calls that supports falling back to the
36
 * slow call and then performing the necessary allocation. When one creates
37
 * the fast method by using CFunction::MakeWithFallbackSupport instead of
38
 * CFunction::Make, the fast callback gets as last parameter an output variable,
39
 * through which it can request falling back to the slow call. So one might
40
 * declare their method like:
41
 *
42
 * \code
43
 *    void FastMethodWithFallback(int param, FastApiCallbackOptions& options);
44
 * \endcode
45
 *
46
 * If the callback wants to signal an error condition or to perform an
47
 * allocation, it must set options.fallback to true and do an early return from
48
 * the fast method. Then V8 checks the value of options.fallback and if it's
49
 * true, falls back to executing the SlowCallback, which is capable of reporting
50
 * the error (either by throwing a JS exception or logging to the console) or
51
 * doing the allocation. It's the embedder's responsibility to ensure that the
52
 * fast callback is idempotent up to the point where error and fallback
53
 * conditions are checked, because otherwise executing the slow callback might
54
 * produce visible side-effects twice.
55
 *
56
 * An example for custom embedder type support might employ a way to wrap/
57
 * unwrap various C++ types in JSObject instances, e.g:
58
 *
59
 * \code
60
 *
61
 *    // Helper method with a check for field count.
62
 *    template <typename T, int offset>
63
 *    inline T* GetInternalField(v8::Local<v8::Object> wrapper) {
64
 *      assert(offset < wrapper->InternalFieldCount());
65
 *      return reinterpret_cast<T*>(
66
 *          wrapper->GetAlignedPointerFromInternalField(offset));
67
 *    }
68
 *
69
 *    class CustomEmbedderType {
70
 *     public:
71
 *      // Returns the raw C object from a wrapper JS object.
72
 *      static CustomEmbedderType* Unwrap(v8::Local<v8::Object> wrapper) {
73
 *        return GetInternalField<CustomEmbedderType,
74
 *                                kV8EmbedderWrapperObjectIndex>(wrapper);
75
 *      }
76
 *      static void FastMethod(v8::Local<v8::Object> receiver_obj, int param) {
77
 *        CustomEmbedderType* receiver = static_cast<CustomEmbedderType*>(
78
 *          receiver_obj->GetAlignedPointerFromInternalField(
79
 *            kV8EmbedderWrapperObjectIndex));
80
 *
81
 *        // Type checks are already done by the optimized code.
82
 *        // Then call some performance-critical method like:
83
 *        // receiver->Method(param);
84
 *      }
85
 *
86
 *      static void SlowMethod(
87
 *          const v8::FunctionCallbackInfo<v8::Value>& info) {
88
 *        v8::Local<v8::Object> instance =
89
 *          v8::Local<v8::Object>::Cast(info.Holder());
90
 *        CustomEmbedderType* receiver = Unwrap(instance);
91
 *        // TODO: Do type checks and extract {param}.
92
 *        receiver->Method(param);
93
 *      }
94
 *    };
95
 *
96
 *    // The following setup function can be templatized based on
97
 *    // the {embedder_object} argument.
98
 *    void SetupCustomEmbedderObject(v8::Isolate* isolate,
99
 *                                   v8::Local<v8::Context> context,
100
 *                                   CustomEmbedderType* embedder_object) {
101
 *      v8::CFunction c_func =
102
 *        MakeV8CFunction(CustomEmbedderType::FastMethod);
103
 *
104
 *      Local<v8::FunctionTemplate> method_template =
105
 *        v8::FunctionTemplate::New(
106
 *          isolate, CustomEmbedderType::SlowMethod, v8::Local<v8::Value>(),
107
 *          v8::Local<v8::Signature>(), 1, v8::ConstructorBehavior::kAllow,
108
 *          v8::SideEffectType::kHasSideEffect, &c_func);
109
 *
110
 *      v8::Local<v8::ObjectTemplate> object_template =
111
 *        v8::ObjectTemplate::New(isolate);
112
 *      object_template->SetInternalFieldCount(
113
 *        kV8EmbedderWrapperObjectIndex + 1);
114
 *      object_template->Set(isolate, "method", method_template);
115
 *
116
 *      // Instantiate the wrapper JS object.
117
 *      v8::Local<v8::Object> object =
118
 *          object_template->NewInstance(context).ToLocalChecked();
119
 *      object->SetAlignedPointerInInternalField(
120
 *        kV8EmbedderWrapperObjectIndex,
121
 *        reinterpret_cast<void*>(embedder_object));
122
 *
123
 *      // TODO: Expose {object} where it's necessary.
124
 *    }
125
 * \endcode
126
 *
127
 * For instance if {object} is exposed via a global "obj" variable,
128
 * one could write in JS:
129
 *   function hot_func() {
130
 *     obj.method(42);
131
 *   }
132
 * and once {hot_func} gets optimized, CustomEmbedderType::FastMethod
133
 * will be called instead of the slow version, with the following arguments:
134
 *   receiver := the {embedder_object} from above
135
 *   param := 42
136
 *
137
 * Currently supported return types:
138
 *   - void
139
 *   - bool
140
 *   - int32_t
141
 *   - uint32_t
142
 *   - float32_t
143
 *   - float64_t
144
 * Currently supported argument types:
145
 *  - pointer to an embedder type
146
 *  - JavaScript array of primitive types
147
 *  - bool
148
 *  - int32_t
149
 *  - uint32_t
150
 *  - int64_t
151
 *  - uint64_t
152
 *  - float32_t
153
 *  - float64_t
154
 *
155
 * The 64-bit integer types currently have the IDL (unsigned) long long
156
 * semantics: https://heycam.github.io/webidl/#abstract-opdef-converttoint
157
 * In the future we'll extend the API to also provide conversions from/to
158
 * BigInt to preserve full precision.
159
 * The floating point types currently have the IDL (unrestricted) semantics,
160
 * which is the only one used by WebGL. We plan to add support also for
161
 * restricted floats/doubles, similarly to the BigInt conversion policies.
162
 * We also differ from the specific NaN bit pattern that WebIDL prescribes
163
 * (https://heycam.github.io/webidl/#es-unrestricted-float) in that Blink
164
 * passes NaN values as-is, i.e. doesn't normalize them.
165
 *
166
 * To be supported types:
167
 *  - TypedArrays and ArrayBuffers
168
 *  - arrays of embedder types
169
 *
170
 *
171
 * The API offers a limited support for function overloads:
172
 *
173
 * \code
174
 *    void FastMethod_2Args(int param, bool another_param);
175
 *    void FastMethod_3Args(int param, bool another_param, int third_param);
176
 *
177
 *    v8::CFunction fast_method_2args_c_func =
178
 *         MakeV8CFunction(FastMethod_2Args);
179
 *    v8::CFunction fast_method_3args_c_func =
180
 *         MakeV8CFunction(FastMethod_3Args);
181
 *    const v8::CFunction fast_method_overloads[] = {fast_method_2args_c_func,
182
 *                                                   fast_method_3args_c_func};
183
 *    Local<v8::FunctionTemplate> method_template =
184
 *        v8::FunctionTemplate::NewWithCFunctionOverloads(
185
 *            isolate, SlowCallback, data, signature, length,
186
 *            constructor_behavior, side_effect_type,
187
 *            {fast_method_overloads, 2});
188
 * \endcode
189
 *
190
 * In this example a single FunctionTemplate is associated to multiple C++
191
 * functions. The overload resolution is currently only based on the number of
192
 * arguments passed in a call. For example, if this method_template is
193
 * registered with a wrapper JS object as described above, a call with two
194
 * arguments:
195
 *    obj.method(42, true);
196
 * will result in a fast call to FastMethod_2Args, while a call with three or
197
 * more arguments:
198
 *    obj.method(42, true, 11);
199
 * will result in a fast call to FastMethod_3Args. Instead a call with less than
200
 * two arguments, like:
201
 *    obj.method(42);
202
 * would not result in a fast call but would fall back to executing the
203
 * associated SlowCallback.
204
 */
205
206
#include <stddef.h>
207
#include <stdint.h>
208
209
#include <tuple>
210
#include <type_traits>
211
212
#include "v8-external.h"      // NOLINT(build/include_directory)
213
#include "v8-internal.h"      // NOLINT(build/include_directory)
214
#include "v8-local-handle.h"  // NOLINT(build/include_directory)
215
#include "v8-typed-array.h"   // NOLINT(build/include_directory)
216
#include "v8-value.h"         // NOLINT(build/include_directory)
217
#include "v8config.h"         // NOLINT(build/include_directory)
218
219
namespace v8 {
220
221
class Isolate;
222
223
class CTypeInfo {
224
 public:
225
  enum class Type : uint8_t {
226
    kVoid,
227
    kBool,
228
    kUint8,
229
    kInt32,
230
    kUint32,
231
    kInt64,
232
    kUint64,
233
    kFloat32,
234
    kFloat64,
235
    kPointer,
236
    kV8Value,
237
    kSeqOneByteString,
238
    kApiObject,  // This will be deprecated once all users have
239
                 // migrated from v8::ApiObject to v8::Local<v8::Value>.
240
    kAny,        // This is added to enable untyped representation of fast
241
                 // call arguments for test purposes. It can represent any of
242
                 // the other types stored in the same memory as a union
243
                 // (see AnyCType declared below). This allows for
244
                 // uniform passing of arguments w.r.t. their location
245
                 // (in a register or on the stack), independent of their
246
                 // actual type. It's currently used by the arm64 simulator
247
                 // and can be added to the other simulators as well when fast
248
                 // calls having both GP and FP params need to be supported.
249
  };
250
251
  // kCallbackOptionsType is not part of the Type enum
252
  // because it is only used internally. Use value 255 that is larger
253
  // than any valid Type enum.
254
  static constexpr Type kCallbackOptionsType = Type(255);
255
256
  enum class Flags : uint8_t {
257
    kNone = 0,
258
    kAllowSharedBit = 1 << 0,   // Must be an ArrayBuffer or TypedArray
259
    kEnforceRangeBit = 1 << 1,  // T must be integral
260
    kClampBit = 1 << 2,         // T must be integral
261
    kIsRestrictedBit = 1 << 3,  // T must be float or double
262
  };
263
264
  explicit constexpr CTypeInfo(Type type, Flags flags = Flags::kNone)
265
5.18k
      : type_(type), flags_(flags) {}
266
267
  typedef uint32_t Identifier;
268
  explicit constexpr CTypeInfo(Identifier identifier)
269
      : type_(static_cast<Type>((identifier >> 8) & 255)),
270
0
        flags_(static_cast<Flags>(identifier & 255)) {}
271
0
  constexpr Identifier GetId() const {
272
0
    return static_cast<uint8_t>(type_) << 8 |
273
0
           static_cast<uint8_t>(flags_);
274
0
  }
275
276
0
  constexpr Type GetType() const { return type_; }
277
0
  constexpr Flags GetFlags() const { return flags_; }
278
279
0
  static constexpr bool IsIntegralType(Type type) {
280
0
    return type == Type::kUint8 || type == Type::kInt32 ||
281
0
           type == Type::kUint32 || type == Type::kInt64 ||
282
0
           type == Type::kUint64;
283
0
  }
284
285
0
  static constexpr bool IsFloatingPointType(Type type) {
286
0
    return type == Type::kFloat32 || type == Type::kFloat64;
287
0
  }
288
289
0
  static constexpr bool IsPrimitive(Type type) {
290
0
    return IsIntegralType(type) || IsFloatingPointType(type) ||
291
0
           type == Type::kBool;
292
0
  }
293
294
 private:
295
  Type type_;
296
  Flags flags_;
297
};
298
299
struct FastOneByteString {
300
  const char* data;
301
  uint32_t length;
302
};
303
304
class V8_EXPORT CFunctionInfo {
305
 public:
306
  enum class Int64Representation : uint8_t {
307
    kNumber = 0,  // Use numbers to represent 64 bit integers.
308
    kBigInt = 1,  // Use BigInts to represent 64 bit integers.
309
  };
310
311
  // Construct a struct to hold a CFunction's type information.
312
  // |return_info| describes the function's return type.
313
  // |arg_info| is an array of |arg_count| CTypeInfos describing the
314
  //   arguments. Only the last argument may be of the special type
315
  //   CTypeInfo::kCallbackOptionsType.
316
  CFunctionInfo(const CTypeInfo& return_info, unsigned int arg_count,
317
                const CTypeInfo* arg_info,
318
                Int64Representation repr = Int64Representation::kNumber);
319
320
0
  const CTypeInfo& ReturnInfo() const { return return_info_; }
321
322
  // The argument count, not including the v8::FastApiCallbackOptions
323
  // if present.
324
0
  unsigned int ArgumentCount() const {
325
0
    return HasOptions() ? arg_count_ - 1 : arg_count_;
326
0
  }
327
328
4.46k
  Int64Representation GetInt64Representation() const { return repr_; }
329
330
  // |index| must be less than ArgumentCount().
331
  //  Note: if the last argument passed on construction of CFunctionInfo
332
  //  has type CTypeInfo::kCallbackOptionsType, it is not included in
333
  //  ArgumentCount().
334
  const CTypeInfo& ArgumentInfo(unsigned int index) const;
335
336
0
  bool HasOptions() const {
337
0
    // The options arg is always the last one.
338
0
    return arg_count_ > 0 && arg_info_[arg_count_ - 1].GetType() ==
339
0
                                 CTypeInfo::kCallbackOptionsType;
340
0
  }
341
342
 private:
343
  const CTypeInfo return_info_;
344
  const Int64Representation repr_;
345
  const unsigned int arg_count_;
346
  const CTypeInfo* arg_info_;
347
};
348
349
struct FastApiCallbackOptions;
350
351
// Provided for testing.
352
union V8_TRIVIAL_ABI AnyCType {
353
0
  AnyCType() : int64_value(0) {}
354
355
#if defined(V8_ENABLE_LOCAL_OFF_STACK_CHECK) && V8_HAS_ATTRIBUTE_TRIVIAL_ABI
356
  // In this case, Local<T> is not trivially copyable and the implicit
357
  // copy constructor and copy assignment for the union are deleted.
358
  AnyCType(const AnyCType& other) : int64_value(other.int64_value) {}
359
  AnyCType& operator=(const AnyCType& other) {
360
    int64_value = other.int64_value;
361
    return *this;
362
  }
363
#endif
364
365
  bool bool_value;
366
  int32_t int32_value;
367
  uint32_t uint32_value;
368
  int64_t int64_value;
369
  uint64_t uint64_value;
370
  float float_value;
371
  double double_value;
372
  void* pointer_value;
373
  Local<Object> object_value;
374
  Local<Array> sequence_value;
375
  const FastOneByteString* string_value;
376
  FastApiCallbackOptions* options_value;
377
};
378
379
static_assert(
380
    sizeof(AnyCType) == 8,
381
    "The union AnyCType should have size == 64 bits, as this is assumed "
382
    "by EffectControlLinearizer.");
383
384
class V8_EXPORT CFunction {
385
 public:
386
0
  constexpr CFunction() : address_(nullptr), type_info_(nullptr) {}
387
388
0
  const CTypeInfo& ReturnInfo() const { return type_info_->ReturnInfo(); }
389
390
0
  const CTypeInfo& ArgumentInfo(unsigned int index) const {
391
0
    return type_info_->ArgumentInfo(index);
392
0
  }
393
394
0
  unsigned int ArgumentCount() const { return type_info_->ArgumentCount(); }
395
396
0
  const void* GetAddress() const { return address_; }
397
4.46k
  CFunctionInfo::Int64Representation GetInt64Representation() const {
398
4.46k
    return type_info_->GetInt64Representation();
399
4.46k
  }
400
0
  const CFunctionInfo* GetTypeInfo() const { return type_info_; }
401
402
  enum class OverloadResolution { kImpossible, kAtRuntime, kAtCompileTime };
403
404
  template <typename F>
405
  static CFunction Make(F* func,
406
                        CFunctionInfo::Int64Representation int64_rep =
407
4.46k
                            CFunctionInfo::Int64Representation::kNumber) {
408
4.46k
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
4.46k
    result.GetInt64Representation();
410
4.46k
    return result;
411
4.46k
  }
v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<int (v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>(int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<int (v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, long, bool, v8::FastApiCallbackOptions&)>(int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, long, bool, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastOneByteString const&, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastOneByteString const&, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
216
                            CFunctionInfo::Int64Representation::kNumber) {
408
216
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
216
    result.GetInt64Representation();
410
216
    return result;
411
216
  }
v8::CFunction v8::CFunction::Make<double (v8::Local<v8::Value>)>(double (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
720
                            CFunctionInfo::Int64Representation::kNumber) {
408
720
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
720
    result.GetInt64Representation();
410
720
    return result;
411
720
  }
v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Value>)>(unsigned int (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Value>)>(void (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
360
                            CFunctionInfo::Int64Representation::kNumber) {
408
360
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
360
    result.GetInt64Representation();
410
360
    return result;
411
360
  }
v8::CFunction v8::CFunction::Make<bool (v8::Local<v8::Value>, v8::Local<v8::Value>)>(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
2.01k
                            CFunctionInfo::Int64Representation::kNumber) {
408
2.01k
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
2.01k
    result.GetInt64Representation();
410
2.01k
    return result;
411
2.01k
  }
v8::CFunction v8::CFunction::Make<bool (v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<bool (v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
144
                            CFunctionInfo::Int64Representation::kNumber) {
408
144
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
144
    result.GetInt64Representation();
410
144
    return result;
411
144
  }
v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Value>, unsigned int)>(unsigned int (*)(v8::Local<v8::Value>, unsigned int), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned long, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, long, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, long, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&)>(void (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Object>, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Object>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, v8::FastApiCallbackOptions&)>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Object>, long)>(void (*)(v8::Local<v8::Object>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Object>, bool)>(void (*)(v8::Local<v8::Object>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
144
                            CFunctionInfo::Int64Representation::kNumber) {
408
144
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
144
    result.GetInt64Representation();
410
144
    return result;
411
144
  }
v8::CFunction v8::CFunction::Make<double (v8::Local<v8::Value>, double)>(double (*)(v8::Local<v8::Value>, double), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Value>, long)>(void (*)(v8::Local<v8::Value>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Value>, bool)>(void (*)(v8::Local<v8::Value>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
407
72
                            CFunctionInfo::Int64Representation::kNumber) {
408
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
409
72
    result.GetInt64Representation();
410
72
    return result;
411
72
  }
412
413
  // Provided for testing purposes.
414
  template <typename R, typename... Args, typename R_Patch,
415
            typename... Args_Patch>
416
  static CFunction Make(R (*func)(Args...),
417
                        R_Patch (*patching_func)(Args_Patch...),
418
                        CFunctionInfo::Int64Representation int64_rep =
419
                            CFunctionInfo::Int64Representation::kNumber) {
420
    CFunction c_func = ArgUnwrap<R (*)(Args...)>::Make(func, int64_rep);
421
    static_assert(
422
        sizeof...(Args_Patch) == sizeof...(Args),
423
        "The patching function must have the same number of arguments.");
424
    c_func.address_ = reinterpret_cast<void*>(patching_func);
425
    return c_func;
426
  }
427
428
  CFunction(const void* address, const CFunctionInfo* type_info);
429
430
 private:
431
  const void* address_;
432
  const CFunctionInfo* type_info_;
433
434
  template <typename F>
435
  class ArgUnwrap {
436
    static_assert(sizeof(F) != sizeof(F),
437
                  "CFunction must be created from a function pointer.");
438
  };
439
440
  template <typename R, typename... Args>
441
  class ArgUnwrap<R (*)(Args...)> {
442
   public:
443
    static CFunction Make(R (*func)(Args...),
444
                          CFunctionInfo::Int64Representation int64_rep =
445
                              CFunctionInfo::Int64Representation::kNumber);
446
  };
447
};
448
449
/**
450
 * A struct which may be passed to a fast call callback, like so:
451
 * \code
452
 *    void FastMethodWithOptions(int param, FastApiCallbackOptions& options);
453
 * \endcode
454
 */
455
struct FastApiCallbackOptions {
456
  /**
457
   * Creates a new instance of FastApiCallbackOptions for testing purpose.  The
458
   * returned instance may be filled with mock data.
459
   */
460
0
  static FastApiCallbackOptions CreateForTesting(Isolate* isolate) {
461
0
    return {};
462
0
  }
463
464
  v8::Isolate* isolate = nullptr;
465
466
  /**
467
   * The `data` passed to the FunctionTemplate constructor, or `undefined`.
468
   */
469
  v8::Local<v8::Value> data;
470
};
471
472
namespace internal {
473
474
// Helper to count the number of occurances of `T` in `List`
475
template <typename T, typename... List>
476
struct count : std::integral_constant<int, 0> {};
477
template <typename T, typename... Args>
478
struct count<T, T, Args...>
479
    : std::integral_constant<std::size_t, 1 + count<T, Args...>::value> {};
480
template <typename T, typename U, typename... Args>
481
struct count<T, U, Args...> : count<T, Args...> {};
482
483
template <CFunctionInfo::Int64Representation Representation,
484
          typename RetBuilder, typename... ArgBuilders>
485
class CFunctionInfoImpl : public CFunctionInfo {
486
  static constexpr int kOptionsArgCount =
487
      count<FastApiCallbackOptions&, ArgBuilders...>();
488
  static constexpr int kReceiverCount = 1;
489
490
  static_assert(kOptionsArgCount == 0 || kOptionsArgCount == 1,
491
                "Only one options parameter is supported.");
492
493
  static_assert(sizeof...(ArgBuilders) >= kOptionsArgCount + kReceiverCount,
494
                "The receiver or the options argument is missing.");
495
496
 public:
497
  constexpr CFunctionInfoImpl()
498
1.29k
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
1.29k
                      arg_info_storage_, Representation),
500
1.29k
        arg_info_storage_{ArgBuilders::Build()...} {
501
1.29k
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
1.29k
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
1.29k
                      kReturnType == CTypeInfo::Type::kBool ||
504
1.29k
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
1.29k
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
1.29k
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
1.29k
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
1.29k
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
1.29k
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
1.29k
                      kReturnType == CTypeInfo::Type::kPointer ||
511
1.29k
                      kReturnType == CTypeInfo::Type::kAny,
512
1.29k
                  "String and api object values are not currently "
513
1.29k
                  "supported return types.");
514
1.29k
  }
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastOneByteString const&>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastOneByteString const&>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<long> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<long> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<bool> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<bool> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<double> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<double> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<long> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<long> >::CFunctionInfoImpl()
v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)0, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<bool> >::CFunctionInfoImpl()
Line
Count
Source
498
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
499
72
                      arg_info_storage_, Representation),
500
72
        arg_info_storage_{ArgBuilders::Build()...} {
501
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
502
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
503
72
                      kReturnType == CTypeInfo::Type::kBool ||
504
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
505
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
506
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
507
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
509
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
510
72
                      kReturnType == CTypeInfo::Type::kPointer ||
511
72
                      kReturnType == CTypeInfo::Type::kAny,
512
72
                  "String and api object values are not currently "
513
72
                  "supported return types.");
514
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<bool> >::CFunctionInfoImpl()
515
516
 private:
517
  const CTypeInfo arg_info_storage_[sizeof...(ArgBuilders)];
518
};
519
520
template <typename T>
521
struct TypeInfoHelper {
522
  static_assert(sizeof(T) != sizeof(T), "This type is not supported");
523
};
524
525
#define SPECIALIZE_GET_TYPE_INFO_HELPER_FOR(T, Enum)                          \
526
  template <>                                                                 \
527
  struct TypeInfoHelper<T> {                                                  \
528
0
    static constexpr CTypeInfo::Flags Flags() {                               \
529
0
      return CTypeInfo::Flags::kNone;                                         \
530
0
    }                                                                         \
Unexecuted instantiation: v8::internal::TypeInfoHelper<bool>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<unsigned char>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<int>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<unsigned int>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<long>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<unsigned long>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<float>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<double>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<void*>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<void>::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<v8::Local<v8::Value> >::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<v8::Local<v8::Object> >::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<v8::Local<v8::Array> >::Flags()
Unexecuted instantiation: v8::internal::TypeInfoHelper<v8::AnyCType>::Flags()
531
                                                                              \
532
4.53k
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<bool>::Type()
Line
Count
Source
532
432
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
Unexecuted instantiation: v8::internal::TypeInfoHelper<unsigned char>::Type()
v8::internal::TypeInfoHelper<int>::Type()
Line
Count
Source
532
144
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<unsigned int>::Type()
Line
Count
Source
532
1.00k
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<long>::Type()
Line
Count
Source
532
216
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
Unexecuted instantiation: v8::internal::TypeInfoHelper<unsigned long>::Type()
Unexecuted instantiation: v8::internal::TypeInfoHelper<float>::Type()
v8::internal::TypeInfoHelper<double>::Type()
Line
Count
Source
532
216
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
Unexecuted instantiation: v8::internal::TypeInfoHelper<void*>::Type()
v8::internal::TypeInfoHelper<void>::Type()
Line
Count
Source
532
360
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<v8::Local<v8::Value> >::Type()
Line
Count
Source
532
2.01k
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<v8::Local<v8::Object> >::Type()
Line
Count
Source
532
144
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
Unexecuted instantiation: v8::internal::TypeInfoHelper<v8::Local<v8::Array> >::Type()
Unexecuted instantiation: v8::internal::TypeInfoHelper<v8::AnyCType>::Type()
533
  };
534
535
template <CTypeInfo::Type type>
536
struct CTypeInfoTraits {};
537
538
#define DEFINE_TYPE_INFO_TRAITS(CType, Enum)      \
539
  template <>                                     \
540
  struct CTypeInfoTraits<CTypeInfo::Type::Enum> { \
541
    using ctype = CType;                          \
542
  };
543
544
#define PRIMITIVE_C_TYPES(V) \
545
  V(bool, kBool)             \
546
  V(uint8_t, kUint8)         \
547
  V(int32_t, kInt32)         \
548
  V(uint32_t, kUint32)       \
549
  V(int64_t, kInt64)         \
550
  V(uint64_t, kUint64)       \
551
  V(float, kFloat32)         \
552
  V(double, kFloat64)        \
553
  V(void*, kPointer)
554
555
// Same as above, but includes deprecated types for compatibility.
556
#define ALL_C_TYPES(V)               \
557
  PRIMITIVE_C_TYPES(V)               \
558
  V(void, kVoid)                     \
559
  V(v8::Local<v8::Value>, kV8Value)  \
560
  V(v8::Local<v8::Object>, kV8Value) \
561
  V(v8::Local<v8::Array>, kV8Value)  \
562
  V(AnyCType, kAny)
563
564
// ApiObject was a temporary solution to wrap the pointer to the v8::Value.
565
// Please use v8::Local<v8::Value> in new code for the arguments and
566
// v8::Local<v8::Object> for the receiver, as ApiObject will be deprecated.
567
568
ALL_C_TYPES(SPECIALIZE_GET_TYPE_INFO_HELPER_FOR)
569
PRIMITIVE_C_TYPES(DEFINE_TYPE_INFO_TRAITS)
570
571
#undef PRIMITIVE_C_TYPES
572
#undef ALL_C_TYPES
573
574
#undef TYPED_ARRAY_C_TYPES
575
576
template <>
577
struct TypeInfoHelper<FastApiCallbackOptions&> {
578
0
  static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; }
579
580
576
  static constexpr CTypeInfo::Type Type() {
581
576
    return CTypeInfo::kCallbackOptionsType;
582
576
  }
583
};
584
585
template <>
586
struct TypeInfoHelper<const FastOneByteString&> {
587
0
  static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; }
588
589
72
  static constexpr CTypeInfo::Type Type() {
590
72
    return CTypeInfo::Type::kSeqOneByteString;
591
72
  }
592
};
593
594
#define STATIC_ASSERT_IMPLIES(COND, ASSERTION, MSG) \
595
15.5k
  static_assert(((COND) == 0) || (ASSERTION), MSG)
596
597
}  // namespace internal
598
599
template <typename T, CTypeInfo::Flags... Flags>
600
class V8_EXPORT CTypeInfoBuilder {
601
 public:
602
  using BaseType = T;
603
604
5.18k
  static constexpr CTypeInfo Build() {
605
5.18k
    constexpr CTypeInfo::Flags kFlags =
606
5.18k
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
5.18k
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
5.18k
    STATIC_ASSERT_IMPLIES(
610
5.18k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
5.18k
        CTypeInfo::IsIntegralType(kType),
612
5.18k
        "kEnforceRangeBit is only allowed for integral types.");
613
5.18k
    STATIC_ASSERT_IMPLIES(
614
5.18k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
5.18k
        CTypeInfo::IsIntegralType(kType),
616
5.18k
        "kClampBit is only allowed for integral types.");
617
5.18k
    STATIC_ASSERT_IMPLIES(
618
5.18k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
5.18k
        CTypeInfo::IsFloatingPointType(kType),
620
5.18k
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
5.18k
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
5.18k
  }
v8::CTypeInfoBuilder<int>::Build()
Line
Count
Source
604
144
  static constexpr CTypeInfo Build() {
605
144
    constexpr CTypeInfo::Flags kFlags =
606
144
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
144
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
144
    STATIC_ASSERT_IMPLIES(
610
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
144
        CTypeInfo::IsIntegralType(kType),
612
144
        "kEnforceRangeBit is only allowed for integral types.");
613
144
    STATIC_ASSERT_IMPLIES(
614
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
144
        CTypeInfo::IsIntegralType(kType),
616
144
        "kClampBit is only allowed for integral types.");
617
144
    STATIC_ASSERT_IMPLIES(
618
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
144
        CTypeInfo::IsFloatingPointType(kType),
620
144
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
144
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
144
  }
v8::CTypeInfoBuilder<unsigned int>::Build()
Line
Count
Source
604
1.00k
  static constexpr CTypeInfo Build() {
605
1.00k
    constexpr CTypeInfo::Flags kFlags =
606
1.00k
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
1.00k
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
1.00k
    STATIC_ASSERT_IMPLIES(
610
1.00k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
1.00k
        CTypeInfo::IsIntegralType(kType),
612
1.00k
        "kEnforceRangeBit is only allowed for integral types.");
613
1.00k
    STATIC_ASSERT_IMPLIES(
614
1.00k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
1.00k
        CTypeInfo::IsIntegralType(kType),
616
1.00k
        "kClampBit is only allowed for integral types.");
617
1.00k
    STATIC_ASSERT_IMPLIES(
618
1.00k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
1.00k
        CTypeInfo::IsFloatingPointType(kType),
620
1.00k
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
1.00k
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
1.00k
  }
Unexecuted instantiation: v8::CTypeInfoBuilder<float>::Build()
v8::CTypeInfoBuilder<double>::Build()
Line
Count
Source
604
216
  static constexpr CTypeInfo Build() {
605
216
    constexpr CTypeInfo::Flags kFlags =
606
216
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
216
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
216
    STATIC_ASSERT_IMPLIES(
610
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
216
        CTypeInfo::IsIntegralType(kType),
612
216
        "kEnforceRangeBit is only allowed for integral types.");
613
216
    STATIC_ASSERT_IMPLIES(
614
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
216
        CTypeInfo::IsIntegralType(kType),
616
216
        "kClampBit is only allowed for integral types.");
617
216
    STATIC_ASSERT_IMPLIES(
618
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
216
        CTypeInfo::IsFloatingPointType(kType),
620
216
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
216
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
216
  }
v8::CTypeInfoBuilder<v8::Local<v8::Value>>::Build()
Line
Count
Source
604
2.01k
  static constexpr CTypeInfo Build() {
605
2.01k
    constexpr CTypeInfo::Flags kFlags =
606
2.01k
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
2.01k
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
2.01k
    STATIC_ASSERT_IMPLIES(
610
2.01k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
2.01k
        CTypeInfo::IsIntegralType(kType),
612
2.01k
        "kEnforceRangeBit is only allowed for integral types.");
613
2.01k
    STATIC_ASSERT_IMPLIES(
614
2.01k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
2.01k
        CTypeInfo::IsIntegralType(kType),
616
2.01k
        "kClampBit is only allowed for integral types.");
617
2.01k
    STATIC_ASSERT_IMPLIES(
618
2.01k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
2.01k
        CTypeInfo::IsFloatingPointType(kType),
620
2.01k
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
2.01k
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
2.01k
  }
v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&>::Build()
Line
Count
Source
604
576
  static constexpr CTypeInfo Build() {
605
576
    constexpr CTypeInfo::Flags kFlags =
606
576
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
576
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
576
    STATIC_ASSERT_IMPLIES(
610
576
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
576
        CTypeInfo::IsIntegralType(kType),
612
576
        "kEnforceRangeBit is only allowed for integral types.");
613
576
    STATIC_ASSERT_IMPLIES(
614
576
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
576
        CTypeInfo::IsIntegralType(kType),
616
576
        "kClampBit is only allowed for integral types.");
617
576
    STATIC_ASSERT_IMPLIES(
618
576
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
576
        CTypeInfo::IsFloatingPointType(kType),
620
576
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
576
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
576
  }
v8::CTypeInfoBuilder<long>::Build()
Line
Count
Source
604
216
  static constexpr CTypeInfo Build() {
605
216
    constexpr CTypeInfo::Flags kFlags =
606
216
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
216
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
216
    STATIC_ASSERT_IMPLIES(
610
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
216
        CTypeInfo::IsIntegralType(kType),
612
216
        "kEnforceRangeBit is only allowed for integral types.");
613
216
    STATIC_ASSERT_IMPLIES(
614
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
216
        CTypeInfo::IsIntegralType(kType),
616
216
        "kClampBit is only allowed for integral types.");
617
216
    STATIC_ASSERT_IMPLIES(
618
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
216
        CTypeInfo::IsFloatingPointType(kType),
620
216
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
216
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
216
  }
v8::CTypeInfoBuilder<bool>::Build()
Line
Count
Source
604
432
  static constexpr CTypeInfo Build() {
605
432
    constexpr CTypeInfo::Flags kFlags =
606
432
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
432
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
432
    STATIC_ASSERT_IMPLIES(
610
432
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
432
        CTypeInfo::IsIntegralType(kType),
612
432
        "kEnforceRangeBit is only allowed for integral types.");
613
432
    STATIC_ASSERT_IMPLIES(
614
432
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
432
        CTypeInfo::IsIntegralType(kType),
616
432
        "kClampBit is only allowed for integral types.");
617
432
    STATIC_ASSERT_IMPLIES(
618
432
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
432
        CTypeInfo::IsFloatingPointType(kType),
620
432
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
432
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
432
  }
v8::CTypeInfoBuilder<v8::FastOneByteString const&>::Build()
Line
Count
Source
604
72
  static constexpr CTypeInfo Build() {
605
72
    constexpr CTypeInfo::Flags kFlags =
606
72
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
72
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
72
    STATIC_ASSERT_IMPLIES(
610
72
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
72
        CTypeInfo::IsIntegralType(kType),
612
72
        "kEnforceRangeBit is only allowed for integral types.");
613
72
    STATIC_ASSERT_IMPLIES(
614
72
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
72
        CTypeInfo::IsIntegralType(kType),
616
72
        "kClampBit is only allowed for integral types.");
617
72
    STATIC_ASSERT_IMPLIES(
618
72
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
72
        CTypeInfo::IsFloatingPointType(kType),
620
72
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
72
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
72
  }
v8::CTypeInfoBuilder<void>::Build()
Line
Count
Source
604
360
  static constexpr CTypeInfo Build() {
605
360
    constexpr CTypeInfo::Flags kFlags =
606
360
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
360
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
360
    STATIC_ASSERT_IMPLIES(
610
360
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
360
        CTypeInfo::IsIntegralType(kType),
612
360
        "kEnforceRangeBit is only allowed for integral types.");
613
360
    STATIC_ASSERT_IMPLIES(
614
360
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
360
        CTypeInfo::IsIntegralType(kType),
616
360
        "kClampBit is only allowed for integral types.");
617
360
    STATIC_ASSERT_IMPLIES(
618
360
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
360
        CTypeInfo::IsFloatingPointType(kType),
620
360
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
360
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
360
  }
v8::CTypeInfoBuilder<v8::Local<v8::Object>>::Build()
Line
Count
Source
604
144
  static constexpr CTypeInfo Build() {
605
144
    constexpr CTypeInfo::Flags kFlags =
606
144
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
607
144
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
608
609
144
    STATIC_ASSERT_IMPLIES(
610
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
611
144
        CTypeInfo::IsIntegralType(kType),
612
144
        "kEnforceRangeBit is only allowed for integral types.");
613
144
    STATIC_ASSERT_IMPLIES(
614
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
615
144
        CTypeInfo::IsIntegralType(kType),
616
144
        "kClampBit is only allowed for integral types.");
617
144
    STATIC_ASSERT_IMPLIES(
618
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
619
144
        CTypeInfo::IsFloatingPointType(kType),
620
144
        "kIsRestrictedBit is only allowed for floating point types.");
621
622
    // Return the same type with the merged flags.
623
144
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
624
144
  }
Unexecuted instantiation: v8::CTypeInfoBuilder<unsigned long>::Build()
625
626
 private:
627
  template <typename... Rest>
628
  static constexpr CTypeInfo::Flags MergeFlags(CTypeInfo::Flags flags,
629
0
                                               Rest... rest) {
630
0
    return CTypeInfo::Flags(uint8_t(flags) | uint8_t(MergeFlags(rest...)));
631
0
  }
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<int>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<unsigned int>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<float>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<double>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<v8::Local<v8::Value>>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<long>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<bool>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<v8::FastOneByteString const&>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<void>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<v8::Local<v8::Object>>::MergeFlags<>(v8::CTypeInfo::Flags)
Unexecuted instantiation: v8::CTypeInfo::Flags v8::CTypeInfoBuilder<unsigned long>::MergeFlags<>(v8::CTypeInfo::Flags)
632
0
  static constexpr CTypeInfo::Flags MergeFlags() { return CTypeInfo::Flags(0); }
Unexecuted instantiation: v8::CTypeInfoBuilder<int>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<unsigned int>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<float>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<double>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<v8::Local<v8::Value>>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<long>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<bool>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<v8::FastOneByteString const&>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<void>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<v8::Local<v8::Object>>::MergeFlags()
Unexecuted instantiation: v8::CTypeInfoBuilder<unsigned long>::MergeFlags()
633
};
634
635
namespace internal {
636
template <typename RetBuilder, typename... ArgBuilders>
637
class CFunctionBuilderWithFunction {
638
 public:
639
4.46k
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastOneByteString const&>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
216
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
720
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
360
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
2.01k
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
144
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Unexecuted instantiation: v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<long> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<bool> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
144
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<double> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<long> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<bool> >::CFunctionBuilderWithFunction(void const*)
Line
Count
Source
639
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
640
641
  template <CTypeInfo::Flags... Flags>
642
  constexpr auto Ret() {
643
    return CFunctionBuilderWithFunction<
644
        CTypeInfoBuilder<typename RetBuilder::BaseType, Flags...>,
645
        ArgBuilders...>(fn_);
646
  }
647
648
  template <unsigned int N, CTypeInfo::Flags... Flags>
649
  constexpr auto Arg() {
650
    // Return a copy of the builder with the Nth arg builder merged with
651
    // template parameter pack Flags.
652
    return ArgImpl<N, Flags...>(
653
        std::make_index_sequence<sizeof...(ArgBuilders)>());
654
  }
655
656
  // Provided for testing purposes.
657
  template <typename Ret, typename... Args>
658
  auto Patch(Ret (*patching_func)(Args...)) {
659
    static_assert(
660
        sizeof...(Args) == sizeof...(ArgBuilders),
661
        "The patching function must have the same number of arguments.");
662
    fn_ = reinterpret_cast<void*>(patching_func);
663
    return *this;
664
  }
665
666
  template <CFunctionInfo::Int64Representation Representation =
667
                CFunctionInfo::Int64Representation::kNumber>
668
4.46k
  auto Build() {
669
4.46k
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
4.46k
        instance;
671
4.46k
    return CFunction(fn_, &instance);
672
4.46k
  }
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastOneByteString const&>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
216
  auto Build() {
669
216
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
216
        instance;
671
216
    return CFunction(fn_, &instance);
672
216
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastOneByteString const&>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
720
  auto Build() {
669
720
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
720
        instance;
671
720
    return CFunction(fn_, &instance);
672
720
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
360
  auto Build() {
669
360
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
360
        instance;
671
360
    return CFunction(fn_, &instance);
672
360
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
2.01k
  auto Build() {
669
2.01k
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
2.01k
        instance;
671
2.01k
    return CFunction(fn_, &instance);
672
2.01k
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
144
  auto Build() {
669
144
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
144
        instance;
671
144
    return CFunction(fn_, &instance);
672
144
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<bool>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned long>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<unsigned int>, v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<long> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<long> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<bool> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
144
  auto Build() {
669
144
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
144
        instance;
671
144
    return CFunction(fn_, &instance);
672
144
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Object>>, v8::CTypeInfoBuilder<bool> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<double> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<double>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<double> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<long> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<long> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<bool> >::Build<(v8::CFunctionInfo::Int64Representation)0>()
Line
Count
Source
668
72
  auto Build() {
669
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
670
72
        instance;
671
72
    return CFunction(fn_, &instance);
672
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<bool> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
673
674
 private:
675
  template <bool Merge, unsigned int N, CTypeInfo::Flags... Flags>
676
  struct GetArgBuilder;
677
678
  // Returns the same ArgBuilder as the one at index N, including its flags.
679
  // Flags in the template parameter pack are ignored.
680
  template <unsigned int N, CTypeInfo::Flags... Flags>
681
  struct GetArgBuilder<false, N, Flags...> {
682
    using type = std::tuple_element_t<N, std::tuple<ArgBuilders...>>;
683
  };
684
685
  // Returns an ArgBuilder with the same base type as the one at index N,
686
  // but merges the flags with the flags in the template parameter pack.
687
  template <unsigned int N, CTypeInfo::Flags... Flags>
688
  struct GetArgBuilder<true, N, Flags...> {
689
    using type = CTypeInfoBuilder<
690
        typename std::tuple_element_t<N, std::tuple<ArgBuilders...>>::BaseType,
691
        std::tuple_element_t<N, std::tuple<ArgBuilders...>>::Build().GetFlags(),
692
        Flags...>;
693
  };
694
695
  // Return a copy of the CFunctionBuilder, but merges the Flags on
696
  // ArgBuilder index N with the new Flags passed in the template parameter
697
  // pack.
698
  template <unsigned int N, CTypeInfo::Flags... Flags, size_t... I>
699
  constexpr auto ArgImpl(std::index_sequence<I...>) {
700
    return CFunctionBuilderWithFunction<
701
        RetBuilder, typename GetArgBuilder<N == I, I, Flags...>::type...>(fn_);
702
  }
703
704
  const void* fn_;
705
};
706
707
class CFunctionBuilder {
708
 public:
709
4.46k
  constexpr CFunctionBuilder() {}
710
711
  template <typename R, typename... Args>
712
4.46k
  constexpr auto Fn(R (*fn)(Args...)) {
713
4.46k
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
4.46k
                                        CTypeInfoBuilder<Args>...>(
715
4.46k
        reinterpret_cast<const void*>(fn));
716
4.46k
  }
auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<int, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&>(int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<int, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, long, bool, v8::FastApiCallbackOptions&>(int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, long, bool, v8::FastApiCallbackOptions&))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastOneByteString const&, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastOneByteString const&, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Line
Count
Source
712
216
  constexpr auto Fn(R (*fn)(Args...)) {
713
216
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
216
                                        CTypeInfoBuilder<Args>...>(
715
216
        reinterpret_cast<const void*>(fn));
716
216
  }
auto v8::internal::CFunctionBuilder::Fn<double, v8::Local<v8::Value> >(double (*)(v8::Local<v8::Value>))
Line
Count
Source
712
720
  constexpr auto Fn(R (*fn)(Args...)) {
713
720
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
720
                                        CTypeInfoBuilder<Args>...>(
715
720
        reinterpret_cast<const void*>(fn));
716
720
  }
auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Value> >(unsigned int (*)(v8::Local<v8::Value>))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Value> >(void (*)(v8::Local<v8::Value>))
Line
Count
Source
712
360
  constexpr auto Fn(R (*fn)(Args...)) {
713
360
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
360
                                        CTypeInfoBuilder<Args>...>(
715
360
        reinterpret_cast<const void*>(fn));
716
360
  }
auto v8::internal::CFunctionBuilder::Fn<bool, v8::Local<v8::Value>, v8::Local<v8::Value> >(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>))
Line
Count
Source
712
2.01k
  constexpr auto Fn(R (*fn)(Args...)) {
713
2.01k
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
2.01k
                                        CTypeInfoBuilder<Args>...>(
715
2.01k
        reinterpret_cast<const void*>(fn));
716
2.01k
  }
auto v8::internal::CFunctionBuilder::Fn<bool, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&>(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<bool, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&>(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&))
Line
Count
Source
712
144
  constexpr auto Fn(R (*fn)(Args...)) {
713
144
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
144
                                        CTypeInfoBuilder<Args>...>(
715
144
        reinterpret_cast<const void*>(fn));
716
144
  }
auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Value>, unsigned int>(unsigned int (*)(v8::Local<v8::Value>, unsigned int))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned long, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, long, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, long, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&>(void (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&))
Unexecuted instantiation: auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Object>, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Object>, v8::FastApiCallbackOptions&))
auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, v8::FastApiCallbackOptions&>(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, v8::FastApiCallbackOptions&))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Object>, long>(void (*)(v8::Local<v8::Object>, long))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Object>, bool>(void (*)(v8::Local<v8::Object>, bool))
Line
Count
Source
712
144
  constexpr auto Fn(R (*fn)(Args...)) {
713
144
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
144
                                        CTypeInfoBuilder<Args>...>(
715
144
        reinterpret_cast<const void*>(fn));
716
144
  }
auto v8::internal::CFunctionBuilder::Fn<double, v8::Local<v8::Value>, double>(double (*)(v8::Local<v8::Value>, double))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Value>, long>(void (*)(v8::Local<v8::Value>, long))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Value>, bool>(void (*)(v8::Local<v8::Value>, bool))
Line
Count
Source
712
72
  constexpr auto Fn(R (*fn)(Args...)) {
713
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
714
72
                                        CTypeInfoBuilder<Args>...>(
715
72
        reinterpret_cast<const void*>(fn));
716
72
  }
717
};
718
719
}  // namespace internal
720
721
// static
722
template <typename R, typename... Args>
723
CFunction CFunction::ArgUnwrap<R (*)(Args...)>::Make(
724
4.46k
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
4.46k
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
4.46k
    return internal::CFunctionBuilder().Fn(func).Build();
727
4.46k
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
4.46k
}
v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>::Make(int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, long, bool, v8::FastApiCallbackOptions&)>::Make(int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, long, bool, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastOneByteString const&, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastOneByteString const&, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
216
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
216
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
216
    return internal::CFunctionBuilder().Fn(func).Build();
727
216
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
216
}
v8::CFunction::ArgUnwrap<double (*)(v8::Local<v8::Value>)>::Make(double (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
720
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
720
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
720
    return internal::CFunctionBuilder().Fn(func).Build();
727
720
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
720
}
v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Value>)>::Make(unsigned int (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Value>)>::Make(void (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
360
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
360
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
360
    return internal::CFunctionBuilder().Fn(func).Build();
727
360
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
360
}
v8::CFunction::ArgUnwrap<bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>)>::Make(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
2.01k
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
2.01k
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
2.01k
    return internal::CFunctionBuilder().Fn(func).Build();
727
2.01k
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
2.01k
}
v8::CFunction::ArgUnwrap<bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>::Make(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&)>::Make(bool (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
144
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
144
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
144
    return internal::CFunctionBuilder().Fn(func).Build();
727
144
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
144
}
v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Value>, unsigned int)>::Make(unsigned int (*)(v8::Local<v8::Value>, unsigned int), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, unsigned long, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned long, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, long, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, long, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&)>::Make(void (*)(v8::Local<v8::Object>, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Unexecuted instantiation: v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Object>, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Object>, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, v8::FastApiCallbackOptions&)>::Make(unsigned int (*)(v8::Local<v8::Value>, v8::Local<v8::Value>, unsigned int, v8::FastApiCallbackOptions&), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Object>, long)>::Make(void (*)(v8::Local<v8::Object>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Object>, bool)>::Make(void (*)(v8::Local<v8::Object>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
144
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
144
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
144
    return internal::CFunctionBuilder().Fn(func).Build();
727
144
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
144
}
v8::CFunction::ArgUnwrap<double (*)(v8::Local<v8::Value>, double)>::Make(double (*)(v8::Local<v8::Value>, double), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Value>, long)>::Make(void (*)(v8::Local<v8::Value>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Value>, bool)>::Make(void (*)(v8::Local<v8::Value>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
724
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
725
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
726
72
    return internal::CFunctionBuilder().Fn(func).Build();
727
72
  }
728
0
  return internal::CFunctionBuilder()
729
0
      .Fn(func)
730
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
731
72
}
732
733
using CFunctionBuilder = internal::CFunctionBuilder;
734
735
static constexpr CTypeInfo kTypeInfoInt32 = CTypeInfo(CTypeInfo::Type::kInt32);
736
static constexpr CTypeInfo kTypeInfoFloat64 =
737
    CTypeInfo(CTypeInfo::Type::kFloat64);
738
739
/**
740
 * Copies the contents of this JavaScript array to a C++ buffer with
741
 * a given max_length. A CTypeInfo is passed as an argument,
742
 * instructing different rules for conversion (e.g. restricted float/double).
743
 * The element type T of the destination array must match the C type
744
 * corresponding to the CTypeInfo (specified by CTypeInfoTraits).
745
 * If the array length is larger than max_length or the array is of
746
 * unsupported type, the operation will fail, returning false. Generally, an
747
 * array which contains objects, undefined, null or anything not convertible
748
 * to the requested destination type, is considered unsupported. The operation
749
 * returns true on success. `type_info` will be used for conversions.
750
 */
751
template <CTypeInfo::Identifier type_info_id, typename T>
752
bool V8_EXPORT V8_WARN_UNUSED_RESULT TryToCopyAndConvertArrayToCppBuffer(
753
    Local<Array> src, T* dst, uint32_t max_length);
754
755
template <>
756
bool V8_EXPORT V8_WARN_UNUSED_RESULT
757
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<int32_t>::Build().GetId(),
758
                                    int32_t>(Local<Array> src, int32_t* dst,
759
                                             uint32_t max_length);
760
761
template <>
762
bool V8_EXPORT V8_WARN_UNUSED_RESULT
763
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<uint32_t>::Build().GetId(),
764
                                    uint32_t>(Local<Array> src, uint32_t* dst,
765
                                              uint32_t max_length);
766
767
template <>
768
bool V8_EXPORT V8_WARN_UNUSED_RESULT
769
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<float>::Build().GetId(),
770
                                    float>(Local<Array> src, float* dst,
771
                                           uint32_t max_length);
772
773
template <>
774
bool V8_EXPORT V8_WARN_UNUSED_RESULT
775
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<double>::Build().GetId(),
776
                                    double>(Local<Array> src, double* dst,
777
                                            uint32_t max_length);
778
779
constexpr v8::ExternalPointerTypeTag kFastAPIPointerTag =
780
    V8_EXTERNAL_POINTER_TAG_COUNT - 1;
781
782
}  // namespace v8
783
784
#endif  // INCLUDE_V8_FAST_API_CALLS_H_