OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 TYPE_CHECKER(FreeSpace, FREE_SPACE_TYPE) | 595 TYPE_CHECKER(FreeSpace, FREE_SPACE_TYPE) |
596 | 596 |
597 | 597 |
598 bool Object::IsFiller() { | 598 bool Object::IsFiller() { |
599 if (!Object::IsHeapObject()) return false; | 599 if (!Object::IsHeapObject()) return false; |
600 InstanceType instance_type = HeapObject::cast(this)->map()->instance_type(); | 600 InstanceType instance_type = HeapObject::cast(this)->map()->instance_type(); |
601 return instance_type == FREE_SPACE_TYPE || instance_type == FILLER_TYPE; | 601 return instance_type == FREE_SPACE_TYPE || instance_type == FILLER_TYPE; |
602 } | 602 } |
603 | 603 |
604 | 604 |
605 TYPE_CHECKER(ExternalPixelArray, EXTERNAL_PIXEL_ARRAY_TYPE) | |
606 | |
607 | |
608 bool Object::IsExternalArray() { | 605 bool Object::IsExternalArray() { |
609 if (!Object::IsHeapObject()) | 606 if (!Object::IsHeapObject()) |
610 return false; | 607 return false; |
611 InstanceType instance_type = | 608 InstanceType instance_type = |
612 HeapObject::cast(this)->map()->instance_type(); | 609 HeapObject::cast(this)->map()->instance_type(); |
613 return (instance_type >= FIRST_EXTERNAL_ARRAY_TYPE && | 610 return (instance_type >= FIRST_EXTERNAL_ARRAY_TYPE && |
614 instance_type <= LAST_EXTERNAL_ARRAY_TYPE); | 611 instance_type <= LAST_EXTERNAL_ARRAY_TYPE); |
615 } | 612 } |
616 | 613 |
617 | 614 |
618 TYPE_CHECKER(ExternalByteArray, EXTERNAL_BYTE_ARRAY_TYPE) | 615 #define TYPED_ARRAY_TYPE_CHECKER(Type, type, TYPE, ctype, size) \ |
619 TYPE_CHECKER(ExternalUnsignedByteArray, EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE) | 616 TYPE_CHECKER(External##Type##Array, EXTERNAL_##TYPE##_ARRAY_TYPE) \ |
620 TYPE_CHECKER(ExternalShortArray, EXTERNAL_SHORT_ARRAY_TYPE) | 617 TYPE_CHECKER(Fixed##Type##Array, FIXED_##TYPE##_ARRAY_TYPE) |
621 TYPE_CHECKER(ExternalUnsignedShortArray, EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE) | 618 |
622 TYPE_CHECKER(ExternalIntArray, EXTERNAL_INT_ARRAY_TYPE) | 619 TYPED_ARRAYS(TYPED_ARRAY_TYPE_CHECKER) |
623 TYPE_CHECKER(ExternalUnsignedIntArray, EXTERNAL_UNSIGNED_INT_ARRAY_TYPE) | 620 #undef TYPED_ARRAY_TYPE_CHECKER |
624 TYPE_CHECKER(ExternalFloatArray, EXTERNAL_FLOAT_ARRAY_TYPE) | |
625 TYPE_CHECKER(ExternalDoubleArray, EXTERNAL_DOUBLE_ARRAY_TYPE) | |
626 | 621 |
627 | 622 |
628 bool Object::IsFixedTypedArrayBase() { | 623 bool Object::IsFixedTypedArrayBase() { |
629 if (!Object::IsHeapObject()) return false; | 624 if (!Object::IsHeapObject()) return false; |
630 | 625 |
631 InstanceType instance_type = | 626 InstanceType instance_type = |
632 HeapObject::cast(this)->map()->instance_type(); | 627 HeapObject::cast(this)->map()->instance_type(); |
633 return (instance_type >= FIRST_FIXED_TYPED_ARRAY_TYPE && | 628 return (instance_type >= FIRST_FIXED_TYPED_ARRAY_TYPE && |
634 instance_type <= LAST_FIXED_TYPED_ARRAY_TYPE); | 629 instance_type <= LAST_FIXED_TYPED_ARRAY_TYPE); |
635 } | 630 } |
636 | 631 |
637 | 632 |
638 TYPE_CHECKER(FixedUint8Array, FIXED_UINT8_ARRAY_TYPE) | |
639 TYPE_CHECKER(FixedInt8Array, FIXED_INT8_ARRAY_TYPE) | |
640 TYPE_CHECKER(FixedUint16Array, FIXED_UINT16_ARRAY_TYPE) | |
641 TYPE_CHECKER(FixedInt16Array, FIXED_INT16_ARRAY_TYPE) | |
642 TYPE_CHECKER(FixedUint32Array, FIXED_UINT32_ARRAY_TYPE) | |
643 TYPE_CHECKER(FixedInt32Array, FIXED_INT32_ARRAY_TYPE) | |
644 TYPE_CHECKER(FixedFloat32Array, FIXED_FLOAT32_ARRAY_TYPE) | |
645 TYPE_CHECKER(FixedFloat64Array, FIXED_FLOAT64_ARRAY_TYPE) | |
646 TYPE_CHECKER(FixedUint8ClampedArray, FIXED_UINT8_CLAMPED_ARRAY_TYPE) | |
647 | |
648 | |
649 bool MaybeObject::IsFailure() { | 633 bool MaybeObject::IsFailure() { |
650 return HAS_FAILURE_TAG(this); | 634 return HAS_FAILURE_TAG(this); |
651 } | 635 } |
652 | 636 |
653 | 637 |
654 bool MaybeObject::IsRetryAfterGC() { | 638 bool MaybeObject::IsRetryAfterGC() { |
655 return HAS_FAILURE_TAG(this) | 639 return HAS_FAILURE_TAG(this) |
656 && Failure::cast(this)->type() == Failure::RETRY_AFTER_GC; | 640 && Failure::cast(this)->type() == Failure::RETRY_AFTER_GC; |
657 } | 641 } |
658 | 642 |
(...skipping 2184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2843 CAST_ACCESSOR(JSProxy) | 2827 CAST_ACCESSOR(JSProxy) |
2844 CAST_ACCESSOR(JSFunctionProxy) | 2828 CAST_ACCESSOR(JSFunctionProxy) |
2845 CAST_ACCESSOR(JSSet) | 2829 CAST_ACCESSOR(JSSet) |
2846 CAST_ACCESSOR(JSMap) | 2830 CAST_ACCESSOR(JSMap) |
2847 CAST_ACCESSOR(JSWeakMap) | 2831 CAST_ACCESSOR(JSWeakMap) |
2848 CAST_ACCESSOR(JSWeakSet) | 2832 CAST_ACCESSOR(JSWeakSet) |
2849 CAST_ACCESSOR(Foreign) | 2833 CAST_ACCESSOR(Foreign) |
2850 CAST_ACCESSOR(ByteArray) | 2834 CAST_ACCESSOR(ByteArray) |
2851 CAST_ACCESSOR(FreeSpace) | 2835 CAST_ACCESSOR(FreeSpace) |
2852 CAST_ACCESSOR(ExternalArray) | 2836 CAST_ACCESSOR(ExternalArray) |
2853 CAST_ACCESSOR(ExternalByteArray) | 2837 CAST_ACCESSOR(ExternalInt8Array) |
2854 CAST_ACCESSOR(ExternalUnsignedByteArray) | 2838 CAST_ACCESSOR(ExternalUint8Array) |
2855 CAST_ACCESSOR(ExternalShortArray) | 2839 CAST_ACCESSOR(ExternalInt16Array) |
2856 CAST_ACCESSOR(ExternalUnsignedShortArray) | 2840 CAST_ACCESSOR(ExternalUint16Array) |
2857 CAST_ACCESSOR(ExternalIntArray) | 2841 CAST_ACCESSOR(ExternalInt32Array) |
2858 CAST_ACCESSOR(ExternalUnsignedIntArray) | 2842 CAST_ACCESSOR(ExternalUint32Array) |
2859 CAST_ACCESSOR(ExternalFloatArray) | 2843 CAST_ACCESSOR(ExternalFloat32Array) |
2860 CAST_ACCESSOR(ExternalDoubleArray) | 2844 CAST_ACCESSOR(ExternalFloat64Array) |
2861 CAST_ACCESSOR(ExternalPixelArray) | 2845 CAST_ACCESSOR(ExternalUint8ClampedArray) |
2862 CAST_ACCESSOR(Struct) | 2846 CAST_ACCESSOR(Struct) |
2863 CAST_ACCESSOR(AccessorInfo) | 2847 CAST_ACCESSOR(AccessorInfo) |
2864 | 2848 |
2865 template <class Traits> | 2849 template <class Traits> |
2866 FixedTypedArray<Traits>* FixedTypedArray<Traits>::cast(Object* object) { | 2850 FixedTypedArray<Traits>* FixedTypedArray<Traits>::cast(Object* object) { |
2867 SLOW_ASSERT(object->IsHeapObject() && | 2851 SLOW_ASSERT(object->IsHeapObject() && |
2868 HeapObject::cast(object)->map()->instance_type() == | 2852 HeapObject::cast(object)->map()->instance_type() == |
2869 Traits::kInstanceType); | 2853 Traits::kInstanceType); |
2870 return reinterpret_cast<FixedTypedArray<Traits>*>(object); | 2854 return reinterpret_cast<FixedTypedArray<Traits>*>(object); |
2871 } | 2855 } |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3450 ASSERT_TAG_ALIGNED(address); | 3434 ASSERT_TAG_ALIGNED(address); |
3451 return reinterpret_cast<ByteArray*>(address - kHeaderSize + kHeapObjectTag); | 3435 return reinterpret_cast<ByteArray*>(address - kHeaderSize + kHeapObjectTag); |
3452 } | 3436 } |
3453 | 3437 |
3454 | 3438 |
3455 Address ByteArray::GetDataStartAddress() { | 3439 Address ByteArray::GetDataStartAddress() { |
3456 return reinterpret_cast<Address>(this) - kHeapObjectTag + kHeaderSize; | 3440 return reinterpret_cast<Address>(this) - kHeapObjectTag + kHeaderSize; |
3457 } | 3441 } |
3458 | 3442 |
3459 | 3443 |
3460 uint8_t* ExternalPixelArray::external_pixel_pointer() { | 3444 uint8_t* ExternalUint8ClampedArray::external_uint8_clamped_pointer() { |
3461 return reinterpret_cast<uint8_t*>(external_pointer()); | 3445 return reinterpret_cast<uint8_t*>(external_pointer()); |
3462 } | 3446 } |
3463 | 3447 |
3464 | 3448 |
3465 uint8_t ExternalPixelArray::get_scalar(int index) { | 3449 uint8_t ExternalUint8ClampedArray::get_scalar(int index) { |
3466 ASSERT((index >= 0) && (index < this->length())); | 3450 ASSERT((index >= 0) && (index < this->length())); |
3467 uint8_t* ptr = external_pixel_pointer(); | 3451 uint8_t* ptr = external_uint8_clamped_pointer(); |
3468 return ptr[index]; | 3452 return ptr[index]; |
3469 } | 3453 } |
3470 | 3454 |
3471 | 3455 |
3472 MaybeObject* ExternalPixelArray::get(int index) { | 3456 MaybeObject* ExternalUint8ClampedArray::get(int index) { |
3473 return Smi::FromInt(static_cast<int>(get_scalar(index))); | 3457 return Smi::FromInt(static_cast<int>(get_scalar(index))); |
3474 } | 3458 } |
3475 | 3459 |
3476 | 3460 |
3477 void ExternalPixelArray::set(int index, uint8_t value) { | 3461 void ExternalUint8ClampedArray::set(int index, uint8_t value) { |
3478 ASSERT((index >= 0) && (index < this->length())); | 3462 ASSERT((index >= 0) && (index < this->length())); |
3479 uint8_t* ptr = external_pixel_pointer(); | 3463 uint8_t* ptr = external_uint8_clamped_pointer(); |
3480 ptr[index] = value; | 3464 ptr[index] = value; |
3481 } | 3465 } |
3482 | 3466 |
3483 | 3467 |
3484 void* ExternalArray::external_pointer() { | 3468 void* ExternalArray::external_pointer() { |
3485 intptr_t ptr = READ_INTPTR_FIELD(this, kExternalPointerOffset); | 3469 intptr_t ptr = READ_INTPTR_FIELD(this, kExternalPointerOffset); |
3486 return reinterpret_cast<void*>(ptr); | 3470 return reinterpret_cast<void*>(ptr); |
3487 } | 3471 } |
3488 | 3472 |
3489 | 3473 |
3490 void ExternalArray::set_external_pointer(void* value, WriteBarrierMode mode) { | 3474 void ExternalArray::set_external_pointer(void* value, WriteBarrierMode mode) { |
3491 intptr_t ptr = reinterpret_cast<intptr_t>(value); | 3475 intptr_t ptr = reinterpret_cast<intptr_t>(value); |
3492 WRITE_INTPTR_FIELD(this, kExternalPointerOffset, ptr); | 3476 WRITE_INTPTR_FIELD(this, kExternalPointerOffset, ptr); |
3493 } | 3477 } |
3494 | 3478 |
3495 | 3479 |
3496 int8_t ExternalByteArray::get_scalar(int index) { | 3480 int8_t ExternalInt8Array::get_scalar(int index) { |
3497 ASSERT((index >= 0) && (index < this->length())); | 3481 ASSERT((index >= 0) && (index < this->length())); |
3498 int8_t* ptr = static_cast<int8_t*>(external_pointer()); | 3482 int8_t* ptr = static_cast<int8_t*>(external_pointer()); |
3499 return ptr[index]; | 3483 return ptr[index]; |
3500 } | 3484 } |
3501 | 3485 |
3502 | 3486 |
3503 MaybeObject* ExternalByteArray::get(int index) { | 3487 MaybeObject* ExternalInt8Array::get(int index) { |
3504 return Smi::FromInt(static_cast<int>(get_scalar(index))); | 3488 return Smi::FromInt(static_cast<int>(get_scalar(index))); |
3505 } | 3489 } |
3506 | 3490 |
3507 | 3491 |
3508 void ExternalByteArray::set(int index, int8_t value) { | 3492 void ExternalInt8Array::set(int index, int8_t value) { |
3509 ASSERT((index >= 0) && (index < this->length())); | 3493 ASSERT((index >= 0) && (index < this->length())); |
3510 int8_t* ptr = static_cast<int8_t*>(external_pointer()); | 3494 int8_t* ptr = static_cast<int8_t*>(external_pointer()); |
3511 ptr[index] = value; | 3495 ptr[index] = value; |
3512 } | 3496 } |
3513 | 3497 |
3514 | 3498 |
3515 uint8_t ExternalUnsignedByteArray::get_scalar(int index) { | 3499 uint8_t ExternalUint8Array::get_scalar(int index) { |
3516 ASSERT((index >= 0) && (index < this->length())); | 3500 ASSERT((index >= 0) && (index < this->length())); |
3517 uint8_t* ptr = static_cast<uint8_t*>(external_pointer()); | 3501 uint8_t* ptr = static_cast<uint8_t*>(external_pointer()); |
3518 return ptr[index]; | 3502 return ptr[index]; |
3519 } | 3503 } |
3520 | 3504 |
3521 | 3505 |
3522 MaybeObject* ExternalUnsignedByteArray::get(int index) { | 3506 MaybeObject* ExternalUint8Array::get(int index) { |
3523 return Smi::FromInt(static_cast<int>(get_scalar(index))); | 3507 return Smi::FromInt(static_cast<int>(get_scalar(index))); |
3524 } | 3508 } |
3525 | 3509 |
3526 | 3510 |
3527 void ExternalUnsignedByteArray::set(int index, uint8_t value) { | 3511 void ExternalUint8Array::set(int index, uint8_t value) { |
3528 ASSERT((index >= 0) && (index < this->length())); | 3512 ASSERT((index >= 0) && (index < this->length())); |
3529 uint8_t* ptr = static_cast<uint8_t*>(external_pointer()); | 3513 uint8_t* ptr = static_cast<uint8_t*>(external_pointer()); |
3530 ptr[index] = value; | 3514 ptr[index] = value; |
3531 } | 3515 } |
3532 | 3516 |
3533 | 3517 |
3534 int16_t ExternalShortArray::get_scalar(int index) { | 3518 int16_t ExternalInt16Array::get_scalar(int index) { |
3535 ASSERT((index >= 0) && (index < this->length())); | 3519 ASSERT((index >= 0) && (index < this->length())); |
3536 int16_t* ptr = static_cast<int16_t*>(external_pointer()); | 3520 int16_t* ptr = static_cast<int16_t*>(external_pointer()); |
3537 return ptr[index]; | 3521 return ptr[index]; |
3538 } | 3522 } |
3539 | 3523 |
3540 | 3524 |
3541 MaybeObject* ExternalShortArray::get(int index) { | 3525 MaybeObject* ExternalInt16Array::get(int index) { |
3542 return Smi::FromInt(static_cast<int>(get_scalar(index))); | 3526 return Smi::FromInt(static_cast<int>(get_scalar(index))); |
3543 } | 3527 } |
3544 | 3528 |
3545 | 3529 |
3546 void ExternalShortArray::set(int index, int16_t value) { | 3530 void ExternalInt16Array::set(int index, int16_t value) { |
3547 ASSERT((index >= 0) && (index < this->length())); | 3531 ASSERT((index >= 0) && (index < this->length())); |
3548 int16_t* ptr = static_cast<int16_t*>(external_pointer()); | 3532 int16_t* ptr = static_cast<int16_t*>(external_pointer()); |
3549 ptr[index] = value; | 3533 ptr[index] = value; |
3550 } | 3534 } |
3551 | 3535 |
3552 | 3536 |
3553 uint16_t ExternalUnsignedShortArray::get_scalar(int index) { | 3537 uint16_t ExternalUint16Array::get_scalar(int index) { |
3554 ASSERT((index >= 0) && (index < this->length())); | 3538 ASSERT((index >= 0) && (index < this->length())); |
3555 uint16_t* ptr = static_cast<uint16_t*>(external_pointer()); | 3539 uint16_t* ptr = static_cast<uint16_t*>(external_pointer()); |
3556 return ptr[index]; | 3540 return ptr[index]; |
3557 } | 3541 } |
3558 | 3542 |
3559 | 3543 |
3560 MaybeObject* ExternalUnsignedShortArray::get(int index) { | 3544 MaybeObject* ExternalUint16Array::get(int index) { |
3561 return Smi::FromInt(static_cast<int>(get_scalar(index))); | 3545 return Smi::FromInt(static_cast<int>(get_scalar(index))); |
3562 } | 3546 } |
3563 | 3547 |
3564 | 3548 |
3565 void ExternalUnsignedShortArray::set(int index, uint16_t value) { | 3549 void ExternalUint16Array::set(int index, uint16_t value) { |
3566 ASSERT((index >= 0) && (index < this->length())); | 3550 ASSERT((index >= 0) && (index < this->length())); |
3567 uint16_t* ptr = static_cast<uint16_t*>(external_pointer()); | 3551 uint16_t* ptr = static_cast<uint16_t*>(external_pointer()); |
3568 ptr[index] = value; | 3552 ptr[index] = value; |
3569 } | 3553 } |
3570 | 3554 |
3571 | 3555 |
3572 int32_t ExternalIntArray::get_scalar(int index) { | 3556 int32_t ExternalInt32Array::get_scalar(int index) { |
3573 ASSERT((index >= 0) && (index < this->length())); | 3557 ASSERT((index >= 0) && (index < this->length())); |
3574 int32_t* ptr = static_cast<int32_t*>(external_pointer()); | 3558 int32_t* ptr = static_cast<int32_t*>(external_pointer()); |
3575 return ptr[index]; | 3559 return ptr[index]; |
3576 } | 3560 } |
3577 | 3561 |
3578 | 3562 |
3579 MaybeObject* ExternalIntArray::get(int index) { | 3563 MaybeObject* ExternalInt32Array::get(int index) { |
3580 return GetHeap()->NumberFromInt32(get_scalar(index)); | 3564 return GetHeap()->NumberFromInt32(get_scalar(index)); |
3581 } | 3565 } |
3582 | 3566 |
3583 | 3567 |
3584 void ExternalIntArray::set(int index, int32_t value) { | 3568 void ExternalInt32Array::set(int index, int32_t value) { |
3585 ASSERT((index >= 0) && (index < this->length())); | 3569 ASSERT((index >= 0) && (index < this->length())); |
3586 int32_t* ptr = static_cast<int32_t*>(external_pointer()); | 3570 int32_t* ptr = static_cast<int32_t*>(external_pointer()); |
3587 ptr[index] = value; | 3571 ptr[index] = value; |
3588 } | 3572 } |
3589 | 3573 |
3590 | 3574 |
3591 uint32_t ExternalUnsignedIntArray::get_scalar(int index) { | 3575 uint32_t ExternalUint32Array::get_scalar(int index) { |
3592 ASSERT((index >= 0) && (index < this->length())); | 3576 ASSERT((index >= 0) && (index < this->length())); |
3593 uint32_t* ptr = static_cast<uint32_t*>(external_pointer()); | 3577 uint32_t* ptr = static_cast<uint32_t*>(external_pointer()); |
3594 return ptr[index]; | 3578 return ptr[index]; |
3595 } | 3579 } |
3596 | 3580 |
3597 | 3581 |
3598 MaybeObject* ExternalUnsignedIntArray::get(int index) { | 3582 MaybeObject* ExternalUint32Array::get(int index) { |
3599 return GetHeap()->NumberFromUint32(get_scalar(index)); | 3583 return GetHeap()->NumberFromUint32(get_scalar(index)); |
3600 } | 3584 } |
3601 | 3585 |
3602 | 3586 |
3603 void ExternalUnsignedIntArray::set(int index, uint32_t value) { | 3587 void ExternalUint32Array::set(int index, uint32_t value) { |
3604 ASSERT((index >= 0) && (index < this->length())); | 3588 ASSERT((index >= 0) && (index < this->length())); |
3605 uint32_t* ptr = static_cast<uint32_t*>(external_pointer()); | 3589 uint32_t* ptr = static_cast<uint32_t*>(external_pointer()); |
3606 ptr[index] = value; | 3590 ptr[index] = value; |
3607 } | 3591 } |
3608 | 3592 |
3609 | 3593 |
3610 float ExternalFloatArray::get_scalar(int index) { | 3594 float ExternalFloat32Array::get_scalar(int index) { |
3611 ASSERT((index >= 0) && (index < this->length())); | 3595 ASSERT((index >= 0) && (index < this->length())); |
3612 float* ptr = static_cast<float*>(external_pointer()); | 3596 float* ptr = static_cast<float*>(external_pointer()); |
3613 return ptr[index]; | 3597 return ptr[index]; |
3614 } | 3598 } |
3615 | 3599 |
3616 | 3600 |
3617 MaybeObject* ExternalFloatArray::get(int index) { | 3601 MaybeObject* ExternalFloat32Array::get(int index) { |
3618 return GetHeap()->NumberFromDouble(get_scalar(index)); | 3602 return GetHeap()->NumberFromDouble(get_scalar(index)); |
3619 } | 3603 } |
3620 | 3604 |
3621 | 3605 |
3622 void ExternalFloatArray::set(int index, float value) { | 3606 void ExternalFloat32Array::set(int index, float value) { |
3623 ASSERT((index >= 0) && (index < this->length())); | 3607 ASSERT((index >= 0) && (index < this->length())); |
3624 float* ptr = static_cast<float*>(external_pointer()); | 3608 float* ptr = static_cast<float*>(external_pointer()); |
3625 ptr[index] = value; | 3609 ptr[index] = value; |
3626 } | 3610 } |
3627 | 3611 |
3628 | 3612 |
3629 double ExternalDoubleArray::get_scalar(int index) { | 3613 double ExternalFloat64Array::get_scalar(int index) { |
3630 ASSERT((index >= 0) && (index < this->length())); | 3614 ASSERT((index >= 0) && (index < this->length())); |
3631 double* ptr = static_cast<double*>(external_pointer()); | 3615 double* ptr = static_cast<double*>(external_pointer()); |
3632 return ptr[index]; | 3616 return ptr[index]; |
3633 } | 3617 } |
3634 | 3618 |
3635 | 3619 |
3636 MaybeObject* ExternalDoubleArray::get(int index) { | 3620 MaybeObject* ExternalFloat64Array::get(int index) { |
3637 return GetHeap()->NumberFromDouble(get_scalar(index)); | 3621 return GetHeap()->NumberFromDouble(get_scalar(index)); |
3638 } | 3622 } |
3639 | 3623 |
3640 | 3624 |
3641 void ExternalDoubleArray::set(int index, double value) { | 3625 void ExternalFloat64Array::set(int index, double value) { |
3642 ASSERT((index >= 0) && (index < this->length())); | 3626 ASSERT((index >= 0) && (index < this->length())); |
3643 double* ptr = static_cast<double*>(external_pointer()); | 3627 double* ptr = static_cast<double*>(external_pointer()); |
3644 ptr[index] = value; | 3628 ptr[index] = value; |
3645 } | 3629 } |
3646 | 3630 |
3647 | 3631 |
3648 int FixedTypedArrayBase::size() { | 3632 int FixedTypedArrayBase::size() { |
3649 InstanceType instance_type = map()->instance_type(); | 3633 InstanceType instance_type = map()->instance_type(); |
3650 int element_size; | 3634 int element_size; |
3651 switch (instance_type) { | 3635 switch (instance_type) { |
(...skipping 2331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5983 } | 5967 } |
5984 | 5968 |
5985 | 5969 |
5986 bool JSObject::HasExternalArrayElements() { | 5970 bool JSObject::HasExternalArrayElements() { |
5987 HeapObject* array = elements(); | 5971 HeapObject* array = elements(); |
5988 ASSERT(array != NULL); | 5972 ASSERT(array != NULL); |
5989 return array->IsExternalArray(); | 5973 return array->IsExternalArray(); |
5990 } | 5974 } |
5991 | 5975 |
5992 | 5976 |
5993 #define EXTERNAL_ELEMENTS_CHECK(name, type) \ | 5977 #define EXTERNAL_ELEMENTS_CHECK(Type, type, TYPE, ctype, size) \ |
5994 bool JSObject::HasExternal##name##Elements() { \ | 5978 bool JSObject::HasExternal##Type##Elements() { \ |
5995 HeapObject* array = elements(); \ | 5979 HeapObject* array = elements(); \ |
5996 ASSERT(array != NULL); \ | 5980 ASSERT(array != NULL); \ |
5997 if (!array->IsHeapObject()) \ | 5981 if (!array->IsHeapObject()) \ |
5998 return false; \ | 5982 return false; \ |
5999 return array->map()->instance_type() == type; \ | 5983 return array->map()->instance_type() == EXTERNAL_##TYPE##_ARRAY_TYPE; \ |
6000 } | 5984 } |
6001 | 5985 |
| 5986 TYPED_ARRAYS(EXTERNAL_ELEMENTS_CHECK) |
6002 | 5987 |
6003 EXTERNAL_ELEMENTS_CHECK(Byte, EXTERNAL_BYTE_ARRAY_TYPE) | 5988 #undef EXTERNAL_ELEMENTS_CHECK |
6004 EXTERNAL_ELEMENTS_CHECK(UnsignedByte, EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE) | |
6005 EXTERNAL_ELEMENTS_CHECK(Short, EXTERNAL_SHORT_ARRAY_TYPE) | |
6006 EXTERNAL_ELEMENTS_CHECK(UnsignedShort, | |
6007 EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE) | |
6008 EXTERNAL_ELEMENTS_CHECK(Int, EXTERNAL_INT_ARRAY_TYPE) | |
6009 EXTERNAL_ELEMENTS_CHECK(UnsignedInt, | |
6010 EXTERNAL_UNSIGNED_INT_ARRAY_TYPE) | |
6011 EXTERNAL_ELEMENTS_CHECK(Float, | |
6012 EXTERNAL_FLOAT_ARRAY_TYPE) | |
6013 EXTERNAL_ELEMENTS_CHECK(Double, | |
6014 EXTERNAL_DOUBLE_ARRAY_TYPE) | |
6015 EXTERNAL_ELEMENTS_CHECK(Pixel, EXTERNAL_PIXEL_ARRAY_TYPE) | |
6016 | 5989 |
6017 | 5990 |
6018 bool JSObject::HasFixedTypedArrayElements() { | 5991 bool JSObject::HasFixedTypedArrayElements() { |
6019 HeapObject* array = elements(); | 5992 HeapObject* array = elements(); |
6020 ASSERT(array != NULL); | 5993 ASSERT(array != NULL); |
6021 return array->IsFixedTypedArrayBase(); | 5994 return array->IsFixedTypedArrayBase(); |
6022 } | 5995 } |
6023 | 5996 |
6024 | 5997 |
6025 bool JSObject::HasNamedInterceptor() { | 5998 bool JSObject::HasNamedInterceptor() { |
(...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6805 #undef READ_UINT32_FIELD | 6778 #undef READ_UINT32_FIELD |
6806 #undef WRITE_UINT32_FIELD | 6779 #undef WRITE_UINT32_FIELD |
6807 #undef READ_SHORT_FIELD | 6780 #undef READ_SHORT_FIELD |
6808 #undef WRITE_SHORT_FIELD | 6781 #undef WRITE_SHORT_FIELD |
6809 #undef READ_BYTE_FIELD | 6782 #undef READ_BYTE_FIELD |
6810 #undef WRITE_BYTE_FIELD | 6783 #undef WRITE_BYTE_FIELD |
6811 | 6784 |
6812 } } // namespace v8::internal | 6785 } } // namespace v8::internal |
6813 | 6786 |
6814 #endif // V8_OBJECTS_INL_H_ | 6787 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |