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

Reply via email to