}
array_checker.Else();
{
- // Check if the IC is in generic state.
- IfBuilder generic_checker(this);
- HConstant* generic_symbol =
- Add<HConstant>(isolate()->factory()->generic_symbol());
- generic_checker.If<HCompareObjectEqAndBranch>(feedback, generic_symbol);
- generic_checker.Then();
+ // Check if the IC is in megamorphic state.
+ IfBuilder megamorphic_checker(this);
+ HConstant* megamorphic_symbol =
+ Add<HConstant>(isolate()->factory()->megamorphic_symbol());
+ megamorphic_checker.If<HCompareObjectEqAndBranch>(feedback,
+ megamorphic_symbol);
+ megamorphic_checker.Then();
{
- // Tail-call to the generic KeyedLoadIC, treating it like a handler.
+ // Tail-call to the megamorphic KeyedLoadIC, treating it like a handler.
Handle<Code> stub = KeyedLoadIC::ChooseMegamorphicStub(isolate());
HValue* constant_stub = Add<HConstant>(stub);
LoadDescriptor descriptor(isolate());
Vector<HValue*>(op_vals, 3), TAIL_CALL);
// We never return here, it is a tail call.
}
- generic_checker.End();
+ megamorphic_checker.End();
}
array_checker.End();
}
} else if (kind() == Code::KEYED_LOAD_IC) {
KeyedLoadICNexus* nexus = casted_nexus<KeyedLoadICNexus>();
- if (new_state == GENERIC) {
- nexus->ConfigureGeneric();
- } else if (new_state == PREMONOMORPHIC) {
+ if (new_state == PREMONOMORPHIC) {
nexus->ConfigurePremonomorphic();
+ } else if (new_state == MEGAMORPHIC) {
+ nexus->ConfigureMegamorphic();
} else {
UNREACHABLE();
}
// Rewrite to the generic keyed load stub.
if (FLAG_use_ic) {
if (UseVector()) {
- ConfigureVectorState(GENERIC);
+ ConfigureVectorState(MEGAMORPHIC);
} else {
set_target(*megamorphic_stub());
}
if (!is_vector_set() || stub.is_null()) {
Code* generic = *megamorphic_stub();
if (!stub.is_null() && *stub == generic) {
- ConfigureVectorState(GENERIC);
+ ConfigureVectorState(MEGAMORPHIC);
TRACE_GENERIC_IC(isolate(), "KeyedLoadIC", "set generic");
}
0x08cd9: (187, "JSMessageObjectMap"),
0x08d01: (136, "ForeignMap"),
0x08d29: (189, "NeanderMap"),
- 0x08d51: (171, "AllocationMementoMap"),
- 0x08d79: (170, "AllocationSiteMap"),
+ 0x08d51: (170, "AllocationSiteMap"),
+ 0x08d79: (171, "AllocationMementoMap"),
0x08da1: (174, "PolymorphicCodeCacheMap"),
0x08dc9: (172, "ScriptMap"),
0x08e19: (189, "ExternalMap"),
("OLD_POINTER_SPACE", 0x09531): "TerminationException",
("OLD_POINTER_SPACE", 0x09541): "MessageListeners",
("OLD_POINTER_SPACE", 0x0955d): "CodeStubs",
- ("OLD_POINTER_SPACE", 0x10f91): "NonMonomorphicCache",
- ("OLD_POINTER_SPACE", 0x115a5): "PolymorphicCodeCache",
- ("OLD_POINTER_SPACE", 0x115ad): "NativesSourceCache",
- ("OLD_POINTER_SPACE", 0x11621): "EmptyScript",
- ("OLD_POINTER_SPACE", 0x1165d): "IntrinsicFunctionNames",
- ("OLD_POINTER_SPACE", 0x17679): "ObservationState",
- ("OLD_POINTER_SPACE", 0x17685): "SymbolRegistry",
- ("OLD_POINTER_SPACE", 0x18041): "EmptySlowElementDictionary",
- ("OLD_POINTER_SPACE", 0x181dd): "AllocationSitesScratchpad",
- ("OLD_POINTER_SPACE", 0x4560d): "StringTable",
+ ("OLD_POINTER_SPACE", 0x1139d): "NonMonomorphicCache",
+ ("OLD_POINTER_SPACE", 0x119b1): "PolymorphicCodeCache",
+ ("OLD_POINTER_SPACE", 0x119b9): "NativesSourceCache",
+ ("OLD_POINTER_SPACE", 0x11a2d): "EmptyScript",
+ ("OLD_POINTER_SPACE", 0x11a69): "IntrinsicFunctionNames",
+ ("OLD_POINTER_SPACE", 0x17a85): "ObservationState",
+ ("OLD_POINTER_SPACE", 0x17a91): "SymbolRegistry",
+ ("OLD_POINTER_SPACE", 0x1844d): "EmptySlowElementDictionary",
+ ("OLD_POINTER_SPACE", 0x185e9): "AllocationSitesScratchpad",
+ ("OLD_POINTER_SPACE", 0x45d11): "StringTable",
("OLD_DATA_SPACE", 0x08081): "EmptyDescriptorArray",
("OLD_DATA_SPACE", 0x08089): "EmptyFixedArray",
("OLD_DATA_SPACE", 0x080a9): "NanValue",
("OLD_DATA_SPACE", 0x082ed): "EmptyFixedUint8ClampedArray",
("OLD_DATA_SPACE", 0x082f5): "InfinityValue",
("OLD_DATA_SPACE", 0x08301): "MinusZeroValue",
- ("CODE_SPACE", 0x16881): "JsEntryCode",
- ("CODE_SPACE", 0x2a8e1): "JsConstructEntryCode",
+ ("CODE_SPACE", 0x17da1): "JsEntryCode",
+ ("CODE_SPACE", 0x2a921): "JsConstructEntryCode",
}