node-linux-s390x 17.0.0 → 17.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +622 -178
- package/LICENSE +192 -94
- package/README.md +263 -255
- package/bin/node +0 -0
- package/include/node/common.gypi +5 -0
- package/include/node/config.gypi +6 -2
- package/include/node/js_native_api.h +11 -0
- package/include/node/node_version.h +1 -1
- package/include/node/openssl/archs/BSD-x86/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/BSD-x86/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/BSD-x86/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/BSD-x86/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/BSD-x86/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/BSD-x86_64/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/BSD-x86_64/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/BSD-x86_64/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/VC-WIN32/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/VC-WIN32/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/VC-WIN32/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/VC-WIN32/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/VC-WIN32/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/VC-WIN64A/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/VC-WIN64A/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/VC-WIN64A/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/aix-gcc/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/aix-gcc/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/aix-gcc/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/aix-gcc/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/aix-gcc/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/aix-gcc/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/aix64-gcc-as/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/aix64-gcc-as/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/aix64-gcc-as/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin-i386-cc/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin-i386-cc/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin-i386-cc/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin64-arm64-cc/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-aarch64/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-aarch64/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-aarch64/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-aarch64/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-aarch64/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-armv4/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-armv4/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-armv4/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-armv4/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-armv4/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-elf/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-elf/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-elf/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-elf/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-elf/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-elf/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc64/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc64/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc64/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc64/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc64/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc64/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc64le/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc64le/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-ppc64le/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-x32/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-x32/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-x32/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-x32/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-x32/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-x32/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-x86_64/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-x86_64/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-x86_64/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux-x86_64/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux-x86_64/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux32-s390x/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux32-s390x/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux32-s390x/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux32-s390x/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux32-s390x/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux64-mips64/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux64-mips64/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux64-mips64/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux64-mips64/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux64-mips64/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux64-riscv64/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux64-s390x/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux64-s390x/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux64-s390x/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/linux64-s390x/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/linux64-s390x/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/solaris-x86-gcc/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h +1 -1
- package/include/node/openssl/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h +5 -5
- package/include/node/openssl/core.h +1 -1
- package/include/node/openssl/cryptoerr.h +1 -0
- package/include/node/openssl/httperr.h +1 -0
- package/include/node/openssl/macros.h +1 -1
- package/include/node/v8-callbacks.h +377 -0
- package/include/node/v8-embedder-heap.h +238 -0
- package/include/node/v8-forward.h +81 -0
- package/include/node/v8-function-callback.h +475 -0
- package/include/node/v8-initialization.h +25 -9
- package/include/node/v8-internal.h +9 -20
- package/include/node/v8-isolate.h +3 -0
- package/include/node/v8-locker.h +7 -2
- package/include/node/v8-message.h +4 -1
- package/include/node/v8-template.h +1 -0
- package/include/node/v8-version.h +3 -3
- package/include/node/v8-weak-callback-info.h +73 -0
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
# define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x)
|
|
21
21
|
|
|
22
22
|
/*
|
|
23
|
-
* Sometimes
|
|
23
|
+
* Sometimes OPENSSL_NO_xxx ends up with an empty file and some compilers
|
|
24
24
|
* don't like that. This will hopefully silence them.
|
|
25
25
|
*/
|
|
26
26
|
# define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy;
|
|
@@ -0,0 +1,377 @@
|
|
|
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_ISOLATE_CALLBACKS_H_
|
|
6
|
+
#define INCLUDE_V8_ISOLATE_CALLBACKS_H_
|
|
7
|
+
|
|
8
|
+
#include <stddef.h>
|
|
9
|
+
|
|
10
|
+
#include <string>
|
|
11
|
+
|
|
12
|
+
#include "cppgc/common.h"
|
|
13
|
+
#include "v8-data.h" // NOLINT(build/include_directory)
|
|
14
|
+
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
|
15
|
+
#include "v8config.h" // NOLINT(build/include_directory)
|
|
16
|
+
|
|
17
|
+
#if defined(V8_OS_WIN)
|
|
18
|
+
struct _EXCEPTION_POINTERS;
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
namespace v8 {
|
|
22
|
+
|
|
23
|
+
template <typename T>
|
|
24
|
+
class FunctionCallbackInfo;
|
|
25
|
+
class Isolate;
|
|
26
|
+
class Message;
|
|
27
|
+
class Module;
|
|
28
|
+
class Object;
|
|
29
|
+
class Promise;
|
|
30
|
+
class ScriptOrModule;
|
|
31
|
+
class String;
|
|
32
|
+
class UnboundScript;
|
|
33
|
+
class Value;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* A JIT code event is issued each time code is added, moved or removed.
|
|
37
|
+
*
|
|
38
|
+
* \note removal events are not currently issued.
|
|
39
|
+
*/
|
|
40
|
+
struct JitCodeEvent {
|
|
41
|
+
enum EventType {
|
|
42
|
+
CODE_ADDED,
|
|
43
|
+
CODE_MOVED,
|
|
44
|
+
CODE_REMOVED,
|
|
45
|
+
CODE_ADD_LINE_POS_INFO,
|
|
46
|
+
CODE_START_LINE_INFO_RECORDING,
|
|
47
|
+
CODE_END_LINE_INFO_RECORDING
|
|
48
|
+
};
|
|
49
|
+
// Definition of the code position type. The "POSITION" type means the place
|
|
50
|
+
// in the source code which are of interest when making stack traces to
|
|
51
|
+
// pin-point the source location of a stack frame as close as possible.
|
|
52
|
+
// The "STATEMENT_POSITION" means the place at the beginning of each
|
|
53
|
+
// statement, and is used to indicate possible break locations.
|
|
54
|
+
enum PositionType { POSITION, STATEMENT_POSITION };
|
|
55
|
+
|
|
56
|
+
// There are three different kinds of CodeType, one for JIT code generated
|
|
57
|
+
// by the optimizing compiler, one for byte code generated for the
|
|
58
|
+
// interpreter, and one for code generated from Wasm. For JIT_CODE and
|
|
59
|
+
// WASM_CODE, |code_start| points to the beginning of jitted assembly code,
|
|
60
|
+
// while for BYTE_CODE events, |code_start| points to the first bytecode of
|
|
61
|
+
// the interpreted function.
|
|
62
|
+
enum CodeType { BYTE_CODE, JIT_CODE, WASM_CODE };
|
|
63
|
+
|
|
64
|
+
// Type of event.
|
|
65
|
+
EventType type;
|
|
66
|
+
CodeType code_type;
|
|
67
|
+
// Start of the instructions.
|
|
68
|
+
void* code_start;
|
|
69
|
+
// Size of the instructions.
|
|
70
|
+
size_t code_len;
|
|
71
|
+
// Script info for CODE_ADDED event.
|
|
72
|
+
Local<UnboundScript> script;
|
|
73
|
+
// User-defined data for *_LINE_INFO_* event. It's used to hold the source
|
|
74
|
+
// code line information which is returned from the
|
|
75
|
+
// CODE_START_LINE_INFO_RECORDING event. And it's passed to subsequent
|
|
76
|
+
// CODE_ADD_LINE_POS_INFO and CODE_END_LINE_INFO_RECORDING events.
|
|
77
|
+
void* user_data;
|
|
78
|
+
|
|
79
|
+
struct name_t {
|
|
80
|
+
// Name of the object associated with the code, note that the string is not
|
|
81
|
+
// zero-terminated.
|
|
82
|
+
const char* str;
|
|
83
|
+
// Number of chars in str.
|
|
84
|
+
size_t len;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
struct line_info_t {
|
|
88
|
+
// PC offset
|
|
89
|
+
size_t offset;
|
|
90
|
+
// Code position
|
|
91
|
+
size_t pos;
|
|
92
|
+
// The position type.
|
|
93
|
+
PositionType position_type;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
struct wasm_source_info_t {
|
|
97
|
+
// Source file name.
|
|
98
|
+
const char* filename;
|
|
99
|
+
// Length of filename.
|
|
100
|
+
size_t filename_size;
|
|
101
|
+
// Line number table, which maps offsets of JITted code to line numbers of
|
|
102
|
+
// source file.
|
|
103
|
+
const line_info_t* line_number_table;
|
|
104
|
+
// Number of entries in the line number table.
|
|
105
|
+
size_t line_number_table_size;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
wasm_source_info_t* wasm_source_info;
|
|
109
|
+
|
|
110
|
+
union {
|
|
111
|
+
// Only valid for CODE_ADDED.
|
|
112
|
+
struct name_t name;
|
|
113
|
+
|
|
114
|
+
// Only valid for CODE_ADD_LINE_POS_INFO
|
|
115
|
+
struct line_info_t line_info;
|
|
116
|
+
|
|
117
|
+
// New location of instructions. Only valid for CODE_MOVED.
|
|
118
|
+
void* new_code_start;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
Isolate* isolate;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Option flags passed to the SetJitCodeEventHandler function.
|
|
126
|
+
*/
|
|
127
|
+
enum JitCodeEventOptions {
|
|
128
|
+
kJitCodeEventDefault = 0,
|
|
129
|
+
// Generate callbacks for already existent code.
|
|
130
|
+
kJitCodeEventEnumExisting = 1
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Callback function passed to SetJitCodeEventHandler.
|
|
135
|
+
*
|
|
136
|
+
* \param event code add, move or removal event.
|
|
137
|
+
*/
|
|
138
|
+
using JitCodeEventHandler = void (*)(const JitCodeEvent* event);
|
|
139
|
+
|
|
140
|
+
// --- Garbage Collection Callbacks ---
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Applications can register callback functions which will be called before and
|
|
144
|
+
* after certain garbage collection operations. Allocations are not allowed in
|
|
145
|
+
* the callback functions, you therefore cannot manipulate objects (set or
|
|
146
|
+
* delete properties for example) since it is possible such operations will
|
|
147
|
+
* result in the allocation of objects.
|
|
148
|
+
*/
|
|
149
|
+
enum GCType {
|
|
150
|
+
kGCTypeScavenge = 1 << 0,
|
|
151
|
+
kGCTypeMarkSweepCompact = 1 << 1,
|
|
152
|
+
kGCTypeIncrementalMarking = 1 << 2,
|
|
153
|
+
kGCTypeProcessWeakCallbacks = 1 << 3,
|
|
154
|
+
kGCTypeAll = kGCTypeScavenge | kGCTypeMarkSweepCompact |
|
|
155
|
+
kGCTypeIncrementalMarking | kGCTypeProcessWeakCallbacks
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* GCCallbackFlags is used to notify additional information about the GC
|
|
160
|
+
* callback.
|
|
161
|
+
* - kGCCallbackFlagConstructRetainedObjectInfos: The GC callback is for
|
|
162
|
+
* constructing retained object infos.
|
|
163
|
+
* - kGCCallbackFlagForced: The GC callback is for a forced GC for testing.
|
|
164
|
+
* - kGCCallbackFlagSynchronousPhantomCallbackProcessing: The GC callback
|
|
165
|
+
* is called synchronously without getting posted to an idle task.
|
|
166
|
+
* - kGCCallbackFlagCollectAllAvailableGarbage: The GC callback is called
|
|
167
|
+
* in a phase where V8 is trying to collect all available garbage
|
|
168
|
+
* (e.g., handling a low memory notification).
|
|
169
|
+
* - kGCCallbackScheduleIdleGarbageCollection: The GC callback is called to
|
|
170
|
+
* trigger an idle garbage collection.
|
|
171
|
+
*/
|
|
172
|
+
enum GCCallbackFlags {
|
|
173
|
+
kNoGCCallbackFlags = 0,
|
|
174
|
+
kGCCallbackFlagConstructRetainedObjectInfos = 1 << 1,
|
|
175
|
+
kGCCallbackFlagForced = 1 << 2,
|
|
176
|
+
kGCCallbackFlagSynchronousPhantomCallbackProcessing = 1 << 3,
|
|
177
|
+
kGCCallbackFlagCollectAllAvailableGarbage = 1 << 4,
|
|
178
|
+
kGCCallbackFlagCollectAllExternalMemory = 1 << 5,
|
|
179
|
+
kGCCallbackScheduleIdleGarbageCollection = 1 << 6,
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
using GCCallback = void (*)(GCType type, GCCallbackFlags flags);
|
|
183
|
+
|
|
184
|
+
using InterruptCallback = void (*)(Isolate* isolate, void* data);
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* This callback is invoked when the heap size is close to the heap limit and
|
|
188
|
+
* V8 is likely to abort with out-of-memory error.
|
|
189
|
+
* The callback can extend the heap limit by returning a value that is greater
|
|
190
|
+
* than the current_heap_limit. The initial heap limit is the limit that was
|
|
191
|
+
* set after heap setup.
|
|
192
|
+
*/
|
|
193
|
+
using NearHeapLimitCallback = size_t (*)(void* data, size_t current_heap_limit,
|
|
194
|
+
size_t initial_heap_limit);
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Callback function passed to SetUnhandledExceptionCallback.
|
|
198
|
+
*/
|
|
199
|
+
#if defined(V8_OS_WIN)
|
|
200
|
+
using UnhandledExceptionCallback =
|
|
201
|
+
int (*)(_EXCEPTION_POINTERS* exception_pointers);
|
|
202
|
+
#endif
|
|
203
|
+
|
|
204
|
+
// --- Counters Callbacks ---
|
|
205
|
+
|
|
206
|
+
using CounterLookupCallback = int* (*)(const char* name);
|
|
207
|
+
|
|
208
|
+
using CreateHistogramCallback = void* (*)(const char* name, int min, int max,
|
|
209
|
+
size_t buckets);
|
|
210
|
+
|
|
211
|
+
using AddHistogramSampleCallback = void (*)(void* histogram, int sample);
|
|
212
|
+
|
|
213
|
+
// --- Exceptions ---
|
|
214
|
+
|
|
215
|
+
using FatalErrorCallback = void (*)(const char* location, const char* message);
|
|
216
|
+
|
|
217
|
+
using OOMErrorCallback = void (*)(const char* location, bool is_heap_oom);
|
|
218
|
+
|
|
219
|
+
using MessageCallback = void (*)(Local<Message> message, Local<Value> data);
|
|
220
|
+
|
|
221
|
+
// --- Tracing ---
|
|
222
|
+
|
|
223
|
+
enum LogEventStatus : int { kStart = 0, kEnd = 1, kStamp = 2 };
|
|
224
|
+
using LogEventCallback = void (*)(const char* name,
|
|
225
|
+
int /* LogEventStatus */ status);
|
|
226
|
+
|
|
227
|
+
// --- Crashkeys Callback ---
|
|
228
|
+
enum class CrashKeyId {
|
|
229
|
+
kIsolateAddress,
|
|
230
|
+
kReadonlySpaceFirstPageAddress,
|
|
231
|
+
kMapSpaceFirstPageAddress,
|
|
232
|
+
kCodeSpaceFirstPageAddress,
|
|
233
|
+
kDumpType,
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
using AddCrashKeyCallback = void (*)(CrashKeyId id, const std::string& value);
|
|
237
|
+
|
|
238
|
+
// --- Enter/Leave Script Callback ---
|
|
239
|
+
using BeforeCallEnteredCallback = void (*)(Isolate*);
|
|
240
|
+
using CallCompletedCallback = void (*)(Isolate*);
|
|
241
|
+
|
|
242
|
+
// --- AllowCodeGenerationFromStrings callbacks ---
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Callback to check if code generation from strings is allowed. See
|
|
246
|
+
* Context::AllowCodeGenerationFromStrings.
|
|
247
|
+
*/
|
|
248
|
+
using AllowCodeGenerationFromStringsCallback = bool (*)(Local<Context> context,
|
|
249
|
+
Local<String> source);
|
|
250
|
+
|
|
251
|
+
struct ModifyCodeGenerationFromStringsResult {
|
|
252
|
+
// If true, proceed with the codegen algorithm. Otherwise, block it.
|
|
253
|
+
bool codegen_allowed = false;
|
|
254
|
+
// Overwrite the original source with this string, if present.
|
|
255
|
+
// Use the original source if empty.
|
|
256
|
+
// This field is considered only if codegen_allowed is true.
|
|
257
|
+
MaybeLocal<String> modified_source;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Access type specification.
|
|
262
|
+
*/
|
|
263
|
+
enum AccessType {
|
|
264
|
+
ACCESS_GET,
|
|
265
|
+
ACCESS_SET,
|
|
266
|
+
ACCESS_HAS,
|
|
267
|
+
ACCESS_DELETE,
|
|
268
|
+
ACCESS_KEYS
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
// --- Failed Access Check Callback ---
|
|
272
|
+
|
|
273
|
+
using FailedAccessCheckCallback = void (*)(Local<Object> target,
|
|
274
|
+
AccessType type, Local<Value> data);
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Callback to check if codegen is allowed from a source object, and convert
|
|
278
|
+
* the source to string if necessary. See: ModifyCodeGenerationFromStrings.
|
|
279
|
+
*/
|
|
280
|
+
using ModifyCodeGenerationFromStringsCallback =
|
|
281
|
+
ModifyCodeGenerationFromStringsResult (*)(Local<Context> context,
|
|
282
|
+
Local<Value> source);
|
|
283
|
+
using ModifyCodeGenerationFromStringsCallback2 =
|
|
284
|
+
ModifyCodeGenerationFromStringsResult (*)(Local<Context> context,
|
|
285
|
+
Local<Value> source,
|
|
286
|
+
bool is_code_like);
|
|
287
|
+
|
|
288
|
+
// --- WebAssembly compilation callbacks ---
|
|
289
|
+
using ExtensionCallback = bool (*)(const FunctionCallbackInfo<Value>&);
|
|
290
|
+
|
|
291
|
+
using AllowWasmCodeGenerationCallback = bool (*)(Local<Context> context,
|
|
292
|
+
Local<String> source);
|
|
293
|
+
|
|
294
|
+
// --- Callback for APIs defined on v8-supported objects, but implemented
|
|
295
|
+
// by the embedder. Example: WebAssembly.{compile|instantiate}Streaming ---
|
|
296
|
+
using ApiImplementationCallback = void (*)(const FunctionCallbackInfo<Value>&);
|
|
297
|
+
|
|
298
|
+
// --- Callback for WebAssembly.compileStreaming ---
|
|
299
|
+
using WasmStreamingCallback = void (*)(const FunctionCallbackInfo<Value>&);
|
|
300
|
+
|
|
301
|
+
// --- Callback for loading source map file for Wasm profiling support
|
|
302
|
+
using WasmLoadSourceMapCallback = Local<String> (*)(Isolate* isolate,
|
|
303
|
+
const char* name);
|
|
304
|
+
|
|
305
|
+
// --- Callback for checking if WebAssembly Simd is enabled ---
|
|
306
|
+
using WasmSimdEnabledCallback = bool (*)(Local<Context> context);
|
|
307
|
+
|
|
308
|
+
// --- Callback for checking if WebAssembly exceptions are enabled ---
|
|
309
|
+
using WasmExceptionsEnabledCallback = bool (*)(Local<Context> context);
|
|
310
|
+
|
|
311
|
+
// --- Callback for checking if WebAssembly dynamic tiering is enabled ---
|
|
312
|
+
using WasmDynamicTieringEnabledCallback = bool (*)(Local<Context> context);
|
|
313
|
+
|
|
314
|
+
// --- Callback for checking if the SharedArrayBuffer constructor is enabled ---
|
|
315
|
+
using SharedArrayBufferConstructorEnabledCallback =
|
|
316
|
+
bool (*)(Local<Context> context);
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* HostImportModuleDynamicallyWithImportAssertionsCallback is called when we
|
|
320
|
+
* require the embedder to load a module. This is used as part of the dynamic
|
|
321
|
+
* import syntax.
|
|
322
|
+
*
|
|
323
|
+
* The referrer contains metadata about the script/module that calls
|
|
324
|
+
* import.
|
|
325
|
+
*
|
|
326
|
+
* The specifier is the name of the module that should be imported.
|
|
327
|
+
*
|
|
328
|
+
* The import_assertions are import assertions for this request in the form:
|
|
329
|
+
* [key1, value1, key2, value2, ...] where the keys and values are of type
|
|
330
|
+
* v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and
|
|
331
|
+
* returned from ModuleRequest::GetImportAssertions(), this array does not
|
|
332
|
+
* contain the source Locations of the assertions.
|
|
333
|
+
*
|
|
334
|
+
* The embedder must compile, instantiate, evaluate the Module, and
|
|
335
|
+
* obtain its namespace object.
|
|
336
|
+
*
|
|
337
|
+
* The Promise returned from this function is forwarded to userland
|
|
338
|
+
* JavaScript. The embedder must resolve this promise with the module
|
|
339
|
+
* namespace object. In case of an exception, the embedder must reject
|
|
340
|
+
* this promise with the exception. If the promise creation itself
|
|
341
|
+
* fails (e.g. due to stack overflow), the embedder must propagate
|
|
342
|
+
* that exception by returning an empty MaybeLocal.
|
|
343
|
+
*/
|
|
344
|
+
using HostImportModuleDynamicallyWithImportAssertionsCallback =
|
|
345
|
+
MaybeLocal<Promise> (*)(Local<Context> context,
|
|
346
|
+
Local<ScriptOrModule> referrer,
|
|
347
|
+
Local<String> specifier,
|
|
348
|
+
Local<FixedArray> import_assertions);
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* HostInitializeImportMetaObjectCallback is called the first time import.meta
|
|
352
|
+
* is accessed for a module. Subsequent access will reuse the same value.
|
|
353
|
+
*
|
|
354
|
+
* The method combines two implementation-defined abstract operations into one:
|
|
355
|
+
* HostGetImportMetaProperties and HostFinalizeImportMeta.
|
|
356
|
+
*
|
|
357
|
+
* The embedder should use v8::Object::CreateDataProperty to add properties on
|
|
358
|
+
* the meta object.
|
|
359
|
+
*/
|
|
360
|
+
using HostInitializeImportMetaObjectCallback = void (*)(Local<Context> context,
|
|
361
|
+
Local<Module> module,
|
|
362
|
+
Local<Object> meta);
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* PrepareStackTraceCallback is called when the stack property of an error is
|
|
366
|
+
* first accessed. The return value will be used as the stack value. If this
|
|
367
|
+
* callback is registed, the |Error.prepareStackTrace| API will be disabled.
|
|
368
|
+
* |sites| is an array of call sites, specified in
|
|
369
|
+
* https://v8.dev/docs/stack-trace-api
|
|
370
|
+
*/
|
|
371
|
+
using PrepareStackTraceCallback = MaybeLocal<Value> (*)(Local<Context> context,
|
|
372
|
+
Local<Value> error,
|
|
373
|
+
Local<Array> sites);
|
|
374
|
+
|
|
375
|
+
} // namespace v8
|
|
376
|
+
|
|
377
|
+
#endif // INCLUDE_V8_ISOLATE_CALLBACKS_H_
|
|
@@ -0,0 +1,238 @@
|
|
|
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_EMBEDDER_HEAP_H_
|
|
6
|
+
#define INCLUDE_V8_EMBEDDER_HEAP_H_
|
|
7
|
+
|
|
8
|
+
#include <stddef.h>
|
|
9
|
+
#include <stdint.h>
|
|
10
|
+
|
|
11
|
+
#include <utility>
|
|
12
|
+
#include <vector>
|
|
13
|
+
|
|
14
|
+
#include "cppgc/common.h"
|
|
15
|
+
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
|
16
|
+
#include "v8-traced-handle.h" // NOLINT(build/include_directory)
|
|
17
|
+
#include "v8config.h" // NOLINT(build/include_directory)
|
|
18
|
+
|
|
19
|
+
namespace v8 {
|
|
20
|
+
|
|
21
|
+
class Data;
|
|
22
|
+
class Isolate;
|
|
23
|
+
class Value;
|
|
24
|
+
|
|
25
|
+
namespace internal {
|
|
26
|
+
class LocalEmbedderHeapTracer;
|
|
27
|
+
} // namespace internal
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Handler for embedder roots on non-unified heap garbage collections.
|
|
31
|
+
*/
|
|
32
|
+
class V8_EXPORT EmbedderRootsHandler {
|
|
33
|
+
public:
|
|
34
|
+
virtual ~EmbedderRootsHandler() = default;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns true if the TracedGlobal handle should be considered as root for
|
|
38
|
+
* the currently running non-tracing garbage collection and false otherwise.
|
|
39
|
+
* The default implementation will keep all TracedGlobal references as roots.
|
|
40
|
+
*
|
|
41
|
+
* If this returns false, then V8 may decide that the object referred to by
|
|
42
|
+
* such a handle is reclaimed. In that case:
|
|
43
|
+
* - No action is required if handles are used with destructors, i.e., by just
|
|
44
|
+
* using |TracedGlobal|.
|
|
45
|
+
* - When run without destructors, i.e., by using |TracedReference|, V8 calls
|
|
46
|
+
* |ResetRoot|.
|
|
47
|
+
*
|
|
48
|
+
* Note that the |handle| is different from the handle that the embedder holds
|
|
49
|
+
* for retaining the object. The embedder may use |WrapperClassId()| to
|
|
50
|
+
* distinguish cases where it wants handles to be treated as roots from not
|
|
51
|
+
* being treated as roots.
|
|
52
|
+
*/
|
|
53
|
+
virtual bool IsRoot(const v8::TracedReference<v8::Value>& handle) = 0;
|
|
54
|
+
virtual bool IsRoot(const v8::TracedGlobal<v8::Value>& handle) = 0;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Used in combination with |IsRoot|. Called by V8 when an
|
|
58
|
+
* object that is backed by a handle is reclaimed by a non-tracing garbage
|
|
59
|
+
* collection. It is up to the embedder to reset the original handle.
|
|
60
|
+
*
|
|
61
|
+
* Note that the |handle| is different from the handle that the embedder holds
|
|
62
|
+
* for retaining the object. It is up to the embedder to find the original
|
|
63
|
+
* handle via the object or class id.
|
|
64
|
+
*/
|
|
65
|
+
virtual void ResetRoot(const v8::TracedReference<v8::Value>& handle) = 0;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Interface for tracing through the embedder heap. During a V8 garbage
|
|
70
|
+
* collection, V8 collects hidden fields of all potential wrappers, and at the
|
|
71
|
+
* end of its marking phase iterates the collection and asks the embedder to
|
|
72
|
+
* trace through its heap and use reporter to report each JavaScript object
|
|
73
|
+
* reachable from any of the given wrappers.
|
|
74
|
+
*/
|
|
75
|
+
class V8_EXPORT EmbedderHeapTracer {
|
|
76
|
+
public:
|
|
77
|
+
using EmbedderStackState = cppgc::EmbedderStackState;
|
|
78
|
+
|
|
79
|
+
enum TraceFlags : uint64_t {
|
|
80
|
+
kNoFlags = 0,
|
|
81
|
+
kReduceMemory = 1 << 0,
|
|
82
|
+
kForced = 1 << 2,
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Interface for iterating through TracedGlobal handles.
|
|
87
|
+
*/
|
|
88
|
+
class V8_EXPORT TracedGlobalHandleVisitor {
|
|
89
|
+
public:
|
|
90
|
+
virtual ~TracedGlobalHandleVisitor() = default;
|
|
91
|
+
virtual void VisitTracedGlobalHandle(const TracedGlobal<Value>& handle) {}
|
|
92
|
+
virtual void VisitTracedReference(const TracedReference<Value>& handle) {}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Summary of a garbage collection cycle. See |TraceEpilogue| on how the
|
|
97
|
+
* summary is reported.
|
|
98
|
+
*/
|
|
99
|
+
struct TraceSummary {
|
|
100
|
+
/**
|
|
101
|
+
* Time spent managing the retained memory in milliseconds. This can e.g.
|
|
102
|
+
* include the time tracing through objects in the embedder.
|
|
103
|
+
*/
|
|
104
|
+
double time = 0.0;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Memory retained by the embedder through the |EmbedderHeapTracer|
|
|
108
|
+
* mechanism in bytes.
|
|
109
|
+
*/
|
|
110
|
+
size_t allocated_size = 0;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
virtual ~EmbedderHeapTracer() = default;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Iterates all TracedGlobal handles created for the v8::Isolate the tracer is
|
|
117
|
+
* attached to.
|
|
118
|
+
*/
|
|
119
|
+
void IterateTracedGlobalHandles(TracedGlobalHandleVisitor* visitor);
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Called by the embedder to set the start of the stack which is e.g. used by
|
|
123
|
+
* V8 to determine whether handles are used from stack or heap.
|
|
124
|
+
*/
|
|
125
|
+
void SetStackStart(void* stack_start);
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Called by the embedder to notify V8 of an empty execution stack.
|
|
129
|
+
*/
|
|
130
|
+
V8_DEPRECATE_SOON(
|
|
131
|
+
"This call only optimized internal caches which V8 is able to figure out "
|
|
132
|
+
"on its own now.")
|
|
133
|
+
void NotifyEmptyEmbedderStack();
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Called by v8 to register internal fields of found wrappers.
|
|
137
|
+
*
|
|
138
|
+
* The embedder is expected to store them somewhere and trace reachable
|
|
139
|
+
* wrappers from them when called through |AdvanceTracing|.
|
|
140
|
+
*/
|
|
141
|
+
virtual void RegisterV8References(
|
|
142
|
+
const std::vector<std::pair<void*, void*>>& embedder_fields) = 0;
|
|
143
|
+
|
|
144
|
+
void RegisterEmbedderReference(const BasicTracedReference<v8::Data>& ref);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Called at the beginning of a GC cycle.
|
|
148
|
+
*/
|
|
149
|
+
virtual void TracePrologue(TraceFlags flags) {}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Called to advance tracing in the embedder.
|
|
153
|
+
*
|
|
154
|
+
* The embedder is expected to trace its heap starting from wrappers reported
|
|
155
|
+
* by RegisterV8References method, and report back all reachable wrappers.
|
|
156
|
+
* Furthermore, the embedder is expected to stop tracing by the given
|
|
157
|
+
* deadline. A deadline of infinity means that tracing should be finished.
|
|
158
|
+
*
|
|
159
|
+
* Returns |true| if tracing is done, and false otherwise.
|
|
160
|
+
*/
|
|
161
|
+
virtual bool AdvanceTracing(double deadline_in_ms) = 0;
|
|
162
|
+
|
|
163
|
+
/*
|
|
164
|
+
* Returns true if there no more tracing work to be done (see AdvanceTracing)
|
|
165
|
+
* and false otherwise.
|
|
166
|
+
*/
|
|
167
|
+
virtual bool IsTracingDone() = 0;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Called at the end of a GC cycle.
|
|
171
|
+
*
|
|
172
|
+
* Note that allocation is *not* allowed within |TraceEpilogue|. Can be
|
|
173
|
+
* overriden to fill a |TraceSummary| that is used by V8 to schedule future
|
|
174
|
+
* garbage collections.
|
|
175
|
+
*/
|
|
176
|
+
virtual void TraceEpilogue(TraceSummary* trace_summary) {}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Called upon entering the final marking pause. No more incremental marking
|
|
180
|
+
* steps will follow this call.
|
|
181
|
+
*/
|
|
182
|
+
virtual void EnterFinalPause(EmbedderStackState stack_state) = 0;
|
|
183
|
+
|
|
184
|
+
/*
|
|
185
|
+
* Called by the embedder to request immediate finalization of the currently
|
|
186
|
+
* running tracing phase that has been started with TracePrologue and not
|
|
187
|
+
* yet finished with TraceEpilogue.
|
|
188
|
+
*
|
|
189
|
+
* Will be a noop when currently not in tracing.
|
|
190
|
+
*
|
|
191
|
+
* This is an experimental feature.
|
|
192
|
+
*/
|
|
193
|
+
void FinalizeTracing();
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* See documentation on EmbedderRootsHandler.
|
|
197
|
+
*/
|
|
198
|
+
virtual bool IsRootForNonTracingGC(
|
|
199
|
+
const v8::TracedReference<v8::Value>& handle);
|
|
200
|
+
virtual bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>& handle);
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* See documentation on EmbedderRootsHandler.
|
|
204
|
+
*/
|
|
205
|
+
virtual void ResetHandleInNonTracingGC(
|
|
206
|
+
const v8::TracedReference<v8::Value>& handle);
|
|
207
|
+
|
|
208
|
+
/*
|
|
209
|
+
* Called by the embedder to immediately perform a full garbage collection.
|
|
210
|
+
*
|
|
211
|
+
* Should only be used in testing code.
|
|
212
|
+
*/
|
|
213
|
+
void GarbageCollectionForTesting(EmbedderStackState stack_state);
|
|
214
|
+
|
|
215
|
+
/*
|
|
216
|
+
* Called by the embedder to signal newly allocated or freed memory. Not bound
|
|
217
|
+
* to tracing phases. Embedders should trade off when increments are reported
|
|
218
|
+
* as V8 may consult global heuristics on whether to trigger garbage
|
|
219
|
+
* collection on this change.
|
|
220
|
+
*/
|
|
221
|
+
void IncreaseAllocatedSize(size_t bytes);
|
|
222
|
+
void DecreaseAllocatedSize(size_t bytes);
|
|
223
|
+
|
|
224
|
+
/*
|
|
225
|
+
* Returns the v8::Isolate this tracer is attached too and |nullptr| if it
|
|
226
|
+
* is not attached to any v8::Isolate.
|
|
227
|
+
*/
|
|
228
|
+
v8::Isolate* isolate() const { return isolate_; }
|
|
229
|
+
|
|
230
|
+
protected:
|
|
231
|
+
v8::Isolate* isolate_ = nullptr;
|
|
232
|
+
|
|
233
|
+
friend class internal::LocalEmbedderHeapTracer;
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
} // namespace v8
|
|
237
|
+
|
|
238
|
+
#endif // INCLUDE_V8_EMBEDDER_HEAP_H_
|
|
@@ -0,0 +1,81 @@
|
|
|
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_FORWARD_H_
|
|
6
|
+
#define INCLUDE_V8_FORWARD_H_
|
|
7
|
+
|
|
8
|
+
// This header is intended to be used by headers that pass around V8 types,
|
|
9
|
+
// either by pointer or using Local<Type>. The full definitions can be included
|
|
10
|
+
// either via v8.h or the more fine-grained headers.
|
|
11
|
+
|
|
12
|
+
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
|
13
|
+
|
|
14
|
+
namespace v8 {
|
|
15
|
+
|
|
16
|
+
class AccessorSignature;
|
|
17
|
+
class Array;
|
|
18
|
+
class ArrayBuffer;
|
|
19
|
+
class ArrayBufferView;
|
|
20
|
+
class BigInt;
|
|
21
|
+
class BigInt64Array;
|
|
22
|
+
class BigIntObject;
|
|
23
|
+
class BigUint64Array;
|
|
24
|
+
class Boolean;
|
|
25
|
+
class BooleanObject;
|
|
26
|
+
class Context;
|
|
27
|
+
class DataView;
|
|
28
|
+
class Data;
|
|
29
|
+
class Date;
|
|
30
|
+
class Extension;
|
|
31
|
+
class External;
|
|
32
|
+
class FixedArray;
|
|
33
|
+
class Float32Array;
|
|
34
|
+
class Float64Array;
|
|
35
|
+
class Function;
|
|
36
|
+
template <class F>
|
|
37
|
+
class FunctionCallbackInfo;
|
|
38
|
+
class FunctionTemplate;
|
|
39
|
+
class Int16Array;
|
|
40
|
+
class Int32;
|
|
41
|
+
class Int32Array;
|
|
42
|
+
class Int8Array;
|
|
43
|
+
class Integer;
|
|
44
|
+
class Isolate;
|
|
45
|
+
class Map;
|
|
46
|
+
class Module;
|
|
47
|
+
class Name;
|
|
48
|
+
class Number;
|
|
49
|
+
class NumberObject;
|
|
50
|
+
class Object;
|
|
51
|
+
class ObjectTemplate;
|
|
52
|
+
class Platform;
|
|
53
|
+
class Primitive;
|
|
54
|
+
class Private;
|
|
55
|
+
class Promise;
|
|
56
|
+
class Proxy;
|
|
57
|
+
class RegExp;
|
|
58
|
+
class Script;
|
|
59
|
+
class Set;
|
|
60
|
+
class SharedArrayBuffer;
|
|
61
|
+
class Signature;
|
|
62
|
+
class String;
|
|
63
|
+
class StringObject;
|
|
64
|
+
class Symbol;
|
|
65
|
+
class SymbolObject;
|
|
66
|
+
class Template;
|
|
67
|
+
class TryCatch;
|
|
68
|
+
class TypedArray;
|
|
69
|
+
class Uint16Array;
|
|
70
|
+
class Uint32;
|
|
71
|
+
class Uint32Array;
|
|
72
|
+
class Uint8Array;
|
|
73
|
+
class Uint8ClampedArray;
|
|
74
|
+
class UnboundModuleScript;
|
|
75
|
+
class Value;
|
|
76
|
+
class WasmMemoryObject;
|
|
77
|
+
class WasmModuleObject;
|
|
78
|
+
|
|
79
|
+
} // namespace v8
|
|
80
|
+
|
|
81
|
+
#endif // INCLUDE_V8_FORWARD_H_
|