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

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

Issue 1404943002: Use import/export for more functions (instead of js builtins object). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 2 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/js/runtime.js ('k') | src/js/v8natives.js » ('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
11 // ------------------------------------------------------------------- 11 // -------------------------------------------------------------------
12 // Imports 12 // Imports
13 13
14 var ArrayValues;
14 var GlobalArray = global.Array; 15 var GlobalArray = global.Array;
15 var GlobalArrayBuffer = global.ArrayBuffer; 16 var GlobalArrayBuffer = global.ArrayBuffer;
16 var GlobalDataView = global.DataView; 17 var GlobalDataView = global.DataView;
17 var GlobalObject = global.Object; 18 var GlobalObject = global.Object;
19 var InternalArray = utils.InternalArray;
18 var iteratorSymbol = utils.ImportNow("iterator_symbol"); 20 var iteratorSymbol = utils.ImportNow("iterator_symbol");
21 var ToPositiveInteger;
19 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); 22 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol");
20 23
21 macro TYPED_ARRAYS(FUNCTION) 24 macro TYPED_ARRAYS(FUNCTION)
22 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize. 25 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize.
23 FUNCTION(1, Uint8Array, 1) 26 FUNCTION(1, Uint8Array, 1)
24 FUNCTION(2, Int8Array, 1) 27 FUNCTION(2, Int8Array, 1)
25 FUNCTION(3, Uint16Array, 2) 28 FUNCTION(3, Uint16Array, 2)
26 FUNCTION(4, Int16Array, 2) 29 FUNCTION(4, Int16Array, 2)
27 FUNCTION(5, Uint32Array, 4) 30 FUNCTION(5, Uint32Array, 4)
28 FUNCTION(6, Int32Array, 4) 31 FUNCTION(6, Int32Array, 4)
29 FUNCTION(7, Float32Array, 4) 32 FUNCTION(7, Float32Array, 4)
30 FUNCTION(8, Float64Array, 8) 33 FUNCTION(8, Float64Array, 8)
31 FUNCTION(9, Uint8ClampedArray, 1) 34 FUNCTION(9, Uint8ClampedArray, 1)
32 endmacro 35 endmacro
33 36
34 macro DECLARE_GLOBALS(INDEX, NAME, SIZE) 37 macro DECLARE_GLOBALS(INDEX, NAME, SIZE)
35 var GlobalNAME = global.NAME; 38 var GlobalNAME = global.NAME;
36 endmacro 39 endmacro
37 40
38 TYPED_ARRAYS(DECLARE_GLOBALS) 41 TYPED_ARRAYS(DECLARE_GLOBALS)
39 42
40 var InternalArray = utils.InternalArray; 43 utils.Import(function(from) {
44 ArrayValues = from.ArrayValues;
45 ToPositiveInteger = from.ToPositiveInteger;
46 });
41 47
42 // --------------- Typed Arrays --------------------- 48 // --------------- Typed Arrays ---------------------
43 49
44 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) 50 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE)
45 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) { 51 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) {
46 if (!IS_UNDEFINED(byteOffset)) { 52 if (!IS_UNDEFINED(byteOffset)) {
47 byteOffset = 53 byteOffset = ToPositiveInteger(byteOffset, kInvalidTypedArrayLength);
48 $toPositiveInteger(byteOffset, kInvalidTypedArrayLength);
49 } 54 }
50 if (!IS_UNDEFINED(length)) { 55 if (!IS_UNDEFINED(length)) {
51 length = $toPositiveInteger(length, kInvalidTypedArrayLength); 56 length = ToPositiveInteger(length, kInvalidTypedArrayLength);
52 } 57 }
53 58
54 var bufferByteLength = %_ArrayBufferGetByteLength(buffer); 59 var bufferByteLength = %_ArrayBufferGetByteLength(buffer);
55 var offset; 60 var offset;
56 if (IS_UNDEFINED(byteOffset)) { 61 if (IS_UNDEFINED(byteOffset)) {
57 offset = 0; 62 offset = 0;
58 } else { 63 } else {
59 offset = byteOffset; 64 offset = byteOffset;
60 65
61 if (offset % ELEMENT_SIZE !== 0) { 66 if (offset % ELEMENT_SIZE !== 0) {
(...skipping 20 matching lines...) Expand all
82 } 87 }
83 if ((offset + newByteLength > bufferByteLength) 88 if ((offset + newByteLength > bufferByteLength)
84 || (newLength > %_MaxSmi())) { 89 || (newLength > %_MaxSmi())) {
85 throw MakeRangeError(kInvalidTypedArrayLength); 90 throw MakeRangeError(kInvalidTypedArrayLength);
86 } 91 }
87 %_TypedArrayInitialize(obj, ARRAY_ID, buffer, offset, newByteLength, true); 92 %_TypedArrayInitialize(obj, ARRAY_ID, buffer, offset, newByteLength, true);
88 } 93 }
89 94
90 function NAMEConstructByLength(obj, length) { 95 function NAMEConstructByLength(obj, length) {
91 var l = IS_UNDEFINED(length) ? 96 var l = IS_UNDEFINED(length) ?
92 0 : $toPositiveInteger(length, kInvalidTypedArrayLength); 97 0 : ToPositiveInteger(length, kInvalidTypedArrayLength);
93 if (l > %_MaxSmi()) { 98 if (l > %_MaxSmi()) {
94 throw MakeRangeError(kInvalidTypedArrayLength); 99 throw MakeRangeError(kInvalidTypedArrayLength);
95 } 100 }
96 var byteLength = l * ELEMENT_SIZE; 101 var byteLength = l * ELEMENT_SIZE;
97 if (byteLength > %_TypedArrayMaxSizeInHeap()) { 102 if (byteLength > %_TypedArrayMaxSizeInHeap()) {
98 var buffer = new GlobalArrayBuffer(byteLength); 103 var buffer = new GlobalArrayBuffer(byteLength);
99 %_TypedArrayInitialize(obj, ARRAY_ID, buffer, 0, byteLength, true); 104 %_TypedArrayInitialize(obj, ARRAY_ID, buffer, 0, byteLength, true);
100 } else { 105 } else {
101 %_TypedArrayInitialize(obj, ARRAY_ID, null, 0, byteLength, true); 106 %_TypedArrayInitialize(obj, ARRAY_ID, null, 0, byteLength, true);
102 } 107 }
103 } 108 }
104 109
105 function NAMEConstructByArrayLike(obj, arrayLike) { 110 function NAMEConstructByArrayLike(obj, arrayLike) {
106 var length = arrayLike.length; 111 var length = arrayLike.length;
107 var l = $toPositiveInteger(length, kInvalidTypedArrayLength); 112 var l = ToPositiveInteger(length, kInvalidTypedArrayLength);
108 113
109 if (l > %_MaxSmi()) { 114 if (l > %_MaxSmi()) {
110 throw MakeRangeError(kInvalidTypedArrayLength); 115 throw MakeRangeError(kInvalidTypedArrayLength);
111 } 116 }
112 var initialized = false; 117 var initialized = false;
113 var byteLength = l * ELEMENT_SIZE; 118 var byteLength = l * ELEMENT_SIZE;
114 if (byteLength <= %_TypedArrayMaxSizeInHeap()) { 119 if (byteLength <= %_TypedArrayMaxSizeInHeap()) {
115 %_TypedArrayInitialize(obj, ARRAY_ID, null, 0, byteLength, false); 120 %_TypedArrayInitialize(obj, ARRAY_ID, null, 0, byteLength, false);
116 } else { 121 } else {
117 initialized = 122 initialized =
(...skipping 30 matching lines...) Expand all
148 153
149 function NAMEConstructor(arg1, arg2, arg3) { 154 function NAMEConstructor(arg1, arg2, arg3) {
150 if (%_IsConstructCall()) { 155 if (%_IsConstructCall()) {
151 if (IS_ARRAYBUFFER(arg1) || IS_SHAREDARRAYBUFFER(arg1)) { 156 if (IS_ARRAYBUFFER(arg1) || IS_SHAREDARRAYBUFFER(arg1)) {
152 NAMEConstructByArrayBuffer(this, arg1, arg2, arg3); 157 NAMEConstructByArrayBuffer(this, arg1, arg2, arg3);
153 } else if (IS_NUMBER(arg1) || IS_STRING(arg1) || 158 } else if (IS_NUMBER(arg1) || IS_STRING(arg1) ||
154 IS_BOOLEAN(arg1) || IS_UNDEFINED(arg1)) { 159 IS_BOOLEAN(arg1) || IS_UNDEFINED(arg1)) {
155 NAMEConstructByLength(this, arg1); 160 NAMEConstructByLength(this, arg1);
156 } else { 161 } else {
157 var iteratorFn = arg1[iteratorSymbol]; 162 var iteratorFn = arg1[iteratorSymbol];
158 if (IS_UNDEFINED(iteratorFn) || iteratorFn === $arrayValues) { 163 if (IS_UNDEFINED(iteratorFn) || iteratorFn === ArrayValues) {
159 NAMEConstructByArrayLike(this, arg1); 164 NAMEConstructByArrayLike(this, arg1);
160 } else { 165 } else {
161 NAMEConstructByIterable(this, arg1, iteratorFn); 166 NAMEConstructByIterable(this, arg1, iteratorFn);
162 } 167 }
163 } 168 }
164 } else { 169 } else {
165 throw MakeTypeError(kConstructorNotFunction, "NAME") 170 throw MakeTypeError(kConstructorNotFunction, "NAME")
166 } 171 }
167 } 172 }
168 173
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 379
375 TYPED_ARRAYS(SETUP_TYPED_ARRAY) 380 TYPED_ARRAYS(SETUP_TYPED_ARRAY)
376 381
377 // --------------------------- DataView ----------------------------- 382 // --------------------------- DataView -----------------------------
378 383
379 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 384 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3
380 if (%_IsConstructCall()) { 385 if (%_IsConstructCall()) {
381 // TODO(binji): support SharedArrayBuffers? 386 // TODO(binji): support SharedArrayBuffers?
382 if (!IS_ARRAYBUFFER(buffer)) throw MakeTypeError(kDataViewNotArrayBuffer); 387 if (!IS_ARRAYBUFFER(buffer)) throw MakeTypeError(kDataViewNotArrayBuffer);
383 if (!IS_UNDEFINED(byteOffset)) { 388 if (!IS_UNDEFINED(byteOffset)) {
384 byteOffset = $toPositiveInteger(byteOffset, kInvalidDataViewOffset); 389 byteOffset = ToPositiveInteger(byteOffset, kInvalidDataViewOffset);
385 } 390 }
386 if (!IS_UNDEFINED(byteLength)) { 391 if (!IS_UNDEFINED(byteLength)) {
387 byteLength = TO_INTEGER(byteLength); 392 byteLength = TO_INTEGER(byteLength);
388 } 393 }
389 394
390 var bufferByteLength = %_ArrayBufferGetByteLength(buffer); 395 var bufferByteLength = %_ArrayBufferGetByteLength(buffer);
391 396
392 var offset = IS_UNDEFINED(byteOffset) ? 0 : byteOffset; 397 var offset = IS_UNDEFINED(byteOffset) ? 0 : byteOffset;
393 if (offset > bufferByteLength) throw MakeRangeError(kInvalidDataViewOffset); 398 if (offset > bufferByteLength) throw MakeRangeError(kInvalidDataViewOffset);
394 399
395 var length = IS_UNDEFINED(byteLength) 400 var length = IS_UNDEFINED(byteLength)
396 ? bufferByteLength - offset 401 ? bufferByteLength - offset
397 : byteLength; 402 : byteLength;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 endmacro 444 endmacro
440 445
441 446
442 macro DATA_VIEW_GETTER_SETTER(TYPENAME) 447 macro DATA_VIEW_GETTER_SETTER(TYPENAME)
443 function DataViewGetTYPENAMEJS(offset, little_endian) { 448 function DataViewGetTYPENAMEJS(offset, little_endian) {
444 if (!IS_DATAVIEW(this)) { 449 if (!IS_DATAVIEW(this)) {
445 throw MakeTypeError(kIncompatibleMethodReceiver, 450 throw MakeTypeError(kIncompatibleMethodReceiver,
446 'DataView.getTYPENAME', this); 451 'DataView.getTYPENAME', this);
447 } 452 }
448 if (%_ArgumentsLength() < 1) throw MakeTypeError(kInvalidArgument); 453 if (%_ArgumentsLength() < 1) throw MakeTypeError(kInvalidArgument);
449 offset = $toPositiveInteger(offset, kInvalidDataViewAccessorOffset); 454 offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset);
450 return %DataViewGetTYPENAME(this, offset, !!little_endian); 455 return %DataViewGetTYPENAME(this, offset, !!little_endian);
451 } 456 }
452 457
453 function DataViewSetTYPENAMEJS(offset, value, little_endian) { 458 function DataViewSetTYPENAMEJS(offset, value, little_endian) {
454 if (!IS_DATAVIEW(this)) { 459 if (!IS_DATAVIEW(this)) {
455 throw MakeTypeError(kIncompatibleMethodReceiver, 460 throw MakeTypeError(kIncompatibleMethodReceiver,
456 'DataView.setTYPENAME', this); 461 'DataView.setTYPENAME', this);
457 } 462 }
458 if (%_ArgumentsLength() < 2) throw MakeTypeError(kInvalidArgument); 463 if (%_ArgumentsLength() < 2) throw MakeTypeError(kInvalidArgument);
459 offset = $toPositiveInteger(offset, kInvalidDataViewAccessorOffset); 464 offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset);
460 %DataViewSetTYPENAME(this, offset, TO_NUMBER(value), !!little_endian); 465 %DataViewSetTYPENAME(this, offset, TO_NUMBER(value), !!little_endian);
461 } 466 }
462 endmacro 467 endmacro
463 468
464 DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER) 469 DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER)
465 470
466 // Setup the DataView constructor. 471 // Setup the DataView constructor.
467 %SetCode(GlobalDataView, DataViewConstructor); 472 %SetCode(GlobalDataView, DataViewConstructor);
468 %FunctionSetPrototype(GlobalDataView, new GlobalObject); 473 %FunctionSetPrototype(GlobalDataView, new GlobalObject);
469 474
(...skipping 29 matching lines...) Expand all
499 "setUint32", DataViewSetUint32JS, 504 "setUint32", DataViewSetUint32JS,
500 505
501 "getFloat32", DataViewGetFloat32JS, 506 "getFloat32", DataViewGetFloat32JS,
502 "setFloat32", DataViewSetFloat32JS, 507 "setFloat32", DataViewSetFloat32JS,
503 508
504 "getFloat64", DataViewGetFloat64JS, 509 "getFloat64", DataViewGetFloat64JS,
505 "setFloat64", DataViewSetFloat64JS 510 "setFloat64", DataViewSetFloat64JS
506 ]); 511 ]);
507 512
508 }) 513 })
OLDNEW
« no previous file with comments | « src/js/runtime.js ('k') | src/js/v8natives.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698