OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 1278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1289 | 1289 |
1290 // Call the native; it returns -1 (less), 0 (equal), or 1 (greater) | 1290 // Call the native; it returns -1 (less), 0 (equal), or 1 (greater) |
1291 // tagged as a small integer. | 1291 // tagged as a small integer. |
1292 __ InvokeBuiltin(native, JUMP_JS); | 1292 __ InvokeBuiltin(native, JUMP_JS); |
1293 } | 1293 } |
1294 | 1294 |
1295 | 1295 |
1296 // This stub does not handle the inlined cases (Smis, Booleans, undefined). | 1296 // This stub does not handle the inlined cases (Smis, Booleans, undefined). |
1297 // The stub returns zero for false, and a non-zero value for true. | 1297 // The stub returns zero for false, and a non-zero value for true. |
1298 void ToBooleanStub::Generate(MacroAssembler* masm) { | 1298 void ToBooleanStub::Generate(MacroAssembler* masm) { |
| 1299 // This stub uses VFP3 instructions. |
| 1300 ASSERT(CpuFeatures::IsEnabled(VFP3)); |
| 1301 |
1299 Label false_result; | 1302 Label false_result; |
1300 Label not_heap_number; | 1303 Label not_heap_number; |
1301 Register scratch = r9.is(tos_) ? r7 : r9; | 1304 Register scratch = r9.is(tos_) ? r7 : r9; |
1302 | 1305 |
1303 __ LoadRoot(ip, Heap::kNullValueRootIndex); | 1306 __ LoadRoot(ip, Heap::kNullValueRootIndex); |
1304 __ cmp(tos_, ip); | 1307 __ cmp(tos_, ip); |
1305 __ b(eq, &false_result); | 1308 __ b(eq, &false_result); |
1306 | 1309 |
1307 // HeapNumber => false iff +0, -0, or NaN. | 1310 // HeapNumber => false iff +0, -0, or NaN. |
1308 __ ldr(scratch, FieldMemOperand(tos_, HeapObject::kMapOffset)); | 1311 __ ldr(scratch, FieldMemOperand(tos_, HeapObject::kMapOffset)); |
(...skipping 4818 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6127 __ strb(untagged_value, MemOperand(external_pointer, untagged_key)); | 6130 __ strb(untagged_value, MemOperand(external_pointer, untagged_key)); |
6128 __ Ret(); | 6131 __ Ret(); |
6129 } | 6132 } |
6130 | 6133 |
6131 | 6134 |
6132 #undef __ | 6135 #undef __ |
6133 | 6136 |
6134 } } // namespace v8::internal | 6137 } } // namespace v8::internal |
6135 | 6138 |
6136 #endif // V8_TARGET_ARCH_ARM | 6139 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |