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

Side by Side Diff: runtime/lib/byte_array.dart

Issue 11437028: Added Uint8ClampedList. COmpielr optimziations to follow in next CL. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « runtime/lib/byte_array.cc ('k') | runtime/vm/bootstrap_natives.h » ('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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 patch class Int8List { 5 patch class Int8List {
6 /* patch */ factory Int8List(int length) { 6 /* patch */ factory Int8List(int length) {
7 return new _Int8Array(length); 7 return new _Int8Array(length);
8 } 8 }
9 9
10 /* patch */ factory Int8List.transferable(int length) { 10 /* patch */ factory Int8List.transferable(int length) {
(...skipping 16 matching lines...) Expand all
27 return new _Uint8Array.transferable(length); 27 return new _Uint8Array.transferable(length);
28 } 28 }
29 29
30 /* patch */ factory Uint8List.view(ByteArray array, 30 /* patch */ factory Uint8List.view(ByteArray array,
31 [int start = 0, int length]) { 31 [int start = 0, int length]) {
32 return new _Uint8ArrayView(array, start, length); 32 return new _Uint8ArrayView(array, start, length);
33 } 33 }
34 } 34 }
35 35
36 36
37 patch class Uint8ClampedList {
38 /* patch */ factory Uint8ClampedList(int length) {
39 return new _Uint8ClampedArray(length);
40 }
41
42 /* patch */ factory Uint8ClampedList.transferable(int length) {
43 return new _Uint8ClampedArray.transferable(length);
44 }
45
46 /* patch */ factory Uint8ClampedList.view(ByteArray array,
47 [int start = 0, int length]) {
48 return new _Uint8ClampedArrayView(array, start, length);
49 }
50 }
51
52
37 patch class Int16List { 53 patch class Int16List {
38 /* patch */ factory Int16List(int length) { 54 /* patch */ factory Int16List(int length) {
39 return new _Int16Array(length); 55 return new _Int16Array(length);
40 } 56 }
41 57
42 /* patch */ factory Int16List.transferable(int length) { 58 /* patch */ factory Int16List.transferable(int length) {
43 return new _Int16Array.transferable(length); 59 return new _Int16Array.transferable(length);
44 } 60 }
45 61
46 /* patch */ factory Int16List.view(ByteArray array, [int start = 0, int length ]) { 62 /* patch */ factory Int16List.view(ByteArray array, [int start = 0, int length ]) {
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 if (value > (mask >> 1)) value -= mask + 1; 334 if (value > (mask >> 1)) value -= mask + 1;
319 return value; 335 return value;
320 } 336 }
321 337
322 int _toInt8(int value) { 338 int _toInt8(int value) {
323 return _toInt(value, 0xFF); 339 return _toInt(value, 0xFF);
324 } 340 }
325 int _toUint8(int value) { 341 int _toUint8(int value) {
326 return value & 0xFF; 342 return value & 0xFF;
327 } 343 }
344 int _toClampedUint8(int value) {
345 if (value < 0) return 0;
346 if (value > 0xFF) return 0xFF;
347 return value;
348 }
328 349
329 350
330 int _toInt16(int value) { 351 int _toInt16(int value) {
331 return _toInt(value, 0xFFFF); 352 return _toInt(value, 0xFFFF);
332 } 353 }
333 int _toUint16(int value) { 354 int _toUint16(int value) {
334 return value & 0xFFFF; 355 return value & 0xFFFF;
335 } 356 }
336 357
337 358
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 460
440 int lengthInBytes() { 461 int lengthInBytes() {
441 return _length() * _BYTES_PER_ELEMENT; 462 return _length() * _BYTES_PER_ELEMENT;
442 } 463 }
443 464
444 static const int _BYTES_PER_ELEMENT = 1; 465 static const int _BYTES_PER_ELEMENT = 1;
445 466
446 static _Int8Array _new(int length) native "Int8Array_new"; 467 static _Int8Array _new(int length) native "Int8Array_new";
447 static _Int8Array _newTransferable(int length) 468 static _Int8Array _newTransferable(int length)
448 native "Int8Array_newTransferable"; 469 native "Int8Array_newTransferable";
449
450 470
451 int _getIndexed(int index) native "Int8Array_getIndexed"; 471 int _getIndexed(int index) native "Int8Array_getIndexed";
452 int _setIndexed(int index, int value) native "Int8Array_setIndexed"; 472 int _setIndexed(int index, int value) native "Int8Array_setIndexed";
453 } 473 }
454 474
455 475
456 class _Uint8Array extends _ByteArrayBase implements Uint8List { 476 class _Uint8Array extends _ByteArrayBase implements Uint8List {
457 factory _Uint8Array(int length) { 477 factory _Uint8Array(int length) {
458 return _new(length); 478 return _new(length);
459 } 479 }
(...skipping 22 matching lines...) Expand all
482 } 502 }
483 503
484 List<int> getRange(int start, int length) { 504 List<int> getRange(int start, int length) {
485 _rangeCheck(this.length, start, length); 505 _rangeCheck(this.length, start, length);
486 List<int> result = _new(length); 506 List<int> result = _new(length);
487 result.setRange(0, length, this, start); 507 result.setRange(0, length, this, start);
488 return result; 508 return result;
489 } 509 }
490 510
491 void setRange(int start, int length, List<int> from, [int startFrom = 0]) { 511 void setRange(int start, int length, List<int> from, [int startFrom = 0]) {
492 if (from is _Uint8Array || from is _ExternalUint8Array) { 512 if (from is _Uint8Array || from is _ExternalUint8Array ||
513 from is _Uint8ClampedArray || from is _ExternalUint8ClampedArray) {
493 _setRange(start * _BYTES_PER_ELEMENT, 514 _setRange(start * _BYTES_PER_ELEMENT,
494 length * _BYTES_PER_ELEMENT, 515 length * _BYTES_PER_ELEMENT,
495 from, 516 from,
496 startFrom * _BYTES_PER_ELEMENT); 517 startFrom * _BYTES_PER_ELEMENT);
497 } else { 518 } else {
498 Arrays.copy(from, startFrom, this, start, length); 519 Arrays.copy(from, startFrom, this, start, length);
499 } 520 }
500 } 521 }
501 522
502 String toString() { 523 String toString() {
503 return Collections.collectionToString(this); 524 return Collections.collectionToString(this);
504 } 525 }
505 526
506 int bytesPerElement() { 527 int bytesPerElement() {
507 return _BYTES_PER_ELEMENT; 528 return _BYTES_PER_ELEMENT;
508 } 529 }
509 530
510 int lengthInBytes() { 531 int lengthInBytes() {
511 return _length() * _BYTES_PER_ELEMENT; 532 return _length() * _BYTES_PER_ELEMENT;
512 } 533 }
513 534
514 static const int _BYTES_PER_ELEMENT = 1; 535 static const int _BYTES_PER_ELEMENT = 1;
515 536
516 static _Uint8Array _new(int length) native "Uint8Array_new"; 537 static _Uint8Array _new(int length) native "Uint8Array_new";
517 static _Uint8Array _newTransferable(int length) 538 static _Uint8Array _newTransferable(int length)
518 native "Uint8Array_newTransferable"; 539 native "Uint8Array_newTransferable";
519 540
541 int _getIndexed(int index) native "Uint8Array_getIndexed";
542 int _setIndexed(int index, int value) native "Uint8Array_setIndexed";
543 }
544
545
546 class _Uint8ClampedArray extends _ByteArrayBase implements Uint8ClampedList {
547 factory _Uint8ClampedArray(int length) {
548 return _new(length);
549 }
550
551 factory _Uint8ClampedArray.transferable(int length) {
552 return _newTransferable(length);
553 }
554
555 factory _Uint8ClampedArray.view(ByteArray array,
556 [int start = 0, int length]) {
557 if (length == null) {
558 length = array.lengthInBytes();
559 }
560 return new _Uint8ClampedArrayView(array, start, length);
561 }
562
563 int operator[](int index) {
564 return _getIndexed(index);
565 }
566
567 int operator[]=(int index, int value) {
568 _setIndexed(index, _toClampedUint8(value));
569 }
570
571 Iterator<int> iterator() {
572 return new _ByteArrayIterator<int>(this);
573 }
574
575 List<int> getRange(int start, int length) {
576 _rangeCheck(this.length, start, length);
577 List<int> result = _new(length);
578 result.setRange(0, length, this, start);
579 return result;
580 }
581
582 void setRange(int start, int length, List<int> from, [int startFrom = 0]) {
583 if (from is _Uint8Array || from is _ExternalUint8Array ||
584 from is _Uint8ClampedArray || from is _ExternalUint8ClampedArray) {
585 _setRange(start * _BYTES_PER_ELEMENT,
586 length * _BYTES_PER_ELEMENT,
587 from,
588 startFrom * _BYTES_PER_ELEMENT);
589 } else {
590 Arrays.copy(from, startFrom, this, start, length);
591 }
592 }
593
594 String toString() {
595 return Collections.collectionToString(this);
596 }
597
598 int bytesPerElement() {
599 return _BYTES_PER_ELEMENT;
600 }
601
602 int lengthInBytes() {
603 return _length() * _BYTES_PER_ELEMENT;
604 }
605
606 static const int _BYTES_PER_ELEMENT = 1;
607
608 static _Uint8ClampedArray _new(int length) native "Uint8ClampedArray_new";
609 static _Uint8ClampedArray _newTransferable(int length)
610 native "Uint8ClampedArray_newTransferable";
611
520 int _getIndexed(int index) native "Uint8Array_getIndexed"; 612 int _getIndexed(int index) native "Uint8Array_getIndexed";
521 int _setIndexed(int index, int value) native "Uint8Array_setIndexed"; 613 int _setIndexed(int index, int value) native "Uint8Array_setIndexed";
522 } 614 }
523 615
524 616
525 class _Int16Array extends _ByteArrayBase implements Int16List { 617 class _Int16Array extends _ByteArrayBase implements Int16List {
526 factory _Int16Array(int length) { 618 factory _Int16Array(int length) {
527 return _new(length); 619 return _new(length);
528 } 620 }
529 621
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 808
717 int lengthInBytes() { 809 int lengthInBytes() {
718 return _length() * _BYTES_PER_ELEMENT; 810 return _length() * _BYTES_PER_ELEMENT;
719 } 811 }
720 812
721 static const int _BYTES_PER_ELEMENT = 4; 813 static const int _BYTES_PER_ELEMENT = 4;
722 814
723 static _Int32Array _new(int length) native "Int32Array_new"; 815 static _Int32Array _new(int length) native "Int32Array_new";
724 static _Int32Array _newTransferable(int length) 816 static _Int32Array _newTransferable(int length)
725 native "Int32Array_newTransferable"; 817 native "Int32Array_newTransferable";
726 818
727 819
728 int _getIndexed(int index) native "Int32Array_getIndexed"; 820 int _getIndexed(int index) native "Int32Array_getIndexed";
729 int _setIndexed(int index, int value) native "Int32Array_setIndexed"; 821 int _setIndexed(int index, int value) native "Int32Array_setIndexed";
730 } 822 }
731 823
732 824
733 class _Uint32Array extends _ByteArrayBase implements Uint32List { 825 class _Uint32Array extends _ByteArrayBase implements Uint32List {
734 factory _Uint32Array(int length) { 826 factory _Uint32Array(int length) {
735 return _new(length); 827 return _new(length);
736 } 828 }
(...skipping 1786 matching lines...) Expand 10 before | Expand all | Expand 10 after
2523 } 2615 }
2524 _rangeCheck(this.length, start, length); 2616 _rangeCheck(this.length, start, length);
2525 return _array.subByteArray(_offset + start, length); 2617 return _array.subByteArray(_offset + start, length);
2526 } 2618 }
2527 2619
2528 static const int _BYTES_PER_ELEMENT = 8; 2620 static const int _BYTES_PER_ELEMENT = 8;
2529 final ByteArray _array; 2621 final ByteArray _array;
2530 final int _offset; 2622 final int _offset;
2531 final int _length; 2623 final int _length;
2532 } 2624 }
OLDNEW
« no previous file with comments | « runtime/lib/byte_array.cc ('k') | runtime/vm/bootstrap_natives.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698