ARM: Fix another bug in r5252
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 13 Aug 2010 12:36:59 +0000 (12:36 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 13 Aug 2010 12:36:59 +0000 (12:36 +0000)
Also hoist the load of the valueOf symbol out of the loop.
Review URL: http://codereview.chromium.org/3170014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/arm/codegen-arm.cc

index 214b3bc..6deb31f 100644 (file)
@@ -4833,10 +4833,13 @@ class DeferredIsStringWrapperSafeForDefaultValueOf : public DeferredCode {
     // Loop through all the keys in the descriptor array. If one of these is the
     // symbol valueOf the result is false.
     Label entry, loop;
+    // The use of ip to store the valueOf symbol asumes that it is not otherwise
+    // used in the loop below.
+    __ mov(ip, Operand(Factory::value_of_symbol()));
     __ jmp(&entry);
     __ bind(&loop);
-    __ ldr(scratch2_, FieldMemOperand(map_result_, 0));
-    __ cmp(scratch2_, Operand(Factory::value_of_symbol()));
+    __ ldr(scratch2_, MemOperand(map_result_, 0));
+    __ cmp(scratch2_, ip);
     __ b(eq, &false_result);
     __ add(map_result_, map_result_, Operand(kPointerSize));
     __ bind(&entry);