Revision: 19287
Author:   [email protected]
Date:     Tue Feb 11 15:01:44 2014 UTC
Log:      Remove extended_extra_ic_state and extend extra_ic_state instead.

BUG=
[email protected]

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

Modified:
 /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/ic.cc
 /branches/bleeding_edge/src/objects-inl.h
 /branches/bleeding_edge/src/objects.cc
 /branches/bleeding_edge/src/objects.h
 /branches/bleeding_edge/src/type-info.cc

=======================================
--- /branches/bleeding_edge/src/code-stubs-hydrogen.cc Mon Feb 10 21:38:17 2014 UTC +++ /branches/bleeding_edge/src/code-stubs-hydrogen.cc Tue Feb 11 15:01:44 2014 UTC
@@ -248,7 +248,7 @@
       GetICState(),
       GetExtraICState(),
       GetStubType(),
-      GetStubFlags());
+      GetHandlerKind());
   Handle<Code> new_object = factory->NewCode(
       desc, flags, masm.CodeObject(), NeedsImmovableCode());
   return new_object;
=======================================
--- /branches/bleeding_edge/src/code-stubs.cc   Fri Jan 31 16:52:17 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.cc   Tue Feb 11 15:01:44 2014 UTC
@@ -120,7 +120,7 @@
       GetICState(),
       GetExtraICState(),
       GetStubType(),
-      GetStubFlags());
+      GetHandlerKind());
   Handle<Code> new_object = factory->NewCode(
       desc, flags, masm.CodeObject(), NeedsImmovableCode());
   return new_object;
=======================================
--- /branches/bleeding_edge/src/code-stubs.h    Fri Jan 31 16:52:17 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.h    Tue Feb 11 15:01:44 2014 UTC
@@ -188,8 +188,8 @@
   virtual Code::StubType GetStubType() {
     return Code::NORMAL;
   }
-  virtual int GetStubFlags() {
-    return -1;
+  virtual Code::Kind GetHandlerKind() {
+    return Code::STUB;
   }

   virtual void PrintName(StringStream* stream);
@@ -883,7 +883,7 @@
 class HandlerStub: public HICStub {
  public:
   virtual Code::Kind GetCodeKind() const { return Code::HANDLER; }
-  virtual int GetStubFlags() { return kind(); }
+  virtual Code::Kind GetHandlerKind() { return kind(); }

  protected:
   HandlerStub() : HICStub() { }
=======================================
--- /branches/bleeding_edge/src/compiler.cc     Mon Feb 10 21:38:17 2014 UTC
+++ /branches/bleeding_edge/src/compiler.cc     Tue Feb 11 15:01:44 2014 UTC
@@ -212,7 +212,7 @@
                               code_stub()->GetICState(),
                               code_stub()->GetExtraICState(),
                               code_stub()->GetStubType(),
-                              code_stub()->GetStubFlags());
+                              code_stub()->GetHandlerKind());
   } else {
     return Code::ComputeFlags(Code::OPTIMIZED_FUNCTION);
   }
=======================================
--- /branches/bleeding_edge/src/ic.cc   Tue Feb  4 12:44:15 2014 UTC
+++ /branches/bleeding_edge/src/ic.cc   Tue Feb 11 15:01:44 2014 UTC
@@ -148,9 +148,7 @@
   pc_address_ = StackFrame::ResolveReturnAddressLocation(pc_address);
   target_ = handle(raw_target(), isolate);
   state_ = target_->ic_state();
-  extra_ic_state_ = target_->needs_extended_extra_ic_state(target_->kind())
-      ? target_->extended_extra_ic_state()
-      : target_->extra_ic_state();
+  extra_ic_state_ = target_->extra_ic_state();
 }


@@ -2371,7 +2369,7 @@
 MaybeObject* BinaryOpIC::Transition(Handle<AllocationSite> allocation_site,
                                     Handle<Object> left,
                                     Handle<Object> right) {
-  State state(target()->extended_extra_ic_state());
+  State state(target()->extra_ic_state());

   // Compute the actual result using the builtin for the binary operation.
   Object* builtin = isolate()->js_builtins_object()->javascript_builtin(
@@ -2687,7 +2685,7 @@

 void CompareNilIC::Clear(Address address, Code* target) {
   if (IsCleared(target)) return;
-  ExtraICState state = target->extended_extra_ic_state();
+  ExtraICState state = target->extra_ic_state();

   CompareNilICStub stub(state, HydrogenCodeStub::UNINITIALIZED);
   stub.ClearState();
@@ -2709,7 +2707,7 @@


 MaybeObject* CompareNilIC::CompareNil(Handle<Object> object) {
-  ExtraICState extra_ic_state = target()->extended_extra_ic_state();
+  ExtraICState extra_ic_state = target()->extra_ic_state();

   CompareNilICStub stub(extra_ic_state);

@@ -2793,7 +2791,7 @@


 MaybeObject* ToBooleanIC::ToBoolean(Handle<Object> object) {
-  ToBooleanStub stub(target()->extended_extra_ic_state());
+  ToBooleanStub stub(target()->extra_ic_state());
   bool to_boolean_value = stub.UpdateStatus(object);
   Handle<Code> code = stub.GetCode(isolate());
   set_target(*code);
=======================================
--- /branches/bleeding_edge/src/objects-inl.h   Tue Feb 11 09:29:51 2014 UTC
+++ /branches/bleeding_edge/src/objects-inl.h   Tue Feb 11 15:01:44 2014 UTC
@@ -4194,17 +4194,9 @@


 ExtraICState Code::extra_ic_state() {
-  ASSERT((is_inline_cache_stub() && !needs_extended_extra_ic_state(kind()))
-         || ic_state() == DEBUG_STUB);
+  ASSERT(is_inline_cache_stub() || ic_state() == DEBUG_STUB);
   return ExtractExtraICStateFromFlags(flags());
 }
-
-
-ExtraICState Code::extended_extra_ic_state() {
-  ASSERT(is_inline_cache_stub() || ic_state() == DEBUG_STUB);
-  ASSERT(needs_extended_extra_ic_state(kind()));
-  return ExtractExtendedExtraICStateFromFlags(flags());
-}


 Code::StubType Code::type() {
@@ -4421,7 +4413,7 @@


 byte Code::to_boolean_state() {
-  return extended_extra_ic_state();
+  return extra_ic_state();
 }


@@ -4492,17 +4484,16 @@
                                InlineCacheState ic_state,
                                ExtraICState extra_ic_state,
                                StubType type,
-                               int argc,
+                               Kind handler_kind,
                                InlineCacheHolderFlag holder) {
-  ASSERT(argc <= Code::kMaxArguments);
   // Compute the bit mask.
   unsigned int bits = KindField::encode(kind)
       | ICStateField::encode(ic_state)
       | TypeField::encode(type)
-      | ExtendedExtraICStateField::encode(extra_ic_state)
+      | ExtraICStateField::encode(extra_ic_state)
       | CacheHolderField::encode(holder);
-  if (!Code::needs_extended_extra_ic_state(kind)) {
-    bits |= (argc << kArgumentsCountShift);
+  if (handler_kind != STUB) {
+    bits |= (handler_kind << kArgumentsCountShift);
   }
   return static_cast<Flags>(bits);
 }
@@ -4512,8 +4503,9 @@
                                           ExtraICState extra_ic_state,
                                           InlineCacheHolderFlag holder,
                                           StubType type,
-                                          int argc) {
- return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, type, argc, holder);
+                                          Kind handler_kind) {
+  return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, type,
+                      handler_kind, holder);
 }


@@ -4530,12 +4522,6 @@
 ExtraICState Code::ExtractExtraICStateFromFlags(Flags flags) {
   return ExtraICStateField::decode(flags);
 }
-
-
-ExtraICState Code::ExtractExtendedExtraICStateFromFlags(
-    Flags flags) {
-  return ExtendedExtraICStateField::decode(flags);
-}


 Code::StubType Code::ExtractTypeFromFlags(Flags flags) {
=======================================
--- /branches/bleeding_edge/src/objects.cc      Tue Feb 11 11:27:22 2014 UTC
+++ /branches/bleeding_edge/src/objects.cc      Tue Feb 11 15:01:44 2014 UTC
@@ -11091,8 +11091,7 @@
   }
   if (is_inline_cache_stub()) {
     PrintF(out, "ic_state = %s\n", ICState2String(ic_state()));
-    PrintExtraICState(out, kind(), needs_extended_extra_ic_state(kind()) ?
-        extended_extra_ic_state() : extra_ic_state());
+    PrintExtraICState(out, kind(), extra_ic_state());
     if (ic_state() == MONOMORPHIC) {
       PrintF(out, "type = %s\n", StubType2String(type()));
     }
=======================================
--- /branches/bleeding_edge/src/objects.h       Tue Feb 11 09:29:51 2014 UTC
+++ /branches/bleeding_edge/src/objects.h       Tue Feb 11 15:01:44 2014 UTC
@@ -5193,16 +5193,6 @@
   }
   inline InlineCacheState ic_state();  // Only valid for IC stubs.
   inline ExtraICState extra_ic_state();  // Only valid for IC stubs.
-
-  inline ExtraICState extended_extra_ic_state();  // Only valid for
-                                                  // non-call IC stubs.
-  static bool needs_extended_extra_ic_state(Kind kind) {
-    // TODO(danno): This is a bit of a hack right now since there are still
- // clients of this API that pass "extra" values in for argc. These clients
-    // should be retrofitted to used ExtendedExtraICState.
-    return kind == COMPARE_NIL_IC || kind == TO_BOOLEAN_IC ||
-           kind == BINARY_OP_IC;
-  }

   inline StubType type();  // Only valid for monomorphic IC stubs.
   inline int arguments_count();  // Only valid for call IC stubs.
@@ -5344,7 +5334,7 @@
       InlineCacheState ic_state = UNINITIALIZED,
       ExtraICState extra_ic_state = kNoExtraICState,
       StubType type = NORMAL,
-      int argc = -1,
+      Kind handler_kind = STUB,
       InlineCacheHolderFlag holder = OWN_MAP);

   static inline Flags ComputeMonomorphicFlags(
@@ -5352,14 +5342,13 @@
       ExtraICState extra_ic_state = kNoExtraICState,
       InlineCacheHolderFlag holder = OWN_MAP,
       StubType type = NORMAL,
-      int argc = -1);
+      Kind handler_kind = STUB);

   static inline InlineCacheState ExtractICStateFromFlags(Flags flags);
   static inline StubType ExtractTypeFromFlags(Flags flags);
   static inline Kind ExtractKindFromFlags(Flags flags);
static inline InlineCacheHolderFlag ExtractCacheHolderFromFlags(Flags flags);
   static inline ExtraICState ExtractExtraICStateFromFlags(Flags flags);
- static inline ExtraICState ExtractExtendedExtraICStateFromFlags(Flags flags);
   static inline int ExtractArgumentsCountFromFlags(Flags flags);

   static inline Flags RemoveTypeFromFlags(Flags flags);
@@ -5525,10 +5514,8 @@
   class CacheHolderField: public BitField<InlineCacheHolderFlag, 5, 1> {};
   class KindField: public BitField<Kind, 6, 4> {};
   // TODO(bmeurer): Bit 10 is available for free use. :-)
-  class ExtraICStateField: public BitField<ExtraICState, 11, 6> {};
-  class ExtendedExtraICStateField: public BitField<ExtraICState, 11,
+  class ExtraICStateField: public BitField<ExtraICState, 11,
       PlatformSmiTagging::kSmiValueSize - 11 + 1> {};  // NOLINT
- STATIC_ASSERT(ExtraICStateField::kShift == ExtendedExtraICStateField::kShift);

   // KindSpecificFlags1 layout (STUB and OPTIMIZED_FUNCTION)
   static const int kStackSlotsFirstBit = 0;
@@ -5589,13 +5576,6 @@
       PlatformSmiTagging::kSmiValueSize - Code::kArgumentsCountShift + 1;
   static const int kMaxArguments = (1 << kArgumentsBits) - 1;

- // ICs can use either argument count or ExtendedExtraIC, since their storage
-  // overlaps.
-  STATIC_ASSERT(ExtraICStateField::kShift +
-                ExtraICStateField::kSize + kArgumentsBits ==
-                ExtendedExtraICStateField::kShift +
-                ExtendedExtraICStateField::kSize);
-
   // This constant should be encodable in an ARM instruction.
   static const int kFlagsNotUsedInLookup =
       TypeField::kMask | CacheHolderField::kMask;
=======================================
--- /branches/bleeding_edge/src/type-info.cc    Mon Feb 10 21:38:17 2014 UTC
+++ /branches/bleeding_edge/src/type-info.cc    Tue Feb 11 15:01:44 2014 UTC
@@ -222,7 +222,7 @@
     CompareIC::StubInfoToType(
         stub_minor_key, left_type, right_type, combined_type, map, zone());
   } else if (code->is_compare_nil_ic_stub()) {
-    CompareNilICStub stub(code->extended_extra_ic_state());
+    CompareNilICStub stub(code->extra_ic_state());
     *combined_type = stub.GetType(zone(), map);
     *left_type = *right_type = stub.GetInputType(zone(), map);
   }
@@ -249,7 +249,7 @@
   }
   Handle<Code> code = Handle<Code>::cast(object);
   ASSERT_EQ(Code::BINARY_OP_IC, code->kind());
-  BinaryOpIC::State state(code->extended_extra_ic_state());
+  BinaryOpIC::State state(code->extra_ic_state());
   ASSERT_EQ(op, state.op());

   *left = state.GetLeftType(zone());
@@ -271,7 +271,7 @@
   if (!object->IsCode()) return Type::None(zone());
   Handle<Code> code = Handle<Code>::cast(object);
   ASSERT_EQ(Code::BINARY_OP_IC, code->kind());
-  BinaryOpIC::State state(code->extended_extra_ic_state());
+  BinaryOpIC::State state(code->extra_ic_state());
   return state.GetLeftType(zone());
 }

--
--
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