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 3372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3383 __ movss(Operand(rbx, rdi, times_4, 0), xmm0); | 3383 __ movss(Operand(rbx, rdi, times_4, 0), xmm0); |
3384 break; | 3384 break; |
3385 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: | 3385 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
3386 // Need to perform int-to-float conversion. | 3386 // Need to perform int-to-float conversion. |
3387 __ cvtlsi2sd(xmm0, rdx); | 3387 __ cvtlsi2sd(xmm0, rdx); |
3388 __ movsd(Operand(rbx, rdi, times_8, 0), xmm0); | 3388 __ movsd(Operand(rbx, rdi, times_8, 0), xmm0); |
3389 break; | 3389 break; |
3390 case JSObject::FAST_ELEMENTS: | 3390 case JSObject::FAST_ELEMENTS: |
3391 case JSObject::FAST_DOUBLE_ELEMENTS: | 3391 case JSObject::FAST_DOUBLE_ELEMENTS: |
3392 case JSObject::DICTIONARY_ELEMENTS: | 3392 case JSObject::DICTIONARY_ELEMENTS: |
3393 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: | |
3394 UNREACHABLE(); | 3393 UNREACHABLE(); |
3395 break; | 3394 break; |
3396 } | 3395 } |
3397 __ ret(0); | 3396 __ ret(0); |
3398 | 3397 |
3399 // TODO(danno): handle heap number -> pixel array conversion | 3398 // TODO(danno): handle heap number -> pixel array conversion |
3400 if (elements_kind != JSObject::EXTERNAL_PIXEL_ELEMENTS) { | 3399 if (elements_kind != JSObject::EXTERNAL_PIXEL_ELEMENTS) { |
3401 __ bind(&check_heap_number); | 3400 __ bind(&check_heap_number); |
3402 // rax: value | 3401 // rax: value |
3403 // rcx: key (a smi) | 3402 // rcx: key (a smi) |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3450 // 0x8000000000000000, which is zero mod 2^32. | 3449 // 0x8000000000000000, which is zero mod 2^32. |
3451 __ cvttsd2siq(rdx, xmm0); | 3450 __ cvttsd2siq(rdx, xmm0); |
3452 __ movl(Operand(rbx, rdi, times_4, 0), rdx); | 3451 __ movl(Operand(rbx, rdi, times_4, 0), rdx); |
3453 break; | 3452 break; |
3454 case JSObject::EXTERNAL_PIXEL_ELEMENTS: | 3453 case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
3455 case JSObject::EXTERNAL_FLOAT_ELEMENTS: | 3454 case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
3456 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: | 3455 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
3457 case JSObject::FAST_ELEMENTS: | 3456 case JSObject::FAST_ELEMENTS: |
3458 case JSObject::FAST_DOUBLE_ELEMENTS: | 3457 case JSObject::FAST_DOUBLE_ELEMENTS: |
3459 case JSObject::DICTIONARY_ELEMENTS: | 3458 case JSObject::DICTIONARY_ELEMENTS: |
3460 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: | |
3461 UNREACHABLE(); | 3459 UNREACHABLE(); |
3462 break; | 3460 break; |
3463 } | 3461 } |
3464 __ ret(0); | 3462 __ ret(0); |
3465 } | 3463 } |
3466 } | 3464 } |
3467 | 3465 |
3468 // Slow case: call runtime. | 3466 // Slow case: call runtime. |
3469 __ bind(&slow); | 3467 __ bind(&slow); |
3470 | 3468 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3583 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric(); | 3581 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric(); |
3584 __ jmp(ic_force_generic, RelocInfo::CODE_TARGET); | 3582 __ jmp(ic_force_generic, RelocInfo::CODE_TARGET); |
3585 } | 3583 } |
3586 | 3584 |
3587 | 3585 |
3588 #undef __ | 3586 #undef __ |
3589 | 3587 |
3590 } } // namespace v8::internal | 3588 } } // namespace v8::internal |
3591 | 3589 |
3592 #endif // V8_TARGET_ARCH_X64 | 3590 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |