libv8 5.3.332.38.5-universal-darwin-15 → 5.7.492.65.0beta1-universal-darwin-15
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.
- checksums.yaml +4 -4
- data/ext/libv8/arch.rb +5 -5
- data/lib/libv8/version.rb +1 -1
- data/vendor/v8/include/libplatform/libplatform-export.h +29 -0
- data/vendor/v8/include/libplatform/libplatform.h +25 -3
- data/vendor/v8/include/libplatform/v8-tracing.h +270 -0
- data/vendor/v8/include/v8-debug.h +43 -51
- data/vendor/v8/include/v8-experimental.h +4 -0
- data/vendor/v8/include/v8-inspector-protocol.h +13 -0
- data/vendor/v8/include/v8-inspector.h +267 -0
- data/vendor/v8/include/v8-platform.h +57 -9
- data/vendor/v8/include/v8-profiler.h +113 -3
- data/vendor/v8/include/v8-version-string.h +33 -0
- data/vendor/v8/include/v8-version.h +3 -3
- data/vendor/v8/include/v8.h +1334 -370
- data/vendor/v8/include/v8config.h +0 -4
- data/vendor/v8/out/x64.release/libv8_base.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libbase.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libplatform.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libsampler.a +0 -0
- data/vendor/v8/out/x64.release/libv8_nosnapshot.a +0 -0
- data/vendor/v8/out/x64.release/libv8_snapshot.a +0 -0
- metadata +9 -4
@@ -0,0 +1,33 @@
|
|
1
|
+
// Copyright 2017 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 V8_VERSION_STRING_H_
|
6
|
+
#define V8_VERSION_STRING_H_
|
7
|
+
|
8
|
+
#include "v8-version.h" // NOLINT(build/include)
|
9
|
+
|
10
|
+
// This is here rather than v8-version.h to keep that file simple and
|
11
|
+
// machine-processable.
|
12
|
+
|
13
|
+
#if V8_IS_CANDIDATE_VERSION
|
14
|
+
#define V8_CANDIDATE_STRING " (candidate)"
|
15
|
+
#else
|
16
|
+
#define V8_CANDIDATE_STRING ""
|
17
|
+
#endif
|
18
|
+
|
19
|
+
#define V8_SX(x) #x
|
20
|
+
#define V8_S(x) V8_SX(x)
|
21
|
+
|
22
|
+
#if V8_PATCH_LEVEL > 0
|
23
|
+
#define V8_VERSION_STRING \
|
24
|
+
V8_S(V8_MAJOR_VERSION) \
|
25
|
+
"." V8_S(V8_MINOR_VERSION) "." V8_S(V8_BUILD_NUMBER) "." V8_S( \
|
26
|
+
V8_PATCH_LEVEL) V8_CANDIDATE_STRING
|
27
|
+
#else
|
28
|
+
#define V8_VERSION_STRING \
|
29
|
+
V8_S(V8_MAJOR_VERSION) \
|
30
|
+
"." V8_S(V8_MINOR_VERSION) "." V8_S(V8_BUILD_NUMBER) V8_CANDIDATE_STRING
|
31
|
+
#endif
|
32
|
+
|
33
|
+
#endif // V8_VERSION_STRING_H_
|
@@ -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 5
|
12
|
-
#define V8_MINOR_VERSION
|
13
|
-
#define V8_BUILD_NUMBER
|
14
|
-
#define V8_PATCH_LEVEL
|
12
|
+
#define V8_MINOR_VERSION 7
|
13
|
+
#define V8_BUILD_NUMBER 492
|
14
|
+
#define V8_PATCH_LEVEL 65
|
15
15
|
|
16
16
|
// Use 1 for candidates and 0 otherwise.
|
17
17
|
// (Boolean macro values are not supported by all preprocessors.)
|
data/vendor/v8/include/v8.h
CHANGED
@@ -18,6 +18,7 @@
|
|
18
18
|
#include <stddef.h>
|
19
19
|
#include <stdint.h>
|
20
20
|
#include <stdio.h>
|
21
|
+
#include <memory>
|
21
22
|
#include <utility>
|
22
23
|
#include <vector>
|
23
24
|
|
@@ -34,11 +35,6 @@
|
|
34
35
|
// the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8
|
35
36
|
// static library or building a program which uses the V8 static library neither
|
36
37
|
// BUILDING_V8_SHARED nor USING_V8_SHARED should be defined.
|
37
|
-
#if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
|
38
|
-
#error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\
|
39
|
-
build configuration to ensure that at most one of these is set
|
40
|
-
#endif
|
41
|
-
|
42
38
|
#ifdef BUILDING_V8_SHARED
|
43
39
|
# define V8_EXPORT __declspec(dllexport)
|
44
40
|
#elif USING_V8_SHARED
|
@@ -50,7 +46,7 @@
|
|
50
46
|
#else // V8_OS_WIN
|
51
47
|
|
52
48
|
// Setup for Linux shared library export.
|
53
|
-
#if V8_HAS_ATTRIBUTE_VISIBILITY
|
49
|
+
#if V8_HAS_ATTRIBUTE_VISIBILITY
|
54
50
|
# ifdef BUILDING_V8_SHARED
|
55
51
|
# define V8_EXPORT __attribute__ ((visibility("default")))
|
56
52
|
# else
|
@@ -69,6 +65,7 @@ namespace v8 {
|
|
69
65
|
|
70
66
|
class AccessorSignature;
|
71
67
|
class Array;
|
68
|
+
class ArrayBuffer;
|
72
69
|
class Boolean;
|
73
70
|
class BooleanObject;
|
74
71
|
class Context;
|
@@ -94,6 +91,7 @@ class ObjectTemplate;
|
|
94
91
|
class Platform;
|
95
92
|
class Primitive;
|
96
93
|
class Promise;
|
94
|
+
class PropertyDescriptor;
|
97
95
|
class Proxy;
|
98
96
|
class RawOperationDescriptor;
|
99
97
|
class Script;
|
@@ -292,8 +290,8 @@ class Local {
|
|
292
290
|
return Local<T>(T::Cast(*that));
|
293
291
|
}
|
294
292
|
|
295
|
-
|
296
|
-
|
293
|
+
template <class S>
|
294
|
+
V8_INLINE Local<S> As() const {
|
297
295
|
return Local<S>::Cast(*this);
|
298
296
|
}
|
299
297
|
|
@@ -340,7 +338,7 @@ class Local {
|
|
340
338
|
|
341
339
|
|
342
340
|
#if !defined(V8_IMMINENT_DEPRECATION_WARNINGS)
|
343
|
-
//
|
341
|
+
// Handle is an alias for Local for historical reasons.
|
344
342
|
template <class T>
|
345
343
|
using Handle = Local<T>;
|
346
344
|
#endif
|
@@ -575,18 +573,6 @@ template <class T> class PersistentBase {
|
|
575
573
|
*/
|
576
574
|
V8_INLINE void MarkIndependent();
|
577
575
|
|
578
|
-
/**
|
579
|
-
* Marks the reference to this object partially dependent. Partially dependent
|
580
|
-
* handles only depend on other partially dependent handles and these
|
581
|
-
* dependencies are provided through object groups. It provides a way to build
|
582
|
-
* smaller object groups for young objects that represent only a subset of all
|
583
|
-
* external dependencies. This mark is automatically cleared after each
|
584
|
-
* garbage collection.
|
585
|
-
*/
|
586
|
-
V8_INLINE V8_DEPRECATED(
|
587
|
-
"deprecated optimization, do not use partially dependent groups",
|
588
|
-
void MarkPartiallyDependent());
|
589
|
-
|
590
576
|
/**
|
591
577
|
* Marks the reference to this object as active. The scavenge garbage
|
592
578
|
* collection should not reclaim the objects marked as active.
|
@@ -614,6 +600,9 @@ template <class T> class PersistentBase {
|
|
614
600
|
*/
|
615
601
|
V8_INLINE uint16_t WrapperClassId() const;
|
616
602
|
|
603
|
+
PersistentBase(const PersistentBase& other) = delete; // NOLINT
|
604
|
+
void operator=(const PersistentBase&) = delete;
|
605
|
+
|
617
606
|
private:
|
618
607
|
friend class Isolate;
|
619
608
|
friend class Utils;
|
@@ -629,8 +618,6 @@ template <class T> class PersistentBase {
|
|
629
618
|
friend class Object;
|
630
619
|
|
631
620
|
explicit V8_INLINE PersistentBase(T* val) : val_(val) {}
|
632
|
-
PersistentBase(const PersistentBase& other) = delete; // NOLINT
|
633
|
-
void operator=(const PersistentBase&) = delete;
|
634
621
|
V8_INLINE static T* New(Isolate* isolate, T* that);
|
635
622
|
|
636
623
|
T* val_;
|
@@ -679,7 +666,7 @@ struct CopyablePersistentTraits {
|
|
679
666
|
/**
|
680
667
|
* A PersistentBase which allows copy and assignment.
|
681
668
|
*
|
682
|
-
* Copy, assignment and destructor
|
669
|
+
* Copy, assignment and destructor behavior is controlled by the traits
|
683
670
|
* class M.
|
684
671
|
*
|
685
672
|
* Note: Persistent class hierarchy is subject to future changes.
|
@@ -743,17 +730,18 @@ template <class T, class M> class Persistent : public PersistentBase<T> {
|
|
743
730
|
|
744
731
|
// TODO(dcarney): this is pretty useless, fix or remove
|
745
732
|
template <class S>
|
746
|
-
V8_INLINE static Persistent<T>& Cast(Persistent<S>& that) {
|
733
|
+
V8_INLINE static Persistent<T>& Cast(const Persistent<S>& that) { // NOLINT
|
747
734
|
#ifdef V8_ENABLE_CHECKS
|
748
735
|
// If we're going to perform the type check then we have to check
|
749
736
|
// that the handle isn't empty before doing the checked cast.
|
750
737
|
if (!that.IsEmpty()) T::Cast(*that);
|
751
738
|
#endif
|
752
|
-
return reinterpret_cast<Persistent<T>&>(that);
|
739
|
+
return reinterpret_cast<Persistent<T>&>(const_cast<Persistent<S>&>(that));
|
753
740
|
}
|
754
741
|
|
755
742
|
// TODO(dcarney): this is pretty useless, fix or remove
|
756
|
-
template <class S>
|
743
|
+
template <class S>
|
744
|
+
V8_INLINE Persistent<S>& As() const { // NOLINT
|
757
745
|
return Persistent<S>::Cast(*this);
|
758
746
|
}
|
759
747
|
|
@@ -833,11 +821,12 @@ class Global : public PersistentBase<T> {
|
|
833
821
|
*/
|
834
822
|
typedef void MoveOnlyTypeForCPP03;
|
835
823
|
|
824
|
+
Global(const Global&) = delete;
|
825
|
+
void operator=(const Global&) = delete;
|
826
|
+
|
836
827
|
private:
|
837
828
|
template <class F>
|
838
829
|
friend class ReturnValue;
|
839
|
-
Global(const Global&) = delete;
|
840
|
-
void operator=(const Global&) = delete;
|
841
830
|
V8_INLINE T* operator*() const { return this->val_; }
|
842
831
|
};
|
843
832
|
|
@@ -876,6 +865,11 @@ class V8_EXPORT HandleScope {
|
|
876
865
|
return reinterpret_cast<Isolate*>(isolate_);
|
877
866
|
}
|
878
867
|
|
868
|
+
HandleScope(const HandleScope&) = delete;
|
869
|
+
void operator=(const HandleScope&) = delete;
|
870
|
+
void* operator new(size_t size);
|
871
|
+
void operator delete(void*, size_t);
|
872
|
+
|
879
873
|
protected:
|
880
874
|
V8_INLINE HandleScope() {}
|
881
875
|
|
@@ -889,13 +883,6 @@ class V8_EXPORT HandleScope {
|
|
889
883
|
static internal::Object** CreateHandle(internal::HeapObject* heap_object,
|
890
884
|
internal::Object* value);
|
891
885
|
|
892
|
-
// Make it hard to create heap-allocated or illegal handle scopes by
|
893
|
-
// disallowing certain operations.
|
894
|
-
HandleScope(const HandleScope&);
|
895
|
-
void operator=(const HandleScope&);
|
896
|
-
void* operator new(size_t size);
|
897
|
-
void operator delete(void*, size_t);
|
898
|
-
|
899
886
|
internal::Isolate* isolate_;
|
900
887
|
internal::Object** prev_next_;
|
901
888
|
internal::Object** prev_limit_;
|
@@ -930,16 +917,13 @@ class V8_EXPORT EscapableHandleScope : public HandleScope {
|
|
930
917
|
return Local<T>(reinterpret_cast<T*>(slot));
|
931
918
|
}
|
932
919
|
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
// Make it hard to create heap-allocated or illegal handle scopes by
|
937
|
-
// disallowing certain operations.
|
938
|
-
EscapableHandleScope(const EscapableHandleScope&);
|
939
|
-
void operator=(const EscapableHandleScope&);
|
920
|
+
EscapableHandleScope(const EscapableHandleScope&) = delete;
|
921
|
+
void operator=(const EscapableHandleScope&) = delete;
|
940
922
|
void* operator new(size_t size);
|
941
923
|
void operator delete(void*, size_t);
|
942
924
|
|
925
|
+
private:
|
926
|
+
internal::Object** Escape(internal::Object** escape_value);
|
943
927
|
internal::Object** escape_slot_;
|
944
928
|
};
|
945
929
|
|
@@ -948,15 +932,13 @@ class V8_EXPORT SealHandleScope {
|
|
948
932
|
SealHandleScope(Isolate* isolate);
|
949
933
|
~SealHandleScope();
|
950
934
|
|
951
|
-
|
952
|
-
|
953
|
-
// disallowing certain operations.
|
954
|
-
SealHandleScope(const SealHandleScope&);
|
955
|
-
void operator=(const SealHandleScope&);
|
935
|
+
SealHandleScope(const SealHandleScope&) = delete;
|
936
|
+
void operator=(const SealHandleScope&) = delete;
|
956
937
|
void* operator new(size_t size);
|
957
938
|
void operator delete(void*, size_t);
|
958
939
|
|
959
|
-
|
940
|
+
private:
|
941
|
+
internal::Isolate* const isolate_;
|
960
942
|
internal::Object** prev_limit_;
|
961
943
|
int prev_sealed_level_;
|
962
944
|
};
|
@@ -979,30 +961,21 @@ class V8_EXPORT Data {
|
|
979
961
|
*/
|
980
962
|
class ScriptOriginOptions {
|
981
963
|
public:
|
982
|
-
V8_INLINE ScriptOriginOptions(bool
|
983
|
-
bool
|
984
|
-
|
985
|
-
|
986
|
-
(is_shared_cross_origin ? kIsSharedCrossOrigin : 0) |
|
987
|
-
(is_opaque ? kIsOpaque : 0)) {}
|
964
|
+
V8_INLINE ScriptOriginOptions(bool is_shared_cross_origin = false,
|
965
|
+
bool is_opaque = false, bool is_wasm = false)
|
966
|
+
: flags_((is_shared_cross_origin ? kIsSharedCrossOrigin : 0) |
|
967
|
+
(is_wasm ? kIsWasm : 0) | (is_opaque ? kIsOpaque : 0)) {}
|
988
968
|
V8_INLINE ScriptOriginOptions(int flags)
|
989
|
-
: flags_(flags &
|
990
|
-
(kIsEmbedderDebugScript | kIsSharedCrossOrigin | kIsOpaque)) {}
|
991
|
-
bool IsEmbedderDebugScript() const {
|
992
|
-
return (flags_ & kIsEmbedderDebugScript) != 0;
|
993
|
-
}
|
969
|
+
: flags_(flags & (kIsSharedCrossOrigin | kIsOpaque | kIsWasm)) {}
|
994
970
|
bool IsSharedCrossOrigin() const {
|
995
971
|
return (flags_ & kIsSharedCrossOrigin) != 0;
|
996
972
|
}
|
997
973
|
bool IsOpaque() const { return (flags_ & kIsOpaque) != 0; }
|
974
|
+
bool IsWasm() const { return (flags_ & kIsWasm) != 0; }
|
998
975
|
int Flags() const { return flags_; }
|
999
976
|
|
1000
977
|
private:
|
1001
|
-
enum {
|
1002
|
-
kIsEmbedderDebugScript = 1,
|
1003
|
-
kIsSharedCrossOrigin = 1 << 1,
|
1004
|
-
kIsOpaque = 1 << 2
|
1005
|
-
};
|
978
|
+
enum { kIsSharedCrossOrigin = 1, kIsOpaque = 1 << 1, kIsWasm = 1 << 2 };
|
1006
979
|
const int flags_;
|
1007
980
|
};
|
1008
981
|
|
@@ -1017,9 +990,10 @@ class ScriptOrigin {
|
|
1017
990
|
Local<Integer> resource_column_offset = Local<Integer>(),
|
1018
991
|
Local<Boolean> resource_is_shared_cross_origin = Local<Boolean>(),
|
1019
992
|
Local<Integer> script_id = Local<Integer>(),
|
1020
|
-
Local<Boolean> resource_is_embedder_debug_script = Local<Boolean>(),
|
1021
993
|
Local<Value> source_map_url = Local<Value>(),
|
1022
|
-
Local<Boolean> resource_is_opaque = Local<Boolean>()
|
994
|
+
Local<Boolean> resource_is_opaque = Local<Boolean>(),
|
995
|
+
Local<Boolean> is_wasm = Local<Boolean>());
|
996
|
+
|
1023
997
|
V8_INLINE Local<Value> ResourceName() const;
|
1024
998
|
V8_INLINE Local<Integer> ResourceLineOffset() const;
|
1025
999
|
V8_INLINE Local<Integer> ResourceColumnOffset() const;
|
@@ -1071,6 +1045,47 @@ class V8_EXPORT UnboundScript {
|
|
1071
1045
|
static const int kNoScriptId = 0;
|
1072
1046
|
};
|
1073
1047
|
|
1048
|
+
/**
|
1049
|
+
* This is an unfinished experimental feature, and is only exposed
|
1050
|
+
* here for internal testing purposes. DO NOT USE.
|
1051
|
+
*
|
1052
|
+
* A compiled JavaScript module.
|
1053
|
+
*/
|
1054
|
+
class V8_EXPORT Module {
|
1055
|
+
public:
|
1056
|
+
/**
|
1057
|
+
* Returns the number of modules requested by this module.
|
1058
|
+
*/
|
1059
|
+
int GetModuleRequestsLength() const;
|
1060
|
+
|
1061
|
+
/**
|
1062
|
+
* Returns the ith module specifier in this module.
|
1063
|
+
* i must be < GetModuleRequestsLength() and >= 0.
|
1064
|
+
*/
|
1065
|
+
Local<String> GetModuleRequest(int i) const;
|
1066
|
+
|
1067
|
+
/**
|
1068
|
+
* Returns the identity hash for this object.
|
1069
|
+
*/
|
1070
|
+
int GetIdentityHash() const;
|
1071
|
+
|
1072
|
+
typedef MaybeLocal<Module> (*ResolveCallback)(Local<Context> context,
|
1073
|
+
Local<String> specifier,
|
1074
|
+
Local<Module> referrer);
|
1075
|
+
|
1076
|
+
/**
|
1077
|
+
* ModuleDeclarationInstantiation
|
1078
|
+
*
|
1079
|
+
* Returns false if an exception occurred during instantiation.
|
1080
|
+
*/
|
1081
|
+
V8_WARN_UNUSED_RESULT bool Instantiate(Local<Context> context,
|
1082
|
+
ResolveCallback callback);
|
1083
|
+
|
1084
|
+
/**
|
1085
|
+
* ModuleEvaluation
|
1086
|
+
*/
|
1087
|
+
V8_WARN_UNUSED_RESULT MaybeLocal<Value> Evaluate(Local<Context> context);
|
1088
|
+
};
|
1074
1089
|
|
1075
1090
|
/**
|
1076
1091
|
* A compiled JavaScript script, tied to a Context which was active when the
|
@@ -1146,10 +1161,9 @@ class V8_EXPORT ScriptCompiler {
|
|
1146
1161
|
bool rejected;
|
1147
1162
|
BufferPolicy buffer_policy;
|
1148
1163
|
|
1149
|
-
|
1150
|
-
|
1151
|
-
CachedData(const CachedData&);
|
1152
|
-
CachedData& operator=(const CachedData&);
|
1164
|
+
// Prevent copying.
|
1165
|
+
CachedData(const CachedData&) = delete;
|
1166
|
+
CachedData& operator=(const CachedData&) = delete;
|
1153
1167
|
};
|
1154
1168
|
|
1155
1169
|
/**
|
@@ -1169,11 +1183,12 @@ class V8_EXPORT ScriptCompiler {
|
|
1169
1183
|
// alive.
|
1170
1184
|
V8_INLINE const CachedData* GetCachedData() const;
|
1171
1185
|
|
1186
|
+
// Prevent copying.
|
1187
|
+
Source(const Source&) = delete;
|
1188
|
+
Source& operator=(const Source&) = delete;
|
1189
|
+
|
1172
1190
|
private:
|
1173
1191
|
friend class ScriptCompiler;
|
1174
|
-
// Prevent copying. Not implemented.
|
1175
|
-
Source(const Source&);
|
1176
|
-
Source& operator=(const Source&);
|
1177
1192
|
|
1178
1193
|
Local<String> source_string;
|
1179
1194
|
|
@@ -1256,11 +1271,11 @@ class V8_EXPORT ScriptCompiler {
|
|
1256
1271
|
|
1257
1272
|
internal::StreamedSource* impl() const { return impl_; }
|
1258
1273
|
|
1259
|
-
|
1260
|
-
|
1261
|
-
StreamedSource(const StreamedSource&);
|
1262
|
-
StreamedSource& operator=(const StreamedSource&);
|
1274
|
+
// Prevent copying.
|
1275
|
+
StreamedSource(const StreamedSource&) = delete;
|
1276
|
+
StreamedSource& operator=(const StreamedSource&) = delete;
|
1263
1277
|
|
1278
|
+
private:
|
1264
1279
|
internal::StreamedSource* impl_;
|
1265
1280
|
};
|
1266
1281
|
|
@@ -1374,18 +1389,17 @@ class V8_EXPORT ScriptCompiler {
|
|
1374
1389
|
static uint32_t CachedDataVersionTag();
|
1375
1390
|
|
1376
1391
|
/**
|
1377
|
-
* Compile an ES6 module.
|
1378
|
-
*
|
1379
1392
|
* This is an unfinished experimental feature, and is only exposed
|
1380
|
-
* here for internal testing purposes.
|
1381
|
-
*
|
1393
|
+
* here for internal testing purposes. DO NOT USE.
|
1394
|
+
*
|
1395
|
+
* Compile an ES module, returning a Module that encapsulates
|
1396
|
+
* the compiled code.
|
1382
1397
|
*
|
1383
|
-
*
|
1384
|
-
*
|
1398
|
+
* Corresponds to the ParseModule abstract operation in the
|
1399
|
+
* ECMAScript specification.
|
1385
1400
|
*/
|
1386
|
-
static V8_WARN_UNUSED_RESULT MaybeLocal<
|
1387
|
-
|
1388
|
-
CompileOptions options = kNoCompileOptions);
|
1401
|
+
static V8_WARN_UNUSED_RESULT MaybeLocal<Module> CompileModule(
|
1402
|
+
Isolate* isolate, Source* source);
|
1389
1403
|
|
1390
1404
|
/**
|
1391
1405
|
* Compile a function for a given context. This is equivalent to running
|
@@ -1463,6 +1477,11 @@ class V8_EXPORT Message {
|
|
1463
1477
|
*/
|
1464
1478
|
int GetEndPosition() const;
|
1465
1479
|
|
1480
|
+
/**
|
1481
|
+
* Returns the error level of the message.
|
1482
|
+
*/
|
1483
|
+
int ErrorLevel() const;
|
1484
|
+
|
1466
1485
|
/**
|
1467
1486
|
* Returns the index within the line of the first character where
|
1468
1487
|
* the error occurred.
|
@@ -1662,6 +1681,210 @@ class V8_EXPORT JSON {
|
|
1662
1681
|
Local<String> gap = Local<String>());
|
1663
1682
|
};
|
1664
1683
|
|
1684
|
+
/**
|
1685
|
+
* Value serialization compatible with the HTML structured clone algorithm.
|
1686
|
+
* The format is backward-compatible (i.e. safe to store to disk).
|
1687
|
+
*
|
1688
|
+
* WARNING: This API is under development, and changes (including incompatible
|
1689
|
+
* changes to the API or wire format) may occur without notice until this
|
1690
|
+
* warning is removed.
|
1691
|
+
*/
|
1692
|
+
class V8_EXPORT ValueSerializer {
|
1693
|
+
public:
|
1694
|
+
class V8_EXPORT Delegate {
|
1695
|
+
public:
|
1696
|
+
virtual ~Delegate() {}
|
1697
|
+
|
1698
|
+
/*
|
1699
|
+
* Handles the case where a DataCloneError would be thrown in the structured
|
1700
|
+
* clone spec. Other V8 embedders may throw some other appropriate exception
|
1701
|
+
* type.
|
1702
|
+
*/
|
1703
|
+
virtual void ThrowDataCloneError(Local<String> message) = 0;
|
1704
|
+
|
1705
|
+
/*
|
1706
|
+
* The embedder overrides this method to write some kind of host object, if
|
1707
|
+
* possible. If not, a suitable exception should be thrown and
|
1708
|
+
* Nothing<bool>() returned.
|
1709
|
+
*/
|
1710
|
+
virtual Maybe<bool> WriteHostObject(Isolate* isolate, Local<Object> object);
|
1711
|
+
|
1712
|
+
/*
|
1713
|
+
* Called when the ValueSerializer is going to serialize a
|
1714
|
+
* SharedArrayBuffer object. The embedder must return an ID for the
|
1715
|
+
* object, using the same ID if this SharedArrayBuffer has already been
|
1716
|
+
* serialized in this buffer. When deserializing, this ID will be passed to
|
1717
|
+
* ValueDeserializer::TransferSharedArrayBuffer as |transfer_id|.
|
1718
|
+
*
|
1719
|
+
* If the object cannot be serialized, an
|
1720
|
+
* exception should be thrown and Nothing<uint32_t>() returned.
|
1721
|
+
*/
|
1722
|
+
virtual Maybe<uint32_t> GetSharedArrayBufferId(
|
1723
|
+
Isolate* isolate, Local<SharedArrayBuffer> shared_array_buffer);
|
1724
|
+
|
1725
|
+
/*
|
1726
|
+
* Allocates memory for the buffer of at least the size provided. The actual
|
1727
|
+
* size (which may be greater or equal) is written to |actual_size|. If no
|
1728
|
+
* buffer has been allocated yet, nullptr will be provided.
|
1729
|
+
*/
|
1730
|
+
virtual void* ReallocateBufferMemory(void* old_buffer, size_t size,
|
1731
|
+
size_t* actual_size);
|
1732
|
+
|
1733
|
+
/*
|
1734
|
+
* Frees a buffer allocated with |ReallocateBufferMemory|.
|
1735
|
+
*/
|
1736
|
+
virtual void FreeBufferMemory(void* buffer);
|
1737
|
+
};
|
1738
|
+
|
1739
|
+
explicit ValueSerializer(Isolate* isolate);
|
1740
|
+
ValueSerializer(Isolate* isolate, Delegate* delegate);
|
1741
|
+
~ValueSerializer();
|
1742
|
+
|
1743
|
+
/*
|
1744
|
+
* Writes out a header, which includes the format version.
|
1745
|
+
*/
|
1746
|
+
void WriteHeader();
|
1747
|
+
|
1748
|
+
/*
|
1749
|
+
* Serializes a JavaScript value into the buffer.
|
1750
|
+
*/
|
1751
|
+
V8_WARN_UNUSED_RESULT Maybe<bool> WriteValue(Local<Context> context,
|
1752
|
+
Local<Value> value);
|
1753
|
+
|
1754
|
+
/*
|
1755
|
+
* Returns the stored data. This serializer should not be used once the buffer
|
1756
|
+
* is released. The contents are undefined if a previous write has failed.
|
1757
|
+
*/
|
1758
|
+
V8_DEPRECATE_SOON("Use Release()", std::vector<uint8_t> ReleaseBuffer());
|
1759
|
+
|
1760
|
+
/*
|
1761
|
+
* Returns the stored data (allocated using the delegate's
|
1762
|
+
* AllocateBufferMemory) and its size. This serializer should not be used once
|
1763
|
+
* the buffer is released. The contents are undefined if a previous write has
|
1764
|
+
* failed.
|
1765
|
+
*/
|
1766
|
+
V8_WARN_UNUSED_RESULT std::pair<uint8_t*, size_t> Release();
|
1767
|
+
|
1768
|
+
/*
|
1769
|
+
* Marks an ArrayBuffer as havings its contents transferred out of band.
|
1770
|
+
* Pass the corresponding JSArrayBuffer in the deserializing context to
|
1771
|
+
* ValueDeserializer::TransferArrayBuffer.
|
1772
|
+
*/
|
1773
|
+
void TransferArrayBuffer(uint32_t transfer_id,
|
1774
|
+
Local<ArrayBuffer> array_buffer);
|
1775
|
+
|
1776
|
+
/*
|
1777
|
+
* Similar to TransferArrayBuffer, but for SharedArrayBuffer.
|
1778
|
+
*/
|
1779
|
+
V8_DEPRECATE_SOON("Use Delegate::GetSharedArrayBufferId",
|
1780
|
+
void TransferSharedArrayBuffer(
|
1781
|
+
uint32_t transfer_id,
|
1782
|
+
Local<SharedArrayBuffer> shared_array_buffer));
|
1783
|
+
|
1784
|
+
/*
|
1785
|
+
* Write raw data in various common formats to the buffer.
|
1786
|
+
* Note that integer types are written in base-128 varint format, not with a
|
1787
|
+
* binary copy. For use during an override of Delegate::WriteHostObject.
|
1788
|
+
*/
|
1789
|
+
void WriteUint32(uint32_t value);
|
1790
|
+
void WriteUint64(uint64_t value);
|
1791
|
+
void WriteDouble(double value);
|
1792
|
+
void WriteRawBytes(const void* source, size_t length);
|
1793
|
+
|
1794
|
+
private:
|
1795
|
+
ValueSerializer(const ValueSerializer&) = delete;
|
1796
|
+
void operator=(const ValueSerializer&) = delete;
|
1797
|
+
|
1798
|
+
struct PrivateData;
|
1799
|
+
PrivateData* private_;
|
1800
|
+
};
|
1801
|
+
|
1802
|
+
/**
|
1803
|
+
* Deserializes values from data written with ValueSerializer, or a compatible
|
1804
|
+
* implementation.
|
1805
|
+
*
|
1806
|
+
* WARNING: This API is under development, and changes (including incompatible
|
1807
|
+
* changes to the API or wire format) may occur without notice until this
|
1808
|
+
* warning is removed.
|
1809
|
+
*/
|
1810
|
+
class V8_EXPORT ValueDeserializer {
|
1811
|
+
public:
|
1812
|
+
class V8_EXPORT Delegate {
|
1813
|
+
public:
|
1814
|
+
virtual ~Delegate() {}
|
1815
|
+
|
1816
|
+
/*
|
1817
|
+
* The embedder overrides this method to read some kind of host object, if
|
1818
|
+
* possible. If not, a suitable exception should be thrown and
|
1819
|
+
* MaybeLocal<Object>() returned.
|
1820
|
+
*/
|
1821
|
+
virtual MaybeLocal<Object> ReadHostObject(Isolate* isolate);
|
1822
|
+
};
|
1823
|
+
|
1824
|
+
ValueDeserializer(Isolate* isolate, const uint8_t* data, size_t size);
|
1825
|
+
ValueDeserializer(Isolate* isolate, const uint8_t* data, size_t size,
|
1826
|
+
Delegate* delegate);
|
1827
|
+
~ValueDeserializer();
|
1828
|
+
|
1829
|
+
/*
|
1830
|
+
* Reads and validates a header (including the format version).
|
1831
|
+
* May, for example, reject an invalid or unsupported wire format.
|
1832
|
+
*/
|
1833
|
+
V8_WARN_UNUSED_RESULT Maybe<bool> ReadHeader(Local<Context> context);
|
1834
|
+
|
1835
|
+
/*
|
1836
|
+
* Deserializes a JavaScript value from the buffer.
|
1837
|
+
*/
|
1838
|
+
V8_WARN_UNUSED_RESULT MaybeLocal<Value> ReadValue(Local<Context> context);
|
1839
|
+
|
1840
|
+
/*
|
1841
|
+
* Accepts the array buffer corresponding to the one passed previously to
|
1842
|
+
* ValueSerializer::TransferArrayBuffer.
|
1843
|
+
*/
|
1844
|
+
void TransferArrayBuffer(uint32_t transfer_id,
|
1845
|
+
Local<ArrayBuffer> array_buffer);
|
1846
|
+
|
1847
|
+
/*
|
1848
|
+
* Similar to TransferArrayBuffer, but for SharedArrayBuffer.
|
1849
|
+
* The id is not necessarily in the same namespace as unshared ArrayBuffer
|
1850
|
+
* objects.
|
1851
|
+
*/
|
1852
|
+
void TransferSharedArrayBuffer(uint32_t id,
|
1853
|
+
Local<SharedArrayBuffer> shared_array_buffer);
|
1854
|
+
|
1855
|
+
/*
|
1856
|
+
* Must be called before ReadHeader to enable support for reading the legacy
|
1857
|
+
* wire format (i.e., which predates this being shipped).
|
1858
|
+
*
|
1859
|
+
* Don't use this unless you need to read data written by previous versions of
|
1860
|
+
* blink::ScriptValueSerializer.
|
1861
|
+
*/
|
1862
|
+
void SetSupportsLegacyWireFormat(bool supports_legacy_wire_format);
|
1863
|
+
|
1864
|
+
/*
|
1865
|
+
* Reads the underlying wire format version. Likely mostly to be useful to
|
1866
|
+
* legacy code reading old wire format versions. Must be called after
|
1867
|
+
* ReadHeader.
|
1868
|
+
*/
|
1869
|
+
uint32_t GetWireFormatVersion() const;
|
1870
|
+
|
1871
|
+
/*
|
1872
|
+
* Reads raw data in various common formats to the buffer.
|
1873
|
+
* Note that integer types are read in base-128 varint format, not with a
|
1874
|
+
* binary copy. For use during an override of Delegate::ReadHostObject.
|
1875
|
+
*/
|
1876
|
+
V8_WARN_UNUSED_RESULT bool ReadUint32(uint32_t* value);
|
1877
|
+
V8_WARN_UNUSED_RESULT bool ReadUint64(uint64_t* value);
|
1878
|
+
V8_WARN_UNUSED_RESULT bool ReadDouble(double* value);
|
1879
|
+
V8_WARN_UNUSED_RESULT bool ReadRawBytes(size_t length, const void** data);
|
1880
|
+
|
1881
|
+
private:
|
1882
|
+
ValueDeserializer(const ValueDeserializer&) = delete;
|
1883
|
+
void operator=(const ValueDeserializer&) = delete;
|
1884
|
+
|
1885
|
+
struct PrivateData;
|
1886
|
+
PrivateData* private_;
|
1887
|
+
};
|
1665
1888
|
|
1666
1889
|
/**
|
1667
1890
|
* A map whose keys are referenced weakly. It is similar to JavaScript WeakMap
|
@@ -1698,9 +1921,16 @@ class V8_EXPORT Value : public Data {
|
|
1698
1921
|
*/
|
1699
1922
|
V8_INLINE bool IsNull() const;
|
1700
1923
|
|
1701
|
-
|
1702
|
-
* Returns true if this value is
|
1924
|
+
/**
|
1925
|
+
* Returns true if this value is either the null or the undefined value.
|
1926
|
+
* See ECMA-262
|
1927
|
+
* 4.3.11. and 4.3.12
|
1703
1928
|
*/
|
1929
|
+
V8_INLINE bool IsNullOrUndefined() const;
|
1930
|
+
|
1931
|
+
/**
|
1932
|
+
* Returns true if this value is true.
|
1933
|
+
*/
|
1704
1934
|
bool IsTrue() const;
|
1705
1935
|
|
1706
1936
|
/**
|
@@ -1710,7 +1940,6 @@ class V8_EXPORT Value : public Data {
|
|
1710
1940
|
|
1711
1941
|
/**
|
1712
1942
|
* Returns true if this value is a symbol or a string.
|
1713
|
-
* This is an experimental feature.
|
1714
1943
|
*/
|
1715
1944
|
bool IsName() const;
|
1716
1945
|
|
@@ -1722,7 +1951,6 @@ class V8_EXPORT Value : public Data {
|
|
1722
1951
|
|
1723
1952
|
/**
|
1724
1953
|
* Returns true if this value is a symbol.
|
1725
|
-
* This is an experimental feature.
|
1726
1954
|
*/
|
1727
1955
|
bool IsSymbol() const;
|
1728
1956
|
|
@@ -1794,7 +2022,6 @@ class V8_EXPORT Value : public Data {
|
|
1794
2022
|
|
1795
2023
|
/**
|
1796
2024
|
* Returns true if this value is a Symbol object.
|
1797
|
-
* This is an experimental feature.
|
1798
2025
|
*/
|
1799
2026
|
bool IsSymbolObject() const;
|
1800
2027
|
|
@@ -1808,21 +2035,23 @@ class V8_EXPORT Value : public Data {
|
|
1808
2035
|
*/
|
1809
2036
|
bool IsRegExp() const;
|
1810
2037
|
|
2038
|
+
/**
|
2039
|
+
* Returns true if this value is an async function.
|
2040
|
+
*/
|
2041
|
+
bool IsAsyncFunction() const;
|
2042
|
+
|
1811
2043
|
/**
|
1812
2044
|
* Returns true if this value is a Generator function.
|
1813
|
-
* This is an experimental feature.
|
1814
2045
|
*/
|
1815
2046
|
bool IsGeneratorFunction() const;
|
1816
2047
|
|
1817
2048
|
/**
|
1818
2049
|
* Returns true if this value is a Generator object (iterator).
|
1819
|
-
* This is an experimental feature.
|
1820
2050
|
*/
|
1821
2051
|
bool IsGeneratorObject() const;
|
1822
2052
|
|
1823
2053
|
/**
|
1824
2054
|
* Returns true if this value is a Promise.
|
1825
|
-
* This is an experimental feature.
|
1826
2055
|
*/
|
1827
2056
|
bool IsPromise() const;
|
1828
2057
|
|
@@ -1858,73 +2087,61 @@ class V8_EXPORT Value : public Data {
|
|
1858
2087
|
|
1859
2088
|
/**
|
1860
2089
|
* Returns true if this value is an ArrayBuffer.
|
1861
|
-
* This is an experimental feature.
|
1862
2090
|
*/
|
1863
2091
|
bool IsArrayBuffer() const;
|
1864
2092
|
|
1865
2093
|
/**
|
1866
2094
|
* Returns true if this value is an ArrayBufferView.
|
1867
|
-
* This is an experimental feature.
|
1868
2095
|
*/
|
1869
2096
|
bool IsArrayBufferView() const;
|
1870
2097
|
|
1871
2098
|
/**
|
1872
2099
|
* Returns true if this value is one of TypedArrays.
|
1873
|
-
* This is an experimental feature.
|
1874
2100
|
*/
|
1875
2101
|
bool IsTypedArray() const;
|
1876
2102
|
|
1877
2103
|
/**
|
1878
2104
|
* Returns true if this value is an Uint8Array.
|
1879
|
-
* This is an experimental feature.
|
1880
2105
|
*/
|
1881
2106
|
bool IsUint8Array() const;
|
1882
2107
|
|
1883
2108
|
/**
|
1884
2109
|
* Returns true if this value is an Uint8ClampedArray.
|
1885
|
-
* This is an experimental feature.
|
1886
2110
|
*/
|
1887
2111
|
bool IsUint8ClampedArray() const;
|
1888
2112
|
|
1889
2113
|
/**
|
1890
2114
|
* Returns true if this value is an Int8Array.
|
1891
|
-
* This is an experimental feature.
|
1892
2115
|
*/
|
1893
2116
|
bool IsInt8Array() const;
|
1894
2117
|
|
1895
2118
|
/**
|
1896
2119
|
* Returns true if this value is an Uint16Array.
|
1897
|
-
* This is an experimental feature.
|
1898
2120
|
*/
|
1899
2121
|
bool IsUint16Array() const;
|
1900
2122
|
|
1901
2123
|
/**
|
1902
2124
|
* Returns true if this value is an Int16Array.
|
1903
|
-
* This is an experimental feature.
|
1904
2125
|
*/
|
1905
2126
|
bool IsInt16Array() const;
|
1906
2127
|
|
1907
2128
|
/**
|
1908
2129
|
* Returns true if this value is an Uint32Array.
|
1909
|
-
* This is an experimental feature.
|
1910
2130
|
*/
|
1911
2131
|
bool IsUint32Array() const;
|
1912
2132
|
|
1913
2133
|
/**
|
1914
2134
|
* Returns true if this value is an Int32Array.
|
1915
|
-
* This is an experimental feature.
|
1916
2135
|
*/
|
1917
2136
|
bool IsInt32Array() const;
|
1918
2137
|
|
1919
2138
|
/**
|
1920
2139
|
* Returns true if this value is a Float32Array.
|
1921
|
-
* This is an experimental feature.
|
1922
2140
|
*/
|
1923
2141
|
bool IsFloat32Array() const;
|
1924
2142
|
|
1925
2143
|
/**
|
1926
2144
|
* Returns true if this value is a Float64Array.
|
1927
|
-
* This is an experimental feature.
|
1928
2145
|
*/
|
1929
2146
|
bool IsFloat64Array() const;
|
1930
2147
|
|
@@ -1936,7 +2153,6 @@ class V8_EXPORT Value : public Data {
|
|
1936
2153
|
|
1937
2154
|
/**
|
1938
2155
|
* Returns true if this value is a DataView.
|
1939
|
-
* This is an experimental feature.
|
1940
2156
|
*/
|
1941
2157
|
bool IsDataView() const;
|
1942
2158
|
|
@@ -1951,6 +2167,7 @@ class V8_EXPORT Value : public Data {
|
|
1951
2167
|
*/
|
1952
2168
|
bool IsProxy() const;
|
1953
2169
|
|
2170
|
+
bool IsWebAssemblyCompiledModule() const;
|
1954
2171
|
|
1955
2172
|
V8_WARN_UNUSED_RESULT MaybeLocal<Boolean> ToBoolean(
|
1956
2173
|
Local<Context> context) const;
|
@@ -2028,11 +2245,12 @@ class V8_EXPORT Value : public Data {
|
|
2028
2245
|
|
2029
2246
|
template <class T> V8_INLINE static Value* Cast(T* value);
|
2030
2247
|
|
2031
|
-
Local<String> TypeOf(
|
2248
|
+
Local<String> TypeOf(Isolate*);
|
2032
2249
|
|
2033
2250
|
private:
|
2034
2251
|
V8_INLINE bool QuickIsUndefined() const;
|
2035
2252
|
V8_INLINE bool QuickIsNull() const;
|
2253
|
+
V8_INLINE bool QuickIsNullOrUndefined() const;
|
2036
2254
|
V8_INLINE bool QuickIsString() const;
|
2037
2255
|
bool FullIsUndefined() const;
|
2038
2256
|
bool FullIsNull() const;
|
@@ -2075,9 +2293,10 @@ class V8_EXPORT Name : public Primitive {
|
|
2075
2293
|
*/
|
2076
2294
|
int GetIdentityHash();
|
2077
2295
|
|
2078
|
-
V8_INLINE static Name* Cast(
|
2296
|
+
V8_INLINE static Name* Cast(Value* obj);
|
2297
|
+
|
2079
2298
|
private:
|
2080
|
-
static void CheckCast(
|
2299
|
+
static void CheckCast(Value* obj);
|
2081
2300
|
};
|
2082
2301
|
|
2083
2302
|
|
@@ -2175,7 +2394,7 @@ class V8_EXPORT String : public Name {
|
|
2175
2394
|
/**
|
2176
2395
|
* A zero length string.
|
2177
2396
|
*/
|
2178
|
-
V8_INLINE static
|
2397
|
+
V8_INLINE static Local<String> Empty(Isolate* isolate);
|
2179
2398
|
|
2180
2399
|
/**
|
2181
2400
|
* Returns true if the string is external
|
@@ -2204,12 +2423,12 @@ class V8_EXPORT String : public Name {
|
|
2204
2423
|
*/
|
2205
2424
|
virtual void Dispose() { delete this; }
|
2206
2425
|
|
2207
|
-
private:
|
2208
2426
|
// Disallow copying and assigning.
|
2209
|
-
ExternalStringResourceBase(const ExternalStringResourceBase&);
|
2210
|
-
void operator=(const ExternalStringResourceBase&);
|
2427
|
+
ExternalStringResourceBase(const ExternalStringResourceBase&) = delete;
|
2428
|
+
void operator=(const ExternalStringResourceBase&) = delete;
|
2211
2429
|
|
2212
|
-
|
2430
|
+
private:
|
2431
|
+
friend class internal::Heap;
|
2213
2432
|
};
|
2214
2433
|
|
2215
2434
|
/**
|
@@ -2410,13 +2629,14 @@ class V8_EXPORT String : public Name {
|
|
2410
2629
|
char* operator*() { return str_; }
|
2411
2630
|
const char* operator*() const { return str_; }
|
2412
2631
|
int length() const { return length_; }
|
2632
|
+
|
2633
|
+
// Disallow copying and assigning.
|
2634
|
+
Utf8Value(const Utf8Value&) = delete;
|
2635
|
+
void operator=(const Utf8Value&) = delete;
|
2636
|
+
|
2413
2637
|
private:
|
2414
2638
|
char* str_;
|
2415
2639
|
int length_;
|
2416
|
-
|
2417
|
-
// Disallow copying and assigning.
|
2418
|
-
Utf8Value(const Utf8Value&);
|
2419
|
-
void operator=(const Utf8Value&);
|
2420
2640
|
};
|
2421
2641
|
|
2422
2642
|
/**
|
@@ -2432,13 +2652,14 @@ class V8_EXPORT String : public Name {
|
|
2432
2652
|
uint16_t* operator*() { return str_; }
|
2433
2653
|
const uint16_t* operator*() const { return str_; }
|
2434
2654
|
int length() const { return length_; }
|
2655
|
+
|
2656
|
+
// Disallow copying and assigning.
|
2657
|
+
Value(const Value&) = delete;
|
2658
|
+
void operator=(const Value&) = delete;
|
2659
|
+
|
2435
2660
|
private:
|
2436
2661
|
uint16_t* str_;
|
2437
2662
|
int length_;
|
2438
|
-
|
2439
|
-
// Disallow copying and assigning.
|
2440
|
-
Value(const Value&);
|
2441
|
-
void operator=(const Value&);
|
2442
2663
|
};
|
2443
2664
|
|
2444
2665
|
private:
|
@@ -2451,8 +2672,6 @@ class V8_EXPORT String : public Name {
|
|
2451
2672
|
|
2452
2673
|
/**
|
2453
2674
|
* A JavaScript symbol (ECMA-262 edition 6)
|
2454
|
-
*
|
2455
|
-
* This is an experimental feature. Use at your own risk.
|
2456
2675
|
*/
|
2457
2676
|
class V8_EXPORT Symbol : public Name {
|
2458
2677
|
public:
|
@@ -2477,14 +2696,15 @@ class V8_EXPORT Symbol : public Name {
|
|
2477
2696
|
// Well-known symbols
|
2478
2697
|
static Local<Symbol> GetIterator(Isolate* isolate);
|
2479
2698
|
static Local<Symbol> GetUnscopables(Isolate* isolate);
|
2699
|
+
static Local<Symbol> GetToPrimitive(Isolate* isolate);
|
2480
2700
|
static Local<Symbol> GetToStringTag(Isolate* isolate);
|
2481
2701
|
static Local<Symbol> GetIsConcatSpreadable(Isolate* isolate);
|
2482
2702
|
|
2483
|
-
V8_INLINE static Symbol* Cast(
|
2703
|
+
V8_INLINE static Symbol* Cast(Value* obj);
|
2484
2704
|
|
2485
2705
|
private:
|
2486
2706
|
Symbol();
|
2487
|
-
static void CheckCast(
|
2707
|
+
static void CheckCast(Value* obj);
|
2488
2708
|
};
|
2489
2709
|
|
2490
2710
|
|
@@ -2572,11 +2792,17 @@ class V8_EXPORT Uint32 : public Integer {
|
|
2572
2792
|
static void CheckCast(v8::Value* obj);
|
2573
2793
|
};
|
2574
2794
|
|
2575
|
-
|
2795
|
+
/**
|
2796
|
+
* PropertyAttribute.
|
2797
|
+
*/
|
2576
2798
|
enum PropertyAttribute {
|
2577
|
-
None
|
2578
|
-
|
2579
|
-
|
2799
|
+
/** None. **/
|
2800
|
+
None = 0,
|
2801
|
+
/** ReadOnly, i.e., not writable. **/
|
2802
|
+
ReadOnly = 1 << 0,
|
2803
|
+
/** DontEnum, i.e., not enumerable. **/
|
2804
|
+
DontEnum = 1 << 1,
|
2805
|
+
/** DontDelete, i.e., not configurable. **/
|
2580
2806
|
DontDelete = 1 << 2
|
2581
2807
|
};
|
2582
2808
|
|
@@ -2690,6 +2916,22 @@ class V8_EXPORT Object : public Value {
|
|
2690
2916
|
Local<Context> context, Local<Name> key, Local<Value> value,
|
2691
2917
|
PropertyAttribute attributes = None);
|
2692
2918
|
|
2919
|
+
// Implements Object.DefineProperty(O, P, Attributes), see Ecma-262 19.1.2.4.
|
2920
|
+
//
|
2921
|
+
// The defineProperty function is used to add an own property or
|
2922
|
+
// update the attributes of an existing own property of an object.
|
2923
|
+
//
|
2924
|
+
// Both data and accessor descriptors can be used.
|
2925
|
+
//
|
2926
|
+
// In general, CreateDataProperty is faster, however, does not allow
|
2927
|
+
// for specifying attributes or an accessor descriptor.
|
2928
|
+
//
|
2929
|
+
// The PropertyDescriptor can change when redefining a property.
|
2930
|
+
//
|
2931
|
+
// Returns true on success.
|
2932
|
+
V8_WARN_UNUSED_RESULT Maybe<bool> DefineProperty(
|
2933
|
+
Local<Context> context, Local<Name> key, PropertyDescriptor& descriptor);
|
2934
|
+
|
2693
2935
|
// Sets an own property on this object bypassing interceptors and
|
2694
2936
|
// overriding accessors or read-only properties.
|
2695
2937
|
//
|
@@ -2733,6 +2975,21 @@ class V8_EXPORT Object : public Value {
|
|
2733
2975
|
Local<Context> context, Local<String> key);
|
2734
2976
|
|
2735
2977
|
V8_DEPRECATE_SOON("Use maybe version", bool Has(Local<Value> key));
|
2978
|
+
/**
|
2979
|
+
* Object::Has() calls the abstract operation HasProperty(O, P) described
|
2980
|
+
* in ECMA-262, 7.3.10. Has() returns
|
2981
|
+
* true, if the object has the property, either own or on the prototype chain.
|
2982
|
+
* Interceptors, i.e., PropertyQueryCallbacks, are called if present.
|
2983
|
+
*
|
2984
|
+
* Has() has the same side effects as JavaScript's `variable in object`.
|
2985
|
+
* For example, calling Has() on a revoked proxy will throw an exception.
|
2986
|
+
*
|
2987
|
+
* \note Has() converts the key to a name, which possibly calls back into
|
2988
|
+
* JavaScript.
|
2989
|
+
*
|
2990
|
+
* See also v8::Object::HasOwnProperty() and
|
2991
|
+
* v8::Object::HasRealNamedProperty().
|
2992
|
+
*/
|
2736
2993
|
V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
|
2737
2994
|
Local<Value> key);
|
2738
2995
|
|
@@ -2892,15 +3149,36 @@ class V8_EXPORT Object : public Value {
|
|
2892
3149
|
* leads to undefined behavior.
|
2893
3150
|
*/
|
2894
3151
|
void SetAlignedPointerInInternalField(int index, void* value);
|
3152
|
+
void SetAlignedPointerInInternalFields(int argc, int indices[],
|
3153
|
+
void* values[]);
|
2895
3154
|
|
2896
3155
|
// Testers for local properties.
|
2897
3156
|
V8_DEPRECATED("Use maybe version", bool HasOwnProperty(Local<String> key));
|
3157
|
+
|
3158
|
+
/**
|
3159
|
+
* HasOwnProperty() is like JavaScript's Object.prototype.hasOwnProperty().
|
3160
|
+
*
|
3161
|
+
* See also v8::Object::Has() and v8::Object::HasRealNamedProperty().
|
3162
|
+
*/
|
2898
3163
|
V8_WARN_UNUSED_RESULT Maybe<bool> HasOwnProperty(Local<Context> context,
|
2899
3164
|
Local<Name> key);
|
2900
3165
|
V8_WARN_UNUSED_RESULT Maybe<bool> HasOwnProperty(Local<Context> context,
|
2901
3166
|
uint32_t index);
|
2902
3167
|
V8_DEPRECATE_SOON("Use maybe version",
|
2903
3168
|
bool HasRealNamedProperty(Local<String> key));
|
3169
|
+
/**
|
3170
|
+
* Use HasRealNamedProperty() if you want to check if an object has an own
|
3171
|
+
* property without causing side effects, i.e., without calling interceptors.
|
3172
|
+
*
|
3173
|
+
* This function is similar to v8::Object::HasOwnProperty(), but it does not
|
3174
|
+
* call interceptors.
|
3175
|
+
*
|
3176
|
+
* \note Consider using non-masking interceptors, i.e., the interceptors are
|
3177
|
+
* not called if the receiver has the real named property. See
|
3178
|
+
* `v8::PropertyHandlerFlags::kNonMasking`.
|
3179
|
+
*
|
3180
|
+
* See also v8::Object::Has().
|
3181
|
+
*/
|
2904
3182
|
V8_WARN_UNUSED_RESULT Maybe<bool> HasRealNamedProperty(Local<Context> context,
|
2905
3183
|
Local<Name> key);
|
2906
3184
|
V8_DEPRECATE_SOON("Use maybe version",
|
@@ -2983,6 +3261,12 @@ class V8_EXPORT Object : public Value {
|
|
2983
3261
|
*/
|
2984
3262
|
Local<Context> CreationContext();
|
2985
3263
|
|
3264
|
+
/** Same as above, but works for Persistents */
|
3265
|
+
V8_INLINE static Local<Context> CreationContext(
|
3266
|
+
const PersistentBase<Object>& object) {
|
3267
|
+
return object.val_->CreationContext();
|
3268
|
+
}
|
3269
|
+
|
2986
3270
|
/**
|
2987
3271
|
* Checks whether a callback is set by the
|
2988
3272
|
* ObjectTemplate::SetCallAsFunctionHandler method.
|
@@ -3231,12 +3515,91 @@ class FunctionCallbackInfo {
|
|
3231
3515
|
template<typename T>
|
3232
3516
|
class PropertyCallbackInfo {
|
3233
3517
|
public:
|
3518
|
+
/**
|
3519
|
+
* \return The isolate of the property access.
|
3520
|
+
*/
|
3234
3521
|
V8_INLINE Isolate* GetIsolate() const;
|
3522
|
+
|
3523
|
+
/**
|
3524
|
+
* \return The data set in the configuration, i.e., in
|
3525
|
+
* `NamedPropertyHandlerConfiguration` or
|
3526
|
+
* `IndexedPropertyHandlerConfiguration.`
|
3527
|
+
*/
|
3235
3528
|
V8_INLINE Local<Value> Data() const;
|
3529
|
+
|
3530
|
+
/**
|
3531
|
+
* \return The receiver. In many cases, this is the object on which the
|
3532
|
+
* property access was intercepted. When using
|
3533
|
+
* `Reflect.get`, `Function.prototype.call`, or similar functions, it is the
|
3534
|
+
* object passed in as receiver or thisArg.
|
3535
|
+
*
|
3536
|
+
* \code
|
3537
|
+
* void GetterCallback(Local<Name> name,
|
3538
|
+
* const v8::PropertyCallbackInfo<v8::Value>& info) {
|
3539
|
+
* auto context = info.GetIsolate()->GetCurrentContext();
|
3540
|
+
*
|
3541
|
+
* v8::Local<v8::Value> a_this =
|
3542
|
+
* info.This()
|
3543
|
+
* ->GetRealNamedProperty(context, v8_str("a"))
|
3544
|
+
* .ToLocalChecked();
|
3545
|
+
* v8::Local<v8::Value> a_holder =
|
3546
|
+
* info.Holder()
|
3547
|
+
* ->GetRealNamedProperty(context, v8_str("a"))
|
3548
|
+
* .ToLocalChecked();
|
3549
|
+
*
|
3550
|
+
* CHECK(v8_str("r")->Equals(context, a_this).FromJust());
|
3551
|
+
* CHECK(v8_str("obj")->Equals(context, a_holder).FromJust());
|
3552
|
+
*
|
3553
|
+
* info.GetReturnValue().Set(name);
|
3554
|
+
* }
|
3555
|
+
*
|
3556
|
+
* v8::Local<v8::FunctionTemplate> templ =
|
3557
|
+
* v8::FunctionTemplate::New(isolate);
|
3558
|
+
* templ->InstanceTemplate()->SetHandler(
|
3559
|
+
* v8::NamedPropertyHandlerConfiguration(GetterCallback));
|
3560
|
+
* LocalContext env;
|
3561
|
+
* env->Global()
|
3562
|
+
* ->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local())
|
3563
|
+
* .ToLocalChecked()
|
3564
|
+
* ->NewInstance(env.local())
|
3565
|
+
* .ToLocalChecked())
|
3566
|
+
* .FromJust();
|
3567
|
+
*
|
3568
|
+
* CompileRun("obj.a = 'obj'; var r = {a: 'r'}; Reflect.get(obj, 'x', r)");
|
3569
|
+
* \endcode
|
3570
|
+
*/
|
3236
3571
|
V8_INLINE Local<Object> This() const;
|
3572
|
+
|
3573
|
+
/**
|
3574
|
+
* \return The object in the prototype chain of the receiver that has the
|
3575
|
+
* interceptor. Suppose you have `x` and its prototype is `y`, and `y`
|
3576
|
+
* has an interceptor. Then `info.This()` is `x` and `info.Holder()` is `y`.
|
3577
|
+
* The Holder() could be a hidden object (the global object, rather
|
3578
|
+
* than the global proxy).
|
3579
|
+
*
|
3580
|
+
* \note For security reasons, do not pass the object back into the runtime.
|
3581
|
+
*/
|
3237
3582
|
V8_INLINE Local<Object> Holder() const;
|
3583
|
+
|
3584
|
+
/**
|
3585
|
+
* \return The return value of the callback.
|
3586
|
+
* Can be changed by calling Set().
|
3587
|
+
* \code
|
3588
|
+
* info.GetReturnValue().Set(...)
|
3589
|
+
* \endcode
|
3590
|
+
*
|
3591
|
+
*/
|
3238
3592
|
V8_INLINE ReturnValue<T> GetReturnValue() const;
|
3593
|
+
|
3594
|
+
/**
|
3595
|
+
* \return True if the intercepted function should throw if an error occurs.
|
3596
|
+
* Usually, `true` corresponds to `'use strict'`.
|
3597
|
+
*
|
3598
|
+
* \note Always `false` when intercepting `Reflect.set()`
|
3599
|
+
* independent of the language mode.
|
3600
|
+
*/
|
3239
3601
|
V8_INLINE bool ShouldThrowOnError() const;
|
3602
|
+
|
3240
3603
|
// This shouldn't be public, but the arm compiler needs it.
|
3241
3604
|
static const int kArgsLength = 7;
|
3242
3605
|
|
@@ -3334,7 +3697,7 @@ class V8_EXPORT Function : public Object {
|
|
3334
3697
|
/**
|
3335
3698
|
* Tells whether this function is builtin.
|
3336
3699
|
*/
|
3337
|
-
bool IsBuiltin() const;
|
3700
|
+
V8_DEPRECATED("this should no longer be used.", bool IsBuiltin() const);
|
3338
3701
|
|
3339
3702
|
/**
|
3340
3703
|
* Returns scriptId.
|
@@ -3359,10 +3722,15 @@ class V8_EXPORT Function : public Object {
|
|
3359
3722
|
|
3360
3723
|
/**
|
3361
3724
|
* An instance of the built-in Promise constructor (ES6 draft).
|
3362
|
-
* This API is experimental. Only works with --harmony flag.
|
3363
3725
|
*/
|
3364
3726
|
class V8_EXPORT Promise : public Object {
|
3365
3727
|
public:
|
3728
|
+
/**
|
3729
|
+
* State of the promise. Each value corresponds to one of the possible values
|
3730
|
+
* of the [[PromiseState]] field.
|
3731
|
+
*/
|
3732
|
+
enum PromiseState { kPending, kFulfilled, kRejected };
|
3733
|
+
|
3366
3734
|
class V8_EXPORT Resolver : public Object {
|
3367
3735
|
public:
|
3368
3736
|
/**
|
@@ -3403,12 +3771,6 @@ class V8_EXPORT Promise : public Object {
|
|
3403
3771
|
* an argument. If the promise is already resolved/rejected, the handler is
|
3404
3772
|
* invoked at the end of turn.
|
3405
3773
|
*/
|
3406
|
-
V8_DEPRECATED("Use maybe version of Then",
|
3407
|
-
Local<Promise> Chain(Local<Function> handler));
|
3408
|
-
V8_DEPRECATED("Use Then",
|
3409
|
-
V8_WARN_UNUSED_RESULT MaybeLocal<Promise> Chain(
|
3410
|
-
Local<Context> context, Local<Function> handler));
|
3411
|
-
|
3412
3774
|
V8_DEPRECATED("Use maybe version",
|
3413
3775
|
Local<Promise> Catch(Local<Function> handler));
|
3414
3776
|
V8_WARN_UNUSED_RESULT MaybeLocal<Promise> Catch(Local<Context> context,
|
@@ -3425,6 +3787,17 @@ class V8_EXPORT Promise : public Object {
|
|
3425
3787
|
*/
|
3426
3788
|
bool HasHandler();
|
3427
3789
|
|
3790
|
+
/**
|
3791
|
+
* Returns the content of the [[PromiseResult]] field. The Promise must not
|
3792
|
+
* be pending.
|
3793
|
+
*/
|
3794
|
+
Local<Value> Result();
|
3795
|
+
|
3796
|
+
/**
|
3797
|
+
* Returns the value of the [[PromiseState]] field.
|
3798
|
+
*/
|
3799
|
+
PromiseState State();
|
3800
|
+
|
3428
3801
|
V8_INLINE static Promise* Cast(Value* obj);
|
3429
3802
|
|
3430
3803
|
private:
|
@@ -3432,6 +3805,78 @@ class V8_EXPORT Promise : public Object {
|
|
3432
3805
|
static void CheckCast(Value* obj);
|
3433
3806
|
};
|
3434
3807
|
|
3808
|
+
/**
|
3809
|
+
* An instance of a Property Descriptor, see Ecma-262 6.2.4.
|
3810
|
+
*
|
3811
|
+
* Properties in a descriptor are present or absent. If you do not set
|
3812
|
+
* `enumerable`, `configurable`, and `writable`, they are absent. If `value`,
|
3813
|
+
* `get`, or `set` are absent, but you must specify them in the constructor, use
|
3814
|
+
* empty handles.
|
3815
|
+
*
|
3816
|
+
* Accessors `get` and `set` must be callable or undefined if they are present.
|
3817
|
+
*
|
3818
|
+
* \note Only query properties if they are present, i.e., call `x()` only if
|
3819
|
+
* `has_x()` returns true.
|
3820
|
+
*
|
3821
|
+
* \code
|
3822
|
+
* // var desc = {writable: false}
|
3823
|
+
* v8::PropertyDescriptor d(Local<Value>()), false);
|
3824
|
+
* d.value(); // error, value not set
|
3825
|
+
* if (d.has_writable()) {
|
3826
|
+
* d.writable(); // false
|
3827
|
+
* }
|
3828
|
+
*
|
3829
|
+
* // var desc = {value: undefined}
|
3830
|
+
* v8::PropertyDescriptor d(v8::Undefined(isolate));
|
3831
|
+
*
|
3832
|
+
* // var desc = {get: undefined}
|
3833
|
+
* v8::PropertyDescriptor d(v8::Undefined(isolate), Local<Value>()));
|
3834
|
+
* \endcode
|
3835
|
+
*/
|
3836
|
+
class V8_EXPORT PropertyDescriptor {
|
3837
|
+
public:
|
3838
|
+
// GenericDescriptor
|
3839
|
+
PropertyDescriptor();
|
3840
|
+
|
3841
|
+
// DataDescriptor
|
3842
|
+
PropertyDescriptor(Local<Value> value);
|
3843
|
+
|
3844
|
+
// DataDescriptor with writable property
|
3845
|
+
PropertyDescriptor(Local<Value> value, bool writable);
|
3846
|
+
|
3847
|
+
// AccessorDescriptor
|
3848
|
+
PropertyDescriptor(Local<Value> get, Local<Value> set);
|
3849
|
+
|
3850
|
+
~PropertyDescriptor();
|
3851
|
+
|
3852
|
+
Local<Value> value() const;
|
3853
|
+
bool has_value() const;
|
3854
|
+
|
3855
|
+
Local<Value> get() const;
|
3856
|
+
bool has_get() const;
|
3857
|
+
Local<Value> set() const;
|
3858
|
+
bool has_set() const;
|
3859
|
+
|
3860
|
+
void set_enumerable(bool enumerable);
|
3861
|
+
bool enumerable() const;
|
3862
|
+
bool has_enumerable() const;
|
3863
|
+
|
3864
|
+
void set_configurable(bool configurable);
|
3865
|
+
bool configurable() const;
|
3866
|
+
bool has_configurable() const;
|
3867
|
+
|
3868
|
+
bool writable() const;
|
3869
|
+
bool has_writable() const;
|
3870
|
+
|
3871
|
+
struct PrivateData;
|
3872
|
+
PrivateData* get_private() const { return private_; }
|
3873
|
+
|
3874
|
+
PropertyDescriptor(const PropertyDescriptor&) = delete;
|
3875
|
+
void operator=(const PropertyDescriptor&) = delete;
|
3876
|
+
|
3877
|
+
private:
|
3878
|
+
PrivateData* private_;
|
3879
|
+
};
|
3435
3880
|
|
3436
3881
|
/**
|
3437
3882
|
* An instance of the built-in Proxy constructor (ECMA-262, 6th Edition,
|
@@ -3445,7 +3890,7 @@ class V8_EXPORT Proxy : public Object {
|
|
3445
3890
|
void Revoke();
|
3446
3891
|
|
3447
3892
|
/**
|
3448
|
-
* Creates a new
|
3893
|
+
* Creates a new Proxy for the target object.
|
3449
3894
|
*/
|
3450
3895
|
static MaybeLocal<Proxy> New(Local<Context> context,
|
3451
3896
|
Local<Object> local_target,
|
@@ -3458,6 +3903,35 @@ class V8_EXPORT Proxy : public Object {
|
|
3458
3903
|
static void CheckCast(Value* obj);
|
3459
3904
|
};
|
3460
3905
|
|
3906
|
+
class V8_EXPORT WasmCompiledModule : public Object {
|
3907
|
+
public:
|
3908
|
+
typedef std::pair<std::unique_ptr<const uint8_t[]>, size_t> SerializedModule;
|
3909
|
+
// A buffer that is owned by the caller.
|
3910
|
+
typedef std::pair<const uint8_t*, size_t> CallerOwnedBuffer;
|
3911
|
+
// Get the wasm-encoded bytes that were used to compile this module.
|
3912
|
+
Local<String> GetWasmWireBytes();
|
3913
|
+
|
3914
|
+
// Serialize the compiled module. The serialized data does not include the
|
3915
|
+
// uncompiled bytes.
|
3916
|
+
SerializedModule Serialize();
|
3917
|
+
|
3918
|
+
// If possible, deserialize the module, otherwise compile it from the provided
|
3919
|
+
// uncompiled bytes.
|
3920
|
+
static MaybeLocal<WasmCompiledModule> DeserializeOrCompile(
|
3921
|
+
Isolate* isolate, const CallerOwnedBuffer& serialized_module,
|
3922
|
+
const CallerOwnedBuffer& wire_bytes);
|
3923
|
+
V8_INLINE static WasmCompiledModule* Cast(Value* obj);
|
3924
|
+
|
3925
|
+
private:
|
3926
|
+
static MaybeLocal<WasmCompiledModule> Deserialize(
|
3927
|
+
Isolate* isolate, const CallerOwnedBuffer& serialized_module,
|
3928
|
+
const CallerOwnedBuffer& wire_bytes);
|
3929
|
+
static MaybeLocal<WasmCompiledModule> Compile(Isolate* isolate,
|
3930
|
+
const uint8_t* start,
|
3931
|
+
size_t length);
|
3932
|
+
WasmCompiledModule();
|
3933
|
+
static void CheckCast(Value* obj);
|
3934
|
+
};
|
3461
3935
|
|
3462
3936
|
#ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
|
3463
3937
|
// The number of required internal fields can be defined by embedder.
|
@@ -3470,7 +3944,6 @@ enum class ArrayBufferCreationMode { kInternalized, kExternalized };
|
|
3470
3944
|
|
3471
3945
|
/**
|
3472
3946
|
* An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5).
|
3473
|
-
* This API is experimental and may change significantly.
|
3474
3947
|
*/
|
3475
3948
|
class V8_EXPORT ArrayBuffer : public Object {
|
3476
3949
|
public:
|
@@ -3488,8 +3961,6 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
3488
3961
|
*
|
3489
3962
|
* Note that it is unsafe to call back into V8 from any of the allocator
|
3490
3963
|
* functions.
|
3491
|
-
*
|
3492
|
-
* This API is experimental and may change significantly.
|
3493
3964
|
*/
|
3494
3965
|
class V8_EXPORT Allocator { // NOLINT
|
3495
3966
|
public:
|
@@ -3506,11 +3977,19 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
3506
3977
|
* Memory does not have to be initialized.
|
3507
3978
|
*/
|
3508
3979
|
virtual void* AllocateUninitialized(size_t length) = 0;
|
3980
|
+
|
3509
3981
|
/**
|
3510
3982
|
* Free the memory block of size |length|, pointed to by |data|.
|
3511
3983
|
* That memory is guaranteed to be previously allocated by |Allocate|.
|
3512
3984
|
*/
|
3513
3985
|
virtual void Free(void* data, size_t length) = 0;
|
3986
|
+
|
3987
|
+
/**
|
3988
|
+
* malloc/free based convenience allocator.
|
3989
|
+
*
|
3990
|
+
* Caller takes ownership.
|
3991
|
+
*/
|
3992
|
+
static Allocator* NewDefaultAllocator();
|
3514
3993
|
};
|
3515
3994
|
|
3516
3995
|
/**
|
@@ -3520,8 +3999,6 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
3520
3999
|
*
|
3521
4000
|
* The Data pointer of ArrayBuffer::Contents is always allocated with
|
3522
4001
|
* Allocator::Allocate that is set via Isolate::CreateParams.
|
3523
|
-
*
|
3524
|
-
* This API is experimental and may change significantly.
|
3525
4002
|
*/
|
3526
4003
|
class V8_EXPORT Contents { // NOLINT
|
3527
4004
|
public:
|
@@ -3583,7 +4060,7 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
3583
4060
|
/**
|
3584
4061
|
* Make this ArrayBuffer external. The pointer to underlying memory block
|
3585
4062
|
* and byte length are returned as |Contents| structure. After ArrayBuffer
|
3586
|
-
* had been
|
4063
|
+
* had been externalized, it does no longer own the memory block. The caller
|
3587
4064
|
* should take steps to free memory when it is no longer needed.
|
3588
4065
|
*
|
3589
4066
|
* The memory block is guaranteed to be allocated with |Allocator::Allocate|
|
@@ -3594,7 +4071,7 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
3594
4071
|
/**
|
3595
4072
|
* Get a pointer to the ArrayBuffer's underlying memory block without
|
3596
4073
|
* externalizing it. If the ArrayBuffer is not externalized, this pointer
|
3597
|
-
* will become invalid as soon as the ArrayBuffer
|
4074
|
+
* will become invalid as soon as the ArrayBuffer gets garbage collected.
|
3598
4075
|
*
|
3599
4076
|
* The embedder should make sure to hold a strong reference to the
|
3600
4077
|
* ArrayBuffer while accessing this pointer.
|
@@ -3622,8 +4099,6 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
3622
4099
|
/**
|
3623
4100
|
* A base class for an instance of one of "views" over ArrayBuffer,
|
3624
4101
|
* including TypedArrays and DataView (ES6 draft 15.13).
|
3625
|
-
*
|
3626
|
-
* This API is experimental and may change significantly.
|
3627
4102
|
*/
|
3628
4103
|
class V8_EXPORT ArrayBufferView : public Object {
|
3629
4104
|
public:
|
@@ -3646,7 +4121,7 @@ class V8_EXPORT ArrayBufferView : public Object {
|
|
3646
4121
|
* might incur.
|
3647
4122
|
*
|
3648
4123
|
* Will write at most min(|byte_length|, ByteLength) bytes starting at
|
3649
|
-
* ByteOffset of the
|
4124
|
+
* ByteOffset of the underlying buffer to the memory starting at |dest|.
|
3650
4125
|
* Returns the number of bytes actually written.
|
3651
4126
|
*/
|
3652
4127
|
size_t CopyContents(void* dest, size_t byte_length);
|
@@ -3671,7 +4146,6 @@ class V8_EXPORT ArrayBufferView : public Object {
|
|
3671
4146
|
/**
|
3672
4147
|
* A base class for an instance of TypedArray series of constructors
|
3673
4148
|
* (ES6 draft 15.13.6).
|
3674
|
-
* This API is experimental and may change significantly.
|
3675
4149
|
*/
|
3676
4150
|
class V8_EXPORT TypedArray : public ArrayBufferView {
|
3677
4151
|
public:
|
@@ -3691,7 +4165,6 @@ class V8_EXPORT TypedArray : public ArrayBufferView {
|
|
3691
4165
|
|
3692
4166
|
/**
|
3693
4167
|
* An instance of Uint8Array constructor (ES6 draft 15.13.6).
|
3694
|
-
* This API is experimental and may change significantly.
|
3695
4168
|
*/
|
3696
4169
|
class V8_EXPORT Uint8Array : public TypedArray {
|
3697
4170
|
public:
|
@@ -3709,7 +4182,6 @@ class V8_EXPORT Uint8Array : public TypedArray {
|
|
3709
4182
|
|
3710
4183
|
/**
|
3711
4184
|
* An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6).
|
3712
|
-
* This API is experimental and may change significantly.
|
3713
4185
|
*/
|
3714
4186
|
class V8_EXPORT Uint8ClampedArray : public TypedArray {
|
3715
4187
|
public:
|
@@ -3727,7 +4199,6 @@ class V8_EXPORT Uint8ClampedArray : public TypedArray {
|
|
3727
4199
|
|
3728
4200
|
/**
|
3729
4201
|
* An instance of Int8Array constructor (ES6 draft 15.13.6).
|
3730
|
-
* This API is experimental and may change significantly.
|
3731
4202
|
*/
|
3732
4203
|
class V8_EXPORT Int8Array : public TypedArray {
|
3733
4204
|
public:
|
@@ -3745,7 +4216,6 @@ class V8_EXPORT Int8Array : public TypedArray {
|
|
3745
4216
|
|
3746
4217
|
/**
|
3747
4218
|
* An instance of Uint16Array constructor (ES6 draft 15.13.6).
|
3748
|
-
* This API is experimental and may change significantly.
|
3749
4219
|
*/
|
3750
4220
|
class V8_EXPORT Uint16Array : public TypedArray {
|
3751
4221
|
public:
|
@@ -3763,7 +4233,6 @@ class V8_EXPORT Uint16Array : public TypedArray {
|
|
3763
4233
|
|
3764
4234
|
/**
|
3765
4235
|
* An instance of Int16Array constructor (ES6 draft 15.13.6).
|
3766
|
-
* This API is experimental and may change significantly.
|
3767
4236
|
*/
|
3768
4237
|
class V8_EXPORT Int16Array : public TypedArray {
|
3769
4238
|
public:
|
@@ -3781,7 +4250,6 @@ class V8_EXPORT Int16Array : public TypedArray {
|
|
3781
4250
|
|
3782
4251
|
/**
|
3783
4252
|
* An instance of Uint32Array constructor (ES6 draft 15.13.6).
|
3784
|
-
* This API is experimental and may change significantly.
|
3785
4253
|
*/
|
3786
4254
|
class V8_EXPORT Uint32Array : public TypedArray {
|
3787
4255
|
public:
|
@@ -3799,7 +4267,6 @@ class V8_EXPORT Uint32Array : public TypedArray {
|
|
3799
4267
|
|
3800
4268
|
/**
|
3801
4269
|
* An instance of Int32Array constructor (ES6 draft 15.13.6).
|
3802
|
-
* This API is experimental and may change significantly.
|
3803
4270
|
*/
|
3804
4271
|
class V8_EXPORT Int32Array : public TypedArray {
|
3805
4272
|
public:
|
@@ -3817,7 +4284,6 @@ class V8_EXPORT Int32Array : public TypedArray {
|
|
3817
4284
|
|
3818
4285
|
/**
|
3819
4286
|
* An instance of Float32Array constructor (ES6 draft 15.13.6).
|
3820
|
-
* This API is experimental and may change significantly.
|
3821
4287
|
*/
|
3822
4288
|
class V8_EXPORT Float32Array : public TypedArray {
|
3823
4289
|
public:
|
@@ -3835,7 +4301,6 @@ class V8_EXPORT Float32Array : public TypedArray {
|
|
3835
4301
|
|
3836
4302
|
/**
|
3837
4303
|
* An instance of Float64Array constructor (ES6 draft 15.13.6).
|
3838
|
-
* This API is experimental and may change significantly.
|
3839
4304
|
*/
|
3840
4305
|
class V8_EXPORT Float64Array : public TypedArray {
|
3841
4306
|
public:
|
@@ -3853,7 +4318,6 @@ class V8_EXPORT Float64Array : public TypedArray {
|
|
3853
4318
|
|
3854
4319
|
/**
|
3855
4320
|
* An instance of DataView constructor (ES6 draft 15.13.7).
|
3856
|
-
* This API is experimental and may change significantly.
|
3857
4321
|
*/
|
3858
4322
|
class V8_EXPORT DataView : public ArrayBufferView {
|
3859
4323
|
public:
|
@@ -3933,7 +4397,7 @@ class V8_EXPORT SharedArrayBuffer : public Object {
|
|
3933
4397
|
/**
|
3934
4398
|
* Make this SharedArrayBuffer external. The pointer to underlying memory
|
3935
4399
|
* block and byte length are returned as |Contents| structure. After
|
3936
|
-
* SharedArrayBuffer had been
|
4400
|
+
* SharedArrayBuffer had been externalized, it does no longer own the memory
|
3937
4401
|
* block. The caller should take steps to free memory when it is no longer
|
3938
4402
|
* needed.
|
3939
4403
|
*
|
@@ -3984,7 +4448,7 @@ class V8_EXPORT Date : public Object {
|
|
3984
4448
|
*/
|
3985
4449
|
double ValueOf() const;
|
3986
4450
|
|
3987
|
-
V8_INLINE static Date* Cast(
|
4451
|
+
V8_INLINE static Date* Cast(Value* obj);
|
3988
4452
|
|
3989
4453
|
/**
|
3990
4454
|
* Notification that the embedder has changed the time zone,
|
@@ -4001,7 +4465,7 @@ class V8_EXPORT Date : public Object {
|
|
4001
4465
|
static void DateTimeConfigurationChangeNotification(Isolate* isolate);
|
4002
4466
|
|
4003
4467
|
private:
|
4004
|
-
static void CheckCast(
|
4468
|
+
static void CheckCast(Value* obj);
|
4005
4469
|
};
|
4006
4470
|
|
4007
4471
|
|
@@ -4014,10 +4478,10 @@ class V8_EXPORT NumberObject : public Object {
|
|
4014
4478
|
|
4015
4479
|
double ValueOf() const;
|
4016
4480
|
|
4017
|
-
V8_INLINE static NumberObject* Cast(
|
4481
|
+
V8_INLINE static NumberObject* Cast(Value* obj);
|
4018
4482
|
|
4019
4483
|
private:
|
4020
|
-
static void CheckCast(
|
4484
|
+
static void CheckCast(Value* obj);
|
4021
4485
|
};
|
4022
4486
|
|
4023
4487
|
|
@@ -4031,10 +4495,10 @@ class V8_EXPORT BooleanObject : public Object {
|
|
4031
4495
|
|
4032
4496
|
bool ValueOf() const;
|
4033
4497
|
|
4034
|
-
V8_INLINE static BooleanObject* Cast(
|
4498
|
+
V8_INLINE static BooleanObject* Cast(Value* obj);
|
4035
4499
|
|
4036
4500
|
private:
|
4037
|
-
static void CheckCast(
|
4501
|
+
static void CheckCast(Value* obj);
|
4038
4502
|
};
|
4039
4503
|
|
4040
4504
|
|
@@ -4047,17 +4511,15 @@ class V8_EXPORT StringObject : public Object {
|
|
4047
4511
|
|
4048
4512
|
Local<String> ValueOf() const;
|
4049
4513
|
|
4050
|
-
V8_INLINE static StringObject* Cast(
|
4514
|
+
V8_INLINE static StringObject* Cast(Value* obj);
|
4051
4515
|
|
4052
4516
|
private:
|
4053
|
-
static void CheckCast(
|
4517
|
+
static void CheckCast(Value* obj);
|
4054
4518
|
};
|
4055
4519
|
|
4056
4520
|
|
4057
4521
|
/**
|
4058
4522
|
* A Symbol object (ECMA-262 edition 6).
|
4059
|
-
*
|
4060
|
-
* This is an experimental feature. Use at your own risk.
|
4061
4523
|
*/
|
4062
4524
|
class V8_EXPORT SymbolObject : public Object {
|
4063
4525
|
public:
|
@@ -4065,10 +4527,10 @@ class V8_EXPORT SymbolObject : public Object {
|
|
4065
4527
|
|
4066
4528
|
Local<Symbol> ValueOf() const;
|
4067
4529
|
|
4068
|
-
V8_INLINE static SymbolObject* Cast(
|
4530
|
+
V8_INLINE static SymbolObject* Cast(Value* obj);
|
4069
4531
|
|
4070
4532
|
private:
|
4071
|
-
static void CheckCast(
|
4533
|
+
static void CheckCast(Value* obj);
|
4072
4534
|
};
|
4073
4535
|
|
4074
4536
|
|
@@ -4118,10 +4580,10 @@ class V8_EXPORT RegExp : public Object {
|
|
4118
4580
|
*/
|
4119
4581
|
Flags GetFlags() const;
|
4120
4582
|
|
4121
|
-
V8_INLINE static RegExp* Cast(
|
4583
|
+
V8_INLINE static RegExp* Cast(Value* obj);
|
4122
4584
|
|
4123
4585
|
private:
|
4124
|
-
static void CheckCast(
|
4586
|
+
static void CheckCast(Value* obj);
|
4125
4587
|
};
|
4126
4588
|
|
4127
4589
|
|
@@ -4163,6 +4625,8 @@ class V8_EXPORT Template : public Data {
|
|
4163
4625
|
*/
|
4164
4626
|
void Set(Local<Name> name, Local<Data> value,
|
4165
4627
|
PropertyAttribute attributes = None);
|
4628
|
+
void SetPrivate(Local<Private> name, Local<Data> value,
|
4629
|
+
PropertyAttribute attributes = None);
|
4166
4630
|
V8_INLINE void Set(Isolate* isolate, const char* name, Local<Data> value);
|
4167
4631
|
|
4168
4632
|
void SetAccessorProperty(
|
@@ -4214,6 +4678,14 @@ class V8_EXPORT Template : public Data {
|
|
4214
4678
|
Local<AccessorSignature> signature = Local<AccessorSignature>(),
|
4215
4679
|
AccessControl settings = DEFAULT);
|
4216
4680
|
|
4681
|
+
/**
|
4682
|
+
* Like SetNativeDataProperty, but V8 will replace the native data property
|
4683
|
+
* with a real data property on first access.
|
4684
|
+
*/
|
4685
|
+
void SetLazyDataProperty(Local<Name> name, AccessorNameGetterCallback getter,
|
4686
|
+
Local<Value> data = Local<Value>(),
|
4687
|
+
PropertyAttribute attribute = None);
|
4688
|
+
|
4217
4689
|
/**
|
4218
4690
|
* During template instantiation, sets the value with the intrinsic property
|
4219
4691
|
* from the correct context.
|
@@ -4278,36 +4750,115 @@ typedef void (*NamedPropertyEnumeratorCallback)(
|
|
4278
4750
|
|
4279
4751
|
// TODO(dcarney): Deprecate and remove previous typedefs, and replace
|
4280
4752
|
// GenericNamedPropertyFooCallback with just NamedPropertyFooCallback.
|
4753
|
+
|
4281
4754
|
/**
|
4282
|
-
*
|
4283
|
-
*
|
4755
|
+
* Interceptor for get requests on an object.
|
4756
|
+
*
|
4757
|
+
* Use `info.GetReturnValue().Set()` to set the return value of the
|
4758
|
+
* intercepted get request.
|
4759
|
+
*
|
4760
|
+
* \param property The name of the property for which the request was
|
4761
|
+
* intercepted.
|
4762
|
+
* \param info Information about the intercepted request, such as
|
4763
|
+
* isolate, receiver, return value, or whether running in `'use strict`' mode.
|
4764
|
+
* See `PropertyCallbackInfo`.
|
4765
|
+
*
|
4766
|
+
* \code
|
4767
|
+
* void GetterCallback(
|
4768
|
+
* Local<Name> name,
|
4769
|
+
* const v8::PropertyCallbackInfo<v8::Value>& info) {
|
4770
|
+
* info.GetReturnValue().Set(v8_num(42));
|
4771
|
+
* }
|
4772
|
+
*
|
4773
|
+
* v8::Local<v8::FunctionTemplate> templ =
|
4774
|
+
* v8::FunctionTemplate::New(isolate);
|
4775
|
+
* templ->InstanceTemplate()->SetHandler(
|
4776
|
+
* v8::NamedPropertyHandlerConfiguration(GetterCallback));
|
4777
|
+
* LocalContext env;
|
4778
|
+
* env->Global()
|
4779
|
+
* ->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local())
|
4780
|
+
* .ToLocalChecked()
|
4781
|
+
* ->NewInstance(env.local())
|
4782
|
+
* .ToLocalChecked())
|
4783
|
+
* .FromJust();
|
4784
|
+
* v8::Local<v8::Value> result = CompileRun("obj.a = 17; obj.a");
|
4785
|
+
* CHECK(v8_num(42)->Equals(env.local(), result).FromJust());
|
4786
|
+
* \endcode
|
4787
|
+
*
|
4788
|
+
* See also `ObjectTemplate::SetHandler`.
|
4284
4789
|
*/
|
4285
4790
|
typedef void (*GenericNamedPropertyGetterCallback)(
|
4286
4791
|
Local<Name> property, const PropertyCallbackInfo<Value>& info);
|
4287
4792
|
|
4288
|
-
|
4289
4793
|
/**
|
4290
|
-
*
|
4291
|
-
*
|
4794
|
+
* Interceptor for set requests on an object.
|
4795
|
+
*
|
4796
|
+
* Use `info.GetReturnValue()` to indicate whether the request was intercepted
|
4797
|
+
* or not. If the setter successfully intercepts the request, i.e., if the
|
4798
|
+
* request should not be further executed, call
|
4799
|
+
* `info.GetReturnValue().Set(value)`. If the setter
|
4800
|
+
* did not intercept the request, i.e., if the request should be handled as
|
4801
|
+
* if no interceptor is present, do not not call `Set()`.
|
4802
|
+
*
|
4803
|
+
* \param property The name of the property for which the request was
|
4804
|
+
* intercepted.
|
4805
|
+
* \param value The value which the property will have if the request
|
4806
|
+
* is not intercepted.
|
4807
|
+
* \param info Information about the intercepted request, such as
|
4808
|
+
* isolate, receiver, return value, or whether running in `'use strict'` mode.
|
4809
|
+
* See `PropertyCallbackInfo`.
|
4810
|
+
*
|
4811
|
+
* See also
|
4812
|
+
* `ObjectTemplate::SetHandler.`
|
4292
4813
|
*/
|
4293
4814
|
typedef void (*GenericNamedPropertySetterCallback)(
|
4294
4815
|
Local<Name> property, Local<Value> value,
|
4295
4816
|
const PropertyCallbackInfo<Value>& info);
|
4296
4817
|
|
4297
|
-
|
4298
4818
|
/**
|
4299
|
-
*
|
4300
|
-
*
|
4301
|
-
*
|
4819
|
+
* Intercepts all requests that query the attributes of the
|
4820
|
+
* property, e.g., getOwnPropertyDescriptor(), propertyIsEnumerable(), and
|
4821
|
+
* defineProperty().
|
4822
|
+
*
|
4823
|
+
* Use `info.GetReturnValue().Set(value)` to set the property attributes. The
|
4824
|
+
* value is an interger encoding a `v8::PropertyAttribute`.
|
4825
|
+
*
|
4826
|
+
* \param property The name of the property for which the request was
|
4827
|
+
* intercepted.
|
4828
|
+
* \param info Information about the intercepted request, such as
|
4829
|
+
* isolate, receiver, return value, or whether running in `'use strict'` mode.
|
4830
|
+
* See `PropertyCallbackInfo`.
|
4831
|
+
*
|
4832
|
+
* \note Some functions query the property attributes internally, even though
|
4833
|
+
* they do not return the attributes. For example, `hasOwnProperty()` can
|
4834
|
+
* trigger this interceptor depending on the state of the object.
|
4835
|
+
*
|
4836
|
+
* See also
|
4837
|
+
* `ObjectTemplate::SetHandler.`
|
4302
4838
|
*/
|
4303
4839
|
typedef void (*GenericNamedPropertyQueryCallback)(
|
4304
4840
|
Local<Name> property, const PropertyCallbackInfo<Integer>& info);
|
4305
4841
|
|
4306
|
-
|
4307
4842
|
/**
|
4308
|
-
*
|
4309
|
-
*
|
4310
|
-
*
|
4843
|
+
* Interceptor for delete requests on an object.
|
4844
|
+
*
|
4845
|
+
* Use `info.GetReturnValue()` to indicate whether the request was intercepted
|
4846
|
+
* or not. If the deleter successfully intercepts the request, i.e., if the
|
4847
|
+
* request should not be further executed, call
|
4848
|
+
* `info.GetReturnValue().Set(value)` with a boolean `value`. The `value` is
|
4849
|
+
* used as the return value of `delete`.
|
4850
|
+
*
|
4851
|
+
* \param property The name of the property for which the request was
|
4852
|
+
* intercepted.
|
4853
|
+
* \param info Information about the intercepted request, such as
|
4854
|
+
* isolate, receiver, return value, or whether running in `'use strict'` mode.
|
4855
|
+
* See `PropertyCallbackInfo`.
|
4856
|
+
*
|
4857
|
+
* \note If you need to mimic the behavior of `delete`, i.e., throw in strict
|
4858
|
+
* mode instead of returning false, use `info.ShouldThrowOnError()` to determine
|
4859
|
+
* if you are in strict mode.
|
4860
|
+
*
|
4861
|
+
* See also `ObjectTemplate::SetHandler.`
|
4311
4862
|
*/
|
4312
4863
|
typedef void (*GenericNamedPropertyDeleterCallback)(
|
4313
4864
|
Local<Name> property, const PropertyCallbackInfo<Boolean>& info);
|
@@ -4320,52 +4871,99 @@ typedef void (*GenericNamedPropertyDeleterCallback)(
|
|
4320
4871
|
typedef void (*GenericNamedPropertyEnumeratorCallback)(
|
4321
4872
|
const PropertyCallbackInfo<Array>& info);
|
4322
4873
|
|
4874
|
+
/**
|
4875
|
+
* Interceptor for defineProperty requests on an object.
|
4876
|
+
*
|
4877
|
+
* Use `info.GetReturnValue()` to indicate whether the request was intercepted
|
4878
|
+
* or not. If the definer successfully intercepts the request, i.e., if the
|
4879
|
+
* request should not be further executed, call
|
4880
|
+
* `info.GetReturnValue().Set(value)`. If the definer
|
4881
|
+
* did not intercept the request, i.e., if the request should be handled as
|
4882
|
+
* if no interceptor is present, do not not call `Set()`.
|
4883
|
+
*
|
4884
|
+
* \param property The name of the property for which the request was
|
4885
|
+
* intercepted.
|
4886
|
+
* \param desc The property descriptor which is used to define the
|
4887
|
+
* property if the request is not intercepted.
|
4888
|
+
* \param info Information about the intercepted request, such as
|
4889
|
+
* isolate, receiver, return value, or whether running in `'use strict'` mode.
|
4890
|
+
* See `PropertyCallbackInfo`.
|
4891
|
+
*
|
4892
|
+
* See also `ObjectTemplate::SetHandler`.
|
4893
|
+
*/
|
4894
|
+
typedef void (*GenericNamedPropertyDefinerCallback)(
|
4895
|
+
Local<Name> property, const PropertyDescriptor& desc,
|
4896
|
+
const PropertyCallbackInfo<Value>& info);
|
4323
4897
|
|
4324
4898
|
/**
|
4325
|
-
*
|
4326
|
-
*
|
4899
|
+
* Interceptor for getOwnPropertyDescriptor requests on an object.
|
4900
|
+
*
|
4901
|
+
* Use `info.GetReturnValue().Set()` to set the return value of the
|
4902
|
+
* intercepted request. The return value must be an object that
|
4903
|
+
* can be converted to a PropertyDescriptor, e.g., a `v8::value` returned from
|
4904
|
+
* `v8::Object::getOwnPropertyDescriptor`.
|
4905
|
+
*
|
4906
|
+
* \param property The name of the property for which the request was
|
4907
|
+
* intercepted.
|
4908
|
+
* \info Information about the intercepted request, such as
|
4909
|
+
* isolate, receiver, return value, or whether running in `'use strict'` mode.
|
4910
|
+
* See `PropertyCallbackInfo`.
|
4911
|
+
*
|
4912
|
+
* \note If GetOwnPropertyDescriptor is intercepted, it will
|
4913
|
+
* always return true, i.e., indicate that the property was found.
|
4914
|
+
*
|
4915
|
+
* See also `ObjectTemplate::SetHandler`.
|
4916
|
+
*/
|
4917
|
+
typedef void (*GenericNamedPropertyDescriptorCallback)(
|
4918
|
+
Local<Name> property, const PropertyCallbackInfo<Value>& info);
|
4919
|
+
|
4920
|
+
/**
|
4921
|
+
* See `v8::GenericNamedPropertyGetterCallback`.
|
4327
4922
|
*/
|
4328
4923
|
typedef void (*IndexedPropertyGetterCallback)(
|
4329
4924
|
uint32_t index,
|
4330
4925
|
const PropertyCallbackInfo<Value>& info);
|
4331
4926
|
|
4332
|
-
|
4333
|
-
|
4334
|
-
* Returns the value if the setter intercepts the request.
|
4335
|
-
* Otherwise, returns an empty handle.
|
4927
|
+
/**
|
4928
|
+
* See `v8::GenericNamedPropertySetterCallback`.
|
4336
4929
|
*/
|
4337
4930
|
typedef void (*IndexedPropertySetterCallback)(
|
4338
4931
|
uint32_t index,
|
4339
4932
|
Local<Value> value,
|
4340
4933
|
const PropertyCallbackInfo<Value>& info);
|
4341
4934
|
|
4342
|
-
|
4343
4935
|
/**
|
4344
|
-
*
|
4345
|
-
* The result is an integer encoding property attributes.
|
4936
|
+
* See `v8::GenericNamedPropertyQueryCallback`.
|
4346
4937
|
*/
|
4347
4938
|
typedef void (*IndexedPropertyQueryCallback)(
|
4348
4939
|
uint32_t index,
|
4349
4940
|
const PropertyCallbackInfo<Integer>& info);
|
4350
4941
|
|
4351
|
-
|
4352
4942
|
/**
|
4353
|
-
*
|
4354
|
-
* The return value is true if the property could be deleted and false
|
4355
|
-
* otherwise.
|
4943
|
+
* See `v8::GenericNamedPropertyDeleterCallback`.
|
4356
4944
|
*/
|
4357
4945
|
typedef void (*IndexedPropertyDeleterCallback)(
|
4358
4946
|
uint32_t index,
|
4359
4947
|
const PropertyCallbackInfo<Boolean>& info);
|
4360
4948
|
|
4361
|
-
|
4362
4949
|
/**
|
4363
|
-
*
|
4364
|
-
* indexed property getter intercepts.
|
4950
|
+
* See `v8::GenericNamedPropertyEnumeratorCallback`.
|
4365
4951
|
*/
|
4366
4952
|
typedef void (*IndexedPropertyEnumeratorCallback)(
|
4367
4953
|
const PropertyCallbackInfo<Array>& info);
|
4368
4954
|
|
4955
|
+
/**
|
4956
|
+
* See `v8::GenericNamedPropertyDefinerCallback`.
|
4957
|
+
*/
|
4958
|
+
typedef void (*IndexedPropertyDefinerCallback)(
|
4959
|
+
uint32_t index, const PropertyDescriptor& desc,
|
4960
|
+
const PropertyCallbackInfo<Value>& info);
|
4961
|
+
|
4962
|
+
/**
|
4963
|
+
* See `v8::GenericNamedPropertyDescriptorCallback`.
|
4964
|
+
*/
|
4965
|
+
typedef void (*IndexedPropertyDescriptorCallback)(
|
4966
|
+
uint32_t index, const PropertyCallbackInfo<Value>& info);
|
4369
4967
|
|
4370
4968
|
/**
|
4371
4969
|
* Access type specification.
|
@@ -4396,7 +4994,7 @@ typedef bool (*AccessCheckCallback)(Local<Context> accessing_context,
|
|
4396
4994
|
* preferred.
|
4397
4995
|
*
|
4398
4996
|
* Any modification of a FunctionTemplate after first instantiation will trigger
|
4399
|
-
*a crash.
|
4997
|
+
* a crash.
|
4400
4998
|
*
|
4401
4999
|
* A FunctionTemplate can have properties, these properties are added to the
|
4402
5000
|
* function object when it is created.
|
@@ -4412,17 +5010,21 @@ typedef bool (*AccessCheckCallback)(Local<Context> accessing_context,
|
|
4412
5010
|
* The following example shows how to use a FunctionTemplate:
|
4413
5011
|
*
|
4414
5012
|
* \code
|
4415
|
-
* v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New();
|
4416
|
-
* t->Set("func_property", v8::Number::New(1));
|
5013
|
+
* v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate);
|
5014
|
+
* t->Set(isolate, "func_property", v8::Number::New(isolate, 1));
|
4417
5015
|
*
|
4418
5016
|
* v8::Local<v8::Template> proto_t = t->PrototypeTemplate();
|
4419
|
-
* proto_t->Set(
|
4420
|
-
*
|
5017
|
+
* proto_t->Set(isolate,
|
5018
|
+
* "proto_method",
|
5019
|
+
* v8::FunctionTemplate::New(isolate, InvokeCallback));
|
5020
|
+
* proto_t->Set(isolate, "proto_const", v8::Number::New(isolate, 2));
|
4421
5021
|
*
|
4422
5022
|
* v8::Local<v8::ObjectTemplate> instance_t = t->InstanceTemplate();
|
4423
|
-
* instance_t->SetAccessor("instance_accessor",
|
4424
|
-
*
|
4425
|
-
* instance_t->
|
5023
|
+
* instance_t->SetAccessor(String::NewFromUtf8(isolate, "instance_accessor"),
|
5024
|
+
* InstanceAccessorCallback);
|
5025
|
+
* instance_t->SetNamedPropertyHandler(PropertyHandlerCallback);
|
5026
|
+
* instance_t->Set(String::NewFromUtf8(isolate, "instance_property"),
|
5027
|
+
* Number::New(isolate, 3));
|
4426
5028
|
*
|
4427
5029
|
* v8::Local<v8::Function> function = t->GetFunction();
|
4428
5030
|
* v8::Local<v8::Object> instance = function->NewInstance();
|
@@ -4492,7 +5094,8 @@ class V8_EXPORT FunctionTemplate : public Template {
|
|
4492
5094
|
ConstructorBehavior behavior = ConstructorBehavior::kAllow);
|
4493
5095
|
|
4494
5096
|
/** Get a template included in the snapshot by index. */
|
4495
|
-
static
|
5097
|
+
static MaybeLocal<FunctionTemplate> FromSnapshot(Isolate* isolate,
|
5098
|
+
size_t index);
|
4496
5099
|
|
4497
5100
|
/**
|
4498
5101
|
* Creates a function template with a fast handler. If a fast handler is set,
|
@@ -4504,11 +5107,28 @@ class V8_EXPORT FunctionTemplate : public Template {
|
|
4504
5107
|
Local<Value> data = Local<Value>(),
|
4505
5108
|
Local<Signature> signature = Local<Signature>(), int length = 0);
|
4506
5109
|
|
5110
|
+
/**
|
5111
|
+
* Creates a function template backed/cached by a private property.
|
5112
|
+
*/
|
5113
|
+
static Local<FunctionTemplate> NewWithCache(
|
5114
|
+
Isolate* isolate, FunctionCallback callback,
|
5115
|
+
Local<Private> cache_property, Local<Value> data = Local<Value>(),
|
5116
|
+
Local<Signature> signature = Local<Signature>(), int length = 0);
|
5117
|
+
|
4507
5118
|
/** Returns the unique function instance in the current execution context.*/
|
4508
5119
|
V8_DEPRECATE_SOON("Use maybe version", Local<Function> GetFunction());
|
4509
5120
|
V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
|
4510
5121
|
Local<Context> context);
|
4511
5122
|
|
5123
|
+
/**
|
5124
|
+
* Similar to Context::NewRemoteContext, this creates an instance that
|
5125
|
+
* isn't backed by an actual object.
|
5126
|
+
*
|
5127
|
+
* The InstanceTemplate of this FunctionTemplate must have access checks with
|
5128
|
+
* handlers installed.
|
5129
|
+
*/
|
5130
|
+
V8_WARN_UNUSED_RESULT MaybeLocal<Object> NewRemoteInstance();
|
5131
|
+
|
4512
5132
|
/**
|
4513
5133
|
* Set the call-handler callback for a FunctionTemplate. This
|
4514
5134
|
* callback is called whenever the function created from this
|
@@ -4524,7 +5144,11 @@ class V8_EXPORT FunctionTemplate : public Template {
|
|
4524
5144
|
/** Get the InstanceTemplate. */
|
4525
5145
|
Local<ObjectTemplate> InstanceTemplate();
|
4526
5146
|
|
4527
|
-
/**
|
5147
|
+
/**
|
5148
|
+
* Causes the function template to inherit from a parent function template.
|
5149
|
+
* This means the the function's prototype.__proto__ is set to the parent
|
5150
|
+
* function's prototype.
|
5151
|
+
**/
|
4528
5152
|
void Inherit(Local<FunctionTemplate> parent);
|
4529
5153
|
|
4530
5154
|
/**
|
@@ -4533,6 +5157,14 @@ class V8_EXPORT FunctionTemplate : public Template {
|
|
4533
5157
|
*/
|
4534
5158
|
Local<ObjectTemplate> PrototypeTemplate();
|
4535
5159
|
|
5160
|
+
/**
|
5161
|
+
* A PrototypeProviderTemplate is another function template whose prototype
|
5162
|
+
* property is used for this template. This is mutually exclusive with setting
|
5163
|
+
* a prototype template indirectly by calling PrototypeTemplate() or using
|
5164
|
+
* Inherit().
|
5165
|
+
**/
|
5166
|
+
void SetPrototypeProviderTemplate(Local<FunctionTemplate> prototype_provider);
|
5167
|
+
|
4536
5168
|
/**
|
4537
5169
|
* Set the class name of the FunctionTemplate. This is used for
|
4538
5170
|
* printing objects created with the function created from the
|
@@ -4585,23 +5217,37 @@ class V8_EXPORT FunctionTemplate : public Template {
|
|
4585
5217
|
friend class ObjectTemplate;
|
4586
5218
|
};
|
4587
5219
|
|
4588
|
-
|
5220
|
+
/**
|
5221
|
+
* Configuration flags for v8::NamedPropertyHandlerConfiguration or
|
5222
|
+
* v8::IndexedPropertyHandlerConfiguration.
|
5223
|
+
*/
|
4589
5224
|
enum class PropertyHandlerFlags {
|
5225
|
+
/**
|
5226
|
+
* None.
|
5227
|
+
*/
|
4590
5228
|
kNone = 0,
|
4591
|
-
|
5229
|
+
|
5230
|
+
/**
|
5231
|
+
* See ALL_CAN_READ above.
|
5232
|
+
*/
|
4592
5233
|
kAllCanRead = 1,
|
4593
|
-
|
4594
|
-
|
5234
|
+
|
5235
|
+
/** Will not call into interceptor for properties on the receiver or prototype
|
5236
|
+
* chain, i.e., only call into interceptor for properties that do not exist.
|
5237
|
+
* Currently only valid for named interceptors.
|
5238
|
+
*/
|
4595
5239
|
kNonMasking = 1 << 1,
|
4596
|
-
|
4597
|
-
|
5240
|
+
|
5241
|
+
/**
|
5242
|
+
* Will not call into interceptor for symbol lookup. Only meaningful for
|
5243
|
+
* named interceptors.
|
5244
|
+
*/
|
4598
5245
|
kOnlyInterceptStrings = 1 << 2,
|
4599
5246
|
};
|
4600
5247
|
|
4601
|
-
|
4602
5248
|
struct NamedPropertyHandlerConfiguration {
|
4603
5249
|
NamedPropertyHandlerConfiguration(
|
4604
|
-
/** Note: getter is required
|
5250
|
+
/** Note: getter is required */
|
4605
5251
|
GenericNamedPropertyGetterCallback getter = 0,
|
4606
5252
|
GenericNamedPropertySetterCallback setter = 0,
|
4607
5253
|
GenericNamedPropertyQueryCallback query = 0,
|
@@ -4614,6 +5260,27 @@ struct NamedPropertyHandlerConfiguration {
|
|
4614
5260
|
query(query),
|
4615
5261
|
deleter(deleter),
|
4616
5262
|
enumerator(enumerator),
|
5263
|
+
definer(0),
|
5264
|
+
descriptor(0),
|
5265
|
+
data(data),
|
5266
|
+
flags(flags) {}
|
5267
|
+
|
5268
|
+
NamedPropertyHandlerConfiguration(
|
5269
|
+
GenericNamedPropertyGetterCallback getter,
|
5270
|
+
GenericNamedPropertySetterCallback setter,
|
5271
|
+
GenericNamedPropertyDescriptorCallback descriptor,
|
5272
|
+
GenericNamedPropertyDeleterCallback deleter,
|
5273
|
+
GenericNamedPropertyEnumeratorCallback enumerator,
|
5274
|
+
GenericNamedPropertyDefinerCallback definer,
|
5275
|
+
Local<Value> data = Local<Value>(),
|
5276
|
+
PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
|
5277
|
+
: getter(getter),
|
5278
|
+
setter(setter),
|
5279
|
+
query(0),
|
5280
|
+
deleter(deleter),
|
5281
|
+
enumerator(enumerator),
|
5282
|
+
definer(definer),
|
5283
|
+
descriptor(descriptor),
|
4617
5284
|
data(data),
|
4618
5285
|
flags(flags) {}
|
4619
5286
|
|
@@ -4622,6 +5289,8 @@ struct NamedPropertyHandlerConfiguration {
|
|
4622
5289
|
GenericNamedPropertyQueryCallback query;
|
4623
5290
|
GenericNamedPropertyDeleterCallback deleter;
|
4624
5291
|
GenericNamedPropertyEnumeratorCallback enumerator;
|
5292
|
+
GenericNamedPropertyDefinerCallback definer;
|
5293
|
+
GenericNamedPropertyDescriptorCallback descriptor;
|
4625
5294
|
Local<Value> data;
|
4626
5295
|
PropertyHandlerFlags flags;
|
4627
5296
|
};
|
@@ -4629,7 +5298,7 @@ struct NamedPropertyHandlerConfiguration {
|
|
4629
5298
|
|
4630
5299
|
struct IndexedPropertyHandlerConfiguration {
|
4631
5300
|
IndexedPropertyHandlerConfiguration(
|
4632
|
-
/** Note: getter is required
|
5301
|
+
/** Note: getter is required */
|
4633
5302
|
IndexedPropertyGetterCallback getter = 0,
|
4634
5303
|
IndexedPropertySetterCallback setter = 0,
|
4635
5304
|
IndexedPropertyQueryCallback query = 0,
|
@@ -4642,6 +5311,27 @@ struct IndexedPropertyHandlerConfiguration {
|
|
4642
5311
|
query(query),
|
4643
5312
|
deleter(deleter),
|
4644
5313
|
enumerator(enumerator),
|
5314
|
+
definer(0),
|
5315
|
+
descriptor(0),
|
5316
|
+
data(data),
|
5317
|
+
flags(flags) {}
|
5318
|
+
|
5319
|
+
IndexedPropertyHandlerConfiguration(
|
5320
|
+
IndexedPropertyGetterCallback getter,
|
5321
|
+
IndexedPropertySetterCallback setter,
|
5322
|
+
IndexedPropertyDescriptorCallback descriptor,
|
5323
|
+
IndexedPropertyDeleterCallback deleter,
|
5324
|
+
IndexedPropertyEnumeratorCallback enumerator,
|
5325
|
+
IndexedPropertyDefinerCallback definer,
|
5326
|
+
Local<Value> data = Local<Value>(),
|
5327
|
+
PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
|
5328
|
+
: getter(getter),
|
5329
|
+
setter(setter),
|
5330
|
+
query(0),
|
5331
|
+
deleter(deleter),
|
5332
|
+
enumerator(enumerator),
|
5333
|
+
definer(definer),
|
5334
|
+
descriptor(descriptor),
|
4645
5335
|
data(data),
|
4646
5336
|
flags(flags) {}
|
4647
5337
|
|
@@ -4650,6 +5340,8 @@ struct IndexedPropertyHandlerConfiguration {
|
|
4650
5340
|
IndexedPropertyQueryCallback query;
|
4651
5341
|
IndexedPropertyDeleterCallback deleter;
|
4652
5342
|
IndexedPropertyEnumeratorCallback enumerator;
|
5343
|
+
IndexedPropertyDefinerCallback definer;
|
5344
|
+
IndexedPropertyDescriptorCallback descriptor;
|
4653
5345
|
Local<Value> data;
|
4654
5346
|
PropertyHandlerFlags flags;
|
4655
5347
|
};
|
@@ -4670,7 +5362,8 @@ class V8_EXPORT ObjectTemplate : public Template {
|
|
4670
5362
|
static V8_DEPRECATED("Use isolate version", Local<ObjectTemplate> New());
|
4671
5363
|
|
4672
5364
|
/** Get a template included in the snapshot by index. */
|
4673
|
-
static
|
5365
|
+
static MaybeLocal<ObjectTemplate> FromSnapshot(Isolate* isolate,
|
5366
|
+
size_t index);
|
4674
5367
|
|
4675
5368
|
/** Creates a new instance of this template.*/
|
4676
5369
|
V8_DEPRECATE_SOON("Use maybe version", Local<Object> NewInstance());
|
@@ -4723,8 +5416,10 @@ class V8_EXPORT ObjectTemplate : public Template {
|
|
4723
5416
|
* from this object template, the provided callback is invoked instead of
|
4724
5417
|
* accessing the property directly on the JavaScript object.
|
4725
5418
|
*
|
4726
|
-
*
|
4727
|
-
* symbol-named properties as well as
|
5419
|
+
* SetNamedPropertyHandler() is different from SetHandler(), in
|
5420
|
+
* that the latter can intercept symbol-named properties as well as
|
5421
|
+
* string-named properties when called with a
|
5422
|
+
* NamedPropertyHandlerConfiguration. New code should use SetHandler().
|
4728
5423
|
*
|
4729
5424
|
* \param getter The callback to invoke when getting a property.
|
4730
5425
|
* \param setter The callback to invoke when setting a property.
|
@@ -4743,6 +5438,18 @@ class V8_EXPORT ObjectTemplate : public Template {
|
|
4743
5438
|
NamedPropertyDeleterCallback deleter = 0,
|
4744
5439
|
NamedPropertyEnumeratorCallback enumerator = 0,
|
4745
5440
|
Local<Value> data = Local<Value>());
|
5441
|
+
|
5442
|
+
/**
|
5443
|
+
* Sets a named property handler on the object template.
|
5444
|
+
*
|
5445
|
+
* Whenever a property whose name is a string or a symbol is accessed on
|
5446
|
+
* objects created from this object template, the provided callback is
|
5447
|
+
* invoked instead of accessing the property directly on the JavaScript
|
5448
|
+
* object.
|
5449
|
+
*
|
5450
|
+
* @param configuration The NamedPropertyHandlerConfiguration that defines the
|
5451
|
+
* callbacks to invoke when accessing a property.
|
5452
|
+
*/
|
4746
5453
|
void SetHandler(const NamedPropertyHandlerConfiguration& configuration);
|
4747
5454
|
|
4748
5455
|
/**
|
@@ -4761,7 +5468,6 @@ class V8_EXPORT ObjectTemplate : public Template {
|
|
4761
5468
|
* \param data A piece of data that will be passed to the callbacks
|
4762
5469
|
* whenever they are invoked.
|
4763
5470
|
*/
|
4764
|
-
void SetHandler(const IndexedPropertyHandlerConfiguration& configuration);
|
4765
5471
|
// TODO(dcarney): deprecate
|
4766
5472
|
void SetIndexedPropertyHandler(
|
4767
5473
|
IndexedPropertyGetterCallback getter,
|
@@ -4773,6 +5479,19 @@ class V8_EXPORT ObjectTemplate : public Template {
|
|
4773
5479
|
SetHandler(IndexedPropertyHandlerConfiguration(getter, setter, query,
|
4774
5480
|
deleter, enumerator, data));
|
4775
5481
|
}
|
5482
|
+
|
5483
|
+
/**
|
5484
|
+
* Sets an indexed property handler on the object template.
|
5485
|
+
*
|
5486
|
+
* Whenever an indexed property is accessed on objects created from
|
5487
|
+
* this object template, the provided callback is invoked instead of
|
5488
|
+
* accessing the property directly on the JavaScript object.
|
5489
|
+
*
|
5490
|
+
* @param configuration The IndexedPropertyHandlerConfiguration that defines
|
5491
|
+
* the callbacks to invoke when accessing a property.
|
5492
|
+
*/
|
5493
|
+
void SetHandler(const IndexedPropertyHandlerConfiguration& configuration);
|
5494
|
+
|
4776
5495
|
/**
|
4777
5496
|
* Sets the callback to be used when calling instances created from
|
4778
5497
|
* this template as a function. If no callback is set, instances
|
@@ -4827,6 +5546,17 @@ class V8_EXPORT ObjectTemplate : public Template {
|
|
4827
5546
|
*/
|
4828
5547
|
void SetInternalFieldCount(int value);
|
4829
5548
|
|
5549
|
+
/**
|
5550
|
+
* Returns true if the object will be an immutable prototype exotic object.
|
5551
|
+
*/
|
5552
|
+
bool IsImmutableProto();
|
5553
|
+
|
5554
|
+
/**
|
5555
|
+
* Makes the ObjectTempate for an immutable prototype exotic object, with an
|
5556
|
+
* immutable __proto__.
|
5557
|
+
*/
|
5558
|
+
void SetImmutableProto();
|
5559
|
+
|
4830
5560
|
private:
|
4831
5561
|
ObjectTemplate();
|
4832
5562
|
static Local<ObjectTemplate> New(internal::Isolate* isolate,
|
@@ -4893,9 +5623,9 @@ class V8_EXPORT Extension { // NOLINT
|
|
4893
5623
|
const char** deps = 0,
|
4894
5624
|
int source_length = -1);
|
4895
5625
|
virtual ~Extension() { }
|
4896
|
-
virtual
|
4897
|
-
|
4898
|
-
return
|
5626
|
+
virtual Local<FunctionTemplate> GetNativeFunctionTemplate(
|
5627
|
+
Isolate* isolate, Local<String> name) {
|
5628
|
+
return Local<FunctionTemplate>();
|
4899
5629
|
}
|
4900
5630
|
|
4901
5631
|
const char* name() const { return name_; }
|
@@ -4907,6 +5637,10 @@ class V8_EXPORT Extension { // NOLINT
|
|
4907
5637
|
void set_auto_enable(bool value) { auto_enable_ = value; }
|
4908
5638
|
bool auto_enable() { return auto_enable_; }
|
4909
5639
|
|
5640
|
+
// Disallow copying and assigning.
|
5641
|
+
Extension(const Extension&) = delete;
|
5642
|
+
void operator=(const Extension&) = delete;
|
5643
|
+
|
4910
5644
|
private:
|
4911
5645
|
const char* name_;
|
4912
5646
|
size_t source_length_; // expected to initialize before source_
|
@@ -4914,10 +5648,6 @@ class V8_EXPORT Extension { // NOLINT
|
|
4914
5648
|
int dep_count_;
|
4915
5649
|
const char** deps_;
|
4916
5650
|
bool auto_enable_;
|
4917
|
-
|
4918
|
-
// Disallow copying and assigning.
|
4919
|
-
Extension(const Extension&);
|
4920
|
-
void operator=(const Extension&);
|
4921
5651
|
};
|
4922
5652
|
|
4923
5653
|
|
@@ -4978,6 +5708,10 @@ class V8_EXPORT ResourceConstraints {
|
|
4978
5708
|
void set_code_range_size(size_t limit_in_mb) {
|
4979
5709
|
code_range_size_ = limit_in_mb;
|
4980
5710
|
}
|
5711
|
+
size_t max_zone_pool_size() const { return max_zone_pool_size_; }
|
5712
|
+
void set_max_zone_pool_size(const size_t bytes) {
|
5713
|
+
max_zone_pool_size_ = bytes;
|
5714
|
+
}
|
4981
5715
|
|
4982
5716
|
private:
|
4983
5717
|
int max_semi_space_size_;
|
@@ -4985,6 +5719,7 @@ class V8_EXPORT ResourceConstraints {
|
|
4985
5719
|
int max_executable_size_;
|
4986
5720
|
uint32_t* stack_limit_;
|
4987
5721
|
size_t code_range_size_;
|
5722
|
+
size_t max_zone_pool_size_;
|
4988
5723
|
};
|
4989
5724
|
|
4990
5725
|
|
@@ -4993,8 +5728,9 @@ class V8_EXPORT ResourceConstraints {
|
|
4993
5728
|
|
4994
5729
|
typedef void (*FatalErrorCallback)(const char* location, const char* message);
|
4995
5730
|
|
5731
|
+
typedef void (*OOMErrorCallback)(const char* location, bool is_heap_oom);
|
4996
5732
|
|
4997
|
-
typedef void (*MessageCallback)(Local<Message> message, Local<Value>
|
5733
|
+
typedef void (*MessageCallback)(Local<Message> message, Local<Value> data);
|
4998
5734
|
|
4999
5735
|
// --- Tracing ---
|
5000
5736
|
|
@@ -5063,6 +5799,27 @@ typedef void (*BeforeCallEnteredCallback)(Isolate*);
|
|
5063
5799
|
typedef void (*CallCompletedCallback)(Isolate*);
|
5064
5800
|
typedef void (*DeprecatedCallCompletedCallback)();
|
5065
5801
|
|
5802
|
+
/**
|
5803
|
+
* PromiseHook with type kInit is called when a new promise is
|
5804
|
+
* created. When a new promise is created as part of the chain in the
|
5805
|
+
* case of Promise.then or in the intermediate promises created by
|
5806
|
+
* Promise.{race, all}/AsyncFunctionAwait, we pass the parent promise
|
5807
|
+
* otherwise we pass undefined.
|
5808
|
+
*
|
5809
|
+
* PromiseHook with type kResolve is called at the beginning of
|
5810
|
+
* resolve or reject function defined by CreateResolvingFunctions.
|
5811
|
+
*
|
5812
|
+
* PromiseHook with type kBefore is called at the beginning of the
|
5813
|
+
* PromiseReactionJob.
|
5814
|
+
*
|
5815
|
+
* PromiseHook with type kAfter is called right at the end of the
|
5816
|
+
* PromiseReactionJob.
|
5817
|
+
*/
|
5818
|
+
enum class PromiseHookType { kInit, kResolve, kBefore, kAfter };
|
5819
|
+
|
5820
|
+
typedef void (*PromiseHook)(PromiseHookType type, Local<Promise> promise,
|
5821
|
+
Local<Value> parent);
|
5822
|
+
|
5066
5823
|
// --- Promise Reject Callback ---
|
5067
5824
|
enum PromiseRejectEvent {
|
5068
5825
|
kPromiseRejectWithNoHandler = 0,
|
@@ -5142,13 +5899,13 @@ class V8_EXPORT MicrotasksScope {
|
|
5142
5899
|
*/
|
5143
5900
|
static bool IsRunningMicrotasks(Isolate* isolate);
|
5144
5901
|
|
5902
|
+
// Prevent copying.
|
5903
|
+
MicrotasksScope(const MicrotasksScope&) = delete;
|
5904
|
+
MicrotasksScope& operator=(const MicrotasksScope&) = delete;
|
5905
|
+
|
5145
5906
|
private:
|
5146
5907
|
internal::Isolate* const isolate_;
|
5147
5908
|
bool run_;
|
5148
|
-
|
5149
|
-
// Prevent copying.
|
5150
|
-
MicrotasksScope(const MicrotasksScope&);
|
5151
|
-
MicrotasksScope& operator=(const MicrotasksScope&);
|
5152
5909
|
};
|
5153
5910
|
|
5154
5911
|
|
@@ -5165,6 +5922,21 @@ typedef void (*FailedAccessCheckCallback)(Local<Object> target,
|
|
5165
5922
|
*/
|
5166
5923
|
typedef bool (*AllowCodeGenerationFromStringsCallback)(Local<Context> context);
|
5167
5924
|
|
5925
|
+
// --- WASM compilation callbacks ---
|
5926
|
+
|
5927
|
+
/**
|
5928
|
+
* Callback to check if a buffer source may be compiled to WASM, given
|
5929
|
+
* the compilation is attempted as a promise or not.
|
5930
|
+
*/
|
5931
|
+
|
5932
|
+
typedef bool (*AllowWasmCompileCallback)(Isolate* isolate, Local<Value> source,
|
5933
|
+
bool as_promise);
|
5934
|
+
|
5935
|
+
typedef bool (*AllowWasmInstantiateCallback)(Isolate* isolate,
|
5936
|
+
Local<Value> module_or_bytes,
|
5937
|
+
MaybeLocal<Value> ffi,
|
5938
|
+
bool as_promise);
|
5939
|
+
|
5168
5940
|
// --- Garbage Collection Callbacks ---
|
5169
5941
|
|
5170
5942
|
/**
|
@@ -5201,6 +5973,7 @@ enum GCCallbackFlags {
|
|
5201
5973
|
kGCCallbackFlagForced = 1 << 2,
|
5202
5974
|
kGCCallbackFlagSynchronousPhantomCallbackProcessing = 1 << 3,
|
5203
5975
|
kGCCallbackFlagCollectAllAvailableGarbage = 1 << 4,
|
5976
|
+
kGCCallbackFlagCollectAllExternalMemory = 1 << 5,
|
5204
5977
|
};
|
5205
5978
|
|
5206
5979
|
typedef void (*GCCallback)(GCType type, GCCallbackFlags flags);
|
@@ -5224,6 +5997,7 @@ class V8_EXPORT HeapStatistics {
|
|
5224
5997
|
size_t used_heap_size() { return used_heap_size_; }
|
5225
5998
|
size_t heap_size_limit() { return heap_size_limit_; }
|
5226
5999
|
size_t malloced_memory() { return malloced_memory_; }
|
6000
|
+
size_t peak_malloced_memory() { return peak_malloced_memory_; }
|
5227
6001
|
size_t does_zap_garbage() { return does_zap_garbage_; }
|
5228
6002
|
|
5229
6003
|
private:
|
@@ -5234,6 +6008,7 @@ class V8_EXPORT HeapStatistics {
|
|
5234
6008
|
size_t used_heap_size_;
|
5235
6009
|
size_t heap_size_limit_;
|
5236
6010
|
size_t malloced_memory_;
|
6011
|
+
size_t peak_malloced_memory_;
|
5237
6012
|
bool does_zap_garbage_;
|
5238
6013
|
|
5239
6014
|
friend class V8;
|
@@ -5378,16 +6153,13 @@ struct JitCodeEvent {
|
|
5378
6153
|
* profile/evaluate-performance/rail
|
5379
6154
|
*/
|
5380
6155
|
enum RAILMode {
|
5381
|
-
// Default performance mode: V8 will optimize for both latency and
|
5382
|
-
// throughput in this mode.
|
5383
|
-
PERFORMANCE_DEFAULT,
|
5384
6156
|
// Response performance mode: In this mode very low virtual machine latency
|
5385
6157
|
// is provided. V8 will try to avoid JavaScript execution interruptions.
|
5386
6158
|
// Throughput may be throttled.
|
5387
6159
|
PERFORMANCE_RESPONSE,
|
5388
6160
|
// Animation performance mode: In this mode low virtual machine latency is
|
5389
6161
|
// provided. V8 will try to avoid as many JavaScript execution interruptions
|
5390
|
-
// as possible. Throughput may be throttled
|
6162
|
+
// as possible. Throughput may be throttled. This is the default mode.
|
5391
6163
|
PERFORMANCE_ANIMATION,
|
5392
6164
|
// Idle performance mode: The embedder is idle. V8 can complete deferred work
|
5393
6165
|
// in this mode.
|
@@ -5446,11 +6218,11 @@ class V8_EXPORT PersistentHandleVisitor { // NOLINT
|
|
5446
6218
|
enum class MemoryPressureLevel { kNone, kModerate, kCritical };
|
5447
6219
|
|
5448
6220
|
/**
|
5449
|
-
* Interface for tracing through the embedder heap. During
|
6221
|
+
* Interface for tracing through the embedder heap. During a v8 garbage
|
5450
6222
|
* collection, v8 collects hidden fields of all potential wrappers, and at the
|
5451
6223
|
* end of its marking phase iterates the collection and asks the embedder to
|
5452
|
-
* trace through its heap and
|
5453
|
-
*
|
6224
|
+
* trace through its heap and use reporter to report each JavaScript object
|
6225
|
+
* reachable from any of the given wrappers.
|
5454
6226
|
*
|
5455
6227
|
* Before the first call to the TraceWrappersFrom function TracePrologue will be
|
5456
6228
|
* called. When the garbage collection cycle is finished, TraceEpilogue will be
|
@@ -5459,54 +6231,100 @@ enum class MemoryPressureLevel { kNone, kModerate, kCritical };
|
|
5459
6231
|
class V8_EXPORT EmbedderHeapTracer {
|
5460
6232
|
public:
|
5461
6233
|
enum ForceCompletionAction { FORCE_COMPLETION, DO_NOT_FORCE_COMPLETION };
|
6234
|
+
|
5462
6235
|
struct AdvanceTracingActions {
|
5463
6236
|
explicit AdvanceTracingActions(ForceCompletionAction force_completion_)
|
5464
6237
|
: force_completion(force_completion_) {}
|
5465
6238
|
|
5466
6239
|
ForceCompletionAction force_completion;
|
5467
6240
|
};
|
6241
|
+
|
5468
6242
|
/**
|
5469
|
-
*
|
5470
|
-
*
|
5471
|
-
*
|
6243
|
+
* Called by v8 to register internal fields of found wrappers.
|
6244
|
+
*
|
6245
|
+
* The embedder is expected to store them somewhere and trace reachable
|
6246
|
+
* wrappers from them when called through |AdvanceTracing|.
|
5472
6247
|
*/
|
5473
6248
|
virtual void RegisterV8References(
|
5474
6249
|
const std::vector<std::pair<void*, void*> >& internal_fields) = 0;
|
6250
|
+
|
5475
6251
|
/**
|
5476
|
-
*
|
6252
|
+
* Called at the beginning of a GC cycle.
|
5477
6253
|
*/
|
5478
6254
|
virtual void TracePrologue() = 0;
|
6255
|
+
|
5479
6256
|
/**
|
5480
|
-
*
|
5481
|
-
*
|
5482
|
-
*
|
5483
|
-
*
|
6257
|
+
* Called to to make a tracing step in the embedder.
|
6258
|
+
*
|
6259
|
+
* The embedder is expected to trace its heap starting from wrappers reported
|
6260
|
+
* by RegisterV8References method, and report back all reachable wrappers.
|
6261
|
+
* Furthermore, the embedder is expected to stop tracing by the given
|
6262
|
+
* deadline.
|
5484
6263
|
*
|
5485
6264
|
* Returns true if there is still work to do.
|
5486
6265
|
*/
|
5487
6266
|
virtual bool AdvanceTracing(double deadline_in_ms,
|
5488
6267
|
AdvanceTracingActions actions) = 0;
|
6268
|
+
|
5489
6269
|
/**
|
5490
|
-
*
|
5491
|
-
*
|
6270
|
+
* Called at the end of a GC cycle.
|
6271
|
+
*
|
6272
|
+
* Note that allocation is *not* allowed within |TraceEpilogue|.
|
5492
6273
|
*/
|
5493
6274
|
virtual void TraceEpilogue() = 0;
|
5494
6275
|
|
5495
6276
|
/**
|
5496
|
-
*
|
5497
|
-
* will follow
|
6277
|
+
* Called upon entering the final marking pause. No more incremental marking
|
6278
|
+
* steps will follow this call.
|
6279
|
+
*/
|
6280
|
+
virtual void EnterFinalPause() = 0;
|
6281
|
+
|
6282
|
+
/**
|
6283
|
+
* Called when tracing is aborted.
|
6284
|
+
*
|
6285
|
+
* The embedder is expected to throw away all intermediate data and reset to
|
6286
|
+
* the initial state.
|
5498
6287
|
*/
|
5499
|
-
virtual void
|
6288
|
+
virtual void AbortTracing() = 0;
|
5500
6289
|
|
5501
6290
|
/**
|
5502
|
-
*
|
6291
|
+
* Returns the number of wrappers that are still to be traced by the embedder.
|
5503
6292
|
*/
|
5504
|
-
virtual
|
6293
|
+
virtual size_t NumberOfWrappersToTrace() { return 0; }
|
5505
6294
|
|
5506
6295
|
protected:
|
5507
6296
|
virtual ~EmbedderHeapTracer() = default;
|
5508
6297
|
};
|
5509
6298
|
|
6299
|
+
/**
|
6300
|
+
* Callback and supporting data used in SnapshotCreator to implement embedder
|
6301
|
+
* logic to serialize internal fields.
|
6302
|
+
*/
|
6303
|
+
struct SerializeInternalFieldsCallback {
|
6304
|
+
typedef StartupData (*CallbackFunction)(Local<Object> holder, int index,
|
6305
|
+
void* data);
|
6306
|
+
SerializeInternalFieldsCallback(CallbackFunction function = nullptr,
|
6307
|
+
void* data_arg = nullptr)
|
6308
|
+
: callback(function), data(data_arg) {}
|
6309
|
+
CallbackFunction callback;
|
6310
|
+
void* data;
|
6311
|
+
};
|
6312
|
+
|
6313
|
+
/**
|
6314
|
+
* Callback and supporting data used to implement embedder logic to deserialize
|
6315
|
+
* internal fields.
|
6316
|
+
*/
|
6317
|
+
struct DeserializeInternalFieldsCallback {
|
6318
|
+
typedef void (*CallbackFunction)(Local<Object> holder, int index,
|
6319
|
+
StartupData payload, void* data);
|
6320
|
+
DeserializeInternalFieldsCallback(CallbackFunction function = nullptr,
|
6321
|
+
void* data_arg = nullptr)
|
6322
|
+
: callback(function), data(data_arg) {}
|
6323
|
+
void (*callback)(Local<Object> holder, int index, StartupData payload,
|
6324
|
+
void* data);
|
6325
|
+
void* data;
|
6326
|
+
};
|
6327
|
+
|
5510
6328
|
/**
|
5511
6329
|
* Isolate represents an isolated instance of the V8 engine. V8 isolates have
|
5512
6330
|
* completely separate states. Objects from one isolate must not be used in
|
@@ -5600,12 +6418,12 @@ class V8_EXPORT Isolate {
|
|
5600
6418
|
|
5601
6419
|
~Scope() { isolate_->Exit(); }
|
5602
6420
|
|
6421
|
+
// Prevent copying of Scope objects.
|
6422
|
+
Scope(const Scope&) = delete;
|
6423
|
+
Scope& operator=(const Scope&) = delete;
|
6424
|
+
|
5603
6425
|
private:
|
5604
6426
|
Isolate* const isolate_;
|
5605
|
-
|
5606
|
-
// Prevent copying of Scope objects.
|
5607
|
-
Scope(const Scope&);
|
5608
|
-
Scope& operator=(const Scope&);
|
5609
6427
|
};
|
5610
6428
|
|
5611
6429
|
|
@@ -5619,14 +6437,15 @@ class V8_EXPORT Isolate {
|
|
5619
6437
|
DisallowJavascriptExecutionScope(Isolate* isolate, OnFailure on_failure);
|
5620
6438
|
~DisallowJavascriptExecutionScope();
|
5621
6439
|
|
6440
|
+
// Prevent copying of Scope objects.
|
6441
|
+
DisallowJavascriptExecutionScope(const DisallowJavascriptExecutionScope&) =
|
6442
|
+
delete;
|
6443
|
+
DisallowJavascriptExecutionScope& operator=(
|
6444
|
+
const DisallowJavascriptExecutionScope&) = delete;
|
6445
|
+
|
5622
6446
|
private:
|
5623
6447
|
bool on_failure_;
|
5624
6448
|
void* internal_;
|
5625
|
-
|
5626
|
-
// Prevent copying of Scope objects.
|
5627
|
-
DisallowJavascriptExecutionScope(const DisallowJavascriptExecutionScope&);
|
5628
|
-
DisallowJavascriptExecutionScope& operator=(
|
5629
|
-
const DisallowJavascriptExecutionScope&);
|
5630
6449
|
};
|
5631
6450
|
|
5632
6451
|
|
@@ -5638,14 +6457,15 @@ class V8_EXPORT Isolate {
|
|
5638
6457
|
explicit AllowJavascriptExecutionScope(Isolate* isolate);
|
5639
6458
|
~AllowJavascriptExecutionScope();
|
5640
6459
|
|
6460
|
+
// Prevent copying of Scope objects.
|
6461
|
+
AllowJavascriptExecutionScope(const AllowJavascriptExecutionScope&) =
|
6462
|
+
delete;
|
6463
|
+
AllowJavascriptExecutionScope& operator=(
|
6464
|
+
const AllowJavascriptExecutionScope&) = delete;
|
6465
|
+
|
5641
6466
|
private:
|
5642
6467
|
void* internal_throws_;
|
5643
6468
|
void* internal_assert_;
|
5644
|
-
|
5645
|
-
// Prevent copying of Scope objects.
|
5646
|
-
AllowJavascriptExecutionScope(const AllowJavascriptExecutionScope&);
|
5647
|
-
AllowJavascriptExecutionScope& operator=(
|
5648
|
-
const AllowJavascriptExecutionScope&);
|
5649
6469
|
};
|
5650
6470
|
|
5651
6471
|
/**
|
@@ -5657,13 +6477,14 @@ class V8_EXPORT Isolate {
|
|
5657
6477
|
explicit SuppressMicrotaskExecutionScope(Isolate* isolate);
|
5658
6478
|
~SuppressMicrotaskExecutionScope();
|
5659
6479
|
|
5660
|
-
private:
|
5661
|
-
internal::Isolate* isolate_;
|
5662
|
-
|
5663
6480
|
// Prevent copying of Scope objects.
|
5664
|
-
SuppressMicrotaskExecutionScope(const SuppressMicrotaskExecutionScope&)
|
6481
|
+
SuppressMicrotaskExecutionScope(const SuppressMicrotaskExecutionScope&) =
|
6482
|
+
delete;
|
5665
6483
|
SuppressMicrotaskExecutionScope& operator=(
|
5666
|
-
const SuppressMicrotaskExecutionScope&);
|
6484
|
+
const SuppressMicrotaskExecutionScope&) = delete;
|
6485
|
+
|
6486
|
+
private:
|
6487
|
+
internal::Isolate* const isolate_;
|
5667
6488
|
};
|
5668
6489
|
|
5669
6490
|
/**
|
@@ -5716,12 +6537,26 @@ class V8_EXPORT Isolate {
|
|
5716
6537
|
kDecimalWithLeadingZeroInStrictMode = 32,
|
5717
6538
|
kLegacyDateParser = 33,
|
5718
6539
|
kDefineGetterOrSetterWouldThrow = 34,
|
6540
|
+
kFunctionConstructorReturnedUndefined = 35,
|
6541
|
+
kAssigmentExpressionLHSIsCallInSloppy = 36,
|
6542
|
+
kAssigmentExpressionLHSIsCallInStrict = 37,
|
6543
|
+
kPromiseConstructorReturnedUndefined = 38,
|
5719
6544
|
|
5720
6545
|
// If you add new values here, you'll also need to update Chromium's:
|
5721
6546
|
// UseCounter.h, V8PerIsolateData.cpp, histograms.xml
|
5722
6547
|
kUseCounterFeatureCount // This enum value must be last.
|
5723
6548
|
};
|
5724
6549
|
|
6550
|
+
enum MessageErrorLevel {
|
6551
|
+
kMessageLog = (1 << 0),
|
6552
|
+
kMessageDebug = (1 << 1),
|
6553
|
+
kMessageInfo = (1 << 2),
|
6554
|
+
kMessageError = (1 << 3),
|
6555
|
+
kMessageWarning = (1 << 4),
|
6556
|
+
kMessageAll = kMessageLog | kMessageDebug | kMessageInfo | kMessageError |
|
6557
|
+
kMessageWarning,
|
6558
|
+
};
|
6559
|
+
|
5725
6560
|
typedef void (*UseCounterCallback)(Isolate* isolate,
|
5726
6561
|
UseCounterFeature feature);
|
5727
6562
|
|
@@ -5916,7 +6751,8 @@ class V8_EXPORT Isolate {
|
|
5916
6751
|
* is initialized. It is the embedder's responsibility to stop all CPU
|
5917
6752
|
* profiling activities if it has started any.
|
5918
6753
|
*/
|
5919
|
-
CpuProfiler
|
6754
|
+
V8_DEPRECATE_SOON("CpuProfiler should be created with CpuProfiler::New call.",
|
6755
|
+
CpuProfiler* GetCpuProfiler());
|
5920
6756
|
|
5921
6757
|
/** Returns true if this isolate has a current context. */
|
5922
6758
|
bool InContext();
|
@@ -5959,8 +6795,10 @@ class V8_EXPORT Isolate {
|
|
5959
6795
|
* garbage collection types it is sufficient to provide object groups
|
5960
6796
|
* for partially dependent handles only.
|
5961
6797
|
*/
|
5962
|
-
template<typename T>
|
5963
|
-
|
6798
|
+
template <typename T>
|
6799
|
+
V8_DEPRECATE_SOON("Use EmbedderHeapTracer",
|
6800
|
+
void SetObjectGroupId(const Persistent<T>& object,
|
6801
|
+
UniqueId id));
|
5964
6802
|
|
5965
6803
|
/**
|
5966
6804
|
* Allows the host application to declare implicit references from an object
|
@@ -5969,8 +6807,10 @@ class V8_EXPORT Isolate {
|
|
5969
6807
|
* are removed. It is intended to be used in the before-garbage-collection
|
5970
6808
|
* callback function.
|
5971
6809
|
*/
|
5972
|
-
template<typename T>
|
5973
|
-
|
6810
|
+
template <typename T>
|
6811
|
+
V8_DEPRECATE_SOON("Use EmbedderHeapTracer",
|
6812
|
+
void SetReferenceFromGroup(UniqueId id,
|
6813
|
+
const Persistent<T>& child));
|
5974
6814
|
|
5975
6815
|
/**
|
5976
6816
|
* Allows the host application to declare implicit references from an object
|
@@ -5978,8 +6818,10 @@ class V8_EXPORT Isolate {
|
|
5978
6818
|
* too. After each garbage collection, all implicit references are removed. It
|
5979
6819
|
* is intended to be used in the before-garbage-collection callback function.
|
5980
6820
|
*/
|
5981
|
-
template<typename T, typename S>
|
5982
|
-
|
6821
|
+
template <typename T, typename S>
|
6822
|
+
V8_DEPRECATE_SOON("Use EmbedderHeapTracer",
|
6823
|
+
void SetReference(const Persistent<T>& parent,
|
6824
|
+
const Persistent<S>& child));
|
5983
6825
|
|
5984
6826
|
typedef void (*GCCallback)(Isolate* isolate, GCType type,
|
5985
6827
|
GCCallbackFlags flags);
|
@@ -6121,6 +6963,12 @@ class V8_EXPORT Isolate {
|
|
6121
6963
|
void RemoveCallCompletedCallback(
|
6122
6964
|
DeprecatedCallCompletedCallback callback));
|
6123
6965
|
|
6966
|
+
/**
|
6967
|
+
* Experimental: Set the PromiseHook callback for various promise
|
6968
|
+
* lifecycle events.
|
6969
|
+
*/
|
6970
|
+
void SetPromiseHook(PromiseHook hook);
|
6971
|
+
|
6124
6972
|
/**
|
6125
6973
|
* Set callback to notify about promise reject with no handler, or
|
6126
6974
|
* revocation of such a previous notification once the handler is added.
|
@@ -6254,6 +7102,23 @@ class V8_EXPORT Isolate {
|
|
6254
7102
|
*/
|
6255
7103
|
void SetRAILMode(RAILMode rail_mode);
|
6256
7104
|
|
7105
|
+
/**
|
7106
|
+
* Optional notification to tell V8 the current isolate is used for debugging
|
7107
|
+
* and requires higher heap limit.
|
7108
|
+
*/
|
7109
|
+
void IncreaseHeapLimitForDebugging();
|
7110
|
+
|
7111
|
+
/**
|
7112
|
+
* Restores the original heap limit after IncreaseHeapLimitForDebugging().
|
7113
|
+
*/
|
7114
|
+
void RestoreOriginalHeapLimit();
|
7115
|
+
|
7116
|
+
/**
|
7117
|
+
* Returns true if the heap limit was increased for debugging and the
|
7118
|
+
* original heap limit was not restored yet.
|
7119
|
+
*/
|
7120
|
+
bool IsHeapLimitIncreasedForDebugging();
|
7121
|
+
|
6257
7122
|
/**
|
6258
7123
|
* Allows the host application to provide the address of a function that is
|
6259
7124
|
* notified each time code is added, moved or removed.
|
@@ -6308,6 +7173,9 @@ class V8_EXPORT Isolate {
|
|
6308
7173
|
/** Set the callback to invoke in case of fatal errors. */
|
6309
7174
|
void SetFatalErrorHandler(FatalErrorCallback that);
|
6310
7175
|
|
7176
|
+
/** Set the callback to invoke in case of OOM errors. */
|
7177
|
+
void SetOOMErrorHandler(OOMErrorCallback that);
|
7178
|
+
|
6311
7179
|
/**
|
6312
7180
|
* Set the callback to invoke to check if code generation from
|
6313
7181
|
* strings should be allowed.
|
@@ -6315,6 +7183,16 @@ class V8_EXPORT Isolate {
|
|
6315
7183
|
void SetAllowCodeGenerationFromStringsCallback(
|
6316
7184
|
AllowCodeGenerationFromStringsCallback callback);
|
6317
7185
|
|
7186
|
+
/**
|
7187
|
+
* Set the callback to invoke to check if wasm compilation from
|
7188
|
+
* the specified object is allowed. By default, wasm compilation
|
7189
|
+
* is allowed.
|
7190
|
+
*
|
7191
|
+
* Similar for instantiate.
|
7192
|
+
*/
|
7193
|
+
void SetAllowWasmCompileCallback(AllowWasmCompileCallback callback);
|
7194
|
+
void SetAllowWasmInstantiateCallback(AllowWasmInstantiateCallback callback);
|
7195
|
+
|
6318
7196
|
/**
|
6319
7197
|
* Check if V8 is dead and therefore unusable. This is the case after
|
6320
7198
|
* fatal errors such as out-of-memory situations.
|
@@ -6322,7 +7200,7 @@ class V8_EXPORT Isolate {
|
|
6322
7200
|
bool IsDead();
|
6323
7201
|
|
6324
7202
|
/**
|
6325
|
-
* Adds a message listener.
|
7203
|
+
* Adds a message listener (errors only).
|
6326
7204
|
*
|
6327
7205
|
* The same message listener can be added more than once and in that
|
6328
7206
|
* case it will be called more than once for each message.
|
@@ -6333,6 +7211,21 @@ class V8_EXPORT Isolate {
|
|
6333
7211
|
bool AddMessageListener(MessageCallback that,
|
6334
7212
|
Local<Value> data = Local<Value>());
|
6335
7213
|
|
7214
|
+
/**
|
7215
|
+
* Adds a message listener.
|
7216
|
+
*
|
7217
|
+
* The same message listener can be added more than once and in that
|
7218
|
+
* case it will be called more than once for each message.
|
7219
|
+
*
|
7220
|
+
* If data is specified, it will be passed to the callback when it is called.
|
7221
|
+
* Otherwise, the exception object will be passed to the callback instead.
|
7222
|
+
*
|
7223
|
+
* A listener can listen for particular error levels by providing a mask.
|
7224
|
+
*/
|
7225
|
+
bool AddMessageListenerWithErrorLevel(MessageCallback that,
|
7226
|
+
int message_levels,
|
7227
|
+
Local<Value> data = Local<Value>());
|
7228
|
+
|
6336
7229
|
/**
|
6337
7230
|
* Remove all message listeners from the specified callback function.
|
6338
7231
|
*/
|
@@ -6384,17 +7277,17 @@ class V8_EXPORT Isolate {
|
|
6384
7277
|
*/
|
6385
7278
|
bool IsInUse();
|
6386
7279
|
|
7280
|
+
Isolate() = delete;
|
7281
|
+
~Isolate() = delete;
|
7282
|
+
Isolate(const Isolate&) = delete;
|
7283
|
+
Isolate& operator=(const Isolate&) = delete;
|
7284
|
+
void* operator new(size_t size) = delete;
|
7285
|
+
void operator delete(void*, size_t) = delete;
|
7286
|
+
|
6387
7287
|
private:
|
6388
7288
|
template <class K, class V, class Traits>
|
6389
7289
|
friend class PersistentValueMapBase;
|
6390
7290
|
|
6391
|
-
Isolate();
|
6392
|
-
Isolate(const Isolate&);
|
6393
|
-
~Isolate();
|
6394
|
-
Isolate& operator=(const Isolate&);
|
6395
|
-
void* operator new(size_t size);
|
6396
|
-
void operator delete(void*, size_t);
|
6397
|
-
|
6398
7291
|
void SetObjectGroupId(internal::Object** object, UniqueId id);
|
6399
7292
|
void SetReferenceFromGroup(UniqueId id, internal::Object** object);
|
6400
7293
|
void SetReference(internal::Object** parent, internal::Object** child);
|
@@ -6414,19 +7307,18 @@ class V8_EXPORT StartupData {
|
|
6414
7307
|
*/
|
6415
7308
|
typedef bool (*EntropySource)(unsigned char* buffer, size_t length);
|
6416
7309
|
|
6417
|
-
|
6418
7310
|
/**
|
6419
7311
|
* ReturnAddressLocationResolver is used as a callback function when v8 is
|
6420
7312
|
* resolving the location of a return address on the stack. Profilers that
|
6421
7313
|
* change the return address on the stack can use this to resolve the stack
|
6422
7314
|
* location to whereever the profiler stashed the original return address.
|
6423
7315
|
*
|
6424
|
-
* \param return_addr_location
|
7316
|
+
* \param return_addr_location A location on stack where a machine
|
6425
7317
|
* return address resides.
|
6426
|
-
* \returns
|
7318
|
+
* \returns Either return_addr_location, or else a pointer to the profiler's
|
6427
7319
|
* copy of the original return address.
|
6428
7320
|
*
|
6429
|
-
* \note
|
7321
|
+
* \note The resolver function must not cause garbage collection.
|
6430
7322
|
*/
|
6431
7323
|
typedef uintptr_t (*ReturnAddressLocationResolver)(
|
6432
7324
|
uintptr_t return_addr_location);
|
@@ -6784,6 +7676,7 @@ class V8_EXPORT V8 {
|
|
6784
7676
|
|
6785
7677
|
static void RegisterExternallyReferencedObject(internal::Object** object,
|
6786
7678
|
internal::Isolate* isolate);
|
7679
|
+
|
6787
7680
|
template <class K, class V, class T>
|
6788
7681
|
friend class PersistentValueMapBase;
|
6789
7682
|
|
@@ -6806,7 +7699,7 @@ class V8_EXPORT V8 {
|
|
6806
7699
|
/**
|
6807
7700
|
* Helper class to create a snapshot data blob.
|
6808
7701
|
*/
|
6809
|
-
class SnapshotCreator {
|
7702
|
+
class V8_EXPORT SnapshotCreator {
|
6810
7703
|
public:
|
6811
7704
|
enum class FunctionCodeHandling { kClear, kKeep };
|
6812
7705
|
|
@@ -6829,10 +7722,23 @@ class SnapshotCreator {
|
|
6829
7722
|
Isolate* GetIsolate();
|
6830
7723
|
|
6831
7724
|
/**
|
6832
|
-
*
|
7725
|
+
* Set the default context to be included in the snapshot blob.
|
7726
|
+
* The snapshot will not contain the global proxy, and we expect one or a
|
7727
|
+
* global object template to create one, to be provided upon deserialization.
|
7728
|
+
*/
|
7729
|
+
void SetDefaultContext(Local<Context> context);
|
7730
|
+
|
7731
|
+
/**
|
7732
|
+
* Add additional context to be included in the snapshot blob.
|
7733
|
+
* The snapshot will include the global proxy.
|
7734
|
+
*
|
7735
|
+
* \param callback optional callback to serialize internal fields.
|
7736
|
+
*
|
6833
7737
|
* \returns the index of the context in the snapshot blob.
|
6834
7738
|
*/
|
6835
|
-
size_t AddContext(Local<Context> context
|
7739
|
+
size_t AddContext(Local<Context> context,
|
7740
|
+
SerializeInternalFieldsCallback callback =
|
7741
|
+
SerializeInternalFieldsCallback());
|
6836
7742
|
|
6837
7743
|
/**
|
6838
7744
|
* Add a template to be included in the snapshot blob.
|
@@ -6850,12 +7756,12 @@ class SnapshotCreator {
|
|
6850
7756
|
*/
|
6851
7757
|
StartupData CreateBlob(FunctionCodeHandling function_code_handling);
|
6852
7758
|
|
7759
|
+
// Disallow copying and assigning.
|
7760
|
+
SnapshotCreator(const SnapshotCreator&) = delete;
|
7761
|
+
void operator=(const SnapshotCreator&) = delete;
|
7762
|
+
|
6853
7763
|
private:
|
6854
7764
|
void* data_;
|
6855
|
-
|
6856
|
-
// Disallow copying and assigning.
|
6857
|
-
SnapshotCreator(const SnapshotCreator&);
|
6858
|
-
void operator=(const SnapshotCreator&);
|
6859
7765
|
};
|
6860
7766
|
|
6861
7767
|
/**
|
@@ -6871,17 +7777,25 @@ class SnapshotCreator {
|
|
6871
7777
|
template <class T>
|
6872
7778
|
class Maybe {
|
6873
7779
|
public:
|
6874
|
-
V8_INLINE bool IsNothing() const { return !
|
6875
|
-
V8_INLINE bool IsJust() const { return
|
7780
|
+
V8_INLINE bool IsNothing() const { return !has_value_; }
|
7781
|
+
V8_INLINE bool IsJust() const { return has_value_; }
|
7782
|
+
|
7783
|
+
// Will crash if the Maybe<> is nothing.
|
7784
|
+
V8_INLINE T ToChecked() const { return FromJust(); }
|
7785
|
+
|
7786
|
+
V8_WARN_UNUSED_RESULT V8_INLINE bool To(T* out) const {
|
7787
|
+
if (V8_LIKELY(IsJust())) *out = value_;
|
7788
|
+
return IsJust();
|
7789
|
+
}
|
6876
7790
|
|
6877
7791
|
// Will crash if the Maybe<> is nothing.
|
6878
7792
|
V8_INLINE T FromJust() const {
|
6879
7793
|
if (V8_UNLIKELY(!IsJust())) V8::FromJustIsNothing();
|
6880
|
-
return
|
7794
|
+
return value_;
|
6881
7795
|
}
|
6882
7796
|
|
6883
7797
|
V8_INLINE T FromMaybe(const T& default_value) const {
|
6884
|
-
return
|
7798
|
+
return has_value_ ? value_ : default_value;
|
6885
7799
|
}
|
6886
7800
|
|
6887
7801
|
V8_INLINE bool operator==(const Maybe& other) const {
|
@@ -6894,11 +7808,11 @@ class Maybe {
|
|
6894
7808
|
}
|
6895
7809
|
|
6896
7810
|
private:
|
6897
|
-
Maybe() :
|
6898
|
-
explicit Maybe(const T& t) :
|
7811
|
+
Maybe() : has_value_(false) {}
|
7812
|
+
explicit Maybe(const T& t) : has_value_(true), value_(t) {}
|
6899
7813
|
|
6900
|
-
bool
|
6901
|
-
T
|
7814
|
+
bool has_value_;
|
7815
|
+
T value_;
|
6902
7816
|
|
6903
7817
|
template <class U>
|
6904
7818
|
friend Maybe<U> Nothing();
|
@@ -7046,22 +7960,21 @@ class V8_EXPORT TryCatch {
|
|
7046
7960
|
* UseAfterReturn is enabled, then the address returned will be the address
|
7047
7961
|
* of the C++ try catch handler itself.
|
7048
7962
|
*/
|
7049
|
-
static void* JSStackComparableAddress(
|
7963
|
+
static void* JSStackComparableAddress(TryCatch* handler) {
|
7050
7964
|
if (handler == NULL) return NULL;
|
7051
7965
|
return handler->js_stack_comparable_address_;
|
7052
7966
|
}
|
7053
7967
|
|
7054
|
-
|
7055
|
-
void
|
7056
|
-
|
7057
|
-
// Make it hard to create heap-allocated TryCatch blocks.
|
7058
|
-
TryCatch(const TryCatch&);
|
7059
|
-
void operator=(const TryCatch&);
|
7968
|
+
TryCatch(const TryCatch&) = delete;
|
7969
|
+
void operator=(const TryCatch&) = delete;
|
7060
7970
|
void* operator new(size_t size);
|
7061
7971
|
void operator delete(void*, size_t);
|
7062
7972
|
|
7063
|
-
|
7064
|
-
|
7973
|
+
private:
|
7974
|
+
void ResetInternal();
|
7975
|
+
|
7976
|
+
internal::Isolate* isolate_;
|
7977
|
+
TryCatch* next_;
|
7065
7978
|
void* exception_;
|
7066
7979
|
void* message_obj_;
|
7067
7980
|
void* js_stack_comparable_address_;
|
@@ -7071,7 +7984,7 @@ class V8_EXPORT TryCatch {
|
|
7071
7984
|
bool rethrow_ : 1;
|
7072
7985
|
bool has_terminated_ : 1;
|
7073
7986
|
|
7074
|
-
friend class
|
7987
|
+
friend class internal::Isolate;
|
7075
7988
|
};
|
7076
7989
|
|
7077
7990
|
|
@@ -7095,7 +8008,6 @@ class V8_EXPORT ExtensionConfiguration {
|
|
7095
8008
|
const char** names_;
|
7096
8009
|
};
|
7097
8010
|
|
7098
|
-
|
7099
8011
|
/**
|
7100
8012
|
* A sandboxed execution context with its own set of built-in objects
|
7101
8013
|
* and functions.
|
@@ -7142,9 +8054,55 @@ class V8_EXPORT Context {
|
|
7142
8054
|
*/
|
7143
8055
|
static Local<Context> New(
|
7144
8056
|
Isolate* isolate, ExtensionConfiguration* extensions = NULL,
|
7145
|
-
|
7146
|
-
|
7147
|
-
|
8057
|
+
MaybeLocal<ObjectTemplate> global_template = MaybeLocal<ObjectTemplate>(),
|
8058
|
+
MaybeLocal<Value> global_object = MaybeLocal<Value>());
|
8059
|
+
|
8060
|
+
/**
|
8061
|
+
* Create a new context from a (non-default) context snapshot. There
|
8062
|
+
* is no way to provide a global object template since we do not create
|
8063
|
+
* a new global object from template, but we can reuse a global object.
|
8064
|
+
*
|
8065
|
+
* \param isolate See v8::Context::New.
|
8066
|
+
*
|
8067
|
+
* \param context_snapshot_index The index of the context snapshot to
|
8068
|
+
* deserialize from. Use v8::Context::New for the default snapshot.
|
8069
|
+
*
|
8070
|
+
* \param internal_fields_deserializer Optional callback to deserialize
|
8071
|
+
* internal fields. It should match the SerializeInternalFieldCallback used
|
8072
|
+
* to serialize.
|
8073
|
+
*
|
8074
|
+
* \param extensions See v8::Context::New.
|
8075
|
+
*
|
8076
|
+
* \param global_object See v8::Context::New.
|
8077
|
+
*/
|
8078
|
+
|
8079
|
+
static MaybeLocal<Context> FromSnapshot(
|
8080
|
+
Isolate* isolate, size_t context_snapshot_index,
|
8081
|
+
DeserializeInternalFieldsCallback internal_fields_deserializer =
|
8082
|
+
DeserializeInternalFieldsCallback(),
|
8083
|
+
ExtensionConfiguration* extensions = nullptr,
|
8084
|
+
MaybeLocal<Value> global_object = MaybeLocal<Value>());
|
8085
|
+
|
8086
|
+
/**
|
8087
|
+
* Returns an global object that isn't backed by an actual context.
|
8088
|
+
*
|
8089
|
+
* The global template needs to have access checks with handlers installed.
|
8090
|
+
* If an existing global object is passed in, the global object is detached
|
8091
|
+
* from its context.
|
8092
|
+
*
|
8093
|
+
* Note that this is different from a detached context where all accesses to
|
8094
|
+
* the global proxy will fail. Instead, the access check handlers are invoked.
|
8095
|
+
*
|
8096
|
+
* It is also not possible to detach an object returned by this method.
|
8097
|
+
* Instead, the access check handlers need to return nothing to achieve the
|
8098
|
+
* same effect.
|
8099
|
+
*
|
8100
|
+
* It is possible, however, to create a new context from the global object
|
8101
|
+
* returned by this method.
|
8102
|
+
*/
|
8103
|
+
static MaybeLocal<Object> NewRemoteContext(
|
8104
|
+
Isolate* isolate, Local<ObjectTemplate> global_template,
|
8105
|
+
MaybeLocal<Value> global_object = MaybeLocal<Value>());
|
7148
8106
|
|
7149
8107
|
/**
|
7150
8108
|
* Sets the security token for the context. To access an object in
|
@@ -7173,7 +8131,7 @@ class V8_EXPORT Context {
|
|
7173
8131
|
void Exit();
|
7174
8132
|
|
7175
8133
|
/** Returns an isolate associated with a current context. */
|
7176
|
-
|
8134
|
+
Isolate* GetIsolate();
|
7177
8135
|
|
7178
8136
|
/**
|
7179
8137
|
* The field at kDebugIdIndex is reserved for V8 debugger implementation.
|
@@ -7206,7 +8164,7 @@ class V8_EXPORT Context {
|
|
7206
8164
|
|
7207
8165
|
/**
|
7208
8166
|
* Gets a 2-byte-aligned native pointer from the embedder data with the given
|
7209
|
-
* index, which must have
|
8167
|
+
* index, which must have been set by a previous call to
|
7210
8168
|
* SetAlignedPointerInEmbedderData with the same index. Note that index 0
|
7211
8169
|
* currently has a special meaning for Chrome's debugger.
|
7212
8170
|
*/
|
@@ -7286,7 +8244,7 @@ class V8_EXPORT Context {
|
|
7286
8244
|
* It is up to the user of V8 to ensure, perhaps with locking, that this
|
7287
8245
|
* constraint is not violated. In addition to any other synchronization
|
7288
8246
|
* mechanism that may be used, the v8::Locker and v8::Unlocker classes must be
|
7289
|
-
* used to signal
|
8247
|
+
* used to signal thread switches to V8.
|
7290
8248
|
*
|
7291
8249
|
* v8::Locker is a scoped lock object. While it's active, i.e. between its
|
7292
8250
|
* construction and destruction, the current thread is allowed to use the locked
|
@@ -7389,16 +8347,16 @@ class V8_EXPORT Locker {
|
|
7389
8347
|
*/
|
7390
8348
|
static bool IsActive();
|
7391
8349
|
|
8350
|
+
// Disallow copying and assigning.
|
8351
|
+
Locker(const Locker&) = delete;
|
8352
|
+
void operator=(const Locker&) = delete;
|
8353
|
+
|
7392
8354
|
private:
|
7393
8355
|
void Initialize(Isolate* isolate);
|
7394
8356
|
|
7395
8357
|
bool has_lock_;
|
7396
8358
|
bool top_level_;
|
7397
8359
|
internal::Isolate* isolate_;
|
7398
|
-
|
7399
|
-
// Disallow copying and assigning.
|
7400
|
-
Locker(const Locker&);
|
7401
|
-
void operator=(const Locker&);
|
7402
8360
|
};
|
7403
8361
|
|
7404
8362
|
|
@@ -7499,7 +8457,7 @@ class Internals {
|
|
7499
8457
|
1 * kApiPointerSize + kApiIntSize;
|
7500
8458
|
static const int kStringResourceOffset = 3 * kApiPointerSize;
|
7501
8459
|
|
7502
|
-
static const int kOddballKindOffset =
|
8460
|
+
static const int kOddballKindOffset = 4 * kApiPointerSize + sizeof(double);
|
7503
8461
|
static const int kForeignAddressOffset = kApiPointerSize;
|
7504
8462
|
static const int kJSObjectHeaderSize = 3 * kApiPointerSize;
|
7505
8463
|
static const int kFixedArrayHeaderSize = 2 * kApiPointerSize;
|
@@ -7531,11 +8489,10 @@ class Internals {
|
|
7531
8489
|
static const int kNodeStateIsPendingValue = 3;
|
7532
8490
|
static const int kNodeStateIsNearDeathValue = 4;
|
7533
8491
|
static const int kNodeIsIndependentShift = 3;
|
7534
|
-
static const int kNodeIsPartiallyDependentShift = 4;
|
7535
8492
|
static const int kNodeIsActiveShift = 4;
|
7536
8493
|
|
7537
|
-
static const int
|
7538
|
-
static const int
|
8494
|
+
static const int kJSApiObjectType = 0xbb;
|
8495
|
+
static const int kJSObjectType = 0xbc;
|
7539
8496
|
static const int kFirstNonstringType = 0x80;
|
7540
8497
|
static const int kOddballType = 0x83;
|
7541
8498
|
static const int kForeignType = 0x87;
|
@@ -7827,17 +8784,6 @@ void PersistentBase<T>::MarkIndependent() {
|
|
7827
8784
|
I::kNodeIsIndependentShift);
|
7828
8785
|
}
|
7829
8786
|
|
7830
|
-
|
7831
|
-
template <class T>
|
7832
|
-
void PersistentBase<T>::MarkPartiallyDependent() {
|
7833
|
-
typedef internal::Internals I;
|
7834
|
-
if (this->IsEmpty()) return;
|
7835
|
-
I::UpdateNodeFlag(reinterpret_cast<internal::Object**>(this->val_),
|
7836
|
-
true,
|
7837
|
-
I::kNodeIsPartiallyDependentShift);
|
7838
|
-
}
|
7839
|
-
|
7840
|
-
|
7841
8787
|
template <class T>
|
7842
8788
|
void PersistentBase<T>::MarkActive() {
|
7843
8789
|
typedef internal::Internals I;
|
@@ -8065,17 +9011,16 @@ ScriptOrigin::ScriptOrigin(Local<Value> resource_name,
|
|
8065
9011
|
Local<Integer> resource_column_offset,
|
8066
9012
|
Local<Boolean> resource_is_shared_cross_origin,
|
8067
9013
|
Local<Integer> script_id,
|
8068
|
-
Local<Boolean> resource_is_embedder_debug_script,
|
8069
9014
|
Local<Value> source_map_url,
|
8070
|
-
Local<Boolean> resource_is_opaque
|
9015
|
+
Local<Boolean> resource_is_opaque,
|
9016
|
+
Local<Boolean> is_wasm)
|
8071
9017
|
: resource_name_(resource_name),
|
8072
9018
|
resource_line_offset_(resource_line_offset),
|
8073
9019
|
resource_column_offset_(resource_column_offset),
|
8074
|
-
options_(!
|
8075
|
-
resource_is_embedder_debug_script->IsTrue(),
|
8076
|
-
!resource_is_shared_cross_origin.IsEmpty() &&
|
9020
|
+
options_(!resource_is_shared_cross_origin.IsEmpty() &&
|
8077
9021
|
resource_is_shared_cross_origin->IsTrue(),
|
8078
|
-
!resource_is_opaque.IsEmpty() && resource_is_opaque->IsTrue()
|
9022
|
+
!resource_is_opaque.IsEmpty() && resource_is_opaque->IsTrue(),
|
9023
|
+
!is_wasm.IsEmpty() && is_wasm->IsTrue()),
|
8079
9024
|
script_id_(script_id),
|
8080
9025
|
source_map_url_(source_map_url) {}
|
8081
9026
|
|
@@ -8129,9 +9074,8 @@ Local<Boolean> Boolean::New(Isolate* isolate, bool value) {
|
|
8129
9074
|
return value ? True(isolate) : False(isolate);
|
8130
9075
|
}
|
8131
9076
|
|
8132
|
-
|
8133
|
-
|
8134
|
-
Set(v8::String::NewFromUtf8(isolate, name, NewStringType::kNormal)
|
9077
|
+
void Template::Set(Isolate* isolate, const char* name, Local<Data> value) {
|
9078
|
+
Set(String::NewFromUtf8(isolate, name, NewStringType::kNormal)
|
8135
9079
|
.ToLocalChecked(),
|
8136
9080
|
value);
|
8137
9081
|
}
|
@@ -8175,7 +9119,6 @@ void* Object::GetAlignedPointerFromInternalField(int index) {
|
|
8175
9119
|
return SlowGetAlignedPointerFromInternalField(index);
|
8176
9120
|
}
|
8177
9121
|
|
8178
|
-
|
8179
9122
|
String* String::Cast(v8::Value* value) {
|
8180
9123
|
#ifdef V8_ENABLE_CHECKS
|
8181
9124
|
CheckCast(value);
|
@@ -8266,6 +9209,23 @@ bool Value::QuickIsNull() const {
|
|
8266
9209
|
return (I::GetOddballKind(obj) == I::kNullOddballKind);
|
8267
9210
|
}
|
8268
9211
|
|
9212
|
+
bool Value::IsNullOrUndefined() const {
|
9213
|
+
#ifdef V8_ENABLE_CHECKS
|
9214
|
+
return FullIsNull() || FullIsUndefined();
|
9215
|
+
#else
|
9216
|
+
return QuickIsNullOrUndefined();
|
9217
|
+
#endif
|
9218
|
+
}
|
9219
|
+
|
9220
|
+
bool Value::QuickIsNullOrUndefined() const {
|
9221
|
+
typedef internal::Object O;
|
9222
|
+
typedef internal::Internals I;
|
9223
|
+
O* obj = *reinterpret_cast<O* const*>(this);
|
9224
|
+
if (!I::HasHeapObjectTag(obj)) return false;
|
9225
|
+
if (I::GetInstanceType(obj) != I::kOddballType) return false;
|
9226
|
+
int kind = I::GetOddballKind(obj);
|
9227
|
+
return kind == I::kNullOddballKind || kind == I::kUndefinedOddballKind;
|
9228
|
+
}
|
8269
9229
|
|
8270
9230
|
bool Value::IsString() const {
|
8271
9231
|
#ifdef V8_ENABLE_CHECKS
|
@@ -8488,6 +9448,12 @@ Proxy* Proxy::Cast(v8::Value* value) {
|
|
8488
9448
|
return static_cast<Proxy*>(value);
|
8489
9449
|
}
|
8490
9450
|
|
9451
|
+
WasmCompiledModule* WasmCompiledModule::Cast(v8::Value* value) {
|
9452
|
+
#ifdef V8_ENABLE_CHECKS
|
9453
|
+
CheckCast(value);
|
9454
|
+
#endif
|
9455
|
+
return static_cast<WasmCompiledModule*>(value);
|
9456
|
+
}
|
8491
9457
|
|
8492
9458
|
Promise::Resolver* Promise::Resolver::Cast(v8::Value* value) {
|
8493
9459
|
#ifdef V8_ENABLE_CHECKS
|
@@ -8735,7 +9701,7 @@ template<typename T>
|
|
8735
9701
|
void Isolate::SetObjectGroupId(const Persistent<T>& object,
|
8736
9702
|
UniqueId id) {
|
8737
9703
|
TYPE_CHECK(Value, T);
|
8738
|
-
SetObjectGroupId(reinterpret_cast<
|
9704
|
+
SetObjectGroupId(reinterpret_cast<internal::Object**>(object.val_), id);
|
8739
9705
|
}
|
8740
9706
|
|
8741
9707
|
|
@@ -8743,8 +9709,7 @@ template<typename T>
|
|
8743
9709
|
void Isolate::SetReferenceFromGroup(UniqueId id,
|
8744
9710
|
const Persistent<T>& object) {
|
8745
9711
|
TYPE_CHECK(Value, T);
|
8746
|
-
SetReferenceFromGroup(id,
|
8747
|
-
reinterpret_cast<v8::internal::Object**>(object.val_));
|
9712
|
+
SetReferenceFromGroup(id, reinterpret_cast<internal::Object**>(object.val_));
|
8748
9713
|
}
|
8749
9714
|
|
8750
9715
|
|
@@ -8753,8 +9718,8 @@ void Isolate::SetReference(const Persistent<T>& parent,
|
|
8753
9718
|
const Persistent<S>& child) {
|
8754
9719
|
TYPE_CHECK(Object, T);
|
8755
9720
|
TYPE_CHECK(Value, S);
|
8756
|
-
SetReference(reinterpret_cast<
|
8757
|
-
reinterpret_cast<
|
9721
|
+
SetReference(reinterpret_cast<internal::Object**>(parent.val_),
|
9722
|
+
reinterpret_cast<internal::Object**>(child.val_));
|
8758
9723
|
}
|
8759
9724
|
|
8760
9725
|
|
@@ -8828,18 +9793,17 @@ void V8::SetFatalErrorHandler(FatalErrorCallback callback) {
|
|
8828
9793
|
isolate->SetFatalErrorHandler(callback);
|
8829
9794
|
}
|
8830
9795
|
|
8831
|
-
|
8832
9796
|
void V8::RemoveGCPrologueCallback(GCCallback callback) {
|
8833
9797
|
Isolate* isolate = Isolate::GetCurrent();
|
8834
9798
|
isolate->RemoveGCPrologueCallback(
|
8835
|
-
reinterpret_cast<
|
9799
|
+
reinterpret_cast<Isolate::GCCallback>(callback));
|
8836
9800
|
}
|
8837
9801
|
|
8838
9802
|
|
8839
9803
|
void V8::RemoveGCEpilogueCallback(GCCallback callback) {
|
8840
9804
|
Isolate* isolate = Isolate::GetCurrent();
|
8841
9805
|
isolate->RemoveGCEpilogueCallback(
|
8842
|
-
reinterpret_cast<
|
9806
|
+
reinterpret_cast<Isolate::GCCallback>(callback));
|
8843
9807
|
}
|
8844
9808
|
|
8845
9809
|
void V8::TerminateExecution(Isolate* isolate) { isolate->TerminateExecution(); }
|