| 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 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 } | 275 } |
| 276 | 276 |
| 277 function TypedArraySetFromOverlappingTypedArray(target, source, offset) { | 277 function TypedArraySetFromOverlappingTypedArray(target, source, offset) { |
| 278 var sourceElementSize = source.BYTES_PER_ELEMENT; | 278 var sourceElementSize = source.BYTES_PER_ELEMENT; |
| 279 var targetElementSize = target.BYTES_PER_ELEMENT; | 279 var targetElementSize = target.BYTES_PER_ELEMENT; |
| 280 var sourceLength = %_TypedArrayGetLength(source); | 280 var sourceLength = %_TypedArrayGetLength(source); |
| 281 | 281 |
| 282 // Copy left part. | 282 // Copy left part. |
| 283 function CopyLeftPart() { | 283 function CopyLeftPart() { |
| 284 // First un-mutated byte after the next write | 284 // First un-mutated byte after the next write |
| 285 var targetPtr = target.byteOffset + (offset + 1) * targetElementSize; | 285 var targetPtr = %_ArrayBufferViewGetByteOffset(target) + |
| 286 (offset + 1) * targetElementSize; |
| 286 // Next read at sourcePtr. We do not care for memory changing before | 287 // Next read at sourcePtr. We do not care for memory changing before |
| 287 // sourcePtr - we have already copied it. | 288 // sourcePtr - we have already copied it. |
| 288 var sourcePtr = source.byteOffset; | 289 var sourcePtr = %_ArrayBufferViewGetByteOffset(source); |
| 289 for (var leftIndex = 0; | 290 for (var leftIndex = 0; |
| 290 leftIndex < sourceLength && targetPtr <= sourcePtr; | 291 leftIndex < sourceLength && targetPtr <= sourcePtr; |
| 291 leftIndex++) { | 292 leftIndex++) { |
| 292 target[offset + leftIndex] = source[leftIndex]; | 293 target[offset + leftIndex] = source[leftIndex]; |
| 293 targetPtr += targetElementSize; | 294 targetPtr += targetElementSize; |
| 294 sourcePtr += sourceElementSize; | 295 sourcePtr += sourceElementSize; |
| 295 } | 296 } |
| 296 return leftIndex; | 297 return leftIndex; |
| 297 } | 298 } |
| 298 var leftIndex = CopyLeftPart(); | 299 var leftIndex = CopyLeftPart(); |
| 299 | 300 |
| 300 // Copy right part; | 301 // Copy right part; |
| 301 function CopyRightPart() { | 302 function CopyRightPart() { |
| 302 // First unmutated byte before the next write | 303 // First unmutated byte before the next write |
| 303 var targetPtr = | 304 var targetPtr = %_ArrayBufferViewGetByteOffset(target) + |
| 304 target.byteOffset + (offset + sourceLength - 1) * targetElementSize; | 305 (offset + sourceLength - 1) * targetElementSize; |
| 305 // Next read before sourcePtr. We do not care for memory changing after | 306 // Next read before sourcePtr. We do not care for memory changing after |
| 306 // sourcePtr - we have already copied it. | 307 // sourcePtr - we have already copied it. |
| 307 var sourcePtr = | 308 var sourcePtr = %_ArrayBufferViewGetByteOffset(source) + |
| 308 source.byteOffset + sourceLength * sourceElementSize; | 309 sourceLength * sourceElementSize; |
| 309 for(var rightIndex = sourceLength - 1; | 310 for(var rightIndex = sourceLength - 1; |
| 310 rightIndex >= leftIndex && targetPtr >= sourcePtr; | 311 rightIndex >= leftIndex && targetPtr >= sourcePtr; |
| 311 rightIndex--) { | 312 rightIndex--) { |
| 312 target[offset + rightIndex] = source[rightIndex]; | 313 target[offset + rightIndex] = source[rightIndex]; |
| 313 targetPtr -= targetElementSize; | 314 targetPtr -= targetElementSize; |
| 314 sourcePtr -= sourceElementSize; | 315 sourcePtr -= sourceElementSize; |
| 315 } | 316 } |
| 316 return rightIndex; | 317 return rightIndex; |
| 317 } | 318 } |
| 318 var rightIndex = CopyRightPart(); | 319 var rightIndex = CopyRightPart(); |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 %AddNamedProperty(GlobalNAME.prototype, | 691 %AddNamedProperty(GlobalNAME.prototype, |
| 691 "constructor", global.NAME, DONT_ENUM); | 692 "constructor", global.NAME, DONT_ENUM); |
| 692 %AddNamedProperty(GlobalNAME.prototype, | 693 %AddNamedProperty(GlobalNAME.prototype, |
| 693 "BYTES_PER_ELEMENT", ELEMENT_SIZE, | 694 "BYTES_PER_ELEMENT", ELEMENT_SIZE, |
| 694 READ_ONLY | DONT_ENUM | DONT_DELETE); | 695 READ_ONLY | DONT_ENUM | DONT_DELETE); |
| 695 endmacro | 696 endmacro |
| 696 | 697 |
| 697 TYPED_ARRAYS(SETUP_TYPED_ARRAY) | 698 TYPED_ARRAYS(SETUP_TYPED_ARRAY) |
| 698 | 699 |
| 699 }) | 700 }) |
| OLD | NEW |