diff options
Diffstat (limited to 'deps/v8/src/common/globals.h')
-rw-r--r-- | deps/v8/src/common/globals.h | 71 |
1 files changed, 62 insertions, 9 deletions
diff --git a/deps/v8/src/common/globals.h b/deps/v8/src/common/globals.h index 8d1bf5dfcc..a0584b95c4 100644 --- a/deps/v8/src/common/globals.h +++ b/deps/v8/src/common/globals.h @@ -101,6 +101,14 @@ constexpr int kStackSpaceRequiredForCompilation = 40; #define V8_OS_WIN_X64 true #endif +#if defined(V8_OS_WIN) && defined(V8_TARGET_ARCH_ARM64) +#define V8_OS_WIN_ARM64 true +#endif + +#if defined(V8_OS_WIN_X64) || defined(V8_OS_WIN_ARM64) +#define V8_OS_WIN64 true +#endif + // Superclass for classes only using static method functions. // The subclass of AllStatic cannot be instantiated at all. class AllStatic { @@ -882,14 +890,14 @@ constexpr int kIeeeDoubleExponentWordOffset = 0; // Testers for test. #define HAS_SMI_TAG(value) \ - ((static_cast<intptr_t>(value) & ::i::kSmiTagMask) == ::i::kSmiTag) + ((static_cast<i::Tagged_t>(value) & ::i::kSmiTagMask) == ::i::kSmiTag) -#define HAS_STRONG_HEAP_OBJECT_TAG(value) \ - (((static_cast<intptr_t>(value) & ::i::kHeapObjectTagMask) == \ +#define HAS_STRONG_HEAP_OBJECT_TAG(value) \ + (((static_cast<i::Tagged_t>(value) & ::i::kHeapObjectTagMask) == \ ::i::kHeapObjectTag)) -#define HAS_WEAK_HEAP_OBJECT_TAG(value) \ - (((static_cast<intptr_t>(value) & ::i::kHeapObjectTagMask) == \ +#define HAS_WEAK_HEAP_OBJECT_TAG(value) \ + (((static_cast<i::Tagged_t>(value) & ::i::kHeapObjectTagMask) == \ ::i::kWeakHeapObjectTag)) // OBJECT_POINTER_ALIGN returns the value aligned as a HeapObject pointer @@ -1060,6 +1068,25 @@ enum class VariableMode : uint8_t { // has been shadowed by an eval-introduced // variable + // Variables for private methods or accessors whose access require + // brand check. Declared only in class scopes by the compiler + // and allocated only in class contexts: + kPrivateMethod, // Does not coexist with any other variable with the same + // name in the same scope. + + kPrivateSetterOnly, // Incompatible with variables with the same name but + // any mode other than kPrivateGetterOnly. Transition to + // kPrivateGetterAndSetter if a later declaration for the + // same name with kPrivateGetterOnly is made. + + kPrivateGetterOnly, // Incompatible with variables with the same name but + // any mode other than kPrivateSetterOnly. Transition to + // kPrivateGetterAndSetter if a later declaration for the + // same name with kPrivateSetterOnly is made. + + kPrivateGetterAndSetter, // Does not coexist with any other variable with the + // same name in the same scope. + kLastLexicalVariableMode = kConst, }; @@ -1071,6 +1098,14 @@ inline const char* VariableMode2String(VariableMode mode) { return "VAR"; case VariableMode::kLet: return "LET"; + case VariableMode::kPrivateGetterOnly: + return "PRIVATE_GETTER_ONLY"; + case VariableMode::kPrivateSetterOnly: + return "PRIVATE_SETTER_ONLY"; + case VariableMode::kPrivateMethod: + return "PRIVATE_METHOD"; + case VariableMode::kPrivateGetterAndSetter: + return "PRIVATE_GETTER_AND_SETTER"; case VariableMode::kConst: return "CONST"; case VariableMode::kDynamic: @@ -1104,6 +1139,21 @@ inline bool IsDeclaredVariableMode(VariableMode mode) { return mode <= VariableMode::kVar; } +inline bool IsPrivateMethodOrAccessorVariableMode(VariableMode mode) { + return mode >= VariableMode::kPrivateMethod && + mode <= VariableMode::kPrivateGetterAndSetter; +} + +inline bool IsSerializableVariableMode(VariableMode mode) { + return IsDeclaredVariableMode(mode) || + IsPrivateMethodOrAccessorVariableMode(mode); +} + +inline bool IsConstVariableMode(VariableMode mode) { + return mode == VariableMode::kConst || + IsPrivateMethodOrAccessorVariableMode(mode); +} + inline bool IsLexicalVariableMode(VariableMode mode) { STATIC_ASSERT(static_cast<uint8_t>(VariableMode::kLet) == 0); // Implies that mode >= VariableMode::kLet. @@ -1168,8 +1218,6 @@ enum InitializationFlag : uint8_t { kNeedsInitialization, kCreatedInitialized }; enum MaybeAssignedFlag : uint8_t { kNotAssigned, kMaybeAssigned }; -enum RequiresBrandCheckFlag : uint8_t { kNoBrandCheck, kRequiresBrandCheck }; - enum class InterpreterPushArgsMode : unsigned { kArrayFunction, kWithFinalSpread, @@ -1498,12 +1546,12 @@ enum KeyedAccessStoreMode { enum MutableMode { MUTABLE, IMMUTABLE }; -static inline bool IsCOWHandlingStoreMode(KeyedAccessStoreMode store_mode) { +inline bool IsCOWHandlingStoreMode(KeyedAccessStoreMode store_mode) { return store_mode == STORE_HANDLE_COW || store_mode == STORE_AND_GROW_HANDLE_COW; } -static inline bool IsGrowStoreMode(KeyedAccessStoreMode store_mode) { +inline bool IsGrowStoreMode(KeyedAccessStoreMode store_mode) { return store_mode == STORE_AND_GROW_HANDLE_COW; } @@ -1535,6 +1583,11 @@ constexpr int kSmallOrderedHashMapMinCapacity = 4; // has correct value range (see Issue 830 for more details). enum StackFrameId { ID_MIN_VALUE = kMinInt, ID_MAX_VALUE = kMaxInt, NO_ID = 0 }; +enum class ExceptionStatus : bool { kException = false, kSuccess = true }; +V8_INLINE bool operator!(ExceptionStatus status) { + return !static_cast<bool>(status); +} + } // namespace internal } // namespace v8 |