MIPS: Only generate a single normal IC per kind per slow-mode map.

Port r22680 (8b865409)

BUG=
R=paul.lind@imgtec.com

Review URL: https://codereview.chromium.org/426073002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
akos.palfi@imgtec.com 2014-07-29 20:48:36 +00:00
parent 7b27595520
commit b749b3eb62
2 changed files with 14 additions and 2 deletions

View File

@ -1263,7 +1263,13 @@ Handle<Code> PropertyICCompiler::CompilePolymorphic(TypeHandleList* types,
if (check == PROPERTY &&
(kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) {
__ Branch(&miss, ne, this->name(), Operand(name));
// In case we are compiling an IC for dictionary loads and stores, just
// check whether the name is unique.
if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
__ JumpIfNotUniqueName(this->name(), &miss);
} else {
__ Branch(&miss, ne, this->name(), Operand(name));
}
}
Label number_case;

View File

@ -1264,7 +1264,13 @@ Handle<Code> PropertyICCompiler::CompilePolymorphic(TypeHandleList* types,
if (check == PROPERTY &&
(kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) {
__ Branch(&miss, ne, this->name(), Operand(name));
// In case we are compiling an IC for dictionary loads and stores, just
// check whether the name is unique.
if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
__ JumpIfNotUniqueName(this->name(), &miss);
} else {
__ Branch(&miss, ne, this->name(), Operand(name));
}
}
Label number_case;