| 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 829 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 840                     READ_ONLY | DONT_ENUM | DONT_DELETE); | 840                     READ_ONLY | DONT_ENUM | DONT_DELETE); | 
| 841   // TODO(littledan): Remove this performance workaround BUG(chromium:579905) | 841   // TODO(littledan): Remove this performance workaround BUG(chromium:579905) | 
| 842   utils.InstallGetter(GlobalNAME.prototype, "length", NAME_GetLength, | 842   utils.InstallGetter(GlobalNAME.prototype, "length", NAME_GetLength, | 
| 843                       DONT_ENUM | DONT_DELETE); | 843                       DONT_ENUM | DONT_DELETE); | 
| 844 endmacro | 844 endmacro | 
| 845 | 845 | 
| 846 TYPED_ARRAYS(SETUP_TYPED_ARRAY) | 846 TYPED_ARRAYS(SETUP_TYPED_ARRAY) | 
| 847 | 847 | 
| 848 // --------------------------- DataView ----------------------------- | 848 // --------------------------- DataView ----------------------------- | 
| 849 | 849 | 
| 850 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 |  | 
| 851   if (IS_UNDEFINED(new.target)) { |  | 
| 852     throw MakeTypeError(kConstructorNotFunction, "DataView"); |  | 
| 853   } |  | 
| 854 |  | 
| 855   // TODO(binji): support SharedArrayBuffers? |  | 
| 856   if (!IS_ARRAYBUFFER(buffer)) throw MakeTypeError(kDataViewNotArrayBuffer); |  | 
| 857   if (!IS_UNDEFINED(byteOffset)) { |  | 
| 858     byteOffset = ToPositiveInteger(byteOffset, kInvalidDataViewOffset); |  | 
| 859   } |  | 
| 860   if (!IS_UNDEFINED(byteLength)) { |  | 
| 861     byteLength = TO_INTEGER(byteLength); |  | 
| 862   } |  | 
| 863 |  | 
| 864   var bufferByteLength = %_ArrayBufferGetByteLength(buffer); |  | 
| 865 |  | 
| 866   var offset = IS_UNDEFINED(byteOffset) ?  0 : byteOffset; |  | 
| 867   if (offset > bufferByteLength) throw MakeRangeError(kInvalidDataViewOffset); |  | 
| 868 |  | 
| 869   var length = IS_UNDEFINED(byteLength) |  | 
| 870       ? bufferByteLength - offset |  | 
| 871       : byteLength; |  | 
| 872   if (length < 0 || offset + length > bufferByteLength) { |  | 
| 873     throw new MakeRangeError(kInvalidDataViewLength); |  | 
| 874   } |  | 
| 875   var result = %NewObject(GlobalDataView, new.target); |  | 
| 876   %_DataViewInitialize(result, buffer, offset, length); |  | 
| 877   return result; |  | 
| 878 } |  | 
| 879 |  | 
| 880 function DataViewGetBufferJS() { | 850 function DataViewGetBufferJS() { | 
| 881   if (!IS_DATAVIEW(this)) { | 851   if (!IS_DATAVIEW(this)) { | 
| 882     throw MakeTypeError(kIncompatibleMethodReceiver, 'DataView.buffer', this); | 852     throw MakeTypeError(kIncompatibleMethodReceiver, 'DataView.buffer', this); | 
| 883   } | 853   } | 
| 884   return %DataViewGetBuffer(this); | 854   return %DataViewGetBuffer(this); | 
| 885 } | 855 } | 
| 886 | 856 | 
| 887 function DataViewGetByteOffset() { | 857 function DataViewGetByteOffset() { | 
| 888   if (!IS_DATAVIEW(this)) { | 858   if (!IS_DATAVIEW(this)) { | 
| 889     throw MakeTypeError(kIncompatibleMethodReceiver, | 859     throw MakeTypeError(kIncompatibleMethodReceiver, | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 932   if (arguments.length < 2) throw MakeTypeError(kInvalidArgument); | 902   if (arguments.length < 2) throw MakeTypeError(kInvalidArgument); | 
| 933   offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset); | 903   offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset); | 
| 934   %DataViewSetTYPENAME(this, offset, TO_NUMBER(value), !!little_endian); | 904   %DataViewSetTYPENAME(this, offset, TO_NUMBER(value), !!little_endian); | 
| 935 } | 905 } | 
| 936 %FunctionSetLength(DataViewSetTYPENAMEJS, 2); | 906 %FunctionSetLength(DataViewSetTYPENAMEJS, 2); | 
| 937 endmacro | 907 endmacro | 
| 938 | 908 | 
| 939 DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER) | 909 DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER) | 
| 940 | 910 | 
| 941 // Setup the DataView constructor. | 911 // Setup the DataView constructor. | 
| 942 %SetCode(GlobalDataView, DataViewConstructor); |  | 
| 943 %FunctionSetPrototype(GlobalDataView, new GlobalObject); | 912 %FunctionSetPrototype(GlobalDataView, new GlobalObject); | 
| 944 | 913 | 
| 945 // Set up constructor property on the DataView prototype. | 914 // Set up constructor property on the DataView prototype. | 
| 946 %AddNamedProperty(GlobalDataView.prototype, "constructor", GlobalDataView, | 915 %AddNamedProperty(GlobalDataView.prototype, "constructor", GlobalDataView, | 
| 947                   DONT_ENUM); | 916                   DONT_ENUM); | 
| 948 %AddNamedProperty(GlobalDataView.prototype, toStringTagSymbol, "DataView", | 917 %AddNamedProperty(GlobalDataView.prototype, toStringTagSymbol, "DataView", | 
| 949                   READ_ONLY|DONT_ENUM); | 918                   READ_ONLY|DONT_ENUM); | 
| 950 | 919 | 
| 951 utils.InstallGetter(GlobalDataView.prototype, "buffer", DataViewGetBufferJS); | 920 utils.InstallGetter(GlobalDataView.prototype, "buffer", DataViewGetBufferJS); | 
| 952 utils.InstallGetter(GlobalDataView.prototype, "byteOffset", | 921 utils.InstallGetter(GlobalDataView.prototype, "byteOffset", | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 974   "setUint32", DataViewSetUint32JS, | 943   "setUint32", DataViewSetUint32JS, | 
| 975 | 944 | 
| 976   "getFloat32", DataViewGetFloat32JS, | 945   "getFloat32", DataViewGetFloat32JS, | 
| 977   "setFloat32", DataViewSetFloat32JS, | 946   "setFloat32", DataViewSetFloat32JS, | 
| 978 | 947 | 
| 979   "getFloat64", DataViewGetFloat64JS, | 948   "getFloat64", DataViewGetFloat64JS, | 
| 980   "setFloat64", DataViewSetFloat64JS | 949   "setFloat64", DataViewSetFloat64JS | 
| 981 ]); | 950 ]); | 
| 982 | 951 | 
| 983 }) | 952 }) | 
| OLD | NEW | 
|---|