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

Unified Diff: lib/runtime/dart_sdk.js

Side-by-side diff isn't available for this file because of its large size.
Issue 1952223006: Update String.fromCharCodes from sdk (Closed) Base URL: https://github.com/dart-lang/dev_compiler@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « no previous file | tool/input_sdk/lib/core/core.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/runtime/dart_sdk.js
diff --git a/lib/runtime/dart_sdk.js b/lib/runtime/dart_sdk.js
index d649ca357d1f95eac5bfa10fffd5863923b0251f..6e024e35a4371fbaa454f96cf147303873a30ea3 100644
--- a/lib/runtime/dart_sdk.js
+++ b/lib/runtime/dart_sdk.js
@@ -9164,6 +9164,18 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
return _js_helper.Primitives._fromCharCodeApply(dart.as(charCodes, core.List$(core.int)));
}
+ static stringFromNativeUint8List(charCodes, start, end) {
+ let kMaxApply = 500;
+ if (dart.notNull(end) <= kMaxApply && start == 0 && end == charCodes[dartx.length]) {
+ return String.fromCharCode.apply(null, charCodes);
+ }
+ let result = '';
+ for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + kMaxApply) {
+ let chunkEnd = dart.notNull(i) + kMaxApply < dart.notNull(end) ? dart.notNull(i) + kMaxApply : end;
+ result = result + String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));
+ }
+ return result;
+ }
static stringFromCharCode(charCode) {
if (0 <= dart.notNull(charCode)) {
if (dart.notNull(charCode) <= 65535) {
@@ -9301,6 +9313,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_fromCharCodeApply: [core.String, [core.List$(core.int)]],
stringFromCodePoints: [core.String, [dart.dynamic]],
stringFromCharCodes: [core.String, [dart.dynamic]],
+ stringFromNativeUint8List: [core.String, [_native_typed_data.NativeUint8List, core.int, core.int]],
stringFromCharCode: [core.String, [core.int]],
stringConcatUnchecked: [core.String, [core.String, core.String]],
flattenString: [core.String, [core.String]],
@@ -9323,7 +9336,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
identicalImplementation: [core.bool, [dart.dynamic, dart.dynamic]],
extractStackTrace: [core.StackTrace, [core.Error]]
}),
- names: ['initializeStatics', 'objectHashCode', '_parseIntError', 'parseInt', '_parseDoubleError', 'parseDouble', 'objectTypeName', 'objectToString', 'dateNow', 'initTicker', 'currentUri', '_fromCharCodeApply', 'stringFromCodePoints', 'stringFromCharCodes', 'stringFromCharCode', 'stringConcatUnchecked', 'flattenString', 'getTimeZoneName', 'getTimeZoneOffsetInMinutes', 'valueFromDecomposedDate', 'patchUpY2K', 'lazyAsJsDate', 'getYear', 'getMonth', 'getDay', 'getHours', 'getMinutes', 'getSeconds', 'getMilliseconds', 'getWeekday', 'valueFromDateString', 'getProperty', 'setProperty', 'identicalImplementation', 'extractStackTrace']
+ names: ['initializeStatics', 'objectHashCode', '_parseIntError', 'parseInt', '_parseDoubleError', 'parseDouble', 'objectTypeName', 'objectToString', 'dateNow', 'initTicker', 'currentUri', '_fromCharCodeApply', 'stringFromCodePoints', 'stringFromCharCodes', 'stringFromNativeUint8List', 'stringFromCharCode', 'stringConcatUnchecked', 'flattenString', 'getTimeZoneName', 'getTimeZoneOffsetInMinutes', 'valueFromDecomposedDate', 'patchUpY2K', 'lazyAsJsDate', 'getYear', 'getMonth', 'getDay', 'getHours', 'getMinutes', 'getSeconds', 'getMilliseconds', 'getWeekday', 'valueFromDateString', 'getProperty', 'setProperty', 'identicalImplementation', 'extractStackTrace']
});
_js_helper.Primitives.mirrorFunctionCacheName = '$cachedFunction';
_js_helper.Primitives.mirrorInvokeCacheName = '$cachedInvocation';
@@ -24393,23 +24406,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
static fromCharCodes(charCodes, start, end) {
if (start === void 0) start = 0;
if (end === void 0) end = null;
- if (!dart.is(charCodes, _interceptors.JSArray)) {
- return core.String._stringFromIterable(charCodes, start, end);
+ if (dart.is(charCodes, _interceptors.JSArray)) {
+ return core.String._stringFromJSArray(dart.as(charCodes, core.List), start, end);
}
- let list = dart.as(charCodes, core.List);
- let len = list[dartx.length];
- if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(len)) {
- dart.throw(new core.RangeError.range(start, 0, len));
- }
- if (end == null) {
- end = len;
- } else if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(len)) {
- dart.throw(new core.RangeError.range(end, start, len));
- }
- if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(len)) {
- list = list[dartx.sublist](start, end);
+ if (dart.is(charCodes, _native_typed_data.NativeUint8List)) {
+ return core.String._stringFromUint8List(charCodes, start, end);
}
- return _js_helper.Primitives.stringFromCharCodes(list);
+ return core.String._stringFromIterable(charCodes, start, end);
}
static fromCharCode(charCode) {
return _js_helper.Primitives.stringFromCharCode(charCode);
@@ -24418,6 +24421,19 @@ dart_library.library('dart_sdk', null, /* Imports */[
let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
dart.throw(new core.UnsupportedError('String.fromEnvironment can only be used as a const constructor'));
}
+ static _stringFromJSArray(list, start, endOrNull) {
+ let len = list[dartx.length];
+ let end = core.RangeError.checkValidRange(start, endOrNull, len);
+ if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(len)) {
+ list = list[dartx.sublist](start, end);
+ }
+ return _js_helper.Primitives.stringFromCharCodes(list);
+ }
+ static _stringFromUint8List(charCodes, start, endOrNull) {
+ let len = charCodes[dartx.length];
+ let end = core.RangeError.checkValidRange(start, endOrNull, len);
+ return _js_helper.Primitives.stringFromNativeUint8List(charCodes, start, end);
+ }
static _stringFromIterable(charCodes, start, end) {
if (dart.notNull(start) < 0) dart.throw(new core.RangeError.range(start, 0, charCodes[dartx.length]));
if (end != null && dart.notNull(end) < dart.notNull(start)) {
@@ -24451,8 +24467,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
fromCharCode: [core.String, [core.int]],
fromEnvironment: [core.String, [core.String], {defaultValue: core.String}]
}),
- statics: () => ({_stringFromIterable: [core.String, [core.Iterable$(core.int), core.int, core.int]]}),
- names: ['_stringFromIterable']
+ statics: () => ({
+ _stringFromJSArray: [core.String, [core.List, core.int, core.int]],
+ _stringFromUint8List: [core.String, [_native_typed_data.NativeUint8List, core.int, core.int]],
+ _stringFromIterable: [core.String, [core.Iterable$(core.int), core.int, core.int]]
+ }),
+ names: ['_stringFromJSArray', '_stringFromUint8List', '_stringFromIterable']
});
core.List$ = dart.generic(E => {
class List extends core.Object {
« no previous file with comments | « no previous file | tool/input_sdk/lib/core/core.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698