Reviewers: ulan,

Message:
PTAL

Description:
Tag handlers as HANDLER rather than STUB.

Please review this at https://chromiumcodereview.appspot.com/25044002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+27, -20 lines):
  M src/arm/ic-arm.cc
  M src/builtins.h
  M src/code-stubs.h
  M src/disassembler.cc
  M src/ia32/ic-ia32.cc
  M src/ic.cc
  M src/log.h
  M src/log.cc
  M src/mips/ic-mips.cc
  M src/objects-inl.h
  M src/objects.h
  M src/objects.cc
  M src/stub-cache.cc
  M src/type-info.cc
  M src/x64/ic-x64.cc


Index: src/arm/ic-arm.cc
diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc
index b39a0edfb849de94f7184215867eb1adcf48f9a7..aded4c1dd8b7f8d0beedafd5cc16919834b3fba6 100644
--- a/src/arm/ic-arm.cc
+++ b/src/arm/ic-arm.cc
@@ -656,7 +656,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {

   // Probe the stub cache.
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+      Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
       Code::NORMAL, Code::LOAD_IC);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, r0, r2, r3, r4, r5, r6);
@@ -1487,7 +1487,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm,

   // Get the receiver from the stack and probe the stub cache.
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, strict_mode,
+      Code::HANDLER, MONOMORPHIC, strict_mode,
       Code::NORMAL, Code::STORE_IC);

   masm->isolate()->stub_cache()->GenerateProbe(
Index: src/builtins.h
diff --git a/src/builtins.h b/src/builtins.h
index 682fa1ca5ba52c1d65c8349b4fbf589a5d70f46e..612f85a36a6a11557090e6bc97e3735318d94778 100644
--- a/src/builtins.h
+++ b/src/builtins.h
@@ -115,7 +115,7 @@ enum BuiltinExtraArguments {
                                     Code::kNoExtraICState)              \
   V(KeyedLoadIC_MissForceGeneric,   BUILTIN, UNINITIALIZED,             \
                                     Code::kNoExtraICState)              \
-  V(KeyedLoadIC_Slow,               STUB, MONOMORPHIC,                  \
+  V(KeyedLoadIC_Slow,               HANDLER, MONOMORPHIC,               \
                                     Code::kNoExtraICState)              \
   V(StoreIC_Miss,                   BUILTIN, UNINITIALIZED,             \
                                     Code::kNoExtraICState)              \
@@ -137,7 +137,7 @@ enum BuiltinExtraArguments {
                                     Code::kNoExtraICState)              \
   V(LoadIC_Getter_ForDeopt,         LOAD_IC, MONOMORPHIC,               \
                                     Code::kNoExtraICState)              \
-  V(LoadIC_Slow,                    STUB, MONOMORPHIC,                  \
+  V(LoadIC_Slow,                    HANDLER, MONOMORPHIC,               \
                                     Code::kNoExtraICState)              \
                                                                         \
   V(KeyedLoadIC_Initialize,         KEYED_LOAD_IC, UNINITIALIZED,       \
Index: src/code-stubs.h
diff --git a/src/code-stubs.h b/src/code-stubs.h
index a5c2f88b228e85993ffb5271e54cb83026d4254c..d1a5b73df0b2ec5ef145ebf636b5f4c151b82de4 100644
--- a/src/code-stubs.h
+++ b/src/code-stubs.h
@@ -904,7 +904,7 @@ class HICStub: public HydrogenCodeStub {

 class HandlerStub: public HICStub {
  public:
-  virtual Code::Kind GetCodeKind() const { return Code::STUB; }
+  virtual Code::Kind GetCodeKind() const { return Code::HANDLER; }
   virtual int GetStubFlags() { return kind(); }

  protected:
Index: src/disassembler.cc
diff --git a/src/disassembler.cc b/src/disassembler.cc
index dd620fb3452e1c3aca1cde8a61c8d03d28bb09be..d7898ddcd9adf426e6ea36053aed9842538337f6 100644
--- a/src/disassembler.cc
+++ b/src/disassembler.cc
@@ -250,7 +250,7 @@ static int DecodeIt(Isolate* isolate,
           if (kind == Code::CALL_IC || kind == Code::KEYED_CALL_IC) {
             out.AddFormatted(", argc = %d", code->arguments_count());
           }
-        } else if (kind == Code::STUB) {
+        } else if (kind == Code::STUB || kind == Code::HANDLER) {
           // Reverse lookup required as the minor key cannot be retrieved
           // from the code object.
           Object* obj = heap->code_stubs()->SlowReverseLookup(code);
Index: src/ia32/ic-ia32.cc
diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
index 327ac57623e0bfab62191f68e09625ba1c5135e6..f8e4ea53d0f78cb32f63e86b30343f85c857f42c 100644
--- a/src/ia32/ic-ia32.cc
+++ b/src/ia32/ic-ia32.cc
@@ -1304,7 +1304,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {

   // Probe the stub cache.
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+      Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
       Code::NORMAL, Code::LOAD_IC);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, edx, ecx, ebx, eax);
@@ -1423,7 +1423,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
   // -----------------------------------

   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, strict_mode,
+      Code::HANDLER, MONOMORPHIC, strict_mode,
       Code::NORMAL, Code::STORE_IC);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, edx, ecx, ebx, no_reg);
Index: src/ic.cc
diff --git a/src/ic.cc b/src/ic.cc
index 43d162c84ae8ea593debafc9851844fff6a54fc5..579e268baddc13aa2b103ad7c846bed3d7ee9369 100644
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -999,7 +999,7 @@ bool IC::UpdatePolymorphicIC(State state,
                              Handle<String> name,
                              Handle<Code> code,
                              StrictModeFlag strict_mode) {
-  if (code->type() == Code::NORMAL) return false;
+  if (code->kind() != Code::HANDLER) return false;
   if (target()->ic_state() == MONOMORPHIC &&
       target()->type() == Code::NORMAL) {
     return false;
Index: src/log.cc
diff --git a/src/log.cc b/src/log.cc
index 5c404bb9523036b5060bcd29df9ec5ef04a47b86..92555b913688fe00cc61f1e4eae3d2fd7ac84307 100644
--- a/src/log.cc
+++ b/src/log.cc
@@ -1629,6 +1629,10 @@ void Logger::LogCodeObject(Object* object) {
       description = "A builtin from the snapshot";
       tag = Logger::BUILTIN_TAG;
       break;
+    case Code::HANDLER:
+      description = "An IC handler from the snapshot";
+      tag = Logger::HANDLER_TAG;
+      break;
     case Code::KEYED_LOAD_IC:
       description = "A keyed load IC from the snapshot";
       tag = Logger::KEYED_LOAD_IC_TAG;
Index: src/log.h
diff --git a/src/log.h b/src/log.h
index 81d45e507b4dbe51caf25b6feeeb714d4a4c0ec2..d61c985292673ba98129f8ac2b44bb56d9d2793e 100644
--- a/src/log.h
+++ b/src/log.h
@@ -131,6 +131,7 @@ struct TickSample;
   V(CALLBACK_TAG,                   "Callback")                         \
   V(EVAL_TAG,                       "Eval")                             \
   V(FUNCTION_TAG,                   "Function")                         \
+  V(HANDLER_TAG,                    "Handler")                          \
   V(KEYED_LOAD_IC_TAG,              "KeyedLoadIC")                      \
   V(KEYED_LOAD_POLYMORPHIC_IC_TAG,  "KeyedLoadPolymorphicIC")           \
   V(KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG, "KeyedExternalArrayLoadIC")       \
Index: src/mips/ic-mips.cc
diff --git a/src/mips/ic-mips.cc b/src/mips/ic-mips.cc
index e250e0ee4a564f5636014f6e794570d7430aa03d..aa2773462c73266aa2d61a07f1635e13bd25f825 100644
--- a/src/mips/ic-mips.cc
+++ b/src/mips/ic-mips.cc
@@ -656,7 +656,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {

   // Probe the stub cache.
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+      Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
       Code::NORMAL, Code::LOAD_IC);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, a0, a2, a3, t0, t1, t2);
@@ -1496,7 +1496,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm,

   // Get the receiver from the stack and probe the stub cache.
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, strict_mode,
+      Code::HANDLER, MONOMORPHIC, strict_mode,
       Code::NORMAL, Code::STORE_IC);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, a1, a2, a3, t0, t1, t2);
Index: src/objects-inl.h
diff --git a/src/objects-inl.h b/src/objects-inl.h
index 48bd78e75485c984ccb56f42b4c450ff49587fa6..6bc6d1dc2cfd2194edf82c04e7f1b28dbd5addd9 100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -3790,6 +3790,7 @@ int Code::major_key() {

 void Code::set_major_key(int major) {
   ASSERT(kind() == STUB ||
+         kind() == HANDLER ||
          kind() == BINARY_OP_IC ||
          kind() == COMPARE_IC ||
          kind() == COMPARE_NIL_IC ||
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 1399e33ffab4acb74f42abd63ad646747b9b61cc..e70346590e1af1bf09485a63910896e3f68efab6 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -10318,7 +10318,7 @@ void Code::FindAllCode(CodeHandleList* code_list, int length) {
     if (i++ == length) return;
     RelocInfo* info = it.rinfo();
     Code* code = Code::GetCodeFromTargetAddress(info->target_address());
-    ASSERT(code->kind() == Code::STUB);
+    ASSERT(code->kind() == Code::HANDLER);
     code_list->Add(Handle<Code>(code));
   }
   UNREACHABLE();
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index 3f229a85bf308af1ba5cdb9d6b1d8847c49f0968..0e065e67852d0368a5f8db95fb60e303a88b9471 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -4763,6 +4763,7 @@ class Code: public HeapObject {
   V(FUNCTION)               \
   V(OPTIMIZED_FUNCTION)     \
   V(STUB)                   \
+  V(HANDLER)                \
   V(BUILTIN)                \
   V(REGEXP)

Index: src/stub-cache.cc
diff --git a/src/stub-cache.cc b/src/stub-cache.cc
index 0318a3967c390c2276c93ed8a63e212fd50b8957..a2bb810266de0699ba4b58bbe3b54cd46a0f8cc7 100644
--- a/src/stub-cache.cc
+++ b/src/stub-cache.cc
@@ -140,7 +140,7 @@ Handle<Code> StubCache::FindLoadHandler(Handle<Name> name,
       ? OWN_MAP : PROTOTYPE_MAP;
   ASSERT(type != Code::NORMAL);
   Code::Flags flags = Code::ComputeMonomorphicFlags(
-      Code::STUB, Code::kNoExtraICState, type, kind, holder_flag);
+      Code::HANDLER, Code::kNoExtraICState, type, kind, holder_flag);
   Handle<Object> probe(stub_holder->map()->FindInCodeCache(*name, flags),
                        isolate_);
   if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -157,7 +157,7 @@ Handle<Code> StubCache::FindStoreHandler(Handle<Name> name,
       STANDARD_STORE, strict_mode);
   ASSERT(type != Code::NORMAL);
   Code::Flags flags = Code::ComputeMonomorphicFlags(
-      Code::STUB, extra_ic_state, type, kind);
+      Code::HANDLER, extra_ic_state, type, kind);
   Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags),
                        isolate_);
   if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -1987,7 +1987,7 @@ Handle<Code> BaseLoadStubCompiler::GetCode(Code::Kind kind,
                                            Handle<Name> name) {
   ASSERT(type != Code::NORMAL);
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, Code::kNoExtraICState, type, kind);
+      Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState, type, kind);
   Handle<Code> code = GetCodeWithFlags(flags, name);
   PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name));
   JitEvent(name, code);
@@ -2000,7 +2000,7 @@ Handle<Code> BaseStoreStubCompiler::GetCode(Code::Kind kind,
                                             Handle<Name> name) {
   ASSERT(type != Code::NORMAL);
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, extra_state(), type, kind);
+      Code::HANDLER, MONOMORPHIC, extra_state(), type, kind);
   Handle<Code> code = GetCodeWithFlags(flags, name);
   PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name));
   JitEvent(name, code);
Index: src/type-info.cc
diff --git a/src/type-info.cc b/src/type-info.cc
index 190eb3e6fff90dbaad5d5d479d1da0b148b9c8a7..dbd37f7f79434c3232cfb65822eb0cedf59dc044 100644
--- a/src/type-info.cc
+++ b/src/type-info.cc
@@ -251,7 +251,7 @@ void TypeFeedbackOracle::LoadReceiverTypes(Property* expr,
                                            Handle<String> name,
                                            SmallMapList* types) {
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+      Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
       Code::NORMAL, Code::LOAD_IC);
   CollectReceiverTypes(expr->PropertyFeedbackId(), name, flags, types);
 }
@@ -261,7 +261,7 @@ void TypeFeedbackOracle::StoreReceiverTypes(Assignment* expr,
                                             Handle<String> name,
                                             SmallMapList* types) {
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+      Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
       Code::NORMAL, Code::STORE_IC);
   CollectReceiverTypes(expr->AssignmentFeedbackId(), name, flags, types);
 }
Index: src/x64/ic-x64.cc
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc
index 4a7c68a53ca4db309ef6570819df88f3fa94aaa3..15f410c1345e8bbd4dc7db6a46494fa357763ed6 100644
--- a/src/x64/ic-x64.cc
+++ b/src/x64/ic-x64.cc
@@ -1330,7 +1330,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {

   // Probe the stub cache.
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+      Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
       Code::NORMAL, Code::LOAD_IC);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, rax, rcx, rbx, rdx);
@@ -1451,7 +1451,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm,

   // Get the receiver from the stack and probe the stub cache.
   Code::Flags flags = Code::ComputeFlags(
-      Code::STUB, MONOMORPHIC, strict_mode,
+      Code::HANDLER, MONOMORPHIC, strict_mode,
       Code::NORMAL, Code::STORE_IC);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, rdx, rcx, rbx, no_reg);


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to