diff options
Diffstat (limited to 'src/3rdparty/v8/src/v8globals.h')
-rw-r--r-- | src/3rdparty/v8/src/v8globals.h | 70 |
1 files changed, 42 insertions, 28 deletions
diff --git a/src/3rdparty/v8/src/v8globals.h b/src/3rdparty/v8/src/v8globals.h index 6a1766a..95390ad 100644 --- a/src/3rdparty/v8/src/v8globals.h +++ b/src/3rdparty/v8/src/v8globals.h @@ -52,15 +52,6 @@ const intptr_t kPointerAlignmentMask = kPointerAlignment - 1; const intptr_t kDoubleAlignment = 8; const intptr_t kDoubleAlignmentMask = kDoubleAlignment - 1; -// Desired alignment for maps. -#if V8_HOST_ARCH_64_BIT -const intptr_t kMapAlignmentBits = kObjectAlignmentBits; -#else -const intptr_t kMapAlignmentBits = kObjectAlignmentBits + 3; -#endif -const intptr_t kMapAlignment = (1 << kMapAlignmentBits); -const intptr_t kMapAlignmentMask = kMapAlignment - 1; - // Desired alignment for generated code is 32 bytes (to improve cache line // utilization). const int kCodeAlignmentBits = 5; @@ -94,6 +85,7 @@ const uint32_t kDebugZapValue = 0xbadbaddb; const uint32_t kFreeListZapValue = 0xfeed1eaf; #endif +const int kCodeZapValue = 0xbadc0de; // Number of bits to represent the page size for paged spaces. The value of 20 // gives 1Mb bytes per page. @@ -126,6 +118,7 @@ class Debugger; class DebugInfo; class Descriptor; class DescriptorArray; +class TransitionArray; class ExternalReference; class FixedArray; class FunctionTemplateInfo; @@ -311,14 +304,6 @@ typedef void (*StoreBufferCallback)(Heap* heap, StoreBufferEvent event); -// Whether to remove map transitions and constant transitions from a -// DescriptorArray. -enum TransitionFlag { - REMOVE_TRANSITIONS, - KEEP_TRANSITIONS -}; - - // Union used for fast testing of specific double values. union DoubleRepresentation { double value; @@ -366,11 +351,12 @@ struct AccessorDescriptor { // VMState object leaves a state by popping the current state from the // stack. -#define STATE_TAG_LIST(V) \ - V(JS) \ - V(GC) \ - V(COMPILER) \ - V(OTHER) \ +#define STATE_TAG_LIST(V) \ + V(JS) \ + V(GC) \ + V(COMPILER) \ + V(PARALLEL_COMPILER_PROLOGUE) \ + V(OTHER) \ V(EXTERNAL) enum StateTag { @@ -401,10 +387,6 @@ enum StateTag { #define POINTER_SIZE_ALIGN(value) \ (((value) + kPointerAlignmentMask) & ~kPointerAlignmentMask) -// MAP_POINTER_ALIGN returns the value aligned as a map pointer. -#define MAP_POINTER_ALIGN(value) \ - (((value) + kMapAlignmentMask) & ~kMapAlignmentMask) - // CODE_POINTER_ALIGN returns the value aligned as a generated code segment. #define CODE_POINTER_ALIGN(value) \ (((value) + kCodeAlignmentMask) & ~kCodeAlignmentMask) @@ -430,6 +412,13 @@ enum StateTag { #endif +enum CpuImplementer { + UNKNOWN_IMPLEMENTER, + ARM_IMPLEMENTER, + QUALCOMM_IMPLEMENTER +}; + + // Feature flags bit positions. They are mostly based on the CPUID spec. // (We assign CPUID itself to one of the currently reserved bits -- // feel free to change this if needed.) @@ -442,6 +431,10 @@ enum CpuFeature { SSE4_1 = 32 + 19, // x86 CPUID = 10, // x86 VFP3 = 1, // ARM ARMv7 = 2, // ARM + VFP2 = 3, // ARM + SUDIV = 4, // ARM + UNALIGNED_ACCESSES = 5, // ARM + MOVW_MOVT_IMMEDIATE_LOADS = 6, // ARM SAHF = 0, // x86 FPU = 1}; // MIPS @@ -483,16 +476,17 @@ const uint64_t kLastNonNaNInt64 = (static_cast<uint64_t>(kNaNOrInfinityLowerBoundUpper32) << 32); +// The order of this enum has to be kept in sync with the predicates below. enum VariableMode { // User declared variables: VAR, // declared via 'var', and 'function' declarations CONST, // declared via 'const' declarations - CONST_HARMONY, // declared via 'const' declarations in harmony mode - LET, // declared via 'let' declarations + CONST_HARMONY, // declared via 'const' declarations in harmony mode + // Variables introduced by the compiler: DYNAMIC, // always require dynamic lookup (we don't know // the declaration) @@ -514,6 +508,26 @@ enum VariableMode { }; +inline bool IsDynamicVariableMode(VariableMode mode) { + return mode >= DYNAMIC && mode <= DYNAMIC_LOCAL; +} + + +inline bool IsDeclaredVariableMode(VariableMode mode) { + return mode >= VAR && mode <= CONST_HARMONY; +} + + +inline bool IsLexicalVariableMode(VariableMode mode) { + return mode >= LET && mode <= CONST_HARMONY; +} + + +inline bool IsImmutableVariableMode(VariableMode mode) { + return mode == CONST || mode == CONST_HARMONY; +} + + // ES6 Draft Rev3 10.2 specifies declarative environment records with mutable // and immutable bindings that can be in two states: initialized and // uninitialized. In ES5 only immutable bindings have these two states. When |