Commit 7f6270db authored by verwaest@chromium.org's avatar verwaest@chromium.org

Don't use StubType to probe the code caches.

There is only one stub-type in the cache at all times. By ignoring the type up-front, we can in a later phase move cache probing before even computing the type.

BUG=
R=ulan@chromium.org

Review URL: https://chromiumcodereview.appspot.com/25520003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17089 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 2c5d0d82
......@@ -7349,11 +7349,10 @@ MaybeObject* CodeCache::UpdateNormalTypeCache(Name* name, Code* code) {
Object* CodeCache::Lookup(Name* name, Code::Flags flags) {
if (Code::ExtractTypeFromFlags(flags) == Code::NORMAL) {
return LookupNormalTypeCache(name, flags);
} else {
return LookupDefaultCache(name, flags);
}
flags = Code::RemoveTypeFromFlags(flags);
Object* result = LookupDefaultCache(name, flags);
if (result->IsCode()) return result;
return LookupNormalTypeCache(name, flags);
}
......@@ -7367,7 +7366,7 @@ Object* CodeCache::LookupDefaultCache(Name* name, Code::Flags flags) {
if (key->IsUndefined()) return key;
if (name->Equals(Name::cast(key))) {
Code* code = Code::cast(cache->get(i + kCodeCacheEntryCodeOffset));
if (code->flags() == flags) {
if (Code::RemoveTypeFromFlags(code->flags()) == flags) {
return code;
}
}
......@@ -7431,9 +7430,7 @@ class CodeCacheHashTableKey : public HashTableKey {
: name_(name), flags_(flags), code_(NULL) { }
CodeCacheHashTableKey(Name* name, Code* code)
: name_(name),
flags_(code->flags()),
code_(code) { }
: name_(name), flags_(code->flags()), code_(code) { }
bool IsMatch(Object* other) {
......
This diff is collapsed.
......@@ -83,24 +83,20 @@ class StubCache {
Handle<Code> FindIC(Handle<Name> name,
Handle<Map> stub_holder_map,
Code::Kind kind,
Code::StubType type,
Code::ExtraICState extra_state = Code::kNoExtraICState);
Handle<Code> FindIC(Handle<Name> name,
Handle<JSObject> stub_holder,
Code::Kind kind,
Code::StubType type,
Code::ExtraICState extra_state = Code::kNoExtraICState);
Handle<Code> FindLoadHandler(Handle<Name> name,
Handle<JSObject> receiver,
Code::Kind kind,
Code::StubType type);
Code::Kind kind);
Handle<Code> FindStoreHandler(Handle<Name> name,
Handle<JSObject> receiver,
Code::Kind kind,
Code::StubType type,
StrictModeFlag strict_mode);
Handle<Code> ComputeMonomorphicIC(Handle<HeapObject> receiver,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment