v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8-weak-callback-info.h
Go to the documentation of this file.
1// Copyright 2021 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_WEAK_CALLBACK_INFO_H_
6#define INCLUDE_V8_WEAK_CALLBACK_INFO_H_
7
8#include <cstring>
9
10#include "cppgc/internal/conditional-stack-allocated.h" // NOLINT(build/include_directory)
11#include "v8config.h" // NOLINT(build/include_directory)
12
13namespace v8 {
14
15class Isolate;
16
17namespace api_internal {
19} // namespace api_internal
20
21static constexpr int kInternalFieldsInWeakCallback = 2;
22static constexpr int kEmbedderFieldsInWeakCallback = 2;
23
24template <typename T>
27 public:
28 using Callback = void (*)(const WeakCallbackInfo<T>& data);
29
30 WeakCallbackInfo(Isolate* isolate, T* parameter,
31 void* embedder_fields[kEmbedderFieldsInWeakCallback],
33 : isolate_(isolate), parameter_(parameter), callback_(callback) {
34 memcpy(embedder_fields_, embedder_fields,
35 sizeof(embedder_fields[0]) * kEmbedderFieldsInWeakCallback);
36 }
37
38 V8_INLINE Isolate* GetIsolate() const { return isolate_; }
39 V8_INLINE T* GetParameter() const { return parameter_; }
40 V8_INLINE void* GetInternalField(int index) const;
41
54
55 private:
60};
61
75
76template <class T>
78#ifdef V8_ENABLE_CHECKS
81 }
82#endif
83 return embedder_fields_[index];
84}
85
86} // namespace v8
87
88#endif // INCLUDE_V8_WEAK_CALLBACK_INFO_H_
union v8::internal::@341::BuiltinMetadata::KindSpecificData data
V8_INLINE void * GetInternalField(int index) const
V8_INLINE Isolate * GetIsolate() const
V8_INLINE T * GetParameter() const
void(*)(const WeakCallbackInfo< T > &data) Callback
void * embedder_fields_[kEmbedderFieldsInWeakCallback]
WeakCallbackInfo(Isolate *isolate, T *parameter, void *embedder_fields[kEmbedderFieldsInWeakCallback], Callback *callback)
void SetSecondPassCallback(Callback callback) const
OptionalOpIndex index
TNode< Object > callback
void InternalFieldOutOfBounds(int index)
Definition api.cc:682
static constexpr int kEmbedderFieldsInWeakCallback
static constexpr int kInternalFieldsInWeakCallback
#define V8_EXPORT
Definition v8config.h:800
#define V8_INLINE
Definition v8config.h:500