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.