node-linux-arm64 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
|
@@ -0,0 +1,475 @@
|
|
|
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_FUNCTION_CALLBACK_H_
|
|
6
|
+
#define INCLUDE_V8_FUNCTION_CALLBACK_H_
|
|
7
|
+
|
|
8
|
+
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
|
9
|
+
#include "v8-primitive.h" // NOLINT(build/include_directory)
|
|
10
|
+
#include "v8config.h" // NOLINT(build/include_directory)
|
|
11
|
+
|
|
12
|
+
namespace v8 {
|
|
13
|
+
|
|
14
|
+
template <typename T>
|
|
15
|
+
class BasicTracedReference;
|
|
16
|
+
template <typename T>
|
|
17
|
+
class Global;
|
|
18
|
+
class Object;
|
|
19
|
+
class Value;
|
|
20
|
+
|
|
21
|
+
namespace internal {
|
|
22
|
+
class FunctionCallbackArguments;
|
|
23
|
+
class PropertyCallbackArguments;
|
|
24
|
+
} // namespace internal
|
|
25
|
+
|
|
26
|
+
namespace debug {
|
|
27
|
+
class ConsoleCallArguments;
|
|
28
|
+
} // namespace debug
|
|
29
|
+
|
|
30
|
+
template <typename T>
|
|
31
|
+
class ReturnValue {
|
|
32
|
+
public:
|
|
33
|
+
template <class S>
|
|
34
|
+
V8_INLINE ReturnValue(const ReturnValue<S>& that) : value_(that.value_) {
|
|
35
|
+
static_assert(std::is_base_of<T, S>::value, "type check");
|
|
36
|
+
}
|
|
37
|
+
// Local setters
|
|
38
|
+
template <typename S>
|
|
39
|
+
V8_INLINE void Set(const Global<S>& handle);
|
|
40
|
+
template <typename S>
|
|
41
|
+
V8_INLINE void Set(const BasicTracedReference<S>& handle);
|
|
42
|
+
template <typename S>
|
|
43
|
+
V8_INLINE void Set(const Local<S> handle);
|
|
44
|
+
// Fast primitive setters
|
|
45
|
+
V8_INLINE void Set(bool value);
|
|
46
|
+
V8_INLINE void Set(double i);
|
|
47
|
+
V8_INLINE void Set(int32_t i);
|
|
48
|
+
V8_INLINE void Set(uint32_t i);
|
|
49
|
+
// Fast JS primitive setters
|
|
50
|
+
V8_INLINE void SetNull();
|
|
51
|
+
V8_INLINE void SetUndefined();
|
|
52
|
+
V8_INLINE void SetEmptyString();
|
|
53
|
+
// Convenience getter for Isolate
|
|
54
|
+
V8_INLINE Isolate* GetIsolate() const;
|
|
55
|
+
|
|
56
|
+
// Pointer setter: Uncompilable to prevent inadvertent misuse.
|
|
57
|
+
template <typename S>
|
|
58
|
+
V8_INLINE void Set(S* whatever);
|
|
59
|
+
|
|
60
|
+
// Getter. Creates a new Local<> so it comes with a certain performance
|
|
61
|
+
// hit. If the ReturnValue was not yet set, this will return the undefined
|
|
62
|
+
// value.
|
|
63
|
+
V8_INLINE Local<Value> Get() const;
|
|
64
|
+
|
|
65
|
+
private:
|
|
66
|
+
template <class F>
|
|
67
|
+
friend class ReturnValue;
|
|
68
|
+
template <class F>
|
|
69
|
+
friend class FunctionCallbackInfo;
|
|
70
|
+
template <class F>
|
|
71
|
+
friend class PropertyCallbackInfo;
|
|
72
|
+
template <class F, class G, class H>
|
|
73
|
+
friend class PersistentValueMapBase;
|
|
74
|
+
V8_INLINE void SetInternal(internal::Address value) { *value_ = value; }
|
|
75
|
+
V8_INLINE internal::Address GetDefaultValue();
|
|
76
|
+
V8_INLINE explicit ReturnValue(internal::Address* slot);
|
|
77
|
+
internal::Address* value_;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The argument information given to function call callbacks. This
|
|
82
|
+
* class provides access to information about the context of the call,
|
|
83
|
+
* including the receiver, the number and values of arguments, and
|
|
84
|
+
* the holder of the function.
|
|
85
|
+
*/
|
|
86
|
+
template <typename T>
|
|
87
|
+
class FunctionCallbackInfo {
|
|
88
|
+
public:
|
|
89
|
+
/** The number of available arguments. */
|
|
90
|
+
V8_INLINE int Length() const;
|
|
91
|
+
/**
|
|
92
|
+
* Accessor for the available arguments. Returns `undefined` if the index
|
|
93
|
+
* is out of bounds.
|
|
94
|
+
*/
|
|
95
|
+
V8_INLINE Local<Value> operator[](int i) const;
|
|
96
|
+
/** Returns the receiver. This corresponds to the "this" value. */
|
|
97
|
+
V8_INLINE Local<Object> This() const;
|
|
98
|
+
/**
|
|
99
|
+
* If the callback was created without a Signature, this is the same
|
|
100
|
+
* value as This(). If there is a signature, and the signature didn't match
|
|
101
|
+
* This() but one of its hidden prototypes, this will be the respective
|
|
102
|
+
* hidden prototype.
|
|
103
|
+
*
|
|
104
|
+
* Note that this is not the prototype of This() on which the accessor
|
|
105
|
+
* referencing this callback was found (which in V8 internally is often
|
|
106
|
+
* referred to as holder [sic]).
|
|
107
|
+
*/
|
|
108
|
+
V8_INLINE Local<Object> Holder() const;
|
|
109
|
+
/** For construct calls, this returns the "new.target" value. */
|
|
110
|
+
V8_INLINE Local<Value> NewTarget() const;
|
|
111
|
+
/** Indicates whether this is a regular call or a construct call. */
|
|
112
|
+
V8_INLINE bool IsConstructCall() const;
|
|
113
|
+
/** The data argument specified when creating the callback. */
|
|
114
|
+
V8_INLINE Local<Value> Data() const;
|
|
115
|
+
/** The current Isolate. */
|
|
116
|
+
V8_INLINE Isolate* GetIsolate() const;
|
|
117
|
+
/** The ReturnValue for the call. */
|
|
118
|
+
V8_INLINE ReturnValue<T> GetReturnValue() const;
|
|
119
|
+
// This shouldn't be public, but the arm compiler needs it.
|
|
120
|
+
static const int kArgsLength = 6;
|
|
121
|
+
|
|
122
|
+
protected:
|
|
123
|
+
friend class internal::FunctionCallbackArguments;
|
|
124
|
+
friend class internal::CustomArguments<FunctionCallbackInfo>;
|
|
125
|
+
friend class debug::ConsoleCallArguments;
|
|
126
|
+
static const int kHolderIndex = 0;
|
|
127
|
+
static const int kIsolateIndex = 1;
|
|
128
|
+
static const int kReturnValueDefaultValueIndex = 2;
|
|
129
|
+
static const int kReturnValueIndex = 3;
|
|
130
|
+
static const int kDataIndex = 4;
|
|
131
|
+
static const int kNewTargetIndex = 5;
|
|
132
|
+
|
|
133
|
+
V8_INLINE FunctionCallbackInfo(internal::Address* implicit_args,
|
|
134
|
+
internal::Address* values, int length);
|
|
135
|
+
internal::Address* implicit_args_;
|
|
136
|
+
internal::Address* values_;
|
|
137
|
+
int length_;
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* The information passed to a property callback about the context
|
|
142
|
+
* of the property access.
|
|
143
|
+
*/
|
|
144
|
+
template <typename T>
|
|
145
|
+
class PropertyCallbackInfo {
|
|
146
|
+
public:
|
|
147
|
+
/**
|
|
148
|
+
* \return The isolate of the property access.
|
|
149
|
+
*/
|
|
150
|
+
V8_INLINE Isolate* GetIsolate() const;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* \return The data set in the configuration, i.e., in
|
|
154
|
+
* `NamedPropertyHandlerConfiguration` or
|
|
155
|
+
* `IndexedPropertyHandlerConfiguration.`
|
|
156
|
+
*/
|
|
157
|
+
V8_INLINE Local<Value> Data() const;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* \return The receiver. In many cases, this is the object on which the
|
|
161
|
+
* property access was intercepted. When using
|
|
162
|
+
* `Reflect.get`, `Function.prototype.call`, or similar functions, it is the
|
|
163
|
+
* object passed in as receiver or thisArg.
|
|
164
|
+
*
|
|
165
|
+
* \code
|
|
166
|
+
* void GetterCallback(Local<Name> name,
|
|
167
|
+
* const v8::PropertyCallbackInfo<v8::Value>& info) {
|
|
168
|
+
* auto context = info.GetIsolate()->GetCurrentContext();
|
|
169
|
+
*
|
|
170
|
+
* v8::Local<v8::Value> a_this =
|
|
171
|
+
* info.This()
|
|
172
|
+
* ->GetRealNamedProperty(context, v8_str("a"))
|
|
173
|
+
* .ToLocalChecked();
|
|
174
|
+
* v8::Local<v8::Value> a_holder =
|
|
175
|
+
* info.Holder()
|
|
176
|
+
* ->GetRealNamedProperty(context, v8_str("a"))
|
|
177
|
+
* .ToLocalChecked();
|
|
178
|
+
*
|
|
179
|
+
* CHECK(v8_str("r")->Equals(context, a_this).FromJust());
|
|
180
|
+
* CHECK(v8_str("obj")->Equals(context, a_holder).FromJust());
|
|
181
|
+
*
|
|
182
|
+
* info.GetReturnValue().Set(name);
|
|
183
|
+
* }
|
|
184
|
+
*
|
|
185
|
+
* v8::Local<v8::FunctionTemplate> templ =
|
|
186
|
+
* v8::FunctionTemplate::New(isolate);
|
|
187
|
+
* templ->InstanceTemplate()->SetHandler(
|
|
188
|
+
* v8::NamedPropertyHandlerConfiguration(GetterCallback));
|
|
189
|
+
* LocalContext env;
|
|
190
|
+
* env->Global()
|
|
191
|
+
* ->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local())
|
|
192
|
+
* .ToLocalChecked()
|
|
193
|
+
* ->NewInstance(env.local())
|
|
194
|
+
* .ToLocalChecked())
|
|
195
|
+
* .FromJust();
|
|
196
|
+
*
|
|
197
|
+
* CompileRun("obj.a = 'obj'; var r = {a: 'r'}; Reflect.get(obj, 'x', r)");
|
|
198
|
+
* \endcode
|
|
199
|
+
*/
|
|
200
|
+
V8_INLINE Local<Object> This() const;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* \return The object in the prototype chain of the receiver that has the
|
|
204
|
+
* interceptor. Suppose you have `x` and its prototype is `y`, and `y`
|
|
205
|
+
* has an interceptor. Then `info.This()` is `x` and `info.Holder()` is `y`.
|
|
206
|
+
* The Holder() could be a hidden object (the global object, rather
|
|
207
|
+
* than the global proxy).
|
|
208
|
+
*
|
|
209
|
+
* \note For security reasons, do not pass the object back into the runtime.
|
|
210
|
+
*/
|
|
211
|
+
V8_INLINE Local<Object> Holder() const;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* \return The return value of the callback.
|
|
215
|
+
* Can be changed by calling Set().
|
|
216
|
+
* \code
|
|
217
|
+
* info.GetReturnValue().Set(...)
|
|
218
|
+
* \endcode
|
|
219
|
+
*
|
|
220
|
+
*/
|
|
221
|
+
V8_INLINE ReturnValue<T> GetReturnValue() const;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* \return True if the intercepted function should throw if an error occurs.
|
|
225
|
+
* Usually, `true` corresponds to `'use strict'`.
|
|
226
|
+
*
|
|
227
|
+
* \note Always `false` when intercepting `Reflect.set()`
|
|
228
|
+
* independent of the language mode.
|
|
229
|
+
*/
|
|
230
|
+
V8_INLINE bool ShouldThrowOnError() const;
|
|
231
|
+
|
|
232
|
+
// This shouldn't be public, but the arm compiler needs it.
|
|
233
|
+
static const int kArgsLength = 7;
|
|
234
|
+
|
|
235
|
+
protected:
|
|
236
|
+
friend class MacroAssembler;
|
|
237
|
+
friend class internal::PropertyCallbackArguments;
|
|
238
|
+
friend class internal::CustomArguments<PropertyCallbackInfo>;
|
|
239
|
+
static const int kShouldThrowOnErrorIndex = 0;
|
|
240
|
+
static const int kHolderIndex = 1;
|
|
241
|
+
static const int kIsolateIndex = 2;
|
|
242
|
+
static const int kReturnValueDefaultValueIndex = 3;
|
|
243
|
+
static const int kReturnValueIndex = 4;
|
|
244
|
+
static const int kDataIndex = 5;
|
|
245
|
+
static const int kThisIndex = 6;
|
|
246
|
+
|
|
247
|
+
V8_INLINE PropertyCallbackInfo(internal::Address* args) : args_(args) {}
|
|
248
|
+
internal::Address* args_;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
using FunctionCallback = void (*)(const FunctionCallbackInfo<Value>& info);
|
|
252
|
+
|
|
253
|
+
// --- Implementation ---
|
|
254
|
+
|
|
255
|
+
template <typename T>
|
|
256
|
+
ReturnValue<T>::ReturnValue(internal::Address* slot) : value_(slot) {}
|
|
257
|
+
|
|
258
|
+
template <typename T>
|
|
259
|
+
template <typename S>
|
|
260
|
+
void ReturnValue<T>::Set(const Global<S>& handle) {
|
|
261
|
+
static_assert(std::is_base_of<T, S>::value, "type check");
|
|
262
|
+
if (V8_UNLIKELY(handle.IsEmpty())) {
|
|
263
|
+
*value_ = GetDefaultValue();
|
|
264
|
+
} else {
|
|
265
|
+
*value_ = *reinterpret_cast<internal::Address*>(*handle);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
template <typename T>
|
|
270
|
+
template <typename S>
|
|
271
|
+
void ReturnValue<T>::Set(const BasicTracedReference<S>& handle) {
|
|
272
|
+
static_assert(std::is_base_of<T, S>::value, "type check");
|
|
273
|
+
if (V8_UNLIKELY(handle.IsEmpty())) {
|
|
274
|
+
*value_ = GetDefaultValue();
|
|
275
|
+
} else {
|
|
276
|
+
*value_ = *reinterpret_cast<internal::Address*>(handle.val_);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
template <typename T>
|
|
281
|
+
template <typename S>
|
|
282
|
+
void ReturnValue<T>::Set(const Local<S> handle) {
|
|
283
|
+
static_assert(std::is_void<T>::value || std::is_base_of<T, S>::value,
|
|
284
|
+
"type check");
|
|
285
|
+
if (V8_UNLIKELY(handle.IsEmpty())) {
|
|
286
|
+
*value_ = GetDefaultValue();
|
|
287
|
+
} else {
|
|
288
|
+
*value_ = *reinterpret_cast<internal::Address*>(*handle);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
template <typename T>
|
|
293
|
+
void ReturnValue<T>::Set(double i) {
|
|
294
|
+
static_assert(std::is_base_of<T, Number>::value, "type check");
|
|
295
|
+
Set(Number::New(GetIsolate(), i));
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
template <typename T>
|
|
299
|
+
void ReturnValue<T>::Set(int32_t i) {
|
|
300
|
+
static_assert(std::is_base_of<T, Integer>::value, "type check");
|
|
301
|
+
using I = internal::Internals;
|
|
302
|
+
if (V8_LIKELY(I::IsValidSmi(i))) {
|
|
303
|
+
*value_ = I::IntToSmi(i);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
Set(Integer::New(GetIsolate(), i));
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
template <typename T>
|
|
310
|
+
void ReturnValue<T>::Set(uint32_t i) {
|
|
311
|
+
static_assert(std::is_base_of<T, Integer>::value, "type check");
|
|
312
|
+
// Can't simply use INT32_MAX here for whatever reason.
|
|
313
|
+
bool fits_into_int32_t = (i & (1U << 31)) == 0;
|
|
314
|
+
if (V8_LIKELY(fits_into_int32_t)) {
|
|
315
|
+
Set(static_cast<int32_t>(i));
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
Set(Integer::NewFromUnsigned(GetIsolate(), i));
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
template <typename T>
|
|
322
|
+
void ReturnValue<T>::Set(bool value) {
|
|
323
|
+
static_assert(std::is_base_of<T, Boolean>::value, "type check");
|
|
324
|
+
using I = internal::Internals;
|
|
325
|
+
int root_index;
|
|
326
|
+
if (value) {
|
|
327
|
+
root_index = I::kTrueValueRootIndex;
|
|
328
|
+
} else {
|
|
329
|
+
root_index = I::kFalseValueRootIndex;
|
|
330
|
+
}
|
|
331
|
+
*value_ = *I::GetRoot(GetIsolate(), root_index);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
template <typename T>
|
|
335
|
+
void ReturnValue<T>::SetNull() {
|
|
336
|
+
static_assert(std::is_base_of<T, Primitive>::value, "type check");
|
|
337
|
+
using I = internal::Internals;
|
|
338
|
+
*value_ = *I::GetRoot(GetIsolate(), I::kNullValueRootIndex);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
template <typename T>
|
|
342
|
+
void ReturnValue<T>::SetUndefined() {
|
|
343
|
+
static_assert(std::is_base_of<T, Primitive>::value, "type check");
|
|
344
|
+
using I = internal::Internals;
|
|
345
|
+
*value_ = *I::GetRoot(GetIsolate(), I::kUndefinedValueRootIndex);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
template <typename T>
|
|
349
|
+
void ReturnValue<T>::SetEmptyString() {
|
|
350
|
+
static_assert(std::is_base_of<T, String>::value, "type check");
|
|
351
|
+
using I = internal::Internals;
|
|
352
|
+
*value_ = *I::GetRoot(GetIsolate(), I::kEmptyStringRootIndex);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
template <typename T>
|
|
356
|
+
Isolate* ReturnValue<T>::GetIsolate() const {
|
|
357
|
+
// Isolate is always the pointer below the default value on the stack.
|
|
358
|
+
return *reinterpret_cast<Isolate**>(&value_[-2]);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
template <typename T>
|
|
362
|
+
Local<Value> ReturnValue<T>::Get() const {
|
|
363
|
+
using I = internal::Internals;
|
|
364
|
+
if (*value_ == *I::GetRoot(GetIsolate(), I::kTheHoleValueRootIndex))
|
|
365
|
+
return Local<Value>(*Undefined(GetIsolate()));
|
|
366
|
+
return Local<Value>::New(GetIsolate(), reinterpret_cast<Value*>(value_));
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
template <typename T>
|
|
370
|
+
template <typename S>
|
|
371
|
+
void ReturnValue<T>::Set(S* whatever) {
|
|
372
|
+
static_assert(sizeof(S) < 0, "incompilable to prevent inadvertent misuse");
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
template <typename T>
|
|
376
|
+
internal::Address ReturnValue<T>::GetDefaultValue() {
|
|
377
|
+
// Default value is always the pointer below value_ on the stack.
|
|
378
|
+
return value_[-1];
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
template <typename T>
|
|
382
|
+
FunctionCallbackInfo<T>::FunctionCallbackInfo(internal::Address* implicit_args,
|
|
383
|
+
internal::Address* values,
|
|
384
|
+
int length)
|
|
385
|
+
: implicit_args_(implicit_args), values_(values), length_(length) {}
|
|
386
|
+
|
|
387
|
+
template <typename T>
|
|
388
|
+
Local<Value> FunctionCallbackInfo<T>::operator[](int i) const {
|
|
389
|
+
// values_ points to the first argument (not the receiver).
|
|
390
|
+
if (i < 0 || length_ <= i) return Local<Value>(*Undefined(GetIsolate()));
|
|
391
|
+
return Local<Value>(reinterpret_cast<Value*>(values_ + i));
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
template <typename T>
|
|
395
|
+
Local<Object> FunctionCallbackInfo<T>::This() const {
|
|
396
|
+
// values_ points to the first argument (not the receiver).
|
|
397
|
+
return Local<Object>(reinterpret_cast<Object*>(values_ - 1));
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
template <typename T>
|
|
401
|
+
Local<Object> FunctionCallbackInfo<T>::Holder() const {
|
|
402
|
+
return Local<Object>(
|
|
403
|
+
reinterpret_cast<Object*>(&implicit_args_[kHolderIndex]));
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
template <typename T>
|
|
407
|
+
Local<Value> FunctionCallbackInfo<T>::NewTarget() const {
|
|
408
|
+
return Local<Value>(
|
|
409
|
+
reinterpret_cast<Value*>(&implicit_args_[kNewTargetIndex]));
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
template <typename T>
|
|
413
|
+
Local<Value> FunctionCallbackInfo<T>::Data() const {
|
|
414
|
+
return Local<Value>(reinterpret_cast<Value*>(&implicit_args_[kDataIndex]));
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
template <typename T>
|
|
418
|
+
Isolate* FunctionCallbackInfo<T>::GetIsolate() const {
|
|
419
|
+
return *reinterpret_cast<Isolate**>(&implicit_args_[kIsolateIndex]);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
template <typename T>
|
|
423
|
+
ReturnValue<T> FunctionCallbackInfo<T>::GetReturnValue() const {
|
|
424
|
+
return ReturnValue<T>(&implicit_args_[kReturnValueIndex]);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
template <typename T>
|
|
428
|
+
bool FunctionCallbackInfo<T>::IsConstructCall() const {
|
|
429
|
+
return !NewTarget()->IsUndefined();
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
template <typename T>
|
|
433
|
+
int FunctionCallbackInfo<T>::Length() const {
|
|
434
|
+
return length_;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
template <typename T>
|
|
438
|
+
Isolate* PropertyCallbackInfo<T>::GetIsolate() const {
|
|
439
|
+
return *reinterpret_cast<Isolate**>(&args_[kIsolateIndex]);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
template <typename T>
|
|
443
|
+
Local<Value> PropertyCallbackInfo<T>::Data() const {
|
|
444
|
+
return Local<Value>(reinterpret_cast<Value*>(&args_[kDataIndex]));
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
template <typename T>
|
|
448
|
+
Local<Object> PropertyCallbackInfo<T>::This() const {
|
|
449
|
+
return Local<Object>(reinterpret_cast<Object*>(&args_[kThisIndex]));
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
template <typename T>
|
|
453
|
+
Local<Object> PropertyCallbackInfo<T>::Holder() const {
|
|
454
|
+
return Local<Object>(reinterpret_cast<Object*>(&args_[kHolderIndex]));
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
template <typename T>
|
|
458
|
+
ReturnValue<T> PropertyCallbackInfo<T>::GetReturnValue() const {
|
|
459
|
+
return ReturnValue<T>(&args_[kReturnValueIndex]);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
template <typename T>
|
|
463
|
+
bool PropertyCallbackInfo<T>::ShouldThrowOnError() const {
|
|
464
|
+
using I = internal::Internals;
|
|
465
|
+
if (args_[kShouldThrowOnErrorIndex] !=
|
|
466
|
+
I::IntToSmi(I::kInferShouldThrowMode)) {
|
|
467
|
+
return args_[kShouldThrowOnErrorIndex] != I::IntToSmi(I::kDontThrow);
|
|
468
|
+
}
|
|
469
|
+
return v8::internal::ShouldThrowOnError(
|
|
470
|
+
reinterpret_cast<v8::internal::Isolate*>(GetIsolate()));
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
} // namespace v8
|
|
474
|
+
|
|
475
|
+
#endif // INCLUDE_V8_FUNCTION_CALLBACK_H_
|
|
@@ -195,22 +195,38 @@ class V8_EXPORT V8 {
|
|
|
195
195
|
* This must be invoked after the platform was initialized but before V8 is
|
|
196
196
|
* initialized. The virtual memory cage is torn down during platform shutdown.
|
|
197
197
|
* Returns true on success, false otherwise.
|
|
198
|
+
*
|
|
199
|
+
* TODO(saelo) Once it is no longer optional to create the virtual memory
|
|
200
|
+
* cage when compiling with V8_VIRTUAL_MEMORY_CAGE, the cage initialization
|
|
201
|
+
* will likely happen as part of V8::Initialize, at which point this function
|
|
202
|
+
* should be removed.
|
|
198
203
|
*/
|
|
199
204
|
static bool InitializeVirtualMemoryCage();
|
|
200
205
|
|
|
201
206
|
/**
|
|
202
|
-
* Provides access to the
|
|
207
|
+
* Provides access to the virtual memory cage page allocator.
|
|
208
|
+
*
|
|
209
|
+
* This allocator allocates pages inside the virtual memory cage. It can for
|
|
210
|
+
* example be used to obtain virtual memory for ArrayBuffer backing stores,
|
|
211
|
+
* which must be located inside the cage.
|
|
212
|
+
*
|
|
213
|
+
* It should be assumed that an attacker can corrupt data inside the cage,
|
|
214
|
+
* and so in particular the contents of pages returned by this allocator,
|
|
215
|
+
* arbitrarily and concurrently. Due to this, it is recommended to to only
|
|
216
|
+
* place pure data buffers in pages obtained through this allocator.
|
|
203
217
|
*
|
|
204
|
-
* This
|
|
205
|
-
*
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
218
|
+
* This function must only be called after initializing the virtual memory
|
|
219
|
+
* cage and V8.
|
|
220
|
+
*/
|
|
221
|
+
static PageAllocator* GetVirtualMemoryCagePageAllocator();
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Returns the size of the virtual memory cage in bytes.
|
|
210
225
|
*
|
|
211
|
-
*
|
|
226
|
+
* If the cage has not been initialized, or if the initialization failed,
|
|
227
|
+
* this returns zero.
|
|
212
228
|
*/
|
|
213
|
-
static
|
|
229
|
+
static size_t GetVirtualMemoryCageSizeInBytes();
|
|
214
230
|
#endif
|
|
215
231
|
|
|
216
232
|
/**
|
|
@@ -495,15 +495,10 @@ constexpr bool VirtualMemoryCageIsEnabled() {
|
|
|
495
495
|
}
|
|
496
496
|
|
|
497
497
|
#ifdef V8_VIRTUAL_MEMORY_CAGE
|
|
498
|
-
// Size of the pointer compression cage located at the start of the virtual
|
|
499
|
-
// memory cage.
|
|
500
|
-
constexpr size_t kVirtualMemoryCagePointerCageSize =
|
|
501
|
-
Internals::kPtrComprCageReservationSize;
|
|
502
|
-
|
|
503
498
|
// Size of the virtual memory cage, excluding the guard regions surrounding it.
|
|
504
499
|
constexpr size_t kVirtualMemoryCageSize = size_t{1} << 40; // 1 TB
|
|
505
500
|
|
|
506
|
-
static_assert(kVirtualMemoryCageSize >
|
|
501
|
+
static_assert(kVirtualMemoryCageSize > Internals::kPtrComprCageReservationSize,
|
|
507
502
|
"The virtual memory cage must be larger than the pointer "
|
|
508
503
|
"compression cage contained within it.");
|
|
509
504
|
|
|
@@ -525,19 +520,21 @@ static_assert((kVirtualMemoryCageGuardRegionSize %
|
|
|
525
520
|
"The size of the virtual memory cage guard region must be a "
|
|
526
521
|
"multiple of its required alignment.");
|
|
527
522
|
|
|
528
|
-
// Minimum
|
|
529
|
-
// surrounding it.
|
|
530
|
-
|
|
531
|
-
|
|
523
|
+
// Minimum size of the virtual memory cage, excluding the guard regions
|
|
524
|
+
// surrounding it. If the cage reservation fails, its size is currently halved
|
|
525
|
+
// until either the reservation succeeds or the minimum size is reached. A
|
|
526
|
+
// minimum of 32GB allows the 4GB pointer compression region as well as the
|
|
527
|
+
// ArrayBuffer partition and two 10GB WASM memory cages to fit into the cage.
|
|
528
|
+
constexpr size_t kVirtualMemoryCageMinimumSize = size_t{32} << 30; // 32 GB
|
|
532
529
|
|
|
533
530
|
// For now, even if the virtual memory cage is enabled, we still allow backing
|
|
534
531
|
// stores to be allocated outside of it as fallback. This will simplify the
|
|
535
532
|
// initial rollout. However, if the heap sandbox is also enabled, we already use
|
|
536
533
|
// the "enforcing mode" of the virtual memory cage. This is useful for testing.
|
|
537
534
|
#ifdef V8_HEAP_SANDBOX
|
|
538
|
-
constexpr bool
|
|
535
|
+
constexpr bool kAllowBackingStoresOutsideCage = false;
|
|
539
536
|
#else
|
|
540
|
-
constexpr bool
|
|
537
|
+
constexpr bool kAllowBackingStoresOutsideCage = true;
|
|
541
538
|
#endif // V8_HEAP_SANDBOX
|
|
542
539
|
|
|
543
540
|
#endif // V8_VIRTUAL_MEMORY_CAGE
|
|
@@ -572,14 +569,6 @@ class BackingStoreBase {};
|
|
|
572
569
|
|
|
573
570
|
} // namespace internal
|
|
574
571
|
|
|
575
|
-
V8_EXPORT bool CopyAndConvertArrayToCppBufferInt32(Local<Array> src,
|
|
576
|
-
int32_t* dst,
|
|
577
|
-
uint32_t max_length);
|
|
578
|
-
|
|
579
|
-
V8_EXPORT bool CopyAndConvertArrayToCppBufferFloat64(Local<Array> src,
|
|
580
|
-
double* dst,
|
|
581
|
-
uint32_t max_length);
|
|
582
|
-
|
|
583
572
|
} // namespace v8
|
|
584
573
|
|
|
585
574
|
#endif // INCLUDE_V8_INTERNAL_H_
|
|
@@ -1482,6 +1482,9 @@ class V8_EXPORT Isolate {
|
|
|
1482
1482
|
|
|
1483
1483
|
void SetWasmExceptionsEnabledCallback(WasmExceptionsEnabledCallback callback);
|
|
1484
1484
|
|
|
1485
|
+
void SetWasmDynamicTieringEnabledCallback(
|
|
1486
|
+
WasmDynamicTieringEnabledCallback callback);
|
|
1487
|
+
|
|
1485
1488
|
void SetSharedArrayBufferConstructorEnabledCallback(
|
|
1486
1489
|
SharedArrayBufferConstructorEnabledCallback callback);
|
|
1487
1490
|
|
package/include/node/v8-locker.h
CHANGED
|
@@ -64,7 +64,7 @@ class Isolate;
|
|
|
64
64
|
* given thread. This can be useful if you have code that can be called either
|
|
65
65
|
* from code that holds the lock or from code that does not. The Unlocker is
|
|
66
66
|
* not recursive so you can not have several Unlockers on the stack at once, and
|
|
67
|
-
* you
|
|
67
|
+
* you cannot use an Unlocker in a thread that is not inside a Locker's scope.
|
|
68
68
|
*
|
|
69
69
|
* An unlocker will unlock several lockers if it has to and reinstate the
|
|
70
70
|
* correct depth of locking on its destruction, e.g.:
|
|
@@ -122,8 +122,13 @@ class V8_EXPORT Locker {
|
|
|
122
122
|
static bool IsLocked(Isolate* isolate);
|
|
123
123
|
|
|
124
124
|
/**
|
|
125
|
-
* Returns whether v8::Locker
|
|
125
|
+
* Returns whether any v8::Locker has ever been used in this process.
|
|
126
|
+
* TODO(cbruni, chromium:1240851): Fix locking checks on a per-thread basis.
|
|
127
|
+
* The current implementation is quite confusing and leads to unexpected
|
|
128
|
+
* results if anybody uses v8::Locker in the current process.
|
|
126
129
|
*/
|
|
130
|
+
static bool WasEverUsed();
|
|
131
|
+
V8_DEPRECATE_SOON("Use WasEverUsed instead")
|
|
127
132
|
static bool IsActive();
|
|
128
133
|
|
|
129
134
|
// Disallow copying and assigning.
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
#include <stdio.h>
|
|
9
9
|
|
|
10
|
+
#include <iosfwd>
|
|
11
|
+
|
|
10
12
|
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
|
11
13
|
#include "v8-maybe.h" // NOLINT(build/include_directory)
|
|
12
14
|
#include "v8config.h" // NOLINT(build/include_directory)
|
|
@@ -210,8 +212,9 @@ class V8_EXPORT Message {
|
|
|
210
212
|
bool IsSharedCrossOrigin() const;
|
|
211
213
|
bool IsOpaque() const;
|
|
212
214
|
|
|
213
|
-
|
|
215
|
+
V8_DEPRECATE_SOON("Use the version that takes a std::ostream&.")
|
|
214
216
|
static void PrintCurrentStackTrace(Isolate* isolate, FILE* out);
|
|
217
|
+
static void PrintCurrentStackTrace(Isolate* isolate, std::ostream& out);
|
|
215
218
|
|
|
216
219
|
static const int kNoLineNumberInfo = 0;
|
|
217
220
|
static const int kNoColumnInfo = 0;
|
|
@@ -27,6 +27,7 @@ class Signature;
|
|
|
27
27
|
F(ArrayProto_forEach, array_for_each_iterator) \
|
|
28
28
|
F(ArrayProto_keys, array_keys_iterator) \
|
|
29
29
|
F(ArrayProto_values, array_values_iterator) \
|
|
30
|
+
F(ArrayPrototype, initial_array_prototype) \
|
|
30
31
|
F(AsyncIteratorPrototype, initial_async_iterator_prototype) \
|
|
31
32
|
F(ErrorPrototype, initial_error_prototype) \
|
|
32
33
|
F(IteratorPrototype, initial_iterator_prototype) \
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
// NOTE these macros are used by some of the tool scripts and the build
|
|
10
10
|
// system so their names cannot be changed without changing the scripts.
|
|
11
11
|
#define V8_MAJOR_VERSION 9
|
|
12
|
-
#define V8_MINOR_VERSION
|
|
13
|
-
#define V8_BUILD_NUMBER
|
|
14
|
-
#define V8_PATCH_LEVEL
|
|
12
|
+
#define V8_MINOR_VERSION 6
|
|
13
|
+
#define V8_BUILD_NUMBER 180
|
|
14
|
+
#define V8_PATCH_LEVEL 15
|
|
15
15
|
|
|
16
16
|
// Use 1 for candidates and 0 otherwise.
|
|
17
17
|
// (Boolean macro values are not supported by all preprocessors.)
|