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 GlobalArray = global.Array; | 14 var GlobalArray = global.Array; |
15 var GlobalArrayBuffer = global.ArrayBuffer; | 15 var GlobalArrayBuffer = global.ArrayBuffer; |
16 var GlobalDataView = global.DataView; | 16 var GlobalDataView = global.DataView; |
17 var GlobalObject = global.Object; | 17 var GlobalObject = global.Object; |
18 | 18 |
19 var MathMax; | |
20 var MathMin; | |
21 | |
22 utils.Import(function(from) { | |
23 MathMax = from.MathMax; | |
24 MathMin = from.MathMin; | |
25 }); | |
26 | |
27 // ------------------------------------------------------------------- | |
28 | |
29 | |
30 macro TYPED_ARRAYS(FUNCTION) | 19 macro TYPED_ARRAYS(FUNCTION) |
31 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize. | 20 // arrayIds below should be synchronized with Runtime_TypedArrayInitialize. |
32 FUNCTION(1, Uint8Array, 1) | 21 FUNCTION(1, Uint8Array, 1) |
33 FUNCTION(2, Int8Array, 1) | 22 FUNCTION(2, Int8Array, 1) |
34 FUNCTION(3, Uint16Array, 2) | 23 FUNCTION(3, Uint16Array, 2) |
35 FUNCTION(4, Int16Array, 2) | 24 FUNCTION(4, Int16Array, 2) |
36 FUNCTION(5, Uint32Array, 4) | 25 FUNCTION(5, Uint32Array, 4) |
37 FUNCTION(6, Int32Array, 4) | 26 FUNCTION(6, Int32Array, 4) |
38 FUNCTION(7, Float32Array, 4) | 27 FUNCTION(7, Float32Array, 4) |
39 FUNCTION(8, Float64Array, 8) | 28 FUNCTION(8, Float64Array, 8) |
40 FUNCTION(9, Uint8ClampedArray, 1) | 29 FUNCTION(9, Uint8ClampedArray, 1) |
41 endmacro | 30 endmacro |
42 | 31 |
43 macro DECLARE_GLOBALS(INDEX, NAME, SIZE) | 32 macro DECLARE_GLOBALS(INDEX, NAME, SIZE) |
44 var GlobalNAME = global.NAME; | 33 var GlobalNAME = global.NAME; |
45 endmacro | 34 endmacro |
46 | 35 |
47 TYPED_ARRAYS(DECLARE_GLOBALS) | 36 TYPED_ARRAYS(DECLARE_GLOBALS) |
48 | 37 |
| 38 var MathMax; |
| 39 var MathMin; |
| 40 |
| 41 utils.Import(function(from) { |
| 42 MathMax = from.MathMax; |
| 43 MathMin = from.MathMin; |
| 44 }); |
| 45 |
49 // --------------- Typed Arrays --------------------- | 46 // --------------- Typed Arrays --------------------- |
50 | 47 |
51 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) | 48 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) |
52 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) { | 49 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) { |
53 if (!IS_UNDEFINED(byteOffset)) { | 50 if (!IS_UNDEFINED(byteOffset)) { |
54 byteOffset = | 51 byteOffset = |
55 $toPositiveInteger(byteOffset, kInvalidTypedArrayLength); | 52 $toPositiveInteger(byteOffset, kInvalidTypedArrayLength); |
56 } | 53 } |
57 if (!IS_UNDEFINED(length)) { | 54 if (!IS_UNDEFINED(length)) { |
58 length = $toPositiveInteger(length, kInvalidTypedArrayLength); | 55 length = $toPositiveInteger(length, kInvalidTypedArrayLength); |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 %SetCode(GlobalNAME, NAMEConstructor); | 316 %SetCode(GlobalNAME, NAMEConstructor); |
320 %FunctionSetPrototype(GlobalNAME, new GlobalObject()); | 317 %FunctionSetPrototype(GlobalNAME, new GlobalObject()); |
321 | 318 |
322 %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE, | 319 %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE, |
323 READ_ONLY | DONT_ENUM | DONT_DELETE); | 320 READ_ONLY | DONT_ENUM | DONT_DELETE); |
324 %AddNamedProperty(GlobalNAME.prototype, | 321 %AddNamedProperty(GlobalNAME.prototype, |
325 "constructor", global.NAME, DONT_ENUM); | 322 "constructor", global.NAME, DONT_ENUM); |
326 %AddNamedProperty(GlobalNAME.prototype, | 323 %AddNamedProperty(GlobalNAME.prototype, |
327 "BYTES_PER_ELEMENT", ELEMENT_SIZE, | 324 "BYTES_PER_ELEMENT", ELEMENT_SIZE, |
328 READ_ONLY | DONT_ENUM | DONT_DELETE); | 325 READ_ONLY | DONT_ENUM | DONT_DELETE); |
329 $installGetter(GlobalNAME.prototype, "buffer", NAME_GetBuffer); | 326 utils.InstallGetter(GlobalNAME.prototype, "buffer", NAME_GetBuffer); |
330 $installGetter(GlobalNAME.prototype, "byteOffset", NAME_GetByteOffset, | 327 utils.InstallGetter(GlobalNAME.prototype, "byteOffset", NAME_GetByteOffset, |
331 DONT_ENUM | DONT_DELETE); | 328 DONT_ENUM | DONT_DELETE); |
332 $installGetter(GlobalNAME.prototype, "byteLength", NAME_GetByteLength, | 329 utils.InstallGetter(GlobalNAME.prototype, "byteLength", NAME_GetByteLength, |
333 DONT_ENUM | DONT_DELETE); | 330 DONT_ENUM | DONT_DELETE); |
334 $installGetter(GlobalNAME.prototype, "length", NAME_GetLength, | 331 utils.InstallGetter(GlobalNAME.prototype, "length", NAME_GetLength, |
335 DONT_ENUM | DONT_DELETE); | 332 DONT_ENUM | DONT_DELETE); |
336 $installGetter(GlobalNAME.prototype, symbolToStringTag, | 333 utils.InstallGetter(GlobalNAME.prototype, symbolToStringTag, |
337 TypedArrayGetToStringTag); | 334 TypedArrayGetToStringTag); |
338 $installFunctions(GlobalNAME.prototype, DONT_ENUM, [ | 335 utils.InstallFunctions(GlobalNAME.prototype, DONT_ENUM, [ |
339 "subarray", NAMESubArray, | 336 "subarray", NAMESubArray, |
340 "set", TypedArraySet | 337 "set", TypedArraySet |
341 ]); | 338 ]); |
342 endmacro | 339 endmacro |
343 | 340 |
344 TYPED_ARRAYS(SETUP_TYPED_ARRAY) | 341 TYPED_ARRAYS(SETUP_TYPED_ARRAY) |
345 | 342 |
346 // --------------------------- DataView ----------------------------- | 343 // --------------------------- DataView ----------------------------- |
347 | 344 |
348 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 | 345 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 // Setup the DataView constructor. | 431 // Setup the DataView constructor. |
435 %SetCode(GlobalDataView, DataViewConstructor); | 432 %SetCode(GlobalDataView, DataViewConstructor); |
436 %FunctionSetPrototype(GlobalDataView, new GlobalObject); | 433 %FunctionSetPrototype(GlobalDataView, new GlobalObject); |
437 | 434 |
438 // Set up constructor property on the DataView prototype. | 435 // Set up constructor property on the DataView prototype. |
439 %AddNamedProperty(GlobalDataView.prototype, "constructor", GlobalDataView, | 436 %AddNamedProperty(GlobalDataView.prototype, "constructor", GlobalDataView, |
440 DONT_ENUM); | 437 DONT_ENUM); |
441 %AddNamedProperty(GlobalDataView.prototype, symbolToStringTag, "DataView", | 438 %AddNamedProperty(GlobalDataView.prototype, symbolToStringTag, "DataView", |
442 READ_ONLY|DONT_ENUM); | 439 READ_ONLY|DONT_ENUM); |
443 | 440 |
444 $installGetter(GlobalDataView.prototype, "buffer", DataViewGetBufferJS); | 441 utils.InstallGetter(GlobalDataView.prototype, "buffer", DataViewGetBufferJS); |
445 $installGetter(GlobalDataView.prototype, "byteOffset", DataViewGetByteOffset); | 442 utils.InstallGetter(GlobalDataView.prototype, "byteOffset", |
446 $installGetter(GlobalDataView.prototype, "byteLength", DataViewGetByteLength); | 443 DataViewGetByteOffset); |
| 444 utils.InstallGetter(GlobalDataView.prototype, "byteLength", |
| 445 DataViewGetByteLength); |
447 | 446 |
448 $installFunctions(GlobalDataView.prototype, DONT_ENUM, [ | 447 utils.InstallFunctions(GlobalDataView.prototype, DONT_ENUM, [ |
449 "getInt8", DataViewGetInt8JS, | 448 "getInt8", DataViewGetInt8JS, |
450 "setInt8", DataViewSetInt8JS, | 449 "setInt8", DataViewSetInt8JS, |
451 | 450 |
452 "getUint8", DataViewGetUint8JS, | 451 "getUint8", DataViewGetUint8JS, |
453 "setUint8", DataViewSetUint8JS, | 452 "setUint8", DataViewSetUint8JS, |
454 | 453 |
455 "getInt16", DataViewGetInt16JS, | 454 "getInt16", DataViewGetInt16JS, |
456 "setInt16", DataViewSetInt16JS, | 455 "setInt16", DataViewSetInt16JS, |
457 | 456 |
458 "getUint16", DataViewGetUint16JS, | 457 "getUint16", DataViewGetUint16JS, |
459 "setUint16", DataViewSetUint16JS, | 458 "setUint16", DataViewSetUint16JS, |
460 | 459 |
461 "getInt32", DataViewGetInt32JS, | 460 "getInt32", DataViewGetInt32JS, |
462 "setInt32", DataViewSetInt32JS, | 461 "setInt32", DataViewSetInt32JS, |
463 | 462 |
464 "getUint32", DataViewGetUint32JS, | 463 "getUint32", DataViewGetUint32JS, |
465 "setUint32", DataViewSetUint32JS, | 464 "setUint32", DataViewSetUint32JS, |
466 | 465 |
467 "getFloat32", DataViewGetFloat32JS, | 466 "getFloat32", DataViewGetFloat32JS, |
468 "setFloat32", DataViewSetFloat32JS, | 467 "setFloat32", DataViewSetFloat32JS, |
469 | 468 |
470 "getFloat64", DataViewGetFloat64JS, | 469 "getFloat64", DataViewGetFloat64JS, |
471 "setFloat64", DataViewSetFloat64JS | 470 "setFloat64", DataViewSetFloat64JS |
472 ]); | 471 ]); |
473 | 472 |
474 }) | 473 }) |
OLD | NEW |