Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index c136dc59b543de6ac30497d8f4a2776085cf47bd..2c46e9b85f097747b82627d74508ec35db93303d 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -3163,6 +3163,10 @@ class Code: public HeapObject { |
NUMBER_OF_KINDS = LAST_IC_KIND + 1 |
}; |
+ typedef int ExtraICState; |
+ |
+ static const ExtraICState kNoExtraICState = 0; |
+ |
#ifdef ENABLE_DISASSEMBLER |
// Printing |
static const char* Kind2String(Kind kind); |
@@ -3282,22 +3286,26 @@ class Code: public HeapObject { |
Map* FindFirstMap(); |
// Flags operations. |
- static inline Flags ComputeFlags(Kind kind, |
- InLoopFlag in_loop = NOT_IN_LOOP, |
- InlineCacheState ic_state = UNINITIALIZED, |
- PropertyType type = NORMAL, |
- int argc = -1, |
- InlineCacheHolderFlag holder = OWN_MAP); |
+ static inline Flags ComputeFlags( |
+ Kind kind, |
+ InLoopFlag in_loop = NOT_IN_LOOP, |
+ InlineCacheState ic_state = UNINITIALIZED, |
+ ExtraICState extra_ic_state = kNoExtraICState, |
+ PropertyType type = NORMAL, |
+ int argc = -1, |
+ InlineCacheHolderFlag holder = OWN_MAP); |
static inline Flags ComputeMonomorphicFlags( |
Kind kind, |
PropertyType type, |
+ ExtraICState extra_ic_state = kNoExtraICState, |
InlineCacheHolderFlag holder = OWN_MAP, |
InLoopFlag in_loop = NOT_IN_LOOP, |
int argc = -1); |
static inline Kind ExtractKindFromFlags(Flags flags); |
static inline InlineCacheState ExtractICStateFromFlags(Flags flags); |
+ static inline ExtraICState ExtractExtraICStateFromFlags(Flags flags); |
static inline InLoopFlag ExtractICInLoopFromFlags(Flags flags); |
static inline PropertyType ExtractTypeFromFlags(Flags flags); |
static inline int ExtractArgumentsCountFromFlags(Flags flags); |
@@ -3418,14 +3426,16 @@ class Code: public HeapObject { |
static const int kFlagsTypeShift = 4; |
static const int kFlagsKindShift = 7; |
static const int kFlagsICHolderShift = 11; |
- static const int kFlagsArgumentsCountShift = 12; |
+ static const int kFlagsExtraICStateShift = 12; |
+ static const int kFlagsArgumentsCountShift = 14; |
static const int kFlagsICStateMask = 0x00000007; // 00000000111 |
static const int kFlagsICInLoopMask = 0x00000008; // 00000001000 |
static const int kFlagsTypeMask = 0x00000070; // 00001110000 |
static const int kFlagsKindMask = 0x00000780; // 11110000000 |
static const int kFlagsCacheInPrototypeMapMask = 0x00000800; |
- static const int kFlagsArgumentsCountMask = 0xFFFFF000; |
+ static const int kFlagsExtraICStateMask = 0x00003000; |
+ static const int kFlagsArgumentsCountMask = 0xFFFFC000; |
static const int kFlagsNotUsedInLookup = |
(kFlagsICInLoopMask | kFlagsTypeMask | kFlagsCacheInPrototypeMapMask); |