MIPS: Only generate a single normal IC per kind per slow-mode map.
authorakos.palfi@imgtec.com <akos.palfi@imgtec.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 29 Jul 2014 20:48:36 +0000 (20:48 +0000)
committerakos.palfi@imgtec.com <akos.palfi@imgtec.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 29 Jul 2014 20:48:36 +0000 (20:48 +0000)
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
src/mips64/stub-cache-mips64.cc

index f74118a..166540d 100644 (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;
index e5a1cee..2f3ba92 100644 (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;