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); |
} |