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
42 #ifdef BUILDING_V8_SHARED
43 # define V8_EXPORT __declspec(dllexport)
45 # define V8_EXPORT __declspec(dllimport)
53 #if V8_HAS_ATTRIBUTE_VISIBILITY
&& defined(V8_SHARED)
54 # ifdef BUILDING_V8_SHARED
55 # define V8_EXPORT __attribute__ ((visibility("default")))
82 class ImplementationUtilities;
92 class ObjectOperationDescriptor;
98 class RawOperationDescriptor;
113 template <
class T>
class Local;
116 template <
class T>
class Eternal;
117 template<
class T>
class NonCopyablePersistentTraits;
119 template <
class T,
class M = NonCopyablePersistentTraits<T> >
124 template <
class K,
class V,
class T>
126 template <
class K,
class V,
class T>
129 template<
class T,
class P>
class WeakCallbackObject;
138 class CallHandlerHelper;
152 struct StreamedSource;
154 class PropertyCallbackArguments;
155 class FunctionCallbackArguments;
169 return data_ == other.data_;
173 return data_ != other.data_;
177 return data_ < other.data_;
186 #define TYPE_CHECK(T, S)
188 *(static_cast<T* volatile*>(0
)) = static_cast<S*>(0
);
223 : val_(
reinterpret_cast<T*>(*that)) {
256 if (a == 0)
return b == 0;
257 if (b == 0)
return false;
265 if (a == 0)
return b == 0;
266 if (b == 0)
return false;
278 return !operator==(that);
283 return !operator==(that);
287 #ifdef V8_ENABLE_CHECKS
290 if (that.IsEmpty())
return Local<T>();
292 return Local<T>(T::Cast(*that));
297 return Local<S>::Cast(*
this);
314 template<
class F>
friend class Local;
330 template <
class F1,
class F2,
class F3>
334 explicit V8_INLINE Local(T* that) : val_(that) {}
340 #if !defined(V8_IMMINENT_DEPRECATION_WARNINGS)
363 : val_(
reinterpret_cast<T*>(*that)) {
371 out->val_ =
IsEmpty() ?
nullptr :
this->val_;
394 Set(isolate, handle);
402 static const int kInitialValue = -1;
407 static const int kInternalFieldsInWeakCallback = 2;
410 template <
typename T>
416 void* internal_fields[kInternalFieldsInWeakCallback],
418 : isolate_(isolate), parameter_(parameter), callback_(callback) {
419 for (
int i = 0; i < kInternalFieldsInWeakCallback; ++i) {
420 internal_fields_[i] = internal_fields[i];
429 void* GetInternalField1()
const) {
430 return internal_fields_[0];
433 void* GetInternalField2()
const) {
434 return internal_fields_[1];
438 bool IsFirstPass()
const) {
439 return callback_ !=
nullptr;
454 void* internal_fields_[kInternalFieldsInWeakCallback];
458 template <
class T,
class P>
464 : isolate_(isolate), parameter_(parameter), handle_(handle) {}
523 return Local<T>::New(isolate, *
this);
530 if (a == NULL)
return b == NULL;
531 if (b == NULL)
return false;
539 if (a == NULL)
return b == NULL;
540 if (b == NULL)
return false;
546 return !operator==(that);
551 return !operator==(that);
561 template <
typename P>
563 "use WeakCallbackInfo version",
567 template <
typename S,
typename P>
569 "use WeakCallbackInfo version",
570 void SetWeak(P* parameter,
579 template <
typename P>
582 void SetPhantom(P* parameter,
584 int internal_field_index1 = -1,
585 int internal_field_index2 = -1));
587 template <
typename P>
653 template<
class F>
friend class Local;
659 template <
class F1,
class F2,
class F3>
664 explicit V8_INLINE PersistentBase(T* val) : val_(val) {}
680 class NonCopyablePersistentTraits {
684 template<
class S,
class M>
704 template<
class S,
class M>
741 template <
class S,
class M2>
755 template <
class S,
class M2>
763 template <
class S,
class M2>
774 if (M::kResetInDestructor)
this->Reset();
780 #ifdef V8_ENABLE_CHECKS
783 if (!that.IsEmpty()) T::Cast(*that);
785 return reinterpret_cast<
Persistent<T>&>(that);
796 template<
class F>
friend class Local;
801 V8_INLINE T* operator*()
const {
return this->val_; }
802 template<
class S,
class M2>
843 other.val_ =
nullptr;
854 this->val_ = rhs.val_;
872 Global(
const Global&) =
delete;
873 void operator=(
const Global&) =
delete;
874 V8_INLINE T* operator*()
const {
return this->val_; }
909 return reinterpret_cast<
Isolate*>(isolate_);
929 void* operator
new(size_t size);
930 void operator
delete(
void*, size_t);
937 template<
class F>
friend class Local;
962 Escape(
reinterpret_cast<
internal::Object**>(*value));
963 return Local<T>(
reinterpret_cast<T*>(slot));
973 void* operator
new(size_t size);
974 void operator
delete(
void*, size_t);
989 void* operator
new(size_t size);
990 void operator
delete(
void*, size_t);
994 int prev_sealed_level_;
1016 bool is_shared_cross_origin =
false,
1017 bool is_opaque =
false)
1018 : flags_((is_embedder_debug_script ? kIsEmbedderDebugScript : 0) |
1019 (is_shared_cross_origin ? kIsSharedCrossOrigin : 0) |
1020 (is_opaque ? kIsOpaque : 0)) {}
1023 (kIsEmbedderDebugScript | kIsSharedCrossOrigin | kIsOpaque)) {}
1025 return (flags_ & kIsEmbedderDebugScript) != 0;
1028 return (flags_ & kIsSharedCrossOrigin) != 0;
1030 bool IsOpaque()
const {
return (flags_ & kIsOpaque) != 0; }
1035 kIsEmbedderDebugScript = 1,
1036 kIsSharedCrossOrigin = 1 << 1,
1118 "Use maybe version",
1351 "Use maybe version",
1438 size_t context_extension_count,
1442 Local<
String> arguments[], size_t context_extension_count,
2052 V8_INLINE bool QuickIsUndefined()
const;
2055 bool FullIsUndefined()
const;
2056 bool FullIsNull()
const;
2057 bool FullIsString()
const;
2078 static void CheckCast(
v8::
Value* obj);
2098 static void CheckCast(
v8::
Value* obj);
2190 int* nchars_ref = NULL,
2251 virtual const uint16_t*
data()
const = 0;
2281 virtual const char*
data()
const = 0;
2318 "Use maybe version",
2331 "Use maybe version",
2344 "Use maybe version",
2395 "Use maybe version",
2458 Value(
const Value&);
2459 void operator=(
const Value&);
2466 static void CheckCast(
v8::
Value* obj);
2505 static void CheckCast(
v8::
Value* obj);
2547 static void CheckCast(
v8::
Value* obj);
2562 static void CheckCast(
v8::
Value* obj);
2576 static void CheckCast(
v8::
Value* obj);
2590 static void CheckCast(
v8::
Value* obj);
2652 bool Set(uint32_t index,
Local<
Value> value));
2875 bool HasRealIndexedProperty(uint32_t index));
2879 bool HasRealNamedCallbackProperty(
Local<
String> key));
2888 "Use maybe version",
2899 "Use maybe version",
3001 static void CheckCast(
Value* obj);
3002 Local<
Value> SlowGetInternalField(
int index);
3003 void* SlowGetAlignedPointerFromInternalField(
int index);
3033 static void CheckCast(
Value* obj);
3069 static void CheckCast(
Value* obj);
3101 static void CheckCast(
Value* obj);
3105 template<
typename T>
3109 : value_(that.value_) {
3113 template <
typename S>
3116 template <
typename S>
3118 template <
typename S>
3133 template <
typename S>
3140 template <
class F,
class G,
class H>
3155 template<
typename T>
3185 bool is_construct_call);
3197 template<
typename T>
3210 friend class MacroAssembler;
3243 "Use maybe version",
3321 static void CheckCast(
Value* obj);
3362 static void CheckCast(
Value* obj);
3397 static void CheckCast(
Value* obj);
3423 static void CheckCast(
Value* obj);
3427 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
3429 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2
3468 virtual void Free(
void* data, size_t length) = 0;
3485 void*
Data()
const {
return data_; }
3490 size_t byte_length_;
3516 Isolate* isolate,
void* data, size_t byte_length,
3567 static void CheckCast(
Value* obj);
3571 #ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT
3573 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2
3622 static void CheckCast(
Value* obj);
3643 static void CheckCast(
Value* obj);
3654 size_t byte_offset, size_t length);
3656 size_t byte_offset, size_t length);
3661 static void CheckCast(
Value* obj);
3672 size_t byte_offset, size_t length);
3679 Uint8ClampedArray();
3680 static void CheckCast(
Value* obj);
3690 size_t byte_offset, size_t length);
3692 size_t byte_offset, size_t length);
3697 static void CheckCast(
Value* obj);
3708 size_t byte_offset, size_t length);
3710 size_t byte_offset, size_t length);
3715 static void CheckCast(
Value* obj);
3726 size_t byte_offset, size_t length);
3728 size_t byte_offset, size_t length);
3733 static void CheckCast(
Value* obj);
3744 size_t byte_offset, size_t length);
3746 size_t byte_offset, size_t length);
3751 static void CheckCast(
Value* obj);
3762 size_t byte_offset, size_t length);
3764 size_t byte_offset, size_t length);
3769 static void CheckCast(
Value* obj);
3780 size_t byte_offset, size_t length);
3782 size_t byte_offset, size_t length);
3787 static void CheckCast(
Value* obj);
3798 size_t byte_offset, size_t length);
3800 size_t byte_offset, size_t length);
3805 static void CheckCast(
Value* obj);
3816 size_t byte_offset, size_t length);
3818 size_t byte_offset, size_t length);
3823 static void CheckCast(
Value* obj);
3848 void*
Data()
const {
return data_; }
3853 size_t byte_length_;
3879 Isolate* isolate,
void* data, size_t byte_length,
3921 SharedArrayBuffer();
3922 static void CheckCast(
Value* obj);
3959 static void CheckCast(
v8::
Value* obj);
3975 static void CheckCast(
v8::
Value* obj);
3992 static void CheckCast(
v8::
Value* obj);
4008 static void CheckCast(
v8::
Value* obj);
4026 static void CheckCast(
v8::
Value* obj);
4079 static void CheckCast(
v8::
Value* obj);
4093 static void CheckCast(
v8::
Value* obj);
4097 #define V8_INTRINSICS_LIST(F) F(ArrayProto_values, array_values_iterator)
4100 #define V8_DECL_INTRINSIC(name, iname) k##name,
4102 #undef V8_DECL_INTRINSIC
4740 deleter
, enumerator
, data
));
4772 "Use SetAccessCheckCallback with new AccessCheckCallback signature.",
4777 "Use SetAccessCheckCallback instead",
4827 AccessorSignature();
4838 : data_(data), length_(length) {}
4839 const char*
data()
const {
return data_; }
4855 const char* source = 0,
4857 const char** deps = 0,
4858 int source_length = -1);
4865 const char*
name()
const {
return name_; }
4876 size_t source_length_;
4924 uint64_t virtual_memory_limit);
4928 max_semi_space_size_ = limit_in_mb;
4932 max_old_space_size_ = limit_in_mb;
4936 max_executable_size_ = limit_in_mb;
4943 code_range_size_ = limit_in_mb;
4947 int max_semi_space_size_;
4948 int max_old_space_size_;
4949 int max_executable_size_;
4950 uint32_t* stack_limit_;
4951 size_t code_range_size_;
5044 : promise_(promise),
5047 stack_trace_(stack_trace) {}
5055 return stack_trace_;
5193 size_t total_heap_size_;
5194 size_t total_heap_size_executable_;
5195 size_t total_physical_size_;
5196 size_t total_available_size_;
5197 size_t used_heap_size_;
5198 size_t heap_size_limit_;
5199 size_t malloced_memory_;
5200 bool does_zap_garbage_;
5217 const char* space_name_;
5219 size_t space_used_size_;
5220 size_t space_available_size_;
5221 size_t physical_space_size_;
5236 const char* object_type_;
5237 const char* object_sub_type_;
5238 size_t object_count_;
5239 size_t object_size_;
5260 uintptr_t return_addr_location);
5361 uint16_t class_id) {}
5400 const std::vector<std::pair<
void*,
void*> >& internal_fields) = 0;
5499 Scope(
const Scope&);
5534 void* internal_throws_;
5535 void* internal_assert_;
5764 size_t frames_limit,
SampleInfo* sample_info);
5810 "Calling context concept is not compatible with tail calls, and will be "
5855 template<
typename T,
typename S>
5986 "Use callback with parameter",
5994 "Use callback with parameter",
5995 void RemoveCallCompletedCallback(
6026 void SetAutorunMicrotasks(
bool autorun));
6033 bool WillAutorunMicrotasks()
const);
6091 bool IdleNotification(
int idle_time_in_ms));
6214 bool capture,
int frame_limit = 10,
6259 template <
class K,
class V,
class Traits>
6266 void* operator
new(size_t size);
6267 void operator
delete(
void*, size_t);
6272 void ReportExternalAllocationLimitReached();
6302 typedef uintptr_t (*ReturnAddressLocationResolver)(
6303 uintptr_t return_addr_location);
6313 "Use isolate version",
6321 "Use isolate version",
void SetAllowCodeGenerationFromStringsCallback(
6365 const char* warmup_source);
6377 "Use isolate version",
6385 "Use isolate version",
void RemoveMessageListeners(
MessageCallback that));
6392 "Use isolate version",
6393 void SetCaptureStackTraceForUncaughtExceptions(
6394 bool capture,
int frame_limit = 10,
6414 "Use isolate version",
6428 "Use isolate version",
6429 void AddGCPrologueCallback(
GCCallback callback,
6437 "Use isolate version",
6438 void RemoveGCPrologueCallback(
GCCallback callback));
6451 "Use isolate version",
6452 void AddGCEpilogueCallback(
GCCallback callback,
6460 "Use isolate version",
6461 void RemoveGCEpilogueCallback(
GCCallback callback));
6468 "Use isolate version",
6477 "Use isolate version",
6497 ReturnAddressLocationResolver return_address_resolver);
6509 void TerminateExecution(
Isolate* isolate));
6522 "Use isolate version",
6523 bool IsExecutionTerminating(
Isolate* isolate = NULL));
6542 "Use isolate version",
void CancelTerminateExecution(
Isolate* isolate));
6561 "Use isolate version",
6569 "Use isolate version",
6577 "Use isolate version",
6578 void VisitHandlesWithClassIds(
Isolate* isolate,
6589 "Use isolate version",
6590 void VisitHandlesForPartialDependence(
Isolate* isolate,
6620 const char* snapshot_blob);
6639 static void DisposeGlobal(
internal::Object** global_handle);
6641 static void RegisterExternallyReferencedObject(
internal::Object** object,
6643 static void MakeWeak(
internal::Object** global_handle,
void* data,
6644 WeakCallback weak_callback);
6645 static void MakeWeak(
internal::Object** global_handle,
void* data,
6648 static void MakeWeak(
internal::Object** global_handle,
void* data,
6650 int internal_field_index1,
6652 int internal_field_index2,
6654 static void* ClearWeak(
internal::Object** global_handle);
6655 static void Eternalize(
Isolate* isolate,
6660 static void FromJustIsNothing();
6661 static void ToLocalEmpty();
6662 static void InternalFieldOutOfBounds(
int index);
6700 return has_value ? value : default_value;
6704 return (
IsJust() == other.IsJust()) &&
6713 Maybe() : has_value(
false) {}
6714 explicit Maybe(
const T& t) : has_value(
true), value(t) {}
6866 if (handler == NULL)
return NULL;
6867 return handler->js_stack_comparable_address_;
6871 void ResetInternal();
6876 void* operator
new(size_t size);
6877 void operator
delete(
void*, size_t);
6883 void* js_stack_comparable_address_;
6884 bool is_verbose_ : 1;
6885 bool can_continue_ : 1;
6886 bool capture_message_ : 1;
6888 bool has_terminated_ : 1;
6904 : name_count_(name_count), names_(names) { }
6906 const char**
begin()
const {
return &names_[0]; }
6907 const char**
end()
const {
return &names_[name_count_]; }
6910 const int name_count_;
6911 const char** names_;
7092 void* SlowGetAlignedPointerFromEmbedderData(
int index);
7181 void Initialize(
Isolate* isolate);
7208 void Initialize(
Isolate* isolate);
7216 void operator=(
const Locker&);
7239 template <size_t ptr_size>
struct SmiTagging;
7241 template<
int kSmiShiftSize>
7244 uintptr_t tagged_value =
7245 (
static_cast<uintptr_t>(value) << smi_shift_bits) |
kSmiTag;
7246 return reinterpret_cast<
internal::Object*>(tagged_value);
7250 template <>
struct SmiTagging<4> {
7257 return static_cast<
int>(
reinterpret_cast<intptr_t>(value)) >> shift_bits;
7274 return static_cast<uintptr_t>(value + 0x40000000U) < 0x80000000U;
7279 template <>
struct SmiTagging<8> {
7286 return static_cast<
int>(
reinterpret_cast<intptr_t>(value) >> shift_bits);
7293 return (value ==
static_cast<int32_t>(value));
7368 #ifdef V8_ENABLE_CHECKS
7369 CheckInitializedImpl(isolate);
7410 return *addr &
static_cast<uint8_t>(1U << shift);
7414 bool value,
int shift) {
7416 uint8_t mask =
static_cast<uint8_t>(1U << shift);
7417 *addr =
static_cast<uint8_t>((*addr & ~mask) | (value << shift));
7434 uint8_t* addr =
reinterpret_cast<uint8_t*>(isolate) +
7436 *
reinterpret_cast<
void**>(addr) = data;
7441 const uint8_t* addr =
reinterpret_cast<
const uint8_t*>(isolate) +
7443 return *
reinterpret_cast<
void*
const*>(addr);
7452 template <
typename T>
7454 const uint8_t* addr =
7456 return *
reinterpret_cast<
const T*>(addr);
7459 template <
typename T>
7463 O* ctx = *
reinterpret_cast<O*
const*>(context);
7469 return I::ReadField<T>(embedder_data, value_offset);
7478 return New(isolate, that.val_);
7483 return New(isolate, that.val_);
7489 if (that == NULL)
return Local<T>();
7493 reinterpret_cast<
internal::Isolate*>(isolate)
, *p
)));
7501 V8::Eternalize(isolate,
reinterpret_cast<
Value*>(*handle), &
this->index_);
7507 return Local<T>(
reinterpret_cast<T*>(
*V8::GetEternal(isolate, index_)));
7514 return Local<T>(val_);
7520 #ifdef V8_ENABLE_CHECKS
7521 if (index < 0 || index >= kInternalFieldsInWeakCallback) {
7522 V8::InternalFieldOutOfBounds(index);
7525 return internal_fields_[index];
7531 if (that == NULL)
return NULL;
7533 return reinterpret_cast<T*>(
7534 V8::GlobalizeReference(
reinterpret_cast<
internal::Isolate*>(isolate),
7539 template <
class T,
class M>
7540 template <
class S,
class M2>
7544 if (that.IsEmpty())
return;
7546 this->val_ =
reinterpret_cast<T*>(
V8::CopyPersistent(p));
7547 M::Copy(that,
this);
7554 if (
this->IsEmpty())
return false;
7563 if (
this->IsEmpty())
return false;
7564 uint8_t node_state =
7574 if (
this->IsEmpty())
return false;
7582 if (
this->IsEmpty())
return;
7583 V8::DisposeGlobal(
reinterpret_cast<
internal::Object**>(
this->val_));
7593 if (other.IsEmpty())
return;
7594 this->val_ = New(isolate, other.val_);
7604 if (other.IsEmpty())
return;
7605 this->val_ = New(isolate, other.val_);
7610 template <
typename S,
typename P>
7616 V8::MakeWeak(
reinterpret_cast<
internal::Object**>(
this->val_), parameter,
7617 reinterpret_cast<Callback>(callback));
7622 template <
typename P>
7626 SetWeak<T, P>(parameter, callback);
7631 template <
typename P>
7634 int internal_field_index1,
int internal_field_index2) {
7636 V8::MakeWeak(
reinterpret_cast<
internal::Object**>(
this->val_), parameter,
7637 internal_field_index1, internal_field_index2,
7638 reinterpret_cast<Callback>(callback));
7643 template <
typename P>
7648 V8::MakeWeak(
reinterpret_cast<
internal::Object**>(
this->val_), parameter,
7649 reinterpret_cast<Callback>(callback), type);
7654 template <
typename P>
7656 return reinterpret_cast<P*>(
7657 V8::ClearWeak(
reinterpret_cast<
internal::Object**>(
this->val_)));
7663 V8::RegisterExternallyReferencedObject(
7664 reinterpret_cast<
internal::Object**>(
this->val_),
7665 reinterpret_cast<
internal::Isolate*>(isolate));
7671 if (
this->IsEmpty())
return;
7681 if (
this->IsEmpty())
return;
7691 if (
this->IsEmpty())
return;
7700 if (
this->IsEmpty())
return;
7703 *
reinterpret_cast<uint16_t*>(addr) = class_id;
7710 if (
this->IsEmpty())
return 0;
7713 return *
reinterpret_cast<uint16_t*>(addr);
7717 template<
typename T>
7720 template<
typename T>
7721 template<
typename S>
7725 *value_ = GetDefaultValue();
7727 *value_ = *
reinterpret_cast<
internal::Object**>(*handle);
7731 template <
typename T>
7732 template <
typename S>
7736 *value_ = GetDefaultValue();
7738 *value_ = *
reinterpret_cast<
internal::Object**>(*handle);
7742 template <
typename T>
7743 template <
typename S>
7747 *value_ = GetDefaultValue();
7749 *value_ = *
reinterpret_cast<
internal::Object**>(*handle);
7753 template<
typename T>
7759 template<
typename T>
7770 template<
typename T>
7774 bool fits_into_int32_t = (i & (1U << 31)) == 0;
7776 Set(
static_cast<int32_t>(i));
7782 template<
typename T>
7795 template<
typename T>
7802 template<
typename T>
7809 template<
typename T>
7816 template<
typename T>
7819 return *
reinterpret_cast<
Isolate**>(&value_[-2]);
7822 template<
typename T>
7823 template<
typename S>
7829 template<
typename T>
7836 template<
typename T>
7840 bool is_construct_call)
7847 template<
typename T>
7854 template<
typename T>
7861 template<
typename T>
7867 template<
typename T>
7874 template<
typename T>
7880 template<
typename T>
7886 template<
typename T>
7892 template<
typename T>
7898 template<
typename T>
7911 : resource_name_(resource_name),
7912 resource_line_offset_(resource_line_offset),
7913 resource_column_offset_(resource_column_offset),
7914 options_
(!resource_is_embedder_debug_script
.IsEmpty() &&
7916 !resource_is_shared_cross_origin
.IsEmpty() &&
7919 script_id_(script_id),
7920 source_map_url_(source_map_url) {}
7926 return resource_line_offset_;
7931 return resource_column_offset_;
7943 : source_string(string),
7949 cached_data(data) {}
7954 : source_string(string), cached_data(data) {}
7981 #ifndef V8_ENABLE_CHECKS
7985 O* obj = *
reinterpret_cast<O**>(
this);
7991 O** result =
HandleScope::CreateHandle(
reinterpret_cast<HO*>(obj), value);
7995 return SlowGetInternalField(index);
8000 #ifndef V8_ENABLE_CHECKS
8003 O* obj = *
reinterpret_cast<O**>(
this);
8011 return SlowGetAlignedPointerFromInternalField(index);
8016 #ifdef V8_ENABLE_CHECKS
8019 return static_cast<
String*>(value);
8035 O* obj = *
reinterpret_cast<O*
const*>(
this);
8043 #ifdef V8_ENABLE_CHECKS
8044 VerifyExternalStringResource(result);
8054 O* obj = *
reinterpret_cast<O*
const*>(
this);
8063 #ifdef V8_ENABLE_CHECKS
8064 VerifyExternalStringResourceBase(resource, *encoding_out);
8071 #ifdef V8_ENABLE_CHECKS
8072 return FullIsUndefined();
8074 return QuickIsUndefined();
8078 bool Value::QuickIsUndefined()
const {
8081 O* obj = *
reinterpret_cast<O*
const*>(
this);
8089 #ifdef V8_ENABLE_CHECKS
8090 return FullIsNull();
8092 return QuickIsNull();
8096 bool Value::QuickIsNull()
const {
8099 O* obj = *
reinterpret_cast<O*
const*>(
this);
8107 #ifdef V8_ENABLE_CHECKS
8108 return FullIsString();
8110 return QuickIsString();
8114 bool Value::QuickIsString()
const {
8117 O* obj = *
reinterpret_cast<O*
const*>(
this);
8124 return static_cast<
Value*>(value);
8177 #ifdef V8_ENABLE_CHECKS
8180 return static_cast<
Boolean*>(value);
8185 #ifdef V8_ENABLE_CHECKS
8188 return static_cast<
Name*>(value);
8193 #ifdef V8_ENABLE_CHECKS
8196 return static_cast<
Symbol*>(value);
8201 #ifdef V8_ENABLE_CHECKS
8204 return static_cast<
Number*>(value);
8209 #ifdef V8_ENABLE_CHECKS
8212 return static_cast<
Integer*>(value);
8217 #ifdef V8_ENABLE_CHECKS
8220 return static_cast<
Int32*>(value);
8225 #ifdef V8_ENABLE_CHECKS
8228 return static_cast<
Uint32*>(value);
8233 #ifdef V8_ENABLE_CHECKS
8236 return static_cast<
Date*>(value);
8241 #ifdef V8_ENABLE_CHECKS
8249 #ifdef V8_ENABLE_CHECKS
8257 #ifdef V8_ENABLE_CHECKS
8265 #ifdef V8_ENABLE_CHECKS
8273 #ifdef V8_ENABLE_CHECKS
8276 return static_cast<
RegExp*>(value);
8281 #ifdef V8_ENABLE_CHECKS
8284 return static_cast<
Object*>(value);
8289 #ifdef V8_ENABLE_CHECKS
8292 return static_cast<
Array*>(value);
8297 #ifdef V8_ENABLE_CHECKS
8300 return static_cast<
Map*>(value);
8305 #ifdef V8_ENABLE_CHECKS
8308 return static_cast<
Set*>(value);
8313 #ifdef V8_ENABLE_CHECKS
8316 return static_cast<
Promise*>(value);
8321 #ifdef V8_ENABLE_CHECKS
8324 return static_cast<
Proxy*>(value);
8329 #ifdef V8_ENABLE_CHECKS
8337 #ifdef V8_ENABLE_CHECKS
8345 #ifdef V8_ENABLE_CHECKS
8353 #ifdef V8_ENABLE_CHECKS
8361 #ifdef V8_ENABLE_CHECKS
8369 #ifdef V8_ENABLE_CHECKS
8377 #ifdef V8_ENABLE_CHECKS
8385 #ifdef V8_ENABLE_CHECKS
8393 #ifdef V8_ENABLE_CHECKS
8401 #ifdef V8_ENABLE_CHECKS
8409 #ifdef V8_ENABLE_CHECKS
8417 #ifdef V8_ENABLE_CHECKS
8425 #ifdef V8_ENABLE_CHECKS
8433 #ifdef V8_ENABLE_CHECKS
8436 return static_cast<
DataView*>(value);
8441 #ifdef V8_ENABLE_CHECKS
8449 #ifdef V8_ENABLE_CHECKS
8452 return static_cast<
Function*>(value);
8457 #ifdef V8_ENABLE_CHECKS
8460 return static_cast<
External*>(value);
8464 template<
typename T>
8470 template<
typename T>
8476 template<
typename T>
8482 template<
typename T>
8488 template<
typename T>
8493 template <
typename T>
8555 int64_t change_in_bytes) {
8557 int64_t* amount_of_external_allocated_memory =
8558 reinterpret_cast<int64_t*>(
reinterpret_cast<uint8_t*>(
this) +
8560 int64_t* amount_of_external_allocated_memory_at_last_global_gc =
8561 reinterpret_cast<int64_t*>(
8562 reinterpret_cast<uint8_t*>(
this) +
8564 int64_t amount = *amount_of_external_allocated_memory + change_in_bytes;
8565 if (change_in_bytes > 0 &&
8566 amount - *amount_of_external_allocated_memory_at_last_global_gc >
8568 ReportExternalAllocationLimitReached();
8570 *amount_of_external_allocated_memory = amount;
8571 return *amount_of_external_allocated_memory;
8575 template<
typename T>
8579 SetObjectGroupId(
reinterpret_cast<
v8::
internal::Object**>(object.val_), id);
8583 template<
typename T>
8587 SetReferenceFromGroup(id,
8588 reinterpret_cast<
v8::
internal::Object**>(object.val_));
8592 template<
typename T,
typename S>
8597 SetReference(
reinterpret_cast<
v8::
internal::Object**>(parent.val_),
8598 reinterpret_cast<
v8::
internal::Object**>(child.val_));
8603 #ifndef V8_ENABLE_CHECKS
8607 HO* context = *
reinterpret_cast<HO**>(
this);
8612 return SlowGetEmbedderData(index);
8618 #ifndef V8_ENABLE_CHECKS
8622 return SlowGetAlignedPointerFromEmbedderData(index);
8627 void V8::SetAllowCodeGenerationFromStringsCallback(
8652 void V8::SetFailedAccessCheckCallbackFunction(
8659 void V8::SetCaptureStackTraceForUncaughtExceptions(
8673 void V8::RemoveGCPrologueCallback(
GCCallback callback) {
8680 void V8::RemoveGCEpilogueCallback(
GCCallback callback) {
8704 bool V8::IsExecutionTerminating(
Isolate* isolate) {
8705 if (isolate == NULL) {
8712 void V8::CancelTerminateExecution(
Isolate* isolate) {
8729 void V8::VisitHandlesWithClassIds(
Isolate* isolate,
8735 void V8::VisitHandlesForPartialDependence(
Isolate* isolate,