Revision: 13329
Author: [email protected]
Date: Mon Jan 7 07:36:26 2013
Log: Introduce POLYMORPHIC
Review URL: https://chromiumcodereview.appspot.com/11747022
http://code.google.com/p/v8/source/detail?r=13329
Modified:
/branches/bleeding_edge/src/ic.cc
/branches/bleeding_edge/src/objects.cc
/branches/bleeding_edge/src/v8globals.h
=======================================
--- /branches/bleeding_edge/src/ic.cc Mon Jan 7 07:35:00 2013
+++ /branches/bleeding_edge/src/ic.cc Mon Jan 7 07:36:26 2013
@@ -43,9 +43,10 @@
char IC::TransitionMarkFromState(IC::State state) {
switch (state) {
case UNINITIALIZED: return '0';
- case PREMONOMORPHIC: return 'P';
+ case PREMONOMORPHIC: return '.';
case MONOMORPHIC: return '1';
case MONOMORPHIC_PROTOTYPE_FAILURE: return '^';
+ case POLYMORPHIC: return 'P';
case MEGAMORPHIC: return IsGeneric() ? 'G' : 'N';
// We never see the debugger states here, because the state is
@@ -772,6 +773,9 @@
case DEBUG_BREAK:
case DEBUG_PREPARE_STEP_IN:
break;
+ case POLYMORPHIC:
+ UNREACHABLE();
+ break;
}
TRACE_IC(kind_ == Code::CALL_IC ? "CallIC" : "KeyedCallIC",
@@ -1065,6 +1069,9 @@
case DEBUG_BREAK:
case DEBUG_PREPARE_STEP_IN:
break;
+ case POLYMORPHIC:
+ UNREACHABLE();
+ break;
}
TRACE_IC("LoadIC", name, state, target());
@@ -1335,6 +1342,7 @@
case DEBUG_PREPARE_STEP_IN:
break;
case MONOMORPHIC_PROTOTYPE_FAILURE:
+ case POLYMORPHIC:
UNREACHABLE();
break;
}
@@ -1610,6 +1618,9 @@
case DEBUG_BREAK:
case DEBUG_PREPARE_STEP_IN:
break;
+ case POLYMORPHIC:
+ UNREACHABLE();
+ break;
}
TRACE_IC("StoreIC", name, state, target());
@@ -1654,6 +1665,7 @@
case UNINITIALIZED:
case PREMONOMORPHIC:
case MONOMORPHIC_PROTOTYPE_FAILURE:
+ case POLYMORPHIC:
case DEBUG_BREAK:
case DEBUG_PREPARE_STEP_IN:
UNREACHABLE();
@@ -1747,7 +1759,7 @@
isolate()->factory()->polymorphic_code_cache();
Code::ExtraICState extra_state = Code::ComputeExtraICState(grow_mode,
strict_mode);
- Code::Flags flags = Code::ComputeFlags(kind(), MEGAMORPHIC, extra_state);
+ Code::Flags flags = Code::ComputeFlags(kind(), POLYMORPHIC, extra_state);
Handle<Object> probe = cache->Lookup(&target_receiver_maps, flags);
if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -2104,6 +2116,7 @@
case DEBUG_PREPARE_STEP_IN:
break;
case MONOMORPHIC_PROTOTYPE_FAILURE:
+ case POLYMORPHIC:
UNREACHABLE();
break;
}
=======================================
--- /branches/bleeding_edge/src/objects.cc Mon Jan 7 07:02:56 2013
+++ /branches/bleeding_edge/src/objects.cc Mon Jan 7 07:36:26 2013
@@ -9009,6 +9009,7 @@
case PREMONOMORPHIC: return "PREMONOMORPHIC";
case MONOMORPHIC: return "MONOMORPHIC";
case MONOMORPHIC_PROTOTYPE_FAILURE:
return "MONOMORPHIC_PROTOTYPE_FAILURE";
+ case POLYMORPHIC: return "POLYMORPHIC";
case MEGAMORPHIC: return "MEGAMORPHIC";
case DEBUG_BREAK: return "DEBUG_BREAK";
case DEBUG_PREPARE_STEP_IN: return "DEBUG_PREPARE_STEP_IN";
=======================================
--- /branches/bleeding_edge/src/v8globals.h Fri Dec 7 05:47:42 2012
+++ /branches/bleeding_edge/src/v8globals.h Mon Jan 7 07:36:26 2013
@@ -260,6 +260,8 @@
// Like MONOMORPHIC but check failed due to prototype.
MONOMORPHIC_PROTOTYPE_FAILURE,
// Multiple receiver types have been seen.
+ POLYMORPHIC,
+ // Many receiver types have been seen.
MEGAMORPHIC,
// Special states for debug break or step in prepare stubs.
DEBUG_BREAK,
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev