OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 (function(global, utils) { | 5 (function(global, utils) { |
6 | 6 |
7 "use strict"; | 7 "use strict"; |
8 | 8 |
9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
10 | 10 |
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
758 "toString", TypedArrayToString, | 758 "toString", TypedArrayToString, |
759 "toLocaleString", TypedArrayToLocaleString | 759 "toLocaleString", TypedArrayToLocaleString |
760 ]); | 760 ]); |
761 endmacro | 761 endmacro |
762 | 762 |
763 TYPED_ARRAYS(SETUP_TYPED_ARRAY) | 763 TYPED_ARRAYS(SETUP_TYPED_ARRAY) |
764 | 764 |
765 // --------------------------- DataView ----------------------------- | 765 // --------------------------- DataView ----------------------------- |
766 | 766 |
767 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 | 767 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 |
768 if (%_IsConstructCall()) { | 768 if (IS_UNDEFINED(new.target)) { |
769 // TODO(binji): support SharedArrayBuffers? | |
770 if (!IS_ARRAYBUFFER(buffer)) throw MakeTypeError(kDataViewNotArrayBuffer); | |
771 if (!IS_UNDEFINED(byteOffset)) { | |
772 byteOffset = ToPositiveInteger(byteOffset, kInvalidDataViewOffset); | |
773 } | |
774 if (!IS_UNDEFINED(byteLength)) { | |
775 byteLength = TO_INTEGER(byteLength); | |
776 } | |
777 | |
778 var bufferByteLength = %_ArrayBufferGetByteLength(buffer); | |
779 | |
780 var offset = IS_UNDEFINED(byteOffset) ? 0 : byteOffset; | |
781 if (offset > bufferByteLength) throw MakeRangeError(kInvalidDataViewOffset); | |
782 | |
783 var length = IS_UNDEFINED(byteLength) | |
784 ? bufferByteLength - offset | |
785 : byteLength; | |
786 if (length < 0 || offset + length > bufferByteLength) { | |
787 throw new MakeRangeError(kInvalidDataViewLength); | |
788 } | |
789 %_DataViewInitialize(this, buffer, offset, length); | |
790 } else { | |
791 throw MakeTypeError(kConstructorNotFunction, "DataView"); | 769 throw MakeTypeError(kConstructorNotFunction, "DataView"); |
792 } | 770 } |
| 771 |
| 772 // TODO(binji): support SharedArrayBuffers? |
| 773 if (!IS_ARRAYBUFFER(buffer)) throw MakeTypeError(kDataViewNotArrayBuffer); |
| 774 if (!IS_UNDEFINED(byteOffset)) { |
| 775 byteOffset = ToPositiveInteger(byteOffset, kInvalidDataViewOffset); |
| 776 } |
| 777 if (!IS_UNDEFINED(byteLength)) { |
| 778 byteLength = TO_INTEGER(byteLength); |
| 779 } |
| 780 |
| 781 var bufferByteLength = %_ArrayBufferGetByteLength(buffer); |
| 782 |
| 783 var offset = IS_UNDEFINED(byteOffset) ? 0 : byteOffset; |
| 784 if (offset > bufferByteLength) throw MakeRangeError(kInvalidDataViewOffset); |
| 785 |
| 786 var length = IS_UNDEFINED(byteLength) |
| 787 ? bufferByteLength - offset |
| 788 : byteLength; |
| 789 if (length < 0 || offset + length > bufferByteLength) { |
| 790 throw new MakeRangeError(kInvalidDataViewLength); |
| 791 } |
| 792 var result = %NewObject(GlobalDataView, new.target); |
| 793 %_DataViewInitialize(result, buffer, offset, length); |
| 794 return result; |
793 } | 795 } |
794 | 796 |
795 function DataViewGetBufferJS() { | 797 function DataViewGetBufferJS() { |
796 if (!IS_DATAVIEW(this)) { | 798 if (!IS_DATAVIEW(this)) { |
797 throw MakeTypeError(kIncompatibleMethodReceiver, 'DataView.buffer', this); | 799 throw MakeTypeError(kIncompatibleMethodReceiver, 'DataView.buffer', this); |
798 } | 800 } |
799 return %DataViewGetBuffer(this); | 801 return %DataViewGetBuffer(this); |
800 } | 802 } |
801 | 803 |
802 function DataViewGetByteOffset() { | 804 function DataViewGetByteOffset() { |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
887 "setUint32", DataViewSetUint32JS, | 889 "setUint32", DataViewSetUint32JS, |
888 | 890 |
889 "getFloat32", DataViewGetFloat32JS, | 891 "getFloat32", DataViewGetFloat32JS, |
890 "setFloat32", DataViewSetFloat32JS, | 892 "setFloat32", DataViewSetFloat32JS, |
891 | 893 |
892 "getFloat64", DataViewGetFloat64JS, | 894 "getFloat64", DataViewGetFloat64JS, |
893 "setFloat64", DataViewSetFloat64JS | 895 "setFloat64", DataViewSetFloat64JS |
894 ]); | 896 ]); |
895 | 897 |
896 }) | 898 }) |
OLD | NEW |