Revision: 19383
Author: [email protected]
Date: Fri Feb 14 15:14:34 2014 UTC
Log: Pass in the handler kind to IC computation rather than extracting
it from the handler.
[email protected]
Review URL: https://codereview.chromium.org/163463002
http://code.google.com/p/v8/source/detail?r=19383
Modified:
/branches/bleeding_edge/src/ic.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/stub-cache.h
=======================================
--- /branches/bleeding_edge/src/ic.cc Thu Feb 13 09:36:20 2014 UTC
+++ /branches/bleeding_edge/src/ic.cc Fri Feb 14 15:14:34 2014 UTC
@@ -643,7 +643,7 @@
}
Handle<Code> ic = isolate()->stub_cache()->ComputePolymorphicIC(
- &types, &handlers, number_of_valid_types, name, extra_ic_state());
+ kind(), &types, &handlers, number_of_valid_types, name,
extra_ic_state());
set_target(*ic);
return true;
}
@@ -695,7 +695,7 @@
Handle<String> name) {
if (!handler->is_handler()) return set_target(*handler);
Handle<Code> ic = isolate()->stub_cache()->ComputeMonomorphicIC(
- name, type, handler, extra_ic_state());
+ kind(), name, type, handler, extra_ic_state());
set_target(*ic);
}
=======================================
--- /branches/bleeding_edge/src/objects-inl.h Tue Feb 11 15:01:44 2014 UTC
+++ /branches/bleeding_edge/src/objects-inl.h Fri Feb 14 15:14:34 2014 UTC
@@ -4202,12 +4202,6 @@
Code::StubType Code::type() {
return ExtractTypeFromFlags(flags());
}
-
-
-int Code::arguments_count() {
- ASSERT(kind() == STUB || is_handler());
- return ExtractArgumentsCountFromFlags(flags());
-}
// For initialization.
@@ -4492,8 +4486,9 @@
| 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 |= (handler_kind << kArgumentsCountShift);
+ bits |= HandlerKindField::encode(handler_kind);
}
return static_cast<Flags>(bits);
}
@@ -4527,11 +4522,6 @@
Code::StubType Code::ExtractTypeFromFlags(Flags flags) {
return TypeField::decode(flags);
}
-
-
-int Code::ExtractArgumentsCountFromFlags(Flags flags) {
- return (flags & kArgumentsCountMask) >> kArgumentsCountShift;
-}
InlineCacheHolderFlag Code::ExtractCacheHolderFromFlags(Flags flags) {
=======================================
--- /branches/bleeding_edge/src/objects.h Thu Feb 13 16:09:28 2014 UTC
+++ /branches/bleeding_edge/src/objects.h Fri Feb 14 15:14:34 2014 UTC
@@ -5233,14 +5233,10 @@
// [flags]: Access to specific code flags.
inline Kind kind();
- inline Kind handler_kind() {
- return static_cast<Kind>(arguments_count());
- }
inline InlineCacheState ic_state(); // Only valid for IC stubs.
inline ExtraICState extra_ic_state(); // Only valid for IC stubs.
inline StubType type(); // Only valid for monomorphic IC stubs.
- inline int arguments_count(); // Only valid for call IC stubs.
// Testers for IC stub kinds.
inline bool is_inline_cache_stub();
@@ -5394,7 +5390,6 @@
static inline Kind ExtractKindFromFlags(Flags flags);
static inline InlineCacheHolderFlag ExtractCacheHolderFromFlags(Flags
flags);
static inline ExtraICState ExtractExtraICStateFromFlags(Flags flags);
- static inline int ExtractArgumentsCountFromFlags(Flags flags);
static inline Flags RemoveTypeFromFlags(Flags flags);
@@ -5614,11 +5609,9 @@
class BackEdgesPatchedForOSRField: public BitField<bool,
kIsCrankshaftedBit + 1 + 29, 1> {}; // NOLINT
- // Signed field cannot be encoded using the BitField class.
- static const int kArgumentsCountShift = 17;
- static const int kArgumentsCountMask = ~((1 << kArgumentsCountShift) -
1);
- static const int kArgumentsBits =
- PlatformSmiTagging::kSmiValueSize - Code::kArgumentsCountShift + 1;
+ class HandlerKindField: public BitField<Kind, 17, 4> {};
+
+ static const int kArgumentsBits = 16;
static const int kMaxArguments = (1 << kArgumentsBits) - 1;
// This constant should be encodable in an ARM instruction.
=======================================
--- /branches/bleeding_edge/src/stub-cache.cc Thu Feb 6 10:50:07 2014 UTC
+++ /branches/bleeding_edge/src/stub-cache.cc Fri Feb 14 15:14:34 2014 UTC
@@ -127,11 +127,11 @@
Handle<Code> StubCache::ComputeMonomorphicIC(
+ Code::Kind kind,
Handle<Name> name,
Handle<HeapType> type,
Handle<Code> handler,
ExtraICState extra_ic_state) {
- Code::Kind kind = handler->handler_kind();
InlineCacheHolderFlag flag = IC::GetCodeCacheFlag(*type);
Handle<Map> stub_holder;
@@ -369,14 +369,13 @@
Handle<Code> StubCache::ComputePolymorphicIC(
+ Code::Kind kind,
TypeHandleList* types,
CodeHandleList* handlers,
int number_of_valid_types,
Handle<Name> name,
ExtraICState extra_ic_state) {
-
Handle<Code> handler = handlers->at(0);
- Code::Kind kind = handler->handler_kind();
Code::StubType type = number_of_valid_types == 1 ? handler->type()
: Code::NORMAL;
if (kind == Code::LOAD_IC) {
=======================================
--- /branches/bleeding_edge/src/stub-cache.h Thu Feb 6 10:50:07 2014 UTC
+++ /branches/bleeding_edge/src/stub-cache.h Fri Feb 14 15:14:34 2014 UTC
@@ -91,7 +91,8 @@
Code::Kind kind,
InlineCacheHolderFlag cache_holder = OWN_MAP);
- Handle<Code> ComputeMonomorphicIC(Handle<Name> name,
+ Handle<Code> ComputeMonomorphicIC(Code::Kind kind,
+ Handle<Name> name,
Handle<HeapType> type,
Handle<Code> handler,
ExtraICState extra_ic_state);
@@ -122,7 +123,8 @@
KeyedAccessStoreMode
store_mode,
StrictModeFlag strict_mode);
- Handle<Code> ComputePolymorphicIC(TypeHandleList* types,
+ Handle<Code> ComputePolymorphicIC(Code::Kind kind,
+ TypeHandleList* types,
CodeHandleList* handlers,
int number_of_valid_maps,
Handle<Name> name,
--
--
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.