libv8 5.3.332.38.5-amd64-freebsd-10 → 5.7.492.65.0beta1-amd64-freebsd-10
Sign up to get free protection for your applications and to get access to all the features.
- 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
- data/vendor/v8/out/x64.release/obj.target/src/libv8_base.a +0 -0
- data/vendor/v8/out/x64.release/obj.target/src/libv8_libbase.a +0 -0
- data/vendor/v8/out/x64.release/obj.target/src/libv8_libplatform.a +0 -0
- data/vendor/v8/out/x64.release/obj.target/src/libv8_libsampler.a +0 -0
- data/vendor/v8/out/x64.release/obj.target/src/libv8_nosnapshot.a +0 -0
- data/vendor/v8/out/x64.release/obj.target/src/libv8_snapshot.a +0 -0
- metadata +10 -5
@@ -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(); }
|