Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Unified Diff: src/code-stubs.cc

Issue 1846963002: Use a dictionary-mode code cache on the map rather than a dual system. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/code-stubs.cc
diff --git a/src/code-stubs.cc b/src/code-stubs.cc
index 7ac1eb30ac0474f8985ffa02ef4102b254c68e12..59d6d0dff6bfc0fcf8c7199d15f2a3dbfd831b9c 100644
--- a/src/code-stubs.cc
+++ b/src/code-stubs.cc
@@ -99,8 +99,7 @@ Code::Kind CodeStub::GetCodeKind() const {
Code::Flags CodeStub::GetCodeFlags() const {
- return Code::ComputeFlags(GetCodeKind(), GetICState(), GetExtraICState(),
- GetStubType());
+ return Code::ComputeFlags(GetCodeKind(), GetICState(), GetExtraICState());
}
@@ -135,11 +134,8 @@ Handle<Code> PlatformCodeStub::GenerateCode() {
CodeDesc desc;
masm.GetCode(&desc);
// Copy the generated code into a heap object.
- Code::Flags flags = Code::ComputeFlags(
- GetCodeKind(),
- GetICState(),
- GetExtraICState(),
- GetStubType());
+ Code::Flags flags =
+ Code::ComputeFlags(GetCodeKind(), GetICState(), GetExtraICState());
Handle<Code> new_object = factory->NewCode(
desc, flags, masm.CodeObject(), NeedsImmovableCode());
return new_object;
@@ -390,19 +386,14 @@ void CompareICStub::AddToSpecialCache(Handle<Code> new_object) {
bool CompareICStub::FindCodeInSpecialCache(Code** code_out) {
- Factory* factory = isolate()->factory();
Code::Flags flags = Code::ComputeFlags(
GetCodeKind(),
UNINITIALIZED);
- Handle<Object> probe(
- known_map_->FindInCodeCache(
- strict() ?
- *factory->strict_compare_ic_string() :
- *factory->compare_ic_string(),
- flags),
- isolate());
- if (probe->IsCode()) {
- *code_out = Code::cast(*probe);
+ Name* name = strict() ? isolate()->heap()->strict_compare_ic_string()
+ : isolate()->heap()->compare_ic_string();
+ Code* code = known_map_->LookupInCodeCache(name, flags);
+ if (code != nullptr) {
+ *code_out = code;
#ifdef DEBUG
CompareICStub decode((*code_out)->stub_key(), isolate());
DCHECK(op() == decode.op());

Powered by Google App Engine
This is Rietveld 408576698