| Index: runtime/lib/string_base.dart
|
| diff --git a/runtime/lib/string_base.dart b/runtime/lib/string_base.dart
|
| index 8b28aaeba8385ecd46dc062207d0dc603a825c9f..bb39e4ee64622afc0931f512777dd33f9aeba987 100644
|
| --- a/runtime/lib/string_base.dart
|
| +++ b/runtime/lib/string_base.dart
|
| @@ -38,11 +38,7 @@ class _StringBase {
|
|
|
| String operator [](int index) native "String_charAt";
|
|
|
| - int charCodeAt(int index) native "String_charCodeAt";
|
| -
|
| - int codeUnitAt(int index) {
|
| - return charCodeAt(index);
|
| - }
|
| + int codeUnitAt(int index) native "String_codeUnitAt";
|
|
|
| int get length native "String_getLength";
|
|
|
| @@ -73,8 +69,8 @@ class _StringBase {
|
| int otherLength = other.length;
|
| int len = (thisLength < otherLength) ? thisLength : otherLength;
|
| for (int i = 0; i < len; i++) {
|
| - int thisCodePoint = this.charCodeAt(i);
|
| - int otherCodePoint = other.charCodeAt(i);
|
| + int thisCodePoint = this.codeUnitAt(i);
|
| + int otherCodePoint = other.codeUnitAt(i);
|
| if (thisCodePoint < otherCodePoint) {
|
| return -1;
|
| }
|
| @@ -97,7 +93,7 @@ class _StringBase {
|
| return false;
|
| }
|
| for (int i = 0; i < len; i++) {
|
| - if (this.charCodeAt(i + start) != other.charCodeAt(i)) {
|
| + if (this.codeUnitAt(i + start) != other.codeUnitAt(i)) {
|
| return false;
|
| }
|
| }
|
| @@ -216,7 +212,7 @@ class _StringBase {
|
| final int len = this.length;
|
| int first = 0;
|
| for (; first < len; first++) {
|
| - if (!_isWhitespace(this.charCodeAt(first))) {
|
| + if (!_isWhitespace(this.codeUnitAt(first))) {
|
| break;
|
| }
|
| }
|
| @@ -226,7 +222,7 @@ class _StringBase {
|
| }
|
| int last = len - 1;
|
| for (; last >= first; last--) {
|
| - if (!_isWhitespace(this.charCodeAt(last))) {
|
| + if (!_isWhitespace(this.codeUnitAt(last))) {
|
| break;
|
| }
|
| }
|
| @@ -300,10 +296,10 @@ class _StringBase {
|
| while (i < length) {
|
| buffer.add(onMatch(new _StringMatch(i, this, "")));
|
| // Special case to avoid splitting a surrogate pair.
|
| - int code = this.charCodeAt(i);
|
| + int code = this.codeUnitAt(i);
|
| if ((code & ~0x3FF) == 0xD800 && length > i + 1) {
|
| // Leading surrogate;
|
| - code = this.charCodeAt(i + 1);
|
| + code = this.codeUnitAt(i + 1);
|
| if ((code & ~0x3FF) == 0xDC00) {
|
| // Matching trailing surrogate.
|
| buffer.add(onNonMatch(this.substring(i, i + 2)));
|
| @@ -383,7 +379,11 @@ class _StringBase {
|
|
|
| List<String> split(Pattern pattern) {
|
| if ((pattern is String) && pattern.isEmpty) {
|
| - return splitChars();
|
| + List<String> result = new List<String>(length);
|
| + for (int i = 0; i < length; i++) {
|
| + result[i] = this[i];
|
| + }
|
| + return result;
|
| }
|
| int length = this.length;
|
| Iterator iterator = pattern.allMatches(this).iterator;
|
| @@ -415,25 +415,7 @@ class _StringBase {
|
| return result;
|
| }
|
|
|
| - List<String> splitChars() {
|
| - int len = this.length;
|
| - final result = new List<String>.fixedLength(len);
|
| - for (int i = 0; i < len; i++) {
|
| - result[i] = this[i];
|
| - }
|
| - return result;
|
| - }
|
| -
|
| - List<int> get charCodes {
|
| - int len = this.length;
|
| - final result = new List<int>.fixedLength(len);
|
| - for (int i = 0; i < len; i++) {
|
| - result[i] = this.charCodeAt(i);
|
| - }
|
| - return result;
|
| - }
|
| -
|
| - Iterable<int> get codeUnits => new CodeUnits(this);
|
| + List<int> get codeUnits => new CodeUnits(this);
|
|
|
| Runes get runes => new Runes(this);
|
|
|
| @@ -507,7 +489,7 @@ class _OneByteString extends _StringBase implements String {
|
|
|
| List<String> split(Pattern pattern) {
|
| if ((pattern is _OneByteString) && (pattern.length == 1)) {
|
| - return _splitWithCharCode(pattern.charCodeAt(0));
|
| + return _splitWithCharCode(pattern.codeUnitAt(0));
|
| }
|
| return super.split(pattern);
|
| }
|
|
|