diff options
Diffstat (limited to 'deps/v8/src/globals.h')
-rw-r--r-- | deps/v8/src/globals.h | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/deps/v8/src/globals.h b/deps/v8/src/globals.h index 6c6966aee..30b676c8b 100644 --- a/deps/v8/src/globals.h +++ b/deps/v8/src/globals.h @@ -230,6 +230,9 @@ const int kPointerSize = sizeof(void*); // NOLINT const int kDoubleSizeLog2 = 3; +// Size of the state of a the random number generator. +const int kRandomStateSize = 2 * kIntSize; + #if V8_HOST_ARCH_64_BIT const int kPointerSizeLog2 = 3; const intptr_t kIntptrSignBit = V8_INT64_C(0x8000000000000000); @@ -255,6 +258,10 @@ const int kBinary32MinExponent = 0x01; const int kBinary32MantissaBits = 23; const int kBinary32ExponentShift = 23; +// Quiet NaNs have bits 51 to 62 set, possibly the sign bit, and no +// other bits set. +const uint64_t kQuietNaNMask = static_cast<uint64_t>(0xfff) << 51; + // ASCII/UC16 constants // Code-point values in Unicode 4.0 are 21 bits wide. typedef uint16_t uc16; @@ -287,7 +294,7 @@ const uint32_t kMaxAsciiCharCodeU = 0x7fu; // The USE(x) template is used to silence C++ compiler warnings // issued for (yet) unused variables (typically parameters). template <typename T> -static inline void USE(T) { } +inline void USE(T) { } // FUNCTION_ADDR(f) gets the address of a C function f. @@ -351,6 +358,39 @@ F FUNCTION_CAST(Address addr) { class FreeStoreAllocationPolicy; template <typename T, class P = FreeStoreAllocationPolicy> class List; +// ----------------------------------------------------------------------------- +// Declarations for use in both the preparser and the rest of V8. + +// The different language modes that V8 implements. ES5 defines two language +// modes: an unrestricted mode respectively a strict mode which are indicated by +// CLASSIC_MODE respectively STRICT_MODE in the enum. The harmony spec drafts +// for the next ES standard specify a new third mode which is called 'extended +// mode'. The extended mode is only available if the harmony flag is set. It is +// based on the 'strict mode' and adds new functionality to it. This means that +// most of the semantics of these two modes coincide. +// +// In the current draft the term 'base code' is used to refer to code that is +// neither in strict nor extended mode. However, the more distinguishing term +// 'classic mode' is used in V8 instead to avoid mix-ups. + +enum LanguageMode { + CLASSIC_MODE, + STRICT_MODE, + EXTENDED_MODE +}; + + +// The Strict Mode (ECMA-262 5th edition, 4.2.2). +// +// This flag is used in the backend to represent the language mode. So far +// there is no semantic difference between the strict and the extended mode in +// the backend, so both modes are represented by the kStrictMode value. +enum StrictModeFlag { + kNonStrictMode, + kStrictMode +}; + + } } // namespace v8::internal #endif // V8_GLOBALS_H_ |