OLD | NEW |
---|---|
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 4815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4826 Operand(scratch2_, LSL, kPointerSizeLog2 - kSmiTagSize)); | 4826 Operand(scratch2_, LSL, kPointerSizeLog2 - kSmiTagSize)); |
4827 | 4827 |
4828 // Calculate location of the first key name. | 4828 // Calculate location of the first key name. |
4829 __ add(map_result_, | 4829 __ add(map_result_, |
4830 map_result_, | 4830 map_result_, |
4831 Operand(FixedArray::kHeaderSize - kHeapObjectTag + | 4831 Operand(FixedArray::kHeaderSize - kHeapObjectTag + |
4832 DescriptorArray::kFirstIndex * kPointerSize)); | 4832 DescriptorArray::kFirstIndex * kPointerSize)); |
4833 // Loop through all the keys in the descriptor array. If one of these is the | 4833 // Loop through all the keys in the descriptor array. If one of these is the |
4834 // symbol valueOf the result is false. | 4834 // symbol valueOf the result is false. |
4835 Label entry, loop; | 4835 Label entry, loop; |
4836 // The use of ip to store the valueOf symbol asumes that it is not otherwise | |
Erik Corry
2010/08/13 12:36:22
asumes -> assumes
| |
4837 // used in the loop below. | |
4838 __ mov(ip, Operand(Factory::value_of_symbol())); | |
4836 __ jmp(&entry); | 4839 __ jmp(&entry); |
4837 __ bind(&loop); | 4840 __ bind(&loop); |
4838 __ ldr(scratch2_, FieldMemOperand(map_result_, 0)); | 4841 __ ldr(scratch2_, MemOperand(map_result_, 0)); |
4839 __ cmp(scratch2_, Operand(Factory::value_of_symbol())); | 4842 __ cmp(scratch2_, ip); |
4840 __ b(eq, &false_result); | 4843 __ b(eq, &false_result); |
4841 __ add(map_result_, map_result_, Operand(kPointerSize)); | 4844 __ add(map_result_, map_result_, Operand(kPointerSize)); |
4842 __ bind(&entry); | 4845 __ bind(&entry); |
4843 __ cmp(map_result_, Operand(scratch1_)); | 4846 __ cmp(map_result_, Operand(scratch1_)); |
4844 __ b(ne, &loop); | 4847 __ b(ne, &loop); |
4845 | 4848 |
4846 // Reload map as register map_result_ was used as temporary above. | 4849 // Reload map as register map_result_ was used as temporary above. |
4847 __ ldr(map_result_, FieldMemOperand(object_, HeapObject::kMapOffset)); | 4850 __ ldr(map_result_, FieldMemOperand(object_, HeapObject::kMapOffset)); |
4848 | 4851 |
4849 // If a valueOf property is not found on the object check that it's | 4852 // If a valueOf property is not found on the object check that it's |
(...skipping 6713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
11563 __ bind(&string_add_runtime); | 11566 __ bind(&string_add_runtime); |
11564 __ TailCallRuntime(Runtime::kStringAdd, 2, 1); | 11567 __ TailCallRuntime(Runtime::kStringAdd, 2, 1); |
11565 } | 11568 } |
11566 | 11569 |
11567 | 11570 |
11568 #undef __ | 11571 #undef __ |
11569 | 11572 |
11570 } } // namespace v8::internal | 11573 } } // namespace v8::internal |
11571 | 11574 |
11572 #endif // V8_TARGET_ARCH_ARM | 11575 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |