35 #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
36 #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the
37 build configuration to ensure that at most one of these is set
40 #ifdef BUILDING_V8_SHARED
41 # define V8_EXPORT __declspec(dllexport)
43 # define V8_EXPORT __declspec(dllimport)
51 #if V8_HAS_ATTRIBUTE_VISIBILITY
&& defined(V8_SHARED)
52 # ifdef BUILDING_V8_SHARED
53 # define V8_EXPORT __attribute__ ((visibility("default")))
80 class ImplementationUtilities;
90 class ObjectOperationDescriptor;
95 class RawOperationDescriptor;
109 template <
class T>
class Local;
112 template <
class T>
class Eternal;
113 template<
class T>
class NonCopyablePersistentTraits;
116 class M = NonCopyablePersistentTraits<T> >
class Persistent;
120 template <
class K,
class V,
class T>
122 template <
class K,
class V,
class T>
125 template<
class T,
class P>
class WeakCallbackObject;
134 class CallHandlerHelper;
144 struct StreamedSource;
146 class PropertyCallbackArguments;
147 class FunctionCallbackArguments;
161 return data_ == other.data_;
165 return data_ != other.data_;
169 return data_ < other.data_;
178 #define TYPE_CHECK(T, S)
180 *(static_cast<T* volatile*>(0
)) = static_cast<S*>(0
);
215 : val_(
reinterpret_cast<T*>(*that)) {
248 if (a == 0)
return b == 0;
249 if (b == 0)
return false;
257 if (a == 0)
return b == 0;
258 if (b == 0)
return false;
270 return !operator==(that);
275 return !operator==(that);
279 #ifdef V8_ENABLE_CHECKS
282 if (that.IsEmpty())
return Local<T>();
284 return Local<T>(T::Cast(*that));
289 return Local<S>::Cast(*
this);
306 template<
class F>
friend class Local;
321 template <
class F1,
class F2,
class F3>
333 #if !defined(V8_IMMINENT_DEPRECATION_WARNINGS)
356 : val_(
reinterpret_cast<T*>(*that)) {
364 out->val_ =
IsEmpty() ?
nullptr :
this->val_;
387 Set(isolate, handle);
395 static const int kInitialValue = -1;
400 static const int kInternalFieldsInWeakCallback = 2;
403 template <
typename T>
409 void* internal_fields[kInternalFieldsInWeakCallback],
411 : isolate_(isolate), parameter_(parameter), callback_(callback) {
412 for (
int i = 0; i < kInternalFieldsInWeakCallback; ++i) {
413 internal_fields_[i] = internal_fields[i];
422 void* GetInternalField1()
const) {
423 return internal_fields_[0];
426 void* GetInternalField2()
const) {
427 return internal_fields_[1];
444 void* internal_fields_[kInternalFieldsInWeakCallback];
448 template <
class T,
class P>
454 : isolate_(isolate), parameter_(parameter), handle_(handle) {}
516 if (a == NULL)
return b == NULL;
517 if (b == NULL)
return false;
525 if (a == NULL)
return b == NULL;
526 if (b == NULL)
return false;
532 return !operator==(that);
537 return !operator==(that);
547 template <
typename P>
549 "use WeakCallbackInfo version",
553 template <
typename S,
typename P>
555 "use WeakCallbackInfo version",
556 void SetWeak(P* parameter,
565 template <
typename P>
568 void SetPhantom(P* parameter,
570 int internal_field_index1 = -1,
571 int internal_field_index2 = -1));
573 template <
typename P>
625 template<
class F>
friend class Local;
631 template <
class F1,
class F2,
class F3>
636 explicit V8_INLINE PersistentBase(T* val) : val_(val) {}
652 class NonCopyablePersistentTraits {
656 template<
class S,
class M>
676 template<
class S,
class M>
713 template <
class S,
class M2>
727 template <
class S,
class M2>
735 template <
class S,
class M2>
746 if (M::kResetInDestructor)
this->Reset();
752 #ifdef V8_ENABLE_CHECKS
755 if (!that.IsEmpty()) T::Cast(*that);
757 return reinterpret_cast<
Persistent<T>&>(that);
768 template<
class F>
friend class Local;
773 V8_INLINE T* operator*()
const {
return this->val_; }
774 template<
class S,
class M2>
815 other.val_ =
nullptr;
826 this->val_ = rhs.val_;
845 void operator=(
Global&) =
delete;
846 V8_INLINE T* operator*()
const {
return this->val_; }
881 return reinterpret_cast<
Isolate*>(isolate_);
901 void* operator
new(size_t size);
902 void operator
delete(
void*, size_t);
909 template<
class F>
friend class Local;
934 Escape(
reinterpret_cast<
internal::Object**>(*value));
935 return Local<T>(
reinterpret_cast<T*>(slot));
945 void* operator
new(size_t size);
946 void operator
delete(
void*, size_t);
961 void* operator
new(size_t size);
962 void operator
delete(
void*, size_t);
988 bool is_shared_cross_origin =
false,
989 bool is_opaque =
false)
990 : flags_((is_embedder_debug_script ? kIsEmbedderDebugScript : 0) |
991 (is_shared_cross_origin ? kIsSharedCrossOrigin : 0) |
992 (is_opaque ? kIsOpaque : 0)) {}
995 (kIsEmbedderDebugScript | kIsSharedCrossOrigin | kIsOpaque)) {}
997 return (flags_ & kIsEmbedderDebugScript) != 0;
1000 return (flags_ & kIsSharedCrossOrigin) != 0;
1002 bool IsOpaque()
const {
return (flags_ & kIsOpaque) != 0; }
1007 kIsEmbedderDebugScript = 1,
1008 kIsSharedCrossOrigin = 1 << 1,
1090 "Use maybe version",
1328 "Use maybe version",
1358 "Use maybe version",
1395 "Use maybe version",
1417 size_t context_extension_count,
1421 Local<
String> arguments[], size_t context_extension_count,
2025 V8_INLINE bool QuickIsUndefined()
const;
2028 bool FullIsUndefined()
const;
2029 bool FullIsNull()
const;
2030 bool FullIsString()
const;
2051 static void CheckCast(
v8::
Value* obj);
2071 static void CheckCast(
v8::
Value* obj);
2163 int* nchars_ref = NULL,
2222 virtual const uint16_t*
data()
const = 0;
2252 virtual const char*
data()
const = 0;
2289 "Use maybe version",
2302 "Use maybe version",
2315 "Use maybe version",
2341 "Use maybe version",
2367 "Use maybe version",
2430 Value(
const Value&);
2431 void operator=(
const Value&);
2438 static void CheckCast(
v8::
Value* obj);
2476 static void CheckCast(
v8::
Value* obj);
2490 static void CheckCast(
v8::
Value* obj);
2505 static void CheckCast(
v8::
Value* obj);
2519 static void CheckCast(
v8::
Value* obj);
2533 static void CheckCast(
v8::
Value* obj);
2595 bool Set(uint32_t index,
Local<
Value> value));
2808 bool HasRealIndexedProperty(uint32_t index));
2812 bool HasRealNamedCallbackProperty(
Local<
String> key));
2821 "Use maybe version",
2832 "Use maybe version",
2939 static void CheckCast(
Value* obj);
2940 Local<
Value> SlowGetInternalField(
int index);
2941 void* SlowGetAlignedPointerFromInternalField(
int index);
2970 static void CheckCast(
Value* obj);
3014 static void CheckCast(
Value* obj);
3053 static void CheckCast(
Value* obj);
3057 template<
typename T>
3061 : value_(that.value_) {
3065 template <
typename S>
3068 template <
typename S>
3070 template <
typename S>
3085 template <
typename S>
3092 template <
class F,
class G,
class H>
3107 template<
typename T>
3136 bool is_construct_call);
3148 template<
typename T>
3160 friend class MacroAssembler;
3192 "Use maybe version",
3265 static void CheckCast(
Value* obj);
3306 static void CheckCast(
Value* obj);
3340 static void CheckCast(
Value* obj);
3344 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
3346 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2
3385 virtual void Free(
void* data, size_t length) = 0;
3402 void*
Data()
const {
return data_; }
3407 size_t byte_length_;
3433 Isolate* isolate,
void* data, size_t byte_length,
3484 static void CheckCast(
Value* obj);
3488 #ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT
3490 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2
3539 static void CheckCast(
Value* obj);
3560 static void CheckCast(
Value* obj);
3571 size_t byte_offset, size_t length);
3573 size_t byte_offset, size_t length);
3578 static void CheckCast(
Value* obj);
3589 size_t byte_offset, size_t length);
3596 Uint8ClampedArray();
3597 static void CheckCast(
Value* obj);
3607 size_t byte_offset, size_t length);
3609 size_t byte_offset, size_t length);
3614 static void CheckCast(
Value* obj);
3625 size_t byte_offset, size_t length);
3627 size_t byte_offset, size_t length);
3632 static void CheckCast(
Value* obj);
3643 size_t byte_offset, size_t length);
3645 size_t byte_offset, size_t length);
3650 static void CheckCast(
Value* obj);
3661 size_t byte_offset, size_t length);
3663 size_t byte_offset, size_t length);
3668 static void CheckCast(
Value* obj);
3679 size_t byte_offset, size_t length);
3681 size_t byte_offset, size_t length);
3686 static void CheckCast(
Value* obj);
3697 size_t byte_offset, size_t length);
3699 size_t byte_offset, size_t length);
3704 static void CheckCast(
Value* obj);
3715 size_t byte_offset, size_t length);
3717 size_t byte_offset, size_t length);
3722 static void CheckCast(
Value* obj);
3733 size_t byte_offset, size_t length);
3735 size_t byte_offset, size_t length);
3740 static void CheckCast(
Value* obj);
3765 void*
Data()
const {
return data_; }
3770 size_t byte_length_;
3796 Isolate* isolate,
void* data, size_t byte_length,
3838 SharedArrayBuffer();
3839 static void CheckCast(
Value* obj);
3876 static void CheckCast(
v8::
Value* obj);
3892 static void CheckCast(
v8::
Value* obj);
3908 static void CheckCast(
v8::
Value* obj);
3924 static void CheckCast(
v8::
Value* obj);
3942 static void CheckCast(
v8::
Value* obj);
3993 static void CheckCast(
v8::
Value* obj);
4007 static void CheckCast(
v8::
Value* obj);