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 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 } else { | 371 } else { |
372 __ push(ebx); | 372 __ push(ebx); |
373 __ fild_s(Operand(esp, 0)); | 373 __ fild_s(Operand(esp, 0)); |
374 __ pop(ebx); | 374 __ pop(ebx); |
375 __ fstp_d(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize)); | 375 __ fstp_d(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize)); |
376 } | 376 } |
377 __ jmp(&entry); | 377 __ jmp(&entry); |
378 | 378 |
379 // Found hole, store hole_nan_as_double instead. | 379 // Found hole, store hole_nan_as_double instead. |
380 __ bind(&convert_hole); | 380 __ bind(&convert_hole); |
| 381 |
| 382 if (FLAG_debug_code) { |
| 383 Label is_really_the_hole; |
| 384 __ cmp(ebx, masm->isolate()->factory()->the_hole_value()); |
| 385 __ j(equal, &is_really_the_hole); |
| 386 __ Abort("object found in smi-only array"); |
| 387 __ bind(&is_really_the_hole); |
| 388 } |
| 389 |
381 if (CpuFeatures::IsSupported(SSE2)) { | 390 if (CpuFeatures::IsSupported(SSE2)) { |
382 CpuFeatures::Scope use_sse2(SSE2); | 391 CpuFeatures::Scope use_sse2(SSE2); |
383 __ movdbl(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize), | 392 __ movdbl(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize), |
384 the_hole_nan); | 393 the_hole_nan); |
385 } else { | 394 } else { |
386 __ fld_d(Operand::StaticVariable(canonical_the_hole_nan_reference)); | 395 __ fld_d(Operand::StaticVariable(canonical_the_hole_nan_reference)); |
387 __ fstp_d(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize)); | 396 __ fstp_d(FieldOperand(eax, edi, times_4, FixedDoubleArray::kHeaderSize)); |
388 } | 397 } |
389 | 398 |
390 __ bind(&entry); | 399 __ bind(&entry); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 // Restore registers. | 525 // Restore registers. |
517 __ pop(eax); | 526 __ pop(eax); |
518 __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); | 527 __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); |
519 } | 528 } |
520 | 529 |
521 #undef __ | 530 #undef __ |
522 | 531 |
523 } } // namespace v8::internal | 532 } } // namespace v8::internal |
524 | 533 |
525 #endif // V8_TARGET_ARCH_IA32 | 534 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |