Chromium Code Reviews| 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 27 matching lines...) Expand all Loading... | |
| 38 var MathMax; | 38 var MathMax; |
| 39 var MathMin; | 39 var MathMin; |
| 40 | 40 |
| 41 utils.Import(function(from) { | 41 utils.Import(function(from) { |
| 42 MathMax = from.MathMax; | 42 MathMax = from.MathMax; |
| 43 MathMin = from.MathMin; | 43 MathMin = from.MathMin; |
| 44 }); | 44 }); |
| 45 | 45 |
| 46 // --------------- Typed Arrays --------------------- | 46 // --------------- Typed Arrays --------------------- |
| 47 | 47 |
| 48 function TypedArray() { } | |
| 49 | |
| 50 function TypedArray_GetBuffer() { | |
| 51 if (!%IsTypedArray(this)) { | |
| 52 throw MakeTypeError(kIncompatibleMethodReceiver, "TypedArray.buffer", this); | |
| 53 } | |
| 54 return %TypedArrayGetBuffer(this); | |
| 55 } | |
| 56 | |
| 57 function TypedArray_GetByteLength() { | |
| 58 if (!%IsTypedArray(this)) { | |
| 59 throw MakeTypeError(kIncompatibleMethodReceiver, "TypedArray.buffer", this); | |
|
adamk
2015/06/13 00:49:38
s/buffer/byteLength/
Dan Ehrenberg
2015/06/13 05:54:09
Done.
| |
| 60 } | |
| 61 return %_ArrayBufferViewGetByteLength(this); | |
| 62 } | |
| 63 | |
| 64 function TypedArray_GetByteOffset() { | |
| 65 if (!%IsTypedArray(this)) { | |
| 66 throw MakeTypeError(kIncompatibleMethodReceiver, "TypedArray.buffer", this); | |
|
adamk
2015/06/13 00:49:38
byteOffset
Dan Ehrenberg
2015/06/13 05:54:09
Done.
| |
| 67 } | |
| 68 return %_ArrayBufferViewGetByteOffset(this); | |
| 69 } | |
| 70 | |
| 71 function TypedArray_GetLength() { | |
| 72 if (!%IsTypedArray(this)) { | |
|
adamk
2015/06/13 00:49:38
I don't know if we can afford a runtime call for t
Dan Ehrenberg
2015/06/13 05:54:09
This is sort of unrelated to v8:4182, except in th
| |
| 73 throw MakeTypeError(kIncompatibleMethodReceiver, "TypedArray.buffer", this); | |
|
adamk
2015/06/13 00:49:38
length
Dan Ehrenberg
2015/06/13 05:54:09
Done.
| |
| 74 } | |
| 75 return %_TypedArrayGetLength(this); | |
| 76 } | |
| 77 | |
| 48 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) | 78 macro TYPED_ARRAY_CONSTRUCTOR(ARRAY_ID, NAME, ELEMENT_SIZE) |
| 49 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) { | 79 function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) { |
| 50 if (!IS_UNDEFINED(byteOffset)) { | 80 if (!IS_UNDEFINED(byteOffset)) { |
| 51 byteOffset = | 81 byteOffset = |
| 52 $toPositiveInteger(byteOffset, kInvalidTypedArrayLength); | 82 $toPositiveInteger(byteOffset, kInvalidTypedArrayLength); |
| 53 } | 83 } |
| 54 if (!IS_UNDEFINED(length)) { | 84 if (!IS_UNDEFINED(length)) { |
| 55 length = $toPositiveInteger(length, kInvalidTypedArrayLength); | 85 length = $toPositiveInteger(length, kInvalidTypedArrayLength); |
| 56 } | 86 } |
| 57 | 87 |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 138 IS_BOOLEAN(arg1) || IS_UNDEFINED(arg1)) { | 168 IS_BOOLEAN(arg1) || IS_UNDEFINED(arg1)) { |
| 139 NAMEConstructByLength(this, arg1); | 169 NAMEConstructByLength(this, arg1); |
| 140 } else { | 170 } else { |
| 141 NAMEConstructByArrayLike(this, arg1); | 171 NAMEConstructByArrayLike(this, arg1); |
| 142 } | 172 } |
| 143 } else { | 173 } else { |
| 144 throw MakeTypeError(kConstructorNotFunction, "NAME") | 174 throw MakeTypeError(kConstructorNotFunction, "NAME") |
| 145 } | 175 } |
| 146 } | 176 } |
| 147 | 177 |
| 148 function NAME_GetBuffer() { | |
| 149 if (!(%_ClassOf(this) === 'NAME')) { | |
| 150 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.buffer", this); | |
| 151 } | |
| 152 return %TypedArrayGetBuffer(this); | |
| 153 } | |
| 154 | |
| 155 function NAME_GetByteLength() { | |
| 156 if (!(%_ClassOf(this) === 'NAME')) { | |
| 157 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.byteLength", this); | |
| 158 } | |
| 159 return %_ArrayBufferViewGetByteLength(this); | |
| 160 } | |
| 161 | |
| 162 function NAME_GetByteOffset() { | |
| 163 if (!(%_ClassOf(this) === 'NAME')) { | |
| 164 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.byteOffset", this); | |
| 165 } | |
| 166 return %_ArrayBufferViewGetByteOffset(this); | |
| 167 } | |
| 168 | |
| 169 function NAME_GetLength() { | |
| 170 if (!(%_ClassOf(this) === 'NAME')) { | |
| 171 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.length", this); | |
| 172 } | |
| 173 return %_TypedArrayGetLength(this); | |
| 174 } | |
| 175 | |
| 176 function NAMESubArray(begin, end) { | 178 function NAMESubArray(begin, end) { |
| 177 if (!(%_ClassOf(this) === 'NAME')) { | 179 if (!(%_ClassOf(this) === 'NAME')) { |
| 178 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.subarray", this); | 180 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.subarray", this); |
| 179 } | 181 } |
| 180 var beginInt = TO_INTEGER(begin); | 182 var beginInt = TO_INTEGER(begin); |
| 181 if (!IS_UNDEFINED(end)) { | 183 if (!IS_UNDEFINED(end)) { |
| 182 end = TO_INTEGER(end); | 184 end = TO_INTEGER(end); |
| 183 } | 185 } |
| 184 | 186 |
| 185 var srcLength = %_TypedArrayGetLength(this); | 187 var srcLength = %_TypedArrayGetLength(this); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 313 | 315 |
| 314 function TypedArrayGetToStringTag() { | 316 function TypedArrayGetToStringTag() { |
| 315 if (!%IsTypedArray(this)) return; | 317 if (!%IsTypedArray(this)) return; |
| 316 var name = %_ClassOf(this); | 318 var name = %_ClassOf(this); |
| 317 if (IS_UNDEFINED(name)) return; | 319 if (IS_UNDEFINED(name)) return; |
| 318 return name; | 320 return name; |
| 319 } | 321 } |
| 320 | 322 |
| 321 // ------------------------------------------------------------------- | 323 // ------------------------------------------------------------------- |
| 322 | 324 |
| 325 utils.InstallGetter(TypedArray.prototype, "buffer", TypedArray_GetBuffer); | |
| 326 utils.InstallGetter(TypedArray.prototype, "byteOffset", TypedArray_GetByteOffset , | |
|
adamk
2015/06/13 00:49:38
Nit: wrap at 80 chars (I don't know why we don't h
Dan Ehrenberg
2015/06/13 05:54:09
Done.
| |
| 327 DONT_ENUM | DONT_DELETE); | |
| 328 utils.InstallGetter(TypedArray.prototype, "byteLength", TypedArray_GetByteLength , | |
| 329 DONT_ENUM | DONT_DELETE); | |
| 330 utils.InstallGetter(TypedArray.prototype, "length", TypedArray_GetLength, | |
| 331 DONT_ENUM | DONT_DELETE); | |
| 332 utils.InstallGetter(TypedArray.prototype, symbolToStringTag, | |
| 333 TypedArrayGetToStringTag); | |
| 334 utils.InstallFunctions(TypedArray.prototype, DONT_ENUM, [ | |
| 335 "set", TypedArraySet | |
| 336 ]); | |
| 337 | |
| 323 macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE) | 338 macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE) |
| 324 %SetCode(GlobalNAME, NAMEConstructor); | 339 %SetCode(GlobalNAME, NAMEConstructor); |
| 325 %FunctionSetPrototype(GlobalNAME, new GlobalObject()); | 340 %InternalSetPrototype(GlobalNAME, TypedArray); |
| 341 %FunctionSetPrototype(GlobalNAME, new TypedArray()); | |
| 342 %AddNamedProperty(GlobalNAME.prototype, | |
| 343 "BYTES_PER_ELEMENT", ELEMENT_SIZE, | |
| 344 READ_ONLY | DONT_ENUM | DONT_DELETE); | |
| 326 | 345 |
| 327 %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE, | 346 %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE, |
| 328 READ_ONLY | DONT_ENUM | DONT_DELETE); | 347 READ_ONLY | DONT_ENUM | DONT_DELETE); |
| 329 %AddNamedProperty(GlobalNAME.prototype, | 348 %AddNamedProperty(GlobalNAME.prototype, |
| 330 "constructor", global.NAME, DONT_ENUM); | 349 "constructor", global.NAME, DONT_ENUM); |
| 331 %AddNamedProperty(GlobalNAME.prototype, | |
| 332 "BYTES_PER_ELEMENT", ELEMENT_SIZE, | |
| 333 READ_ONLY | DONT_ENUM | DONT_DELETE); | |
| 334 utils.InstallGetter(GlobalNAME.prototype, "buffer", NAME_GetBuffer); | |
| 335 utils.InstallGetter(GlobalNAME.prototype, "byteOffset", NAME_GetByteOffset, | |
| 336 DONT_ENUM | DONT_DELETE); | |
| 337 utils.InstallGetter(GlobalNAME.prototype, "byteLength", NAME_GetByteLength, | |
| 338 DONT_ENUM | DONT_DELETE); | |
| 339 utils.InstallGetter(GlobalNAME.prototype, "length", NAME_GetLength, | |
| 340 DONT_ENUM | DONT_DELETE); | |
| 341 utils.InstallGetter(GlobalNAME.prototype, symbolToStringTag, | |
| 342 TypedArrayGetToStringTag); | |
| 343 utils.InstallFunctions(GlobalNAME.prototype, DONT_ENUM, [ | 350 utils.InstallFunctions(GlobalNAME.prototype, DONT_ENUM, [ |
| 344 "subarray", NAMESubArray, | 351 "subarray", NAMESubArray |
|
adamk
2015/06/13 00:49:38
I'm guessing this is also blocked on issue 4182?
Dan Ehrenberg
2015/06/13 05:54:09
Yep.
| |
| 345 "set", TypedArraySet | |
| 346 ]); | 352 ]); |
| 347 endmacro | 353 endmacro |
| 348 | 354 |
| 349 TYPED_ARRAYS(SETUP_TYPED_ARRAY) | 355 TYPED_ARRAYS(SETUP_TYPED_ARRAY) |
| 350 | 356 |
| 351 // --------------------------- DataView ----------------------------- | 357 // --------------------------- DataView ----------------------------- |
| 352 | 358 |
| 353 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 | 359 function DataViewConstructor(buffer, byteOffset, byteLength) { // length = 3 |
| 354 if (%_IsConstructCall()) { | 360 if (%_IsConstructCall()) { |
| 355 // TODO(binji): support SharedArrayBuffers? | 361 // TODO(binji): support SharedArrayBuffers? |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 472 "getUint32", DataViewGetUint32JS, | 478 "getUint32", DataViewGetUint32JS, |
| 473 "setUint32", DataViewSetUint32JS, | 479 "setUint32", DataViewSetUint32JS, |
| 474 | 480 |
| 475 "getFloat32", DataViewGetFloat32JS, | 481 "getFloat32", DataViewGetFloat32JS, |
| 476 "setFloat32", DataViewSetFloat32JS, | 482 "setFloat32", DataViewSetFloat32JS, |
| 477 | 483 |
| 478 "getFloat64", DataViewGetFloat64JS, | 484 "getFloat64", DataViewGetFloat64JS, |
| 479 "setFloat64", DataViewSetFloat64JS | 485 "setFloat64", DataViewSetFloat64JS |
| 480 ]); | 486 ]); |
| 481 | 487 |
| 488 // ------------------------------------------------------------------- | |
| 489 // Exports | |
| 490 | |
| 491 utils.Export(function(to) { | |
| 492 to.TypedArray = TypedArray; | |
| 493 to.TypedArrayPrototype = TypedArray.prototype; | |
| 494 }); | |
| 495 | |
| 482 }) | 496 }) |
| OLD | NEW |