Coverage Report

Created: 2025-10-31 09:06

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-internal.h"      // NOLINT(build/include_directory)
213
#include "v8-local-handle.h"  // NOLINT(build/include_directory)
214
#include "v8-typed-array.h"   // NOLINT(build/include_directory)
215
#include "v8-value.h"         // NOLINT(build/include_directory)
216
#include "v8config.h"         // NOLINT(build/include_directory)
217
218
namespace v8 {
219
220
class Isolate;
221
222
class CTypeInfo {
223
 public:
224
  enum class Type : uint8_t {
225
    kVoid,
226
    kBool,
227
    kUint8,
228
    kInt32,
229
    kUint32,
230
    kInt64,
231
    kUint64,
232
    kFloat32,
233
    kFloat64,
234
    kPointer,
235
    kV8Value,
236
    kSeqOneByteString,
237
    kApiObject,  // This will be deprecated once all users have
238
                 // migrated from v8::ApiObject to v8::Local<v8::Value>.
239
    kAny,        // This is added to enable untyped representation of fast
240
                 // call arguments for test purposes. It can represent any of
241
                 // the other types stored in the same memory as a union
242
                 // (see AnyCType declared below). This allows for
243
                 // uniform passing of arguments w.r.t. their location
244
                 // (in a register or on the stack), independent of their
245
                 // actual type. It's currently used by the arm64 simulator
246
                 // and can be added to the other simulators as well when fast
247
                 // calls having both GP and FP params need to be supported.
248
  };
249
250
  // kCallbackOptionsType is not part of the Type enum
251
  // because it is only used internally. Use value 255 that is larger
252
  // than any valid Type enum.
253
  static constexpr Type kCallbackOptionsType = Type(255);
254
255
  enum class Flags : uint8_t {
256
    kNone = 0,
257
    kAllowSharedBit = 1 << 0,   // Must be an ArrayBuffer or TypedArray
258
    kEnforceRangeBit = 1 << 1,  // T must be integral
259
    kClampBit = 1 << 2,         // T must be integral
260
    kIsRestrictedBit = 1 << 3,  // T must be float or double
261
  };
262
263
  explicit constexpr CTypeInfo(Type type, Flags flags = Flags::kNone)
264
5.18k
      : type_(type), flags_(flags) {}
265
266
  typedef uint32_t Identifier;
267
  explicit constexpr CTypeInfo(Identifier identifier)
268
      : type_(static_cast<Type>((identifier >> 8) & 255)),
269
0
        flags_(static_cast<Flags>(identifier & 255)) {}
270
0
  constexpr Identifier GetId() const {
271
0
    return static_cast<uint8_t>(type_) << 8 |
272
0
           static_cast<uint8_t>(flags_);
273
0
  }
274
275
0
  constexpr Type GetType() const { return type_; }
276
0
  constexpr Flags GetFlags() const { return flags_; }
277
278
0
  static constexpr bool IsIntegralType(Type type) {
279
0
    return type == Type::kUint8 || type == Type::kInt32 ||
280
0
           type == Type::kUint32 || type == Type::kInt64 ||
281
0
           type == Type::kUint64;
282
0
  }
283
284
0
  static constexpr bool IsFloatingPointType(Type type) {
285
0
    return type == Type::kFloat32 || type == Type::kFloat64;
286
0
  }
287
288
0
  static constexpr bool IsPrimitive(Type type) {
289
0
    return IsIntegralType(type) || IsFloatingPointType(type) ||
290
0
           type == Type::kBool;
291
0
  }
292
293
 private:
294
  Type type_;
295
  Flags flags_;
296
};
297
298
struct FastOneByteString {
299
  const char* data;
300
  uint32_t length;
301
};
302
303
class V8_EXPORT CFunctionInfo {
304
 public:
305
  enum class Int64Representation : uint8_t {
306
    kNumber = 0,  // Use numbers to represent 64 bit integers.
307
    kBigInt = 1,  // Use BigInts to represent 64 bit integers.
308
  };
309
310
  // Construct a struct to hold a CFunction's type information.
311
  // |return_info| describes the function's return type.
312
  // |arg_info| is an array of |arg_count| CTypeInfos describing the
313
  //   arguments. Only the last argument may be of the special type
314
  //   CTypeInfo::kCallbackOptionsType.
315
  CFunctionInfo(const CTypeInfo& return_info, unsigned int arg_count,
316
                const CTypeInfo* arg_info,
317
                Int64Representation repr = Int64Representation::kNumber);
318
319
0
  const CTypeInfo& ReturnInfo() const { return return_info_; }
320
321
  // The argument count, not including the v8::FastApiCallbackOptions
322
  // if present.
323
0
  unsigned int ArgumentCount() const {
324
0
    return HasOptions() ? arg_count_ - 1 : arg_count_;
325
0
  }
326
327
4.46k
  Int64Representation GetInt64Representation() const { return repr_; }
328
329
  // |index| must be less than ArgumentCount().
330
  //  Note: if the last argument passed on construction of CFunctionInfo
331
  //  has type CTypeInfo::kCallbackOptionsType, it is not included in
332
  //  ArgumentCount().
333
  const CTypeInfo& ArgumentInfo(unsigned int index) const;
334
335
0
  bool HasOptions() const {
336
0
    // The options arg is always the last one.
337
0
    return arg_count_ > 0 && arg_info_[arg_count_ - 1].GetType() ==
338
0
                                 CTypeInfo::kCallbackOptionsType;
339
0
  }
340
341
 private:
342
  const CTypeInfo return_info_;
343
  const Int64Representation repr_;
344
  const unsigned int arg_count_;
345
  const CTypeInfo* arg_info_;
346
};
347
348
struct FastApiCallbackOptions;
349
350
// Provided for testing.
351
union V8_TRIVIAL_ABI AnyCType {
352
0
  AnyCType() : int64_value(0) {}
353
354
#if defined(V8_ENABLE_LOCAL_OFF_STACK_CHECK) && V8_HAS_ATTRIBUTE_TRIVIAL_ABI
355
  // In this case, Local<T> is not trivially copyable and the implicit
356
  // copy constructor and copy assignment for the union are deleted.
357
  AnyCType(const AnyCType& other) : int64_value(other.int64_value) {}
358
  AnyCType& operator=(const AnyCType& other) {
359
    int64_value = other.int64_value;
360
    return *this;
361
  }
362
#endif
363
364
  bool bool_value;
365
  int32_t int32_value;
366
  uint32_t uint32_value;
367
  int64_t int64_value;
368
  uint64_t uint64_value;
369
  float float_value;
370
  double double_value;
371
  void* pointer_value;
372
  Local<Object> object_value;
373
  Local<Array> sequence_value;
374
  const FastOneByteString* string_value;
375
  FastApiCallbackOptions* options_value;
376
};
377
378
static_assert(
379
    sizeof(AnyCType) == 8,
380
    "The union AnyCType should have size == 64 bits, as this is assumed "
381
    "by EffectControlLinearizer.");
382
383
class V8_EXPORT CFunction {
384
 public:
385
0
  constexpr CFunction() : address_(nullptr), type_info_(nullptr) {}
386
387
0
  const CTypeInfo& ReturnInfo() const { return type_info_->ReturnInfo(); }
388
389
0
  const CTypeInfo& ArgumentInfo(unsigned int index) const {
390
0
    return type_info_->ArgumentInfo(index);
391
0
  }
392
393
0
  unsigned int ArgumentCount() const { return type_info_->ArgumentCount(); }
394
395
0
  const void* GetAddress() const { return address_; }
396
4.46k
  CFunctionInfo::Int64Representation GetInt64Representation() const {
397
4.46k
    return type_info_->GetInt64Representation();
398
4.46k
  }
399
0
  const CFunctionInfo* GetTypeInfo() const { return type_info_; }
400
401
  enum class OverloadResolution { kImpossible, kAtRuntime, kAtCompileTime };
402
403
  template <typename F>
404
  static CFunction Make(F* func,
405
                        CFunctionInfo::Int64Representation int64_rep =
406
4.46k
                            CFunctionInfo::Int64Representation::kNumber) {
407
4.46k
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
4.46k
    result.GetInt64Representation();
409
4.46k
    return result;
410
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
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
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
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
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
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
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
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
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
406
216
                            CFunctionInfo::Int64Representation::kNumber) {
407
216
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
216
    result.GetInt64Representation();
409
216
    return result;
410
216
  }
v8::CFunction v8::CFunction::Make<double (v8::Local<v8::Value>)>(double (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
720
                            CFunctionInfo::Int64Representation::kNumber) {
407
720
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
720
    result.GetInt64Representation();
409
720
    return result;
410
720
  }
v8::CFunction v8::CFunction::Make<unsigned int (v8::Local<v8::Value>)>(unsigned int (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Value>)>(void (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
360
                            CFunctionInfo::Int64Representation::kNumber) {
407
360
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
360
    result.GetInt64Representation();
409
360
    return result;
410
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
406
2.01k
                            CFunctionInfo::Int64Representation::kNumber) {
407
2.01k
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
2.01k
    result.GetInt64Representation();
409
2.01k
    return result;
410
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
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
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
406
144
                            CFunctionInfo::Int64Representation::kNumber) {
407
144
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
144
    result.GetInt64Representation();
409
144
    return result;
410
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
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
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
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Object>, long)>(void (*)(v8::Local<v8::Object>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Object>, bool)>(void (*)(v8::Local<v8::Object>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
144
                            CFunctionInfo::Int64Representation::kNumber) {
407
144
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
144
    result.GetInt64Representation();
409
144
    return result;
410
144
  }
v8::CFunction v8::CFunction::Make<double (v8::Local<v8::Value>, double)>(double (*)(v8::Local<v8::Value>, double), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Value>, long)>(void (*)(v8::Local<v8::Value>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
72
  }
v8::CFunction v8::CFunction::Make<void (v8::Local<v8::Value>, bool)>(void (*)(v8::Local<v8::Value>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
406
72
                            CFunctionInfo::Int64Representation::kNumber) {
407
72
    CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
408
72
    result.GetInt64Representation();
409
72
    return result;
410
72
  }
411
412
  // Provided for testing purposes.
413
  template <typename R, typename... Args, typename R_Patch,
414
            typename... Args_Patch>
415
  static CFunction Make(R (*func)(Args...),
416
                        R_Patch (*patching_func)(Args_Patch...),
417
                        CFunctionInfo::Int64Representation int64_rep =
418
                            CFunctionInfo::Int64Representation::kNumber) {
419
    CFunction c_func = ArgUnwrap<R (*)(Args...)>::Make(func, int64_rep);
420
    static_assert(
421
        sizeof...(Args_Patch) == sizeof...(Args),
422
        "The patching function must have the same number of arguments.");
423
    c_func.address_ = reinterpret_cast<void*>(patching_func);
424
    return c_func;
425
  }
426
427
  CFunction(const void* address, const CFunctionInfo* type_info);
428
429
 private:
430
  const void* address_;
431
  const CFunctionInfo* type_info_;
432
433
  template <typename F>
434
  class ArgUnwrap {
435
    static_assert(sizeof(F) != sizeof(F),
436
                  "CFunction must be created from a function pointer.");
437
  };
438
439
  template <typename R, typename... Args>
440
  class ArgUnwrap<R (*)(Args...)> {
441
   public:
442
    static CFunction Make(R (*func)(Args...),
443
                          CFunctionInfo::Int64Representation int64_rep =
444
                              CFunctionInfo::Int64Representation::kNumber);
445
  };
446
};
447
448
/**
449
 * A struct which may be passed to a fast call callback, like so:
450
 * \code
451
 *    void FastMethodWithOptions(int param, FastApiCallbackOptions& options);
452
 * \endcode
453
 */
454
struct FastApiCallbackOptions {
455
  /**
456
   * Creates a new instance of FastApiCallbackOptions for testing purpose.  The
457
   * returned instance may be filled with mock data.
458
   */
459
0
  static FastApiCallbackOptions CreateForTesting(Isolate* isolate) {
460
0
    return {};
461
0
  }
462
463
  v8::Isolate* isolate = nullptr;
464
465
  /**
466
   * The `data` passed to the FunctionTemplate constructor, or `undefined`.
467
   */
468
  v8::Local<v8::Value> data;
469
};
470
471
namespace internal {
472
473
// Helper to count the number of occurances of `T` in `List`
474
template <typename T, typename... List>
475
struct count : std::integral_constant<int, 0> {};
476
template <typename T, typename... Args>
477
struct count<T, T, Args...>
478
    : std::integral_constant<std::size_t, 1 + count<T, Args...>::value> {};
479
template <typename T, typename U, typename... Args>
480
struct count<T, U, Args...> : count<T, Args...> {};
481
482
template <CFunctionInfo::Int64Representation Representation,
483
          typename RetBuilder, typename... ArgBuilders>
484
class CFunctionInfoImpl : public CFunctionInfo {
485
  static constexpr int kOptionsArgCount =
486
      count<FastApiCallbackOptions&, ArgBuilders...>();
487
  static constexpr int kReceiverCount = 1;
488
489
  static_assert(kOptionsArgCount == 0 || kOptionsArgCount == 1,
490
                "Only one options parameter is supported.");
491
492
  static_assert(sizeof...(ArgBuilders) >= kOptionsArgCount + kReceiverCount,
493
                "The receiver or the options argument is missing.");
494
495
 public:
496
  constexpr CFunctionInfoImpl()
497
1.29k
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
1.29k
                      arg_info_storage_, Representation),
499
1.29k
        arg_info_storage_{ArgBuilders::Build()...} {
500
1.29k
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
1.29k
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
1.29k
                      kReturnType == CTypeInfo::Type::kBool ||
503
1.29k
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
1.29k
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
1.29k
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
1.29k
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
1.29k
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
1.29k
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
1.29k
                      kReturnType == CTypeInfo::Type::kPointer ||
510
1.29k
                      kReturnType == CTypeInfo::Type::kAny,
511
1.29k
                  "String and api object values are not currently "
512
1.29k
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
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
497
72
      : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
498
72
                      arg_info_storage_, Representation),
499
72
        arg_info_storage_{ArgBuilders::Build()...} {
500
72
    constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
501
72
    static_assert(kReturnType == CTypeInfo::Type::kVoid ||
502
72
                      kReturnType == CTypeInfo::Type::kBool ||
503
72
                      kReturnType == CTypeInfo::Type::kInt32 ||
504
72
                      kReturnType == CTypeInfo::Type::kUint32 ||
505
72
                      kReturnType == CTypeInfo::Type::kInt64 ||
506
72
                      kReturnType == CTypeInfo::Type::kUint64 ||
507
72
                      kReturnType == CTypeInfo::Type::kFloat32 ||
508
72
                      kReturnType == CTypeInfo::Type::kFloat64 ||
509
72
                      kReturnType == CTypeInfo::Type::kPointer ||
510
72
                      kReturnType == CTypeInfo::Type::kAny,
511
72
                  "String and api object values are not currently "
512
72
                  "supported return types.");
513
72
  }
Unexecuted instantiation: v8::internal::CFunctionInfoImpl<(v8::CFunctionInfo::Int64Representation)1, v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<bool> >::CFunctionInfoImpl()
514
515
 private:
516
  const CTypeInfo arg_info_storage_[sizeof...(ArgBuilders)];
517
};
518
519
template <typename T>
520
struct TypeInfoHelper {
521
  static_assert(sizeof(T) != sizeof(T), "This type is not supported");
522
};
523
524
#define SPECIALIZE_GET_TYPE_INFO_HELPER_FOR(T, Enum)                          \
525
  template <>                                                                 \
526
  struct TypeInfoHelper<T> {                                                  \
527
0
    static constexpr CTypeInfo::Flags Flags() {                               \
528
0
      return CTypeInfo::Flags::kNone;                                         \
529
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()
530
                                                                              \
531
4.53k
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<bool>::Type()
Line
Count
Source
531
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
531
144
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<unsigned int>::Type()
Line
Count
Source
531
1.00k
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<long>::Type()
Line
Count
Source
531
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
531
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
531
360
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<v8::Local<v8::Value> >::Type()
Line
Count
Source
531
2.01k
    static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
v8::internal::TypeInfoHelper<v8::Local<v8::Object> >::Type()
Line
Count
Source
531
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()
532
  };
533
534
template <CTypeInfo::Type type>
535
struct CTypeInfoTraits {};
536
537
#define DEFINE_TYPE_INFO_TRAITS(CType, Enum)      \
538
  template <>                                     \
539
  struct CTypeInfoTraits<CTypeInfo::Type::Enum> { \
540
    using ctype = CType;                          \
541
  };
542
543
#define PRIMITIVE_C_TYPES(V) \
544
  V(bool, kBool)             \
545
  V(uint8_t, kUint8)         \
546
  V(int32_t, kInt32)         \
547
  V(uint32_t, kUint32)       \
548
  V(int64_t, kInt64)         \
549
  V(uint64_t, kUint64)       \
550
  V(float, kFloat32)         \
551
  V(double, kFloat64)        \
552
  V(void*, kPointer)
553
554
// Same as above, but includes deprecated types for compatibility.
555
#define ALL_C_TYPES(V)               \
556
  PRIMITIVE_C_TYPES(V)               \
557
  V(void, kVoid)                     \
558
  V(v8::Local<v8::Value>, kV8Value)  \
559
  V(v8::Local<v8::Object>, kV8Value) \
560
  V(v8::Local<v8::Array>, kV8Value)  \
561
  V(AnyCType, kAny)
562
563
// ApiObject was a temporary solution to wrap the pointer to the v8::Value.
564
// Please use v8::Local<v8::Value> in new code for the arguments and
565
// v8::Local<v8::Object> for the receiver, as ApiObject will be deprecated.
566
567
ALL_C_TYPES(SPECIALIZE_GET_TYPE_INFO_HELPER_FOR)
568
PRIMITIVE_C_TYPES(DEFINE_TYPE_INFO_TRAITS)
569
570
#undef PRIMITIVE_C_TYPES
571
#undef ALL_C_TYPES
572
573
#undef TYPED_ARRAY_C_TYPES
574
575
template <>
576
struct TypeInfoHelper<FastApiCallbackOptions&> {
577
0
  static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; }
578
579
576
  static constexpr CTypeInfo::Type Type() {
580
576
    return CTypeInfo::kCallbackOptionsType;
581
576
  }
582
};
583
584
template <>
585
struct TypeInfoHelper<const FastOneByteString&> {
586
0
  static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; }
587
588
72
  static constexpr CTypeInfo::Type Type() {
589
72
    return CTypeInfo::Type::kSeqOneByteString;
590
72
  }
591
};
592
593
#define STATIC_ASSERT_IMPLIES(COND, ASSERTION, MSG) \
594
15.5k
  static_assert(((COND) == 0) || (ASSERTION), MSG)
595
596
}  // namespace internal
597
598
template <typename T, CTypeInfo::Flags... Flags>
599
class V8_EXPORT CTypeInfoBuilder {
600
 public:
601
  using BaseType = T;
602
603
5.18k
  static constexpr CTypeInfo Build() {
604
5.18k
    constexpr CTypeInfo::Flags kFlags =
605
5.18k
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
5.18k
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
5.18k
    STATIC_ASSERT_IMPLIES(
609
5.18k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
5.18k
        CTypeInfo::IsIntegralType(kType),
611
5.18k
        "kEnforceRangeBit is only allowed for integral types.");
612
5.18k
    STATIC_ASSERT_IMPLIES(
613
5.18k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
5.18k
        CTypeInfo::IsIntegralType(kType),
615
5.18k
        "kClampBit is only allowed for integral types.");
616
5.18k
    STATIC_ASSERT_IMPLIES(
617
5.18k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
5.18k
        CTypeInfo::IsFloatingPointType(kType),
619
5.18k
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
5.18k
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
5.18k
  }
v8::CTypeInfoBuilder<int>::Build()
Line
Count
Source
603
144
  static constexpr CTypeInfo Build() {
604
144
    constexpr CTypeInfo::Flags kFlags =
605
144
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
144
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
144
    STATIC_ASSERT_IMPLIES(
609
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
144
        CTypeInfo::IsIntegralType(kType),
611
144
        "kEnforceRangeBit is only allowed for integral types.");
612
144
    STATIC_ASSERT_IMPLIES(
613
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
144
        CTypeInfo::IsIntegralType(kType),
615
144
        "kClampBit is only allowed for integral types.");
616
144
    STATIC_ASSERT_IMPLIES(
617
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
144
        CTypeInfo::IsFloatingPointType(kType),
619
144
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
144
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
144
  }
v8::CTypeInfoBuilder<unsigned int>::Build()
Line
Count
Source
603
1.00k
  static constexpr CTypeInfo Build() {
604
1.00k
    constexpr CTypeInfo::Flags kFlags =
605
1.00k
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
1.00k
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
1.00k
    STATIC_ASSERT_IMPLIES(
609
1.00k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
1.00k
        CTypeInfo::IsIntegralType(kType),
611
1.00k
        "kEnforceRangeBit is only allowed for integral types.");
612
1.00k
    STATIC_ASSERT_IMPLIES(
613
1.00k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
1.00k
        CTypeInfo::IsIntegralType(kType),
615
1.00k
        "kClampBit is only allowed for integral types.");
616
1.00k
    STATIC_ASSERT_IMPLIES(
617
1.00k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
1.00k
        CTypeInfo::IsFloatingPointType(kType),
619
1.00k
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
1.00k
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
1.00k
  }
Unexecuted instantiation: v8::CTypeInfoBuilder<float>::Build()
v8::CTypeInfoBuilder<double>::Build()
Line
Count
Source
603
216
  static constexpr CTypeInfo Build() {
604
216
    constexpr CTypeInfo::Flags kFlags =
605
216
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
216
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
216
    STATIC_ASSERT_IMPLIES(
609
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
216
        CTypeInfo::IsIntegralType(kType),
611
216
        "kEnforceRangeBit is only allowed for integral types.");
612
216
    STATIC_ASSERT_IMPLIES(
613
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
216
        CTypeInfo::IsIntegralType(kType),
615
216
        "kClampBit is only allowed for integral types.");
616
216
    STATIC_ASSERT_IMPLIES(
617
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
216
        CTypeInfo::IsFloatingPointType(kType),
619
216
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
216
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
216
  }
v8::CTypeInfoBuilder<v8::Local<v8::Value>>::Build()
Line
Count
Source
603
2.01k
  static constexpr CTypeInfo Build() {
604
2.01k
    constexpr CTypeInfo::Flags kFlags =
605
2.01k
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
2.01k
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
2.01k
    STATIC_ASSERT_IMPLIES(
609
2.01k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
2.01k
        CTypeInfo::IsIntegralType(kType),
611
2.01k
        "kEnforceRangeBit is only allowed for integral types.");
612
2.01k
    STATIC_ASSERT_IMPLIES(
613
2.01k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
2.01k
        CTypeInfo::IsIntegralType(kType),
615
2.01k
        "kClampBit is only allowed for integral types.");
616
2.01k
    STATIC_ASSERT_IMPLIES(
617
2.01k
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
2.01k
        CTypeInfo::IsFloatingPointType(kType),
619
2.01k
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
2.01k
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
2.01k
  }
v8::CTypeInfoBuilder<v8::FastApiCallbackOptions&>::Build()
Line
Count
Source
603
576
  static constexpr CTypeInfo Build() {
604
576
    constexpr CTypeInfo::Flags kFlags =
605
576
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
576
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
576
    STATIC_ASSERT_IMPLIES(
609
576
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
576
        CTypeInfo::IsIntegralType(kType),
611
576
        "kEnforceRangeBit is only allowed for integral types.");
612
576
    STATIC_ASSERT_IMPLIES(
613
576
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
576
        CTypeInfo::IsIntegralType(kType),
615
576
        "kClampBit is only allowed for integral types.");
616
576
    STATIC_ASSERT_IMPLIES(
617
576
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
576
        CTypeInfo::IsFloatingPointType(kType),
619
576
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
576
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
576
  }
v8::CTypeInfoBuilder<long>::Build()
Line
Count
Source
603
216
  static constexpr CTypeInfo Build() {
604
216
    constexpr CTypeInfo::Flags kFlags =
605
216
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
216
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
216
    STATIC_ASSERT_IMPLIES(
609
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
216
        CTypeInfo::IsIntegralType(kType),
611
216
        "kEnforceRangeBit is only allowed for integral types.");
612
216
    STATIC_ASSERT_IMPLIES(
613
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
216
        CTypeInfo::IsIntegralType(kType),
615
216
        "kClampBit is only allowed for integral types.");
616
216
    STATIC_ASSERT_IMPLIES(
617
216
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
216
        CTypeInfo::IsFloatingPointType(kType),
619
216
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
216
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
216
  }
v8::CTypeInfoBuilder<bool>::Build()
Line
Count
Source
603
432
  static constexpr CTypeInfo Build() {
604
432
    constexpr CTypeInfo::Flags kFlags =
605
432
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
432
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
432
    STATIC_ASSERT_IMPLIES(
609
432
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
432
        CTypeInfo::IsIntegralType(kType),
611
432
        "kEnforceRangeBit is only allowed for integral types.");
612
432
    STATIC_ASSERT_IMPLIES(
613
432
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
432
        CTypeInfo::IsIntegralType(kType),
615
432
        "kClampBit is only allowed for integral types.");
616
432
    STATIC_ASSERT_IMPLIES(
617
432
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
432
        CTypeInfo::IsFloatingPointType(kType),
619
432
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
432
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
432
  }
v8::CTypeInfoBuilder<v8::FastOneByteString const&>::Build()
Line
Count
Source
603
72
  static constexpr CTypeInfo Build() {
604
72
    constexpr CTypeInfo::Flags kFlags =
605
72
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
72
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
72
    STATIC_ASSERT_IMPLIES(
609
72
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
72
        CTypeInfo::IsIntegralType(kType),
611
72
        "kEnforceRangeBit is only allowed for integral types.");
612
72
    STATIC_ASSERT_IMPLIES(
613
72
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
72
        CTypeInfo::IsIntegralType(kType),
615
72
        "kClampBit is only allowed for integral types.");
616
72
    STATIC_ASSERT_IMPLIES(
617
72
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
72
        CTypeInfo::IsFloatingPointType(kType),
619
72
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
72
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
72
  }
v8::CTypeInfoBuilder<void>::Build()
Line
Count
Source
603
360
  static constexpr CTypeInfo Build() {
604
360
    constexpr CTypeInfo::Flags kFlags =
605
360
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
360
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
360
    STATIC_ASSERT_IMPLIES(
609
360
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
360
        CTypeInfo::IsIntegralType(kType),
611
360
        "kEnforceRangeBit is only allowed for integral types.");
612
360
    STATIC_ASSERT_IMPLIES(
613
360
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
360
        CTypeInfo::IsIntegralType(kType),
615
360
        "kClampBit is only allowed for integral types.");
616
360
    STATIC_ASSERT_IMPLIES(
617
360
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
360
        CTypeInfo::IsFloatingPointType(kType),
619
360
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
360
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
360
  }
v8::CTypeInfoBuilder<v8::Local<v8::Object>>::Build()
Line
Count
Source
603
144
  static constexpr CTypeInfo Build() {
604
144
    constexpr CTypeInfo::Flags kFlags =
605
144
        MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
606
144
    constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
607
608
144
    STATIC_ASSERT_IMPLIES(
609
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit),
610
144
        CTypeInfo::IsIntegralType(kType),
611
144
        "kEnforceRangeBit is only allowed for integral types.");
612
144
    STATIC_ASSERT_IMPLIES(
613
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kClampBit),
614
144
        CTypeInfo::IsIntegralType(kType),
615
144
        "kClampBit is only allowed for integral types.");
616
144
    STATIC_ASSERT_IMPLIES(
617
144
        uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit),
618
144
        CTypeInfo::IsFloatingPointType(kType),
619
144
        "kIsRestrictedBit is only allowed for floating point types.");
620
621
    // Return the same type with the merged flags.
622
144
    return CTypeInfo(internal::TypeInfoHelper<T>::Type(), kFlags);
623
144
  }
Unexecuted instantiation: v8::CTypeInfoBuilder<unsigned long>::Build()
624
625
 private:
626
  template <typename... Rest>
627
  static constexpr CTypeInfo::Flags MergeFlags(CTypeInfo::Flags flags,
628
0
                                               Rest... rest) {
629
0
    return CTypeInfo::Flags(uint8_t(flags) | uint8_t(MergeFlags(rest...)));
630
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)
631
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()
632
};
633
634
namespace internal {
635
template <typename RetBuilder, typename... ArgBuilders>
636
class CFunctionBuilderWithFunction {
637
 public:
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
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
638
72
  explicit constexpr CFunctionBuilderWithFunction(const void* fn) : fn_(fn) {}
639
640
  template <CTypeInfo::Flags... Flags>
641
  constexpr auto Ret() {
642
    return CFunctionBuilderWithFunction<
643
        CTypeInfoBuilder<typename RetBuilder::BaseType, Flags...>,
644
        ArgBuilders...>(fn_);
645
  }
646
647
  template <unsigned int N, CTypeInfo::Flags... Flags>
648
  constexpr auto Arg() {
649
    // Return a copy of the builder with the Nth arg builder merged with
650
    // template parameter pack Flags.
651
    return ArgImpl<N, Flags...>(
652
        std::make_index_sequence<sizeof...(ArgBuilders)>());
653
  }
654
655
  // Provided for testing purposes.
656
  template <typename Ret, typename... Args>
657
  auto Patch(Ret (*patching_func)(Args...)) {
658
    static_assert(
659
        sizeof...(Args) == sizeof...(ArgBuilders),
660
        "The patching function must have the same number of arguments.");
661
    fn_ = reinterpret_cast<void*>(patching_func);
662
    return *this;
663
  }
664
665
  template <CFunctionInfo::Int64Representation Representation =
666
                CFunctionInfo::Int64Representation::kNumber>
667
4.46k
  auto Build() {
668
4.46k
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
4.46k
        instance;
670
4.46k
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
216
  auto Build() {
668
216
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
216
        instance;
670
216
    return CFunction(fn_, &instance);
671
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
667
720
  auto Build() {
668
720
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
720
        instance;
670
720
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
360
  auto Build() {
668
360
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
360
        instance;
670
360
    return CFunction(fn_, &instance);
671
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
667
2.01k
  auto Build() {
668
2.01k
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
2.01k
        instance;
670
2.01k
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
144
  auto Build() {
668
144
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
144
        instance;
670
144
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
144
  auto Build() {
668
144
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
144
        instance;
670
144
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
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
667
72
  auto Build() {
668
72
    static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
669
72
        instance;
670
72
    return CFunction(fn_, &instance);
671
72
  }
Unexecuted instantiation: auto v8::internal::CFunctionBuilderWithFunction<v8::CTypeInfoBuilder<void>, v8::CTypeInfoBuilder<v8::Local<v8::Value>>, v8::CTypeInfoBuilder<bool> >::Build<(v8::CFunctionInfo::Int64Representation)1>()
672
673
 private:
674
  template <bool Merge, unsigned int N, CTypeInfo::Flags... Flags>
675
  struct GetArgBuilder;
676
677
  // Returns the same ArgBuilder as the one at index N, including its flags.
678
  // Flags in the template parameter pack are ignored.
679
  template <unsigned int N, CTypeInfo::Flags... Flags>
680
  struct GetArgBuilder<false, N, Flags...> {
681
    using type = std::tuple_element_t<N, std::tuple<ArgBuilders...>>;
682
  };
683
684
  // Returns an ArgBuilder with the same base type as the one at index N,
685
  // but merges the flags with the flags in the template parameter pack.
686
  template <unsigned int N, CTypeInfo::Flags... Flags>
687
  struct GetArgBuilder<true, N, Flags...> {
688
    using type = CTypeInfoBuilder<
689
        typename std::tuple_element_t<N, std::tuple<ArgBuilders...>>::BaseType,
690
        std::tuple_element_t<N, std::tuple<ArgBuilders...>>::Build().GetFlags(),
691
        Flags...>;
692
  };
693
694
  // Return a copy of the CFunctionBuilder, but merges the Flags on
695
  // ArgBuilder index N with the new Flags passed in the template parameter
696
  // pack.
697
  template <unsigned int N, CTypeInfo::Flags... Flags, size_t... I>
698
  constexpr auto ArgImpl(std::index_sequence<I...>) {
699
    return CFunctionBuilderWithFunction<
700
        RetBuilder, typename GetArgBuilder<N == I, I, Flags...>::type...>(fn_);
701
  }
702
703
  const void* fn_;
704
};
705
706
class CFunctionBuilder {
707
 public:
708
4.46k
  constexpr CFunctionBuilder() {}
709
710
  template <typename R, typename... Args>
711
4.46k
  constexpr auto Fn(R (*fn)(Args...)) {
712
4.46k
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
4.46k
                                        CTypeInfoBuilder<Args>...>(
714
4.46k
        reinterpret_cast<const void*>(fn));
715
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
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
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
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
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
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
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
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
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
711
216
  constexpr auto Fn(R (*fn)(Args...)) {
712
216
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
216
                                        CTypeInfoBuilder<Args>...>(
714
216
        reinterpret_cast<const void*>(fn));
715
216
  }
auto v8::internal::CFunctionBuilder::Fn<double, v8::Local<v8::Value> >(double (*)(v8::Local<v8::Value>))
Line
Count
Source
711
720
  constexpr auto Fn(R (*fn)(Args...)) {
712
720
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
720
                                        CTypeInfoBuilder<Args>...>(
714
720
        reinterpret_cast<const void*>(fn));
715
720
  }
auto v8::internal::CFunctionBuilder::Fn<unsigned int, v8::Local<v8::Value> >(unsigned int (*)(v8::Local<v8::Value>))
Line
Count
Source
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Value> >(void (*)(v8::Local<v8::Value>))
Line
Count
Source
711
360
  constexpr auto Fn(R (*fn)(Args...)) {
712
360
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
360
                                        CTypeInfoBuilder<Args>...>(
714
360
        reinterpret_cast<const void*>(fn));
715
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
711
2.01k
  constexpr auto Fn(R (*fn)(Args...)) {
712
2.01k
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
2.01k
                                        CTypeInfoBuilder<Args>...>(
714
2.01k
        reinterpret_cast<const void*>(fn));
715
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
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
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
711
144
  constexpr auto Fn(R (*fn)(Args...)) {
712
144
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
144
                                        CTypeInfoBuilder<Args>...>(
714
144
        reinterpret_cast<const void*>(fn));
715
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
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
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
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Object>, long>(void (*)(v8::Local<v8::Object>, long))
Line
Count
Source
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Object>, bool>(void (*)(v8::Local<v8::Object>, bool))
Line
Count
Source
711
144
  constexpr auto Fn(R (*fn)(Args...)) {
712
144
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
144
                                        CTypeInfoBuilder<Args>...>(
714
144
        reinterpret_cast<const void*>(fn));
715
144
  }
auto v8::internal::CFunctionBuilder::Fn<double, v8::Local<v8::Value>, double>(double (*)(v8::Local<v8::Value>, double))
Line
Count
Source
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Value>, long>(void (*)(v8::Local<v8::Value>, long))
Line
Count
Source
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
72
  }
auto v8::internal::CFunctionBuilder::Fn<void, v8::Local<v8::Value>, bool>(void (*)(v8::Local<v8::Value>, bool))
Line
Count
Source
711
72
  constexpr auto Fn(R (*fn)(Args...)) {
712
72
    return CFunctionBuilderWithFunction<CTypeInfoBuilder<R>,
713
72
                                        CTypeInfoBuilder<Args>...>(
714
72
        reinterpret_cast<const void*>(fn));
715
72
  }
716
};
717
718
}  // namespace internal
719
720
// static
721
template <typename R, typename... Args>
722
CFunction CFunction::ArgUnwrap<R (*)(Args...)>::Make(
723
4.46k
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
4.46k
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
4.46k
    return internal::CFunctionBuilder().Fn(func).Build();
726
4.46k
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
216
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
216
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
216
    return internal::CFunctionBuilder().Fn(func).Build();
726
216
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
216
}
v8::CFunction::ArgUnwrap<double (*)(v8::Local<v8::Value>)>::Make(double (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
720
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
720
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
720
    return internal::CFunctionBuilder().Fn(func).Build();
726
720
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
720
}
v8::CFunction::ArgUnwrap<unsigned int (*)(v8::Local<v8::Value>)>::Make(unsigned int (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Value>)>::Make(void (*)(v8::Local<v8::Value>), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
360
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
360
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
360
    return internal::CFunctionBuilder().Fn(func).Build();
726
360
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
2.01k
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
2.01k
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
2.01k
    return internal::CFunctionBuilder().Fn(func).Build();
726
2.01k
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
144
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
144
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
144
    return internal::CFunctionBuilder().Fn(func).Build();
726
144
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
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
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Object>, long)>::Make(void (*)(v8::Local<v8::Object>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Object>, bool)>::Make(void (*)(v8::Local<v8::Object>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
144
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
144
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
144
    return internal::CFunctionBuilder().Fn(func).Build();
726
144
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
144
}
v8::CFunction::ArgUnwrap<double (*)(v8::Local<v8::Value>, double)>::Make(double (*)(v8::Local<v8::Value>, double), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Value>, long)>::Make(void (*)(v8::Local<v8::Value>, long), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
72
}
v8::CFunction::ArgUnwrap<void (*)(v8::Local<v8::Value>, bool)>::Make(void (*)(v8::Local<v8::Value>, bool), v8::CFunctionInfo::Int64Representation)
Line
Count
Source
723
72
    R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
724
72
  if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
725
72
    return internal::CFunctionBuilder().Fn(func).Build();
726
72
  }
727
0
  return internal::CFunctionBuilder()
728
0
      .Fn(func)
729
0
      .template Build<CFunctionInfo::Int64Representation::kBigInt>();
730
72
}
731
732
using CFunctionBuilder = internal::CFunctionBuilder;
733
734
static constexpr CTypeInfo kTypeInfoInt32 = CTypeInfo(CTypeInfo::Type::kInt32);
735
static constexpr CTypeInfo kTypeInfoFloat64 =
736
    CTypeInfo(CTypeInfo::Type::kFloat64);
737
738
/**
739
 * Copies the contents of this JavaScript array to a C++ buffer with
740
 * a given max_length. A CTypeInfo is passed as an argument,
741
 * instructing different rules for conversion (e.g. restricted float/double).
742
 * The element type T of the destination array must match the C type
743
 * corresponding to the CTypeInfo (specified by CTypeInfoTraits).
744
 * If the array length is larger than max_length or the array is of
745
 * unsupported type, the operation will fail, returning false. Generally, an
746
 * array which contains objects, undefined, null or anything not convertible
747
 * to the requested destination type, is considered unsupported. The operation
748
 * returns true on success. `type_info` will be used for conversions.
749
 */
750
template <CTypeInfo::Identifier type_info_id, typename T>
751
bool V8_EXPORT V8_WARN_UNUSED_RESULT TryToCopyAndConvertArrayToCppBuffer(
752
    Local<Array> src, T* dst, uint32_t max_length);
753
754
template <>
755
bool V8_EXPORT V8_WARN_UNUSED_RESULT
756
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<int32_t>::Build().GetId(),
757
                                    int32_t>(Local<Array> src, int32_t* dst,
758
                                             uint32_t max_length);
759
760
template <>
761
bool V8_EXPORT V8_WARN_UNUSED_RESULT
762
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<uint32_t>::Build().GetId(),
763
                                    uint32_t>(Local<Array> src, uint32_t* dst,
764
                                              uint32_t max_length);
765
766
template <>
767
bool V8_EXPORT V8_WARN_UNUSED_RESULT
768
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<float>::Build().GetId(),
769
                                    float>(Local<Array> src, float* dst,
770
                                           uint32_t max_length);
771
772
template <>
773
bool V8_EXPORT V8_WARN_UNUSED_RESULT
774
TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<double>::Build().GetId(),
775
                                    double>(Local<Array> src, double* dst,
776
                                            uint32_t max_length);
777
778
}  // namespace v8
779
780
#endif  // INCLUDE_V8_FAST_API_CALLS_H_