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:
parent
67b42cdad8
commit
4673c5dc4a
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user