Loading...
Searching...
No Matches
v8-primitive.h
Go to the documentation of this file.
1// Copyright 2021 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef INCLUDE_V8_PRIMITIVE_H_
6#define INCLUDE_V8_PRIMITIVE_H_
7
8#include "v8-data.h" // NOLINT(build/include_directory)
9#include "v8-internal.h" // NOLINT(build/include_directory)
10#include "v8-local-handle.h" // NOLINT(build/include_directory)
11#include "v8-value.h" // NOLINT(build/include_directory)
12#include "v8config.h" // NOLINT(build/include_directory)
13
14namespace v8 {
15
16class Context;
17class Isolate;
18class String;
19
20namespace internal {
21class ExternalString;
22class ScopedExternalStringLock;
23class StringForwardingTable;
24} // namespace internal
25
29class V8_EXPORT Primitive : public Value {};
30
35class V8_EXPORT Boolean : public Primitive {
36 public:
37 bool Value() const;
38 V8_INLINE static Boolean* Cast(v8::Data* data) {
39#ifdef V8_ENABLE_CHECKS
40 CheckCast(data);
41#endif
42 return static_cast<Boolean*>(data);
43 }
44
45 V8_INLINE static Local<Boolean> New(Isolate* isolate, bool value);
46
47 private:
48 static void CheckCast(v8::Data* that);
49};
50
59 public:
60 static Local<PrimitiveArray> New(Isolate* isolate, int length);
61 int Length() const;
62 void Set(Isolate* isolate, int index, Local<Primitive> item);
63 Local<Primitive> Get(Isolate* isolate, int index);
64
66#ifdef V8_ENABLE_CHECKS
67 CheckCast(data);
68#endif
69 return reinterpret_cast<PrimitiveArray*>(data);
70 }
71
72 private:
73 static void CheckCast(Data* obj);
74};
75
79class V8_EXPORT Name : public Primitive {
80 public:
89
90 V8_INLINE static Name* Cast(Data* data) {
91#ifdef V8_ENABLE_CHECKS
92 CheckCast(data);
93#endif
94 return static_cast<Name*>(data);
95 }
96
97 private:
98 static void CheckCast(Data* that);
99};
100
107enum class NewStringType {
111 kNormal,
112
119};
120
124class V8_EXPORT String : public Name {
125 public:
126 static constexpr int kMaxLength =
127 internal::kApiSystemPointerSize == 4 ? (1 << 28) - 16 : (1 << 29) - 24;
128
129 enum Encoding {
130 UNKNOWN_ENCODING = 0x1,
131 TWO_BYTE_ENCODING = 0x0,
132 ONE_BYTE_ENCODING = 0x8
133 };
137 int Length() const;
138
143 int Utf8Length(Isolate* isolate) const;
144
151 bool IsOneByte() const;
152
159
186 NO_OPTIONS = 0,
187 HINT_MANY_WRITES_EXPECTED = 1,
188 NO_NULL_TERMINATION = 2,
189 PRESERVE_ONE_BYTE_NULL = 4,
190 // Used by WriteUtf8 to replace orphan surrogate code units with the
191 // unicode replacement character. Needs to be set to guarantee valid UTF-8
192 // output.
193 REPLACE_INVALID_UTF8 = 8
194 };
195
196 // 16-bit character codes.
197 int Write(Isolate* isolate, uint16_t* buffer, int start = 0, int length = -1,
198 int options = NO_OPTIONS) const;
199 // One byte characters.
200 int WriteOneByte(Isolate* isolate, uint8_t* buffer, int start = 0,
201 int length = -1, int options = NO_OPTIONS) const;
202 // UTF-8 encoded characters.
203 int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
204 int* nchars_ref = nullptr, int options = NO_OPTIONS) const;
205
209 V8_INLINE static Local<String> Empty(Isolate* isolate);
210
214 bool IsExternal() const;
215
219 bool IsExternalTwoByte() const;
220
224 bool IsExternalOneByte() const;
225
231
233 public:
234 virtual ~ExternalStringResourceBase() = default;
235
241 virtual bool IsCacheable() const { return true; }
242
243 // Disallow copying and assigning.
246
247 protected:
249
256 virtual void Dispose() { delete this; }
257
269 virtual void Lock() const {}
270
274 virtual void Unlock() const {}
275
276 private:
277 friend class internal::ExternalString;
278 friend class v8::String;
279 friend class internal::StringForwardingTable;
280 friend class internal::ScopedExternalStringLock;
281 };
282
290 public:
295 ~ExternalStringResource() override = default;
296
301 virtual const uint16_t* data() const = 0;
302
306 virtual size_t length() const = 0;
307
313 const uint16_t* cached_data() const {
314 CheckCachedDataInvariants();
315 return cached_data_;
316 }
317
323
324 protected:
326
327 private:
328 void CheckCachedDataInvariants() const;
329
330 const uint16_t* cached_data_ = nullptr;
331 };
332
345 public:
350 ~ExternalOneByteStringResource() override = default;
351
356 virtual const char* data() const = 0;
357
359 virtual size_t length() const = 0;
360
366 const char* cached_data() const {
367 CheckCachedDataInvariants();
368 return cached_data_;
369 }
370
375 void UpdateDataCache();
377 protected:
379
380 private:
381 void CheckCachedDataInvariants() const;
382
383 const char* cached_data_ = nullptr;
384 };
385
391 V8_INLINE ExternalStringResourceBase* GetExternalStringResourceBase(
392 v8::Isolate* isolate, Encoding* encoding_out) const;
393 V8_INLINE ExternalStringResourceBase* GetExternalStringResourceBase(
394 Encoding* encoding_out) const;
395
400 V8_INLINE ExternalStringResource* GetExternalStringResource() const;
401
407
408 V8_INLINE static String* Cast(v8::Data* data) {
409#ifdef V8_ENABLE_CHECKS
410 CheckCast(data);
411#endif
412 return static_cast<String*>(data);
413 }
414
424 template <int N>
426 Isolate* isolate, const char (&literal)[N],
427 NewStringType type = NewStringType::kNormal) {
428 static_assert(N <= kMaxLength, "String is too long");
429 return NewFromUtf8Literal(isolate, literal, type, N - 1);
430 }
431
435 Isolate* isolate, const char* data,
436 NewStringType type = NewStringType::kNormal, int length = -1);
437
441 Isolate* isolate, const uint8_t* data,
442 NewStringType type = NewStringType::kNormal, int length = -1);
443
447 Isolate* isolate, const uint16_t* data,
448 NewStringType type = NewStringType::kNormal, int length = -1);
449
455 Local<String> right);
456
466 Isolate* isolate, ExternalStringResource* resource);
467
478
488 Isolate* isolate, ExternalOneByteStringResource* resource);
489
500
505 bool CanMakeExternal(Encoding encoding) const;
506
511
524 public:
526 WriteOptions options = REPLACE_INVALID_UTF8);
528 char* operator*() { return str_; }
529 const char* operator*() const { return str_; }
530 int length() const { return length_; }
531
532 // Disallow copying and assigning.
533 Utf8Value(const Utf8Value&) = delete;
534 void operator=(const Utf8Value&) = delete;
535
536 private:
537 char* str_;
538 int length_;
539 };
540
552 public:
554 "Prefer using String::ValueView if you can, or string->Write to a "
555 "buffer if you cannot.")
556 Value(Isolate* isolate, Local<v8::Value> obj);
558 uint16_t* operator*() { return str_; }
559 const uint16_t* operator*() const { return str_; }
560 int length() const { return length_; }
561
562 // Disallow copying and assigning.
563 Value(const Value&) = delete;
564 void operator=(const Value&) = delete;
565
566 private:
567 uint16_t* str_;
568 int length_;
569 };
570
582 public:
585 const uint8_t* data8() const {
586#if V8_ENABLE_CHECKS
587 CheckOneByte(true);
588#endif
589 return data8_;
590 }
591 const uint16_t* data16() const {
592#if V8_ENABLE_CHECKS
593 CheckOneByte(false);
594#endif
595 return data16_;
596 }
597 int length() const { return length_; }
598 bool is_one_byte() const { return is_one_byte_; }
599
600 // Disallow copying and assigning.
601 ValueView(const ValueView&) = delete;
602 void operator=(const ValueView&) = delete;
603
604 private:
605 void CheckOneByte(bool is_one_byte) const;
606
607 Local<v8::String> flat_str_;
608 union {
609 const uint8_t* data8_;
610 const uint16_t* data16_;
611 };
612 int length_;
613 bool is_one_byte_;
614 // Avoid exposing the internal DisallowGarbageCollection scope.
615 alignas(internal::Internals::
616 kDisallowGarbageCollectionAlign) char no_gc_debug_scope_
617 [internal::Internals::kDisallowGarbageCollectionSize];
618 };
619
620 private:
621 void VerifyExternalStringResourceBase(ExternalStringResourceBase* v,
622 Encoding encoding) const;
623 void VerifyExternalStringResource(ExternalStringResource* val) const;
624 ExternalStringResource* GetExternalStringResourceSlow() const;
625 ExternalStringResourceBase* GetExternalStringResourceBaseSlow(
626 String::Encoding* encoding_out) const;
627
628 static Local<v8::String> NewFromUtf8Literal(Isolate* isolate,
629 const char* literal,
630 NewStringType type, int length);
631
632 static void CheckCast(v8::Data* that);
633};
634
635// Zero-length string specialization (templated string size includes
636// terminator).
637template <>
639 Isolate* isolate, const char (&literal)[1], NewStringType type) {
640 return String::Empty(isolate);
641}
642
647 public:
648 virtual ~ExternalResourceVisitor() = default;
649 virtual void VisitExternalString(Local<String> string) {}
650};
651
655class V8_EXPORT Symbol : public Name {
656 public:
661
666 static Local<Symbol> New(Isolate* isolate,
667 Local<String> description = Local<String>());
668
677 static Local<Symbol> For(Isolate* isolate, Local<String> description);
678
683 static Local<Symbol> ForApi(Isolate* isolate, Local<String> description);
684
685 // Well-known symbols
697
698 V8_INLINE static Symbol* Cast(Data* data) {
699#ifdef V8_ENABLE_CHECKS
700 CheckCast(data);
701#endif
702 return static_cast<Symbol*>(data);
703 }
704
705 private:
706 Symbol();
707 static void CheckCast(Data* that);
708};
709
715 private:
716 Numeric();
717 static void CheckCast(v8::Data* that);
718};
719
723class V8_EXPORT Number : public Numeric {
724 public:
725 double Value() const;
726 static Local<Number> New(Isolate* isolate, double value);
727 V8_INLINE static Number* Cast(v8::Data* data) {
728#ifdef V8_ENABLE_CHECKS
729 CheckCast(data);
730#endif
731 return static_cast<Number*>(data);
732 }
733
734 private:
735 Number();
736 static void CheckCast(v8::Data* that);
737};
738
742class V8_EXPORT Integer : public Number {
743 public:
744 static Local<Integer> New(Isolate* isolate, int32_t value);
745 static Local<Integer> NewFromUnsigned(Isolate* isolate, uint32_t value);
746 int64_t Value() const;
748#ifdef V8_ENABLE_CHECKS
749 CheckCast(data);
750#endif
751 return static_cast<Integer*>(data);
752 }
753
754 private:
755 Integer();
756 static void CheckCast(v8::Data* that);
757};
758
762class V8_EXPORT Int32 : public Integer {
763 public:
764 int32_t Value() const;
765 V8_INLINE static Int32* Cast(v8::Data* data) {
766#ifdef V8_ENABLE_CHECKS
767 CheckCast(data);
768#endif
769 return static_cast<Int32*>(data);
770 }
771
772 private:
773 Int32();
774 static void CheckCast(v8::Data* that);
775};
776
780class V8_EXPORT Uint32 : public Integer {
781 public:
782 uint32_t Value() const;
783 V8_INLINE static Uint32* Cast(v8::Data* data) {
784#ifdef V8_ENABLE_CHECKS
785 CheckCast(data);
786#endif
787 return static_cast<Uint32*>(data);
788 }
789
790 private:
791 Uint32();
792 static void CheckCast(v8::Data* that);
793};
794
798class V8_EXPORT BigInt : public Numeric {
799 public:
800 static Local<BigInt> New(Isolate* isolate, int64_t value);
801 static Local<BigInt> NewFromUnsigned(Isolate* isolate, uint64_t value);
809 static MaybeLocal<BigInt> NewFromWords(Local<Context> context, int sign_bit,
810 int word_count, const uint64_t* words);
811
818 uint64_t Uint64Value(bool* lossless = nullptr) const;
819
825 int64_t Int64Value(bool* lossless = nullptr) const;
826
831 int WordCount() const;
832
841 void ToWordsArray(int* sign_bit, int* word_count, uint64_t* words) const;
842
843 V8_INLINE static BigInt* Cast(v8::Data* data) {
844#ifdef V8_ENABLE_CHECKS
845 CheckCast(data);
846#endif
847 return static_cast<BigInt*>(data);
848 }
849
850 private:
851 BigInt();
852 static void CheckCast(v8::Data* that);
853};
854
856 using S = internal::Address;
857 using I = internal::Internals;
858 I::CheckInitialized(isolate);
859 S* slot = I::GetRootSlot(isolate, I::kEmptyStringRootIndex);
860 return Local<String>::FromSlot(slot);
861}
862
864 using A = internal::Address;
865 using I = internal::Internals;
867
869 if (I::IsExternalTwoByteString(I::GetInstanceType(obj))) {
870 Isolate* isolate = I::GetIsolateForSandbox(obj);
871 A value = I::ReadExternalPointerField<internal::kExternalStringResourceTag>(
872 isolate, obj, I::kStringResourceOffset);
873 result = reinterpret_cast<String::ExternalStringResource*>(value);
874 } else {
875 result = GetExternalStringResourceSlow();
876 }
877#ifdef V8_ENABLE_CHECKS
878 VerifyExternalStringResource(result);
879#endif
880 return result;
881}
882
884 v8::Isolate* isolate, String::Encoding* encoding_out) const {
885 using A = internal::Address;
886 using I = internal::Internals;
888 int type = I::GetInstanceType(obj) & I::kStringRepresentationAndEncodingMask;
889 *encoding_out = static_cast<Encoding>(type & I::kStringEncodingMask);
891 if (type == I::kExternalOneByteRepresentationTag ||
892 type == I::kExternalTwoByteRepresentationTag) {
893 A value = I::ReadExternalPointerField<internal::kExternalStringResourceTag>(
894 isolate, obj, I::kStringResourceOffset);
895 resource = reinterpret_cast<ExternalStringResourceBase*>(value);
896 } else {
897 resource = GetExternalStringResourceBaseSlow(encoding_out);
898 }
899#ifdef V8_ENABLE_CHECKS
900 VerifyExternalStringResourceBase(resource, *encoding_out);
901#endif
902 return resource;
903}
904
906 String::Encoding* encoding_out) const {
907 using A = internal::Address;
908 using I = internal::Internals;
910 int type = I::GetInstanceType(obj) & I::kStringRepresentationAndEncodingMask;
911 *encoding_out = static_cast<Encoding>(type & I::kStringEncodingMask);
913 if (type == I::kExternalOneByteRepresentationTag ||
914 type == I::kExternalTwoByteRepresentationTag) {
915 Isolate* isolate = I::GetIsolateForSandbox(obj);
916 A value = I::ReadExternalPointerField<internal::kExternalStringResourceTag>(
917 isolate, obj, I::kStringResourceOffset);
918 resource = reinterpret_cast<ExternalStringResourceBase*>(value);
919 } else {
920 resource = GetExternalStringResourceBaseSlow(encoding_out);
921 }
922#ifdef V8_ENABLE_CHECKS
923 VerifyExternalStringResourceBase(resource, *encoding_out);
924#endif
925 return resource;
926}
927
928// --- Statics ---
929
931 using S = internal::Address;
932 using I = internal::Internals;
933 I::CheckInitialized(isolate);
934 S* slot = I::GetRootSlot(isolate, I::kUndefinedValueRootIndex);
935 return Local<Primitive>::FromSlot(slot);
936}
937
939 using S = internal::Address;
940 using I = internal::Internals;
941 I::CheckInitialized(isolate);
942 S* slot = I::GetRootSlot(isolate, I::kNullValueRootIndex);
943 return Local<Primitive>::FromSlot(slot);
944}
945
947 using S = internal::Address;
948 using I = internal::Internals;
949 I::CheckInitialized(isolate);
950 S* slot = I::GetRootSlot(isolate, I::kTrueValueRootIndex);
951 return Local<Boolean>::FromSlot(slot);
952}
953
955 using S = internal::Address;
956 using I = internal::Internals;
957 I::CheckInitialized(isolate);
958 S* slot = I::GetRootSlot(isolate, I::kFalseValueRootIndex);
959 return Local<Boolean>::FromSlot(slot);
960}
961
962Local<Boolean> Boolean::New(Isolate* isolate, bool value) {
963 return value ? True(isolate) : False(isolate);
964}
965
966} // namespace v8
967
968#endif // INCLUDE_V8_PRIMITIVE_H_
Definition: v8-primitive.h:798
uint64_t Uint64Value(bool *lossless=nullptr) const
static BigInt * Cast(v8::Data *data)
Definition: v8-primitive.h:843
static Local< BigInt > New(Isolate *isolate, int64_t value)
int64_t Int64Value(bool *lossless=nullptr) const
static MaybeLocal< BigInt > NewFromWords(Local< Context > context, int sign_bit, int word_count, const uint64_t *words)
int WordCount() const
static Local< BigInt > NewFromUnsigned(Isolate *isolate, uint64_t value)
void ToWordsArray(int *sign_bit, int *word_count, uint64_t *words) const
Definition: v8-primitive.h:35
bool Value() const
static Local< Boolean > New(Isolate *isolate, bool value)
Definition: v8-primitive.h:962
static Boolean * Cast(v8::Data *data)
Definition: v8-primitive.h:38
Definition: v8-data.h:18
Definition: v8-primitive.h:646
virtual ~ExternalResourceVisitor()=default
virtual void VisitExternalString(Local< String > string)
Definition: v8-primitive.h:649
Definition: v8-primitive.h:762
static Int32 * Cast(v8::Data *data)
Definition: v8-primitive.h:765
int32_t Value() const
Definition: v8-primitive.h:742
static Integer * Cast(v8::Data *data)
Definition: v8-primitive.h:747
static Local< Integer > New(Isolate *isolate, int32_t value)
static Local< Integer > NewFromUnsigned(Isolate *isolate, uint32_t value)
int64_t Value() const
Definition: v8-isolate.h:211
Definition: v8-local-handle.h:256
Definition: v8-local-handle.h:614
Definition: v8-primitive.h:79
static Name * Cast(Data *data)
Definition: v8-primitive.h:90
int GetIdentityHash()
Definition: v8-primitive.h:723
static Local< Number > New(Isolate *isolate, double value)
static Number * Cast(v8::Data *data)
Definition: v8-primitive.h:727
double Value() const
Definition: v8-primitive.h:714
Definition: v8-primitive.h:58
static Local< PrimitiveArray > New(Isolate *isolate, int length)
Local< Primitive > Get(Isolate *isolate, int index)
static PrimitiveArray * Cast(Data *data)
Definition: v8-primitive.h:65
int Length() const
void Set(Isolate *isolate, int index, Local< Primitive > item)
Definition: v8-primitive.h:29
Definition: v8-primitive.h:344
const char * cached_data() const
Definition: v8-primitive.h:366
~ExternalOneByteStringResource() override=default
virtual const char * data() const =0
Definition: v8-primitive.h:232
void operator=(const ExternalStringResourceBase &)=delete
ExternalStringResourceBase(const ExternalStringResourceBase &)=delete
virtual ~ExternalStringResourceBase()=default
virtual void Unlock() const
Definition: v8-primitive.h:274
virtual bool IsCacheable() const
Definition: v8-primitive.h:241
virtual void Lock() const
Definition: v8-primitive.h:269
virtual void Dispose()
Definition: v8-primitive.h:256
Definition: v8-primitive.h:289
virtual const uint16_t * data() const =0
const uint16_t * cached_data() const
Definition: v8-primitive.h:313
virtual size_t length() const =0
~ExternalStringResource() override=default
Definition: v8-primitive.h:523
char * operator*()
Definition: v8-primitive.h:528
Utf8Value(Isolate *isolate, Local< v8::Value > obj, WriteOptions options=REPLACE_INVALID_UTF8)
Utf8Value(const Utf8Value &)=delete
const char * operator*() const
Definition: v8-primitive.h:529
void operator=(const Utf8Value &)=delete
int length() const
Definition: v8-primitive.h:530
Definition: v8-primitive.h:581
bool is_one_byte() const
Definition: v8-primitive.h:598
int length() const
Definition: v8-primitive.h:597
const uint16_t * data16_
Definition: v8-primitive.h:610
void operator=(const ValueView &)=delete
const uint8_t * data8() const
Definition: v8-primitive.h:585
ValueView(const ValueView &)=delete
const uint16_t * data16() const
Definition: v8-primitive.h:591
ValueView(Isolate *isolate, Local< v8::String > str)
const uint8_t * data8_
Definition: v8-primitive.h:609
Definition: v8-primitive.h:551
const uint16_t * operator*() const
Definition: v8-primitive.h:559
Value(const Value &)=delete
void operator=(const Value &)=delete
int length() const
Definition: v8-primitive.h:560
Definition: v8-primitive.h:124
bool IsExternalTwoByte() const
bool IsExternal() const
static Local< String > Concat(Isolate *isolate, Local< String > left, Local< String > right)
bool IsExternalOneByte() const
bool ContainsOnlyOneByte() const
ExternalStringResourceBase * GetExternalStringResourceBase(v8::Isolate *isolate, Encoding *encoding_out) const
Definition: v8-primitive.h:883
Encoding
Definition: v8-primitive.h:129
static MaybeLocal< String > NewExternalOneByte(Isolate *isolate, ExternalOneByteStringResource *resource)
Local< String > InternalizeString(Isolate *isolate)
bool StringEquals(Local< String > str) const
bool MakeExternal(ExternalStringResource *resource)
bool MakeExternal(ExternalOneByteStringResource *resource)
int WriteOneByte(Isolate *isolate, uint8_t *buffer, int start=0, int length=-1, int options=NO_OPTIONS) const
static MaybeLocal< String > NewFromUtf8(Isolate *isolate, const char *data, NewStringType type=NewStringType::kNormal, int length=-1)
int Write(Isolate *isolate, uint16_t *buffer, int start=0, int length=-1, int options=NO_OPTIONS) const
int WriteUtf8(Isolate *isolate, char *buffer, int length=-1, int *nchars_ref=nullptr, int options=NO_OPTIONS) const
const ExternalOneByteStringResource * GetExternalOneByteStringResource() const
static MaybeLocal< String > NewExternalTwoByte(Isolate *isolate, ExternalStringResource *resource)
static MaybeLocal< String > NewFromOneByte(Isolate *isolate, const uint8_t *data, NewStringType type=NewStringType::kNormal, int length=-1)
bool IsOneByte() const
static String * Cast(v8::Data *data)
Definition: v8-primitive.h:408
WriteOptions
Definition: v8-primitive.h:185
static Local< String > Empty(Isolate *isolate)
Definition: v8-primitive.h:855
static MaybeLocal< String > NewFromTwoByte(Isolate *isolate, const uint16_t *data, NewStringType type=NewStringType::kNormal, int length=-1)
static Local< String > NewFromUtf8Literal(Isolate *isolate, const char(&literal)[N], NewStringType type=NewStringType::kNormal)
Definition: v8-primitive.h:425
ExternalStringResource * GetExternalStringResource() const
Definition: v8-primitive.h:863
bool CanMakeExternal(Encoding encoding) const
int Utf8Length(Isolate *isolate) const
int Length() const
Definition: v8-primitive.h:655
static Local< Symbol > GetMatch(Isolate *isolate)
static Local< Symbol > GetIterator(Isolate *isolate)
static Symbol * Cast(Data *data)
Definition: v8-primitive.h:698
static Local< Symbol > ForApi(Isolate *isolate, Local< String > description)
static Local< Symbol > GetSearch(Isolate *isolate)
static Local< Symbol > GetToPrimitive(Isolate *isolate)
static Local< Symbol > GetAsyncIterator(Isolate *isolate)
static Local< Symbol > GetIsConcatSpreadable(Isolate *isolate)
static Local< Symbol > New(Isolate *isolate, Local< String > description=Local< String >())
static Local< Symbol > GetReplace(Isolate *isolate)
static Local< Symbol > GetToStringTag(Isolate *isolate)
static Local< Symbol > GetSplit(Isolate *isolate)
static Local< Symbol > GetUnscopables(Isolate *isolate)
static Local< Symbol > For(Isolate *isolate, Local< String > description)
Local< Value > Description(Isolate *isolate) const
static Local< Symbol > GetHasInstance(Isolate *isolate)
Definition: v8-primitive.h:780
static Uint32 * Cast(v8::Data *data)
Definition: v8-primitive.h:783
uint32_t Value() const
Definition: v8-value.h:32
Definition: v8-internal.h:840
static Address ValueAsAddress(const T *value)
Definition: v8-internal.h:1595
uintptr_t Address
Definition: v8-internal.h:33
Definition: libplatform.h:15
Local< Primitive > Null(Isolate *isolate)
Definition: v8-primitive.h:938
Local< Primitive > Undefined(Isolate *isolate)
Definition: v8-primitive.h:930
Local< Boolean > False(Isolate *isolate)
Definition: v8-primitive.h:954
Local< Boolean > True(Isolate *isolate)
Definition: v8-primitive.h:946
NewStringType
Definition: v8-primitive.h:107
#define V8_EXPORT
Definition: v8config.h:779
#define V8_INLINE
Definition: v8config.h:493
#define V8_DEPRECATE_SOON(message)
Definition: v8config.h:597
#define V8_WARN_UNUSED_RESULT
Definition: v8config.h:654