/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_  |