ARM: Fix another bug in r5252

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
This commit is contained in:
sgjesse@chromium.org 2010-08-13 12:36:59 +00:00
parent 67b42cdad8
commit 4673c5dc4a

View File

@ -4833,10 +4833,13 @@ class DeferredIsStringWrapperSafeForDefaultValueOf : public DeferredCode {
// Loop through all the keys in the descriptor array. If one of these is the // Loop through all the keys in the descriptor array. If one of these is the
// symbol valueOf the result is false. // symbol valueOf the result is false.
Label entry, loop; 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); __ jmp(&entry);
__ bind(&loop); __ bind(&loop);
__ ldr(scratch2_, FieldMemOperand(map_result_, 0)); __ ldr(scratch2_, MemOperand(map_result_, 0));
__ cmp(scratch2_, Operand(Factory::value_of_symbol())); __ cmp(scratch2_, ip);
__ b(eq, &false_result); __ b(eq, &false_result);
__ add(map_result_, map_result_, Operand(kPointerSize)); __ add(map_result_, map_result_, Operand(kPointerSize));
__ bind(&entry); __ bind(&entry);