summaryrefslogtreecommitdiff
path: root/chromium/v8/src/common/globals.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/common/globals.h')
-rw-r--r--chromium/v8/src/common/globals.h76
1 files changed, 48 insertions, 28 deletions
diff --git a/chromium/v8/src/common/globals.h b/chromium/v8/src/common/globals.h
index 4309b702347..dcb1d4e13d4 100644
--- a/chromium/v8/src/common/globals.h
+++ b/chromium/v8/src/common/globals.h
@@ -68,10 +68,13 @@ constexpr int GB = MB * 1024;
#define V8_EMBEDDED_CONSTANT_POOL false
#endif
-#ifdef V8_TARGET_ARCH_ARM
-// Set stack limit lower for ARM than for other architectures because
-// stack allocating MacroAssembler takes 120K bytes.
-// See issue crbug.com/405338
+#if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_ARM64
+// Set stack limit lower for ARM and ARM64 than for other architectures because:
+// - on Arm stack allocating MacroAssembler takes 120K bytes.
+// See issue crbug.com/405338
+// - on Arm64 when running in single-process mode for Android WebView, when
+// initializing V8 we already have a large stack and so have to set the
+// limit lower. See issue crbug.com/v8/10575
#define V8_DEFAULT_STACK_SIZE_KB 864
#else
// Slightly less than 1MB, since Windows' default stack size for
@@ -151,6 +154,8 @@ constexpr int kMaxInt16 = (1 << 15) - 1;
constexpr int kMinInt16 = -(1 << 15);
constexpr int kMaxUInt16 = (1 << 16) - 1;
constexpr int kMinUInt16 = 0;
+constexpr int kMaxInt31 = kMaxInt / 2;
+constexpr int kMinInt31 = kMinInt / 2;
constexpr uint32_t kMaxUInt32 = 0xFFFFFFFFu;
constexpr int kMinUInt32 = 0;
@@ -327,7 +332,7 @@ constexpr uint64_t kQuietNaNMask = static_cast<uint64_t>(0xfff) << 51;
// Code-point values in Unicode 4.0 are 21 bits wide.
// Code units in UTF-16 are 16 bits wide.
using uc16 = uint16_t;
-using uc32 = int32_t;
+using uc32 = uint32_t;
constexpr int kOneByteSize = kCharSize;
constexpr int kUC16Size = sizeof(uc16); // NOLINT
@@ -1337,31 +1342,46 @@ class BinaryOperationFeedback {
};
// Type feedback is encoded in such a way that, we can combine the feedback
-// at different points by performing an 'OR' operation. Type feedback moves
-// to a more generic type when we combine feedback.
-//
-// kSignedSmall -> kNumber -> kNumberOrOddball -> kAny
-// kReceiver -> kReceiverOrNullOrUndefined -> kAny
-// kInternalizedString -> kString -> kAny
-// kSymbol -> kAny
-// kBigInt -> kAny
-//
+// at different points by performing an 'OR' operation.
// This is distinct from BinaryOperationFeedback on purpose, because the
// feedback that matters differs greatly as well as the way it is consumed.
class CompareOperationFeedback {
- public:
enum {
- kNone = 0x000,
- kSignedSmall = 0x001,
- kNumber = 0x003,
- kNumberOrOddball = 0x007,
- kInternalizedString = 0x008,
- kString = 0x018,
- kSymbol = 0x020,
- kBigInt = 0x040,
- kReceiver = 0x080,
- kReceiverOrNullOrUndefined = 0x180,
- kAny = 0x1ff
+ kSignedSmallFlag = 1 << 0,
+ kOtherNumberFlag = 1 << 1,
+ kBooleanFlag = 1 << 2,
+ kNullOrUndefinedFlag = 1 << 3,
+ kInternalizedStringFlag = 1 << 4,
+ kOtherStringFlag = 1 << 5,
+ kSymbolFlag = 1 << 6,
+ kBigIntFlag = 1 << 7,
+ kReceiverFlag = 1 << 8,
+ kAnyMask = 0x1FF,
+ };
+
+ public:
+ enum Type {
+ kNone = 0,
+
+ kBoolean = kBooleanFlag,
+ kNullOrUndefined = kNullOrUndefinedFlag,
+ kOddball = kBoolean | kNullOrUndefined,
+
+ kSignedSmall = kSignedSmallFlag,
+ kNumber = kSignedSmall | kOtherNumberFlag,
+ kNumberOrBoolean = kNumber | kBoolean,
+ kNumberOrOddball = kNumber | kOddball,
+
+ kInternalizedString = kInternalizedStringFlag,
+ kString = kInternalizedString | kOtherStringFlag,
+
+ kReceiver = kReceiverFlag,
+ kReceiverOrNullOrUndefined = kReceiver | kNullOrUndefined,
+
+ kBigInt = kBigIntFlag,
+ kSymbol = kSymbolFlag,
+
+ kAny = kAnyMask,
};
};
@@ -1592,8 +1612,8 @@ enum class LoadSensitivity {
V(TrapDataSegmentDropped) \
V(TrapElemSegmentDropped) \
V(TrapTableOutOfBounds) \
- V(TrapBrOnExnNullRef) \
- V(TrapRethrowNullRef) \
+ V(TrapBrOnExnNull) \
+ V(TrapRethrowNull) \
V(TrapNullDereference) \
V(TrapIllegalCast) \
V(TrapArrayOutOfBounds)