From b749b3eb62d52d23348ea9cfe6bb83ad1bbcda15 Mon Sep 17 00:00:00 2001 From: "akos.palfi@imgtec.com" Date: Tue, 29 Jul 2014 20:48:36 +0000 Subject: [PATCH] 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 --- src/mips/stub-cache-mips.cc | 8 +++++++- src/mips64/stub-cache-mips64.cc | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc index f74118a331..166540d576 100644 --- a/src/mips/stub-cache-mips.cc +++ b/src/mips/stub-cache-mips.cc @@ -1263,7 +1263,13 @@ Handle 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; diff --git a/src/mips64/stub-cache-mips64.cc b/src/mips64/stub-cache-mips64.cc index e5a1cee646..2f3ba92aba 100644 --- a/src/mips64/stub-cache-mips64.cc +++ b/src/mips64/stub-cache-mips64.cc @@ -1264,7 +1264,13 @@ Handle 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;