Revision: 19384
Author:   [email protected]
Date:     Fri Feb 14 15:15:08 2014 UTC
Log:      Don't mix handler flags into regular flag computation.

BUG=
[email protected]

Review URL: https://codereview.chromium.org/163363003
http://code.google.com/p/v8/source/detail?r=19384

Modified:
 /branches/bleeding_edge/src/a64/ic-a64.cc
 /branches/bleeding_edge/src/arm/ic-arm.cc
 /branches/bleeding_edge/src/builtins.cc
 /branches/bleeding_edge/src/code-stubs-hydrogen.cc
 /branches/bleeding_edge/src/code-stubs.cc
 /branches/bleeding_edge/src/code-stubs.h
 /branches/bleeding_edge/src/compiler.cc
 /branches/bleeding_edge/src/ia32/ic-ia32.cc
 /branches/bleeding_edge/src/objects-inl.h
 /branches/bleeding_edge/src/objects.h
 /branches/bleeding_edge/src/stub-cache.cc
 /branches/bleeding_edge/src/type-info.cc
 /branches/bleeding_edge/src/x64/ic-x64.cc

=======================================
--- /branches/bleeding_edge/src/a64/ic-a64.cc   Wed Feb 12 09:19:30 2014 UTC
+++ /branches/bleeding_edge/src/a64/ic-a64.cc   Fri Feb 14 15:15:08 2014 UTC
@@ -435,9 +435,7 @@
   // -----------------------------------

   // Probe the stub cache.
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, extra_state,
-      Code::NORMAL, Code::LOAD_IC);
+ Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC, extra_state);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, x0, x2, x3, x4, x5, x6);

@@ -1220,7 +1218,7 @@


 void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
-                                  ExtraICState extra_ic_state) {
+                                  ExtraICState extra_state) {
   // ----------- S t a t e -------------
   //  -- x0    : value
   //  -- x1    : receiver
@@ -1229,9 +1227,7 @@
   // -----------------------------------

   // Probe the stub cache.
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, extra_ic_state,
-      Code::NORMAL, Code::STORE_IC);
+ Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC, extra_state);

   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, x1, x2, x3, x4, x5, x6);
=======================================
--- /branches/bleeding_edge/src/arm/ic-arm.cc   Fri Jan 31 16:52:17 2014 UTC
+++ /branches/bleeding_edge/src/arm/ic-arm.cc   Fri Feb 14 15:15:08 2014 UTC
@@ -342,9 +342,7 @@
   // -----------------------------------

   // Probe the stub cache.
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, extra_state,
-      Code::NORMAL, Code::LOAD_IC);
+ Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC, extra_state);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, r0, r2, r3, r4, r5, r6);

@@ -1163,7 +1161,7 @@


 void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
-                                  ExtraICState extra_ic_state) {
+                                  ExtraICState extra_state) {
   // ----------- S t a t e -------------
   //  -- r0    : value
   //  -- r1    : receiver
@@ -1172,9 +1170,7 @@
   // -----------------------------------

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

   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, r1, r2, r3, r4, r5, r6);
=======================================
--- /branches/bleeding_edge/src/builtins.cc     Wed Feb 12 09:19:30 2014 UTC
+++ /branches/bleeding_edge/src/builtins.cc     Fri Feb 14 15:15:08 2014 UTC
@@ -1599,9 +1599,7 @@
functions->c_code = NULL; \ functions->s_name = #aname; \ functions->name = k##aname; \ - functions->flags = Code::ComputeFlags( \ - Code::HANDLER, MONOMORPHIC, kNoExtraICState, \ - Code::NORMAL, Code::kind); \ + functions->flags = Code::ComputeHandlerFlags(Code::kind); \ functions->extra_args = NO_EXTRA_ARGUMENTS; \
     ++functions;

=======================================
--- /branches/bleeding_edge/src/code-stubs-hydrogen.cc Wed Feb 12 18:48:12 2014 UTC +++ /branches/bleeding_edge/src/code-stubs-hydrogen.cc Fri Feb 14 15:15:08 2014 UTC
@@ -247,8 +247,7 @@
       GetCodeKind(),
       GetICState(),
       GetExtraICState(),
-      GetStubType(),
-      GetHandlerKind());
+      GetStubType());
   Handle<Code> new_object = factory->NewCode(
       desc, flags, masm.CodeObject(), NeedsImmovableCode());
   return new_object;
=======================================
--- /branches/bleeding_edge/src/code-stubs.cc   Tue Feb 11 15:01:44 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.cc   Fri Feb 14 15:15:08 2014 UTC
@@ -119,8 +119,7 @@
       GetCodeKind(),
       GetICState(),
       GetExtraICState(),
-      GetStubType(),
-      GetHandlerKind());
+      GetStubType());
   Handle<Code> new_object = factory->NewCode(
       desc, flags, masm.CodeObject(), NeedsImmovableCode());
   return new_object;
=======================================
--- /branches/bleeding_edge/src/code-stubs.h    Fri Feb 14 14:13:06 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.h    Fri Feb 14 15:15:08 2014 UTC
@@ -188,9 +188,6 @@
   virtual Code::StubType GetStubType() {
     return Code::NORMAL;
   }
-  virtual Code::Kind GetHandlerKind() {
-    return Code::STUB;
-  }

   virtual void PrintName(StringStream* stream);

@@ -885,7 +882,9 @@
 class HandlerStub: public HICStub {
  public:
   virtual Code::Kind GetCodeKind() const { return Code::HANDLER; }
-  virtual Code::Kind GetHandlerKind() { return kind(); }
+  virtual ExtraICState GetExtraICState() {
+    return Code::HandlerKindField::encode(kind());
+  }

  protected:
   HandlerStub() : HICStub() { }
@@ -980,8 +979,6 @@
   virtual void InitializeInterfaceDescriptor(
       Isolate* isolate,
       CodeStubInterfaceDescriptor* descriptor);
-
-  virtual ExtraICState GetExtraICState() { return bit_field_; }

   bool is_constant() {
     return IsConstantBits::decode(bit_field_);
@@ -998,14 +995,11 @@
   }

  private:
-  virtual int NotMissMinorKey() { return GetExtraICState(); }
   Major MajorKey() { return StoreGlobal; }

   class IsConstantBits: public BitField<bool, 0, 1> {};
   class RepresentationBits: public BitField<Representation::Kind, 1, 8> {};

-  int bit_field_;
-
   DISALLOW_COPY_AND_ASSIGN(StoreGlobalStub);
 };

=======================================
--- /branches/bleeding_edge/src/compiler.cc     Thu Feb 13 16:09:28 2014 UTC
+++ /branches/bleeding_edge/src/compiler.cc     Fri Feb 14 15:15:08 2014 UTC
@@ -215,8 +215,7 @@
     return Code::ComputeFlags(code_stub()->GetCodeKind(),
                               code_stub()->GetICState(),
                               code_stub()->GetExtraICState(),
-                              code_stub()->GetStubType(),
-                              code_stub()->GetHandlerKind());
+                              code_stub()->GetStubType());
   } else {
     return Code::ComputeFlags(Code::OPTIMIZED_FUNCTION);
   }
=======================================
--- /branches/bleeding_edge/src/ia32/ic-ia32.cc Tue Feb  4 13:53:41 2014 UTC
+++ /branches/bleeding_edge/src/ia32/ic-ia32.cc Fri Feb 14 15:15:08 2014 UTC
@@ -956,9 +956,7 @@
   // -----------------------------------

   // Probe the stub cache.
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, extra_state,
-      Code::NORMAL, Code::LOAD_IC);
+ Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC, extra_state);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, edx, ecx, ebx, eax);

@@ -1065,16 +1063,14 @@


 void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
-                                  ExtraICState extra_ic_state) {
+                                  ExtraICState extra_state) {
   // ----------- S t a t e -------------
   //  -- eax    : value
   //  -- ecx    : name
   //  -- edx    : receiver
   //  -- esp[0] : return address
   // -----------------------------------
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, extra_ic_state,
-      Code::NORMAL, Code::STORE_IC);
+ Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC, extra_state);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, edx, ecx, ebx, no_reg);

=======================================
--- /branches/bleeding_edge/src/objects-inl.h   Fri Feb 14 15:14:34 2014 UTC
+++ /branches/bleeding_edge/src/objects-inl.h   Fri Feb 14 15:15:08 2014 UTC
@@ -4478,7 +4478,6 @@
                                InlineCacheState ic_state,
                                ExtraICState extra_ic_state,
                                StubType type,
-                               Kind handler_kind,
                                InlineCacheHolderFlag holder) {
   // Compute the bit mask.
   unsigned int bits = KindField::encode(kind)
@@ -4486,10 +4485,6 @@
       | TypeField::encode(type)
       | ExtraICStateField::encode(extra_ic_state)
       | CacheHolderField::encode(holder);
-  // TODO(verwaest): Move to the valid uses of |handler_kind|.
-  if (handler_kind != STUB) {
-    bits |= HandlerKindField::encode(handler_kind);
-  }
   return static_cast<Flags>(bits);
 }

@@ -4497,10 +4492,17 @@
 Code::Flags Code::ComputeMonomorphicFlags(Kind kind,
                                           ExtraICState extra_ic_state,
                                           InlineCacheHolderFlag holder,
-                                          StubType type,
-                                          Kind handler_kind) {
-  return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, type,
-                      handler_kind, holder);
+                                          StubType type) {
+  return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, type, holder);
+}
+
+
+Code::Flags Code::ComputeHandlerFlags(Kind handler_kind,
+                                      ExtraICState extra_ic_state,
+                                      StubType type,
+                                      InlineCacheHolderFlag holder) {
+ ExtraICState extra = HandlerKindField::encode(handler_kind) | extra_ic_state;
+  return ComputeFlags(Code::HANDLER, MONOMORPHIC, extra, type, holder);
 }


=======================================
--- /branches/bleeding_edge/src/objects.h       Fri Feb 14 15:14:34 2014 UTC
+++ /branches/bleeding_edge/src/objects.h       Fri Feb 14 15:15:08 2014 UTC
@@ -5375,15 +5375,19 @@
       InlineCacheState ic_state = UNINITIALIZED,
       ExtraICState extra_ic_state = kNoExtraICState,
       StubType type = NORMAL,
-      Kind handler_kind = STUB,
       InlineCacheHolderFlag holder = OWN_MAP);

   static inline Flags ComputeMonomorphicFlags(
       Kind kind,
       ExtraICState extra_ic_state = kNoExtraICState,
       InlineCacheHolderFlag holder = OWN_MAP,
+      StubType type = NORMAL);
+
+  static inline Flags ComputeHandlerFlags(
+      Kind handler_kind,
+      ExtraICState extra_ic_state = kNoExtraICState,
       StubType type = NORMAL,
-      Kind handler_kind = STUB);
+      InlineCacheHolderFlag holder = OWN_MAP);

   static inline InlineCacheState ExtractICStateFromFlags(Flags flags);
   static inline StubType ExtractTypeFromFlags(Flags flags);
=======================================
--- /branches/bleeding_edge/src/stub-cache.cc   Fri Feb 14 15:14:34 2014 UTC
+++ /branches/bleeding_edge/src/stub-cache.cc   Fri Feb 14 15:15:08 2014 UTC
@@ -118,7 +118,7 @@
                                     Code::Kind kind,
                                     InlineCacheHolderFlag cache_holder) {
   Code::Flags flags = Code::ComputeMonomorphicFlags(
-      Code::HANDLER, kNoExtraICState, cache_holder, Code::NORMAL, kind);
+      Code::HANDLER, kNoExtraICState, cache_holder, Code::NORMAL);

Handle<Object> probe(stub_holder->FindInCodeCache(*name, flags), isolate_);
   if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -1235,8 +1235,8 @@
 Handle<Code> BaseLoadStoreStubCompiler::GetCode(Code::Kind kind,
                                                 Code::StubType type,
                                                 Handle<Name> name) {
-  Code::Flags flags = Code::ComputeFlags(
- Code::HANDLER, MONOMORPHIC, extra_state(), type, kind, cache_holder_);
+  Code::Flags flags = Code::ComputeHandlerFlags(
+      kind, extra_state(), type, cache_holder_);
   Handle<Code> code = GetCodeWithFlags(flags, name);
   PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name));
   JitEvent(name, code);
=======================================
--- /branches/bleeding_edge/src/type-info.cc    Tue Feb 11 15:01:44 2014 UTC
+++ /branches/bleeding_edge/src/type-info.cc    Fri Feb 14 15:15:08 2014 UTC
@@ -283,9 +283,7 @@
   FunctionPrototypeStub proto_stub(Code::LOAD_IC);
   *is_prototype = LoadIsStub(id, &proto_stub);
   if (!*is_prototype) {
-    Code::Flags flags = Code::ComputeFlags(
-        Code::HANDLER, MONOMORPHIC, kNoExtraICState,
-        Code::NORMAL, Code::LOAD_IC);
+    Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC);
     CollectReceiverTypes(id, name, flags, receiver_types);
   }
 }
@@ -306,9 +304,7 @@
 void TypeFeedbackOracle::AssignmentReceiverTypes(
     TypeFeedbackId id, Handle<String> name, SmallMapList* receiver_types) {
   receiver_types->Clear();
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, kNoExtraICState,
-      Code::NORMAL, Code::STORE_IC);
+  Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC);
   CollectReceiverTypes(id, name, flags, receiver_types);
 }

=======================================
--- /branches/bleeding_edge/src/x64/ic-x64.cc   Fri Jan 31 16:52:17 2014 UTC
+++ /branches/bleeding_edge/src/x64/ic-x64.cc   Fri Feb 14 15:15:08 2014 UTC
@@ -982,9 +982,7 @@
   // -----------------------------------

   // Probe the stub cache.
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, extra_state,
-      Code::NORMAL, Code::LOAD_IC);
+ Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC, extra_state);
   masm->isolate()->stub_cache()->GenerateProbe(
       masm, flags, rax, rcx, rbx, rdx);

@@ -1092,7 +1090,7 @@


 void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
-                                  ExtraICState extra_ic_state) {
+                                  ExtraICState extra_state) {
   // ----------- S t a t e -------------
   //  -- rax    : value
   //  -- rcx    : name
@@ -1101,9 +1099,7 @@
   // -----------------------------------

   // Get the receiver from the stack and probe the stub cache.
-  Code::Flags flags = Code::ComputeFlags(
-      Code::HANDLER, MONOMORPHIC, extra_ic_state,
-      Code::NORMAL, Code::STORE_IC);
+ Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC, extra_state);
   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