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 |
11 // ------------------------------------------------------------------- | 11 // ------------------------------------------------------------------- |
12 // Imports | 12 // Imports |
13 | 13 |
14 var ArrayValues; | 14 var ArrayValues; |
15 var GlobalArray = global.Array; | 15 var GlobalArray = global.Array; |
16 var GlobalArrayBuffer = global.ArrayBuffer; | 16 var GlobalArrayBuffer = global.ArrayBuffer; |
17 var GlobalDataView = global.DataView; | 17 var GlobalDataView = global.DataView; |
18 var GlobalObject = global.Object; | 18 var GlobalObject = global.Object; |
19 var InternalArray = utils.InternalArray; | 19 var InternalArray = utils.InternalArray; |
20 var iteratorSymbol = utils.ImportNow("iterator_symbol"); | 20 var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
| 21 var MaxSimple; |
| 22 var MinSimple; |
21 var ToPositiveInteger; | 23 var ToPositiveInteger; |
22 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 24 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
23 | 25 |
24 macro TYPED_ARRAYS(FUNCTION) | 26 macro TYPED_ARRAYS(FUNCTION) |
25 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize. | 27 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize. |
26 FUNCTION(1, Uint8Array, 1) | 28 FUNCTION(1, Uint8Array, 1) |
27 FUNCTION(2, Int8Array, 1) | 29 FUNCTION(2, Int8Array, 1) |
28 FUNCTION(3, Uint16Array, 2) | 30 FUNCTION(3, Uint16Array, 2) |
29 FUNCTION(4, Int16Array, 2) | 31 FUNCTION(4, Int16Array, 2) |
30 FUNCTION(5, Uint32Array, 4) | 32 FUNCTION(5, Uint32Array, 4) |
31 FUNCTION(6, Int32Array, 4) | 33 FUNCTION(6, Int32Array, 4) |
32 FUNCTION(7, Float32Array, 4) | 34 FUNCTION(7, Float32Array, 4) |
33 FUNCTION(8, Float64Array, 8) | 35 FUNCTION(8, Float64Array, 8) |
34 FUNCTION(9, Uint8ClampedArray, 1) | 36 FUNCTION(9, Uint8ClampedArray, 1) |
35 endmacro | 37 endmacro |
36 | 38 |
37 macro DECLARE_GLOBALS(INDEX, NAME, SIZE) | 39 macro DECLARE_GLOBALS(INDEX, NAME, SIZE) |
38 var GlobalNAME = global.NAME; | 40 var GlobalNAME = global.NAME; |
39 endmacro | 41 endmacro |
40 | 42 |
41 TYPED_ARRAYS(DECLARE_GLOBALS) | 43 TYPED_ARRAYS(DECLARE_GLOBALS) |
42 | 44 |
43 utils.Import(function(from) { | 45 utils.Import(function(from) { |
44 ArrayValues = from.ArrayValues; | 46 ArrayValues = from.ArrayValues; |
| 47 MaxSimple = from.MaxSimple; |
| 48 MinSimple = from.MinSimple; |
45 ToPositiveInteger = from.ToPositiveInteger; | 49 ToPositiveInteger = from.ToPositiveInteger; |
46 }); | 50 }); |
47 | 51 |
48 // --------------- Typed Arrays --------------------- | 52 // --------------- Typed Arrays --------------------- |
49 | 53 |
50 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) | 54 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) |
51 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) { | 55 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) { |
52 if (!IS_UNDEFINED(byteOffset)) { | 56 if (!IS_UNDEFINED(byteOffset)) { |
53 byteOffset = ToPositiveInteger(byteOffset, kInvalidTypedArrayLength); | 57 byteOffset = ToPositiveInteger(byteOffset, kInvalidTypedArrayLength); |
54 } | 58 } |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 var beginInt = TO_INTEGER(begin); | 210 var beginInt = TO_INTEGER(begin); |
207 if (!IS_UNDEFINED(end)) { | 211 if (!IS_UNDEFINED(end)) { |
208 var endInt = TO_INTEGER(end); | 212 var endInt = TO_INTEGER(end); |
209 var srcLength = %_TypedArrayGetLength(this); | 213 var srcLength = %_TypedArrayGetLength(this); |
210 } else { | 214 } else { |
211 var srcLength = %_TypedArrayGetLength(this); | 215 var srcLength = %_TypedArrayGetLength(this); |
212 var endInt = srcLength; | 216 var endInt = srcLength; |
213 } | 217 } |
214 | 218 |
215 if (beginInt < 0) { | 219 if (beginInt < 0) { |
216 beginInt = MAX_SIMPLE(0, srcLength + beginInt); | 220 beginInt = MaxSimple(0, srcLength + beginInt); |
217 } else { | 221 } else { |
218 beginInt = MIN_SIMPLE(beginInt, srcLength); | 222 beginInt = MinSimple(beginInt, srcLength); |
219 } | 223 } |
220 | 224 |
221 if (endInt < 0) { | 225 if (endInt < 0) { |
222 endInt = MAX_SIMPLE(0, srcLength + endInt); | 226 endInt = MaxSimple(0, srcLength + endInt); |
223 } else { | 227 } else { |
224 endInt = MIN_SIMPLE(endInt, srcLength); | 228 endInt = MinSimple(endInt, srcLength); |
225 } | 229 } |
226 | 230 |
227 if (endInt < beginInt) { | 231 if (endInt < beginInt) { |
228 endInt = beginInt; | 232 endInt = beginInt; |
229 } | 233 } |
230 | 234 |
231 var newLength = endInt - beginInt; | 235 var newLength = endInt - beginInt; |
232 var beginByteOffset = | 236 var beginByteOffset = |
233 %_ArrayBufferViewGetByteOffset(this) + beginInt * ELEMENT_SIZE; | 237 %_ArrayBufferViewGetByteOffset(this) + beginInt * ELEMENT_SIZE; |
234 return new GlobalNAME(%TypedArrayGetBuffer(this), | 238 return new GlobalNAME(%TypedArrayGetBuffer(this), |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 "setUint32", DataViewSetUint32JS, | 508 "setUint32", DataViewSetUint32JS, |
505 | 509 |
506 "getFloat32", DataViewGetFloat32JS, | 510 "getFloat32", DataViewGetFloat32JS, |
507 "setFloat32", DataViewSetFloat32JS, | 511 "setFloat32", DataViewSetFloat32JS, |
508 | 512 |
509 "getFloat64", DataViewGetFloat64JS, | 513 "getFloat64", DataViewGetFloat64JS, |
510 "setFloat64", DataViewSetFloat64JS | 514 "setFloat64", DataViewSetFloat64JS |
511 ]); | 515 ]); |
512 | 516 |
513 }) | 517 }) |
OLD | NEW |