| 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 |