| Index: runtime/lib/string_patch.dart
|
| diff --git a/runtime/lib/string_patch.dart b/runtime/lib/string_patch.dart
|
| index 3ac78a8fd9404faa5724cd771666eb61053110d5..18266d18cbda9ad7b33e08023ded1b8487e50665 100644
|
| --- a/runtime/lib/string_patch.dart
|
| +++ b/runtime/lib/string_patch.dart
|
| @@ -675,6 +675,20 @@ class _OneByteString extends _StringBase implements String {
|
| return super.split(pattern);
|
| }
|
|
|
| + // Loads up to 4 code units into a single integer.
|
| + int _codeUnitsAt(int index, int count) {
|
| + assert(index >= 0);
|
| + assert(index + count - 1 < this.length);
|
| + assert(0 < count && count <= 4);
|
| +
|
| + int codeUnits = 0;
|
| + for (int i = 0; i < count; i++) {
|
| + codeUnits |= this.codeUnitAt(index + i) << (i * 8);
|
| + }
|
| +
|
| + return codeUnits;
|
| + }
|
| +
|
| // All element of 'strings' must be OneByteStrings.
|
| static _concatAll(List<String> strings, int totalLength) {
|
| // TODO(srdjan): Improve code below and raise or eliminate the limit.
|
| @@ -938,6 +952,20 @@ class _TwoByteString extends _StringBase implements String {
|
| bool operator ==(Object other) {
|
| return super == other;
|
| }
|
| +
|
| + // Loads up to 2 code units into a single integer.
|
| + int _codeUnitsAt(int index, int count) {
|
| + assert(index >= 0);
|
| + assert(index + count - 1 < this.length);
|
| + assert(0 < count && count <= 2);
|
| +
|
| + int codeUnits = 0;
|
| + for (int i = 0; i < count; i++) {
|
| + codeUnits |= this.codeUnitAt(index + i) << (i * 16);
|
| + }
|
| +
|
| + return codeUnits;
|
| + }
|
| }
|
|
|
|
|
|
|