Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(262)

Side by Side Diff: src/js/typedarray.js

Issue 1712163002: [builtins] Migrate the DataView constructor to C++. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/crankshaft/hydrogen.cc ('k') | src/runtime/runtime.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 })
OLDNEW
« no previous file with comments | « src/crankshaft/hydrogen.cc ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698