| Index: lib/runtime/dart_sdk.js
|
| diff --git a/lib/runtime/dart_sdk.js b/lib/runtime/dart_sdk.js
|
| index 7f8a4e47dbdb6e3a2c4b15cb23de600471fbeefc..970bc69673ab36c36011c06328fc199472293b43 100644
|
| --- a/lib/runtime/dart_sdk.js
|
| +++ b/lib/runtime/dart_sdk.js
|
| @@ -36,10 +36,11 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| let MapOfSymbol$dynamic = () => (MapOfSymbol$dynamic = dart.constFn(core.Map$(core.Symbol, dart.dynamic)))();
|
| let MapOfString$int = () => (MapOfString$int = dart.constFn(core.Map$(core.String, core.int)))();
|
| let ListOfString = () => (ListOfString = dart.constFn(core.List$(core.String)))();
|
| - let JSArrayOfFormatter = () => (JSArrayOfFormatter = dart.constFn(_interceptors.JSArray$(_debugger.Formatter)))();
|
| let JSArrayOfNameValuePair = () => (JSArrayOfNameValuePair = dart.constFn(_interceptors.JSArray$(_debugger.NameValuePair)))();
|
| + let JSArrayOfFormatter = () => (JSArrayOfFormatter = dart.constFn(_interceptors.JSArray$(_debugger.Formatter)))();
|
| let LinkedHashSetOfNameValuePair = () => (LinkedHashSetOfNameValuePair = dart.constFn(collection.LinkedHashSet$(_debugger.NameValuePair)))();
|
| let SetOfString = () => (SetOfString = dart.constFn(core.Set$(core.String)))();
|
| + let IterableOfNameValuePair = () => (IterableOfNameValuePair = dart.constFn(core.Iterable$(_debugger.NameValuePair)))();
|
| let ListOfNameValuePair = () => (ListOfNameValuePair = dart.constFn(core.List$(_debugger.NameValuePair)))();
|
| let JSArrayOfJsonMLFormatter = () => (JSArrayOfJsonMLFormatter = dart.constFn(_interceptors.JSArray$(_debugger.JsonMLFormatter)))();
|
| let JSArray = () => (JSArray = dart.constFn(_interceptors.JSArray$()))();
|
| @@ -481,9 +482,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| let dynamicToList = () => (dynamicToList = dart.constFn(dart.definiteFunctionType(core.List, [dart.dynamic])))();
|
| let TypeToString = () => (TypeToString = dart.constFn(dart.definiteFunctionType(core.String, [core.Type])))();
|
| let dynamicAndStringTobool = () => (dynamicAndStringTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic, core.String])))();
|
| + let dynamicAnddynamicTodynamic$ = () => (dynamicAnddynamicTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
|
| let dynamicTobool$ = () => (dynamicTobool$ = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic])))();
|
| let dynamicAnddynamicTovoid = () => (dynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic])))();
|
| - let IterableSpanToListOfNameValuePair = () => (IterableSpanToListOfNameValuePair = dart.constFn(dart.definiteFunctionType(ListOfNameValuePair(), [_debugger.IterableSpan])))();
|
| let VoidTodynamic$ = () => (VoidTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))();
|
| let StringAndString__Todynamic = () => (StringAndString__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.String, core.String], [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])))();
|
| let VoidToIsolateContext = () => (VoidToIsolateContext = dart.constFn(dart.definiteFunctionType(_foreign_helper.IsolateContext, [])))();
|
| @@ -497,7 +498,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| let FunctionTovoid = () => (FunctionTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Function])))();
|
| let StringAndStringToString = () => (StringAndStringToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.String])))();
|
| let TypeAndStringTodynamic = () => (TypeAndStringTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.String])))();
|
| - let dynamicAnddynamicTodynamic$ = () => (dynamicAnddynamicTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
|
| let ListOfEToListOfE = () => (ListOfEToListOfE = dart.constFn(dart.definiteFunctionType(E => [core.List$(E), [core.List$(E)]])))();
|
| let StringTovoid = () => (StringTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String])))();
|
| let _IsolateContextAndFunctionTodynamic = () => (_IsolateContextAndFunctionTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [_isolate_helper._IsolateContext, core.Function])))();
|
| @@ -2441,17 +2441,48 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| constructors: () => ({new: dart.definiteFunctionType(_debugger.MapEntry, [], {key: core.Object, value: core.Object})})
|
| });
|
| _debugger.IterableSpan = class IterableSpan extends core.Object {
|
| - new(opts) {
|
| - let start = opts && 'start' in opts ? opts.start : null;
|
| - let end = opts && 'end' in opts ? opts.end : null;
|
| - let iterable = opts && 'iterable' in opts ? opts.iterable : null;
|
| + new(start, end, iterable) {
|
| this.start = start;
|
| this.end = end;
|
| this.iterable = iterable;
|
| }
|
| + get length() {
|
| + return dart.notNull(this.end) - dart.notNull(this.start);
|
| + }
|
| + get maxPowerOfSubsetSize() {
|
| + return (dart.notNull(math.log(core.num._check(dart.dsend(this.length, '-', 0.5)))) / dart.notNull(math.log(_debugger._maxSpanLength)))[dartx.truncate]();
|
| + }
|
| + get subsetSize() {
|
| + return math.pow(_debugger._maxSpanLength, core.num._check(this.maxPowerOfSubsetSize));
|
| + }
|
| + asMap() {
|
| + return this.iterable[dartx.skip](this.start)[dartx.take](core.int._check(this.length))[dartx.toList]()[dartx.asMap]();
|
| + }
|
| + children() {
|
| + let ret = JSArrayOfNameValuePair().of([]);
|
| + if (dart.test(dart.dsend(this.length, '<=', _debugger._maxSpanLength))) {
|
| + dart.dsend(this.asMap(), 'forEach', dart.fn((i, element) => {
|
| + ret[dartx.add](new _debugger.NameValuePair({name: dart.toString(dart.dsend(i, '+', this.start)), value: element}));
|
| + }, dynamicAnddynamicTodynamic$()));
|
| + } else {
|
| + for (let i = this.start; dart.notNull(i) < dart.notNull(this.end); i = dart.notNull(i) + dart.notNull(core.int._check(this.subsetSize))) {
|
| + let subSpan = new _debugger.IterableSpan(i, dart.asInt(math.min(core.num)(this.end, core.num._check(dart.dsend(this.subsetSize, '+', i)))), this.iterable);
|
| + if (dart.equals(subSpan.length, 1)) {
|
| + ret[dartx.add](new _debugger.NameValuePair({name: dart.toString(i), value: this.iterable[dartx.elementAt](i)}));
|
| + } else {
|
| + ret[dartx.add](new _debugger.NameValuePair({name: dart.str`[${i}...${dart.notNull(subSpan.end) - 1}]`, value: subSpan, hideName: true}));
|
| + }
|
| + }
|
| + }
|
| + return ret;
|
| + }
|
| };
|
| dart.setSignature(_debugger.IterableSpan, {
|
| - constructors: () => ({new: dart.definiteFunctionType(_debugger.IterableSpan, [], {start: core.int, end: core.int, iterable: core.Iterable})})
|
| + constructors: () => ({new: dart.definiteFunctionType(_debugger.IterableSpan, [core.int, core.int, core.Iterable])}),
|
| + methods: () => ({
|
| + asMap: dart.definiteFunctionType(dart.dynamic, []),
|
| + children: dart.definiteFunctionType(dart.dynamic, [])
|
| + })
|
| });
|
| _debugger.ClassMetadata = class ClassMetadata extends core.Object {
|
| new(object) {
|
| @@ -2536,11 +2567,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| _debugger.JsonMLFormatter = class JsonMLFormatter extends core.Object {
|
| new(simpleFormatter) {
|
| this[_simpleFormatter] = simpleFormatter;
|
| + this.customFormattersOn = false;
|
| }
|
| setMaxSpanLengthForTestingOnly(spanLength) {
|
| _debugger._maxSpanLength = spanLength;
|
| }
|
| header(object, config) {
|
| + this.customFormattersOn = true;
|
| if (dart.equals(config, _debugger.JsonMLConfig.skipDart) || dart.test(_debugger.isNativeJavaScriptObject(object))) {
|
| return null;
|
| }
|
| @@ -2800,7 +2833,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| }
|
| children(object) {
|
| let ret = LinkedHashSetOfNameValuePair().new();
|
| - ret.addAll(_debugger.childrenHelper(new _debugger.IterableSpan({start: 0, end: core.int._check(dart.dload(object, 'length')), iterable: core.Iterable._check(object)})));
|
| + ret.addAll(IterableOfNameValuePair()._check(new _debugger.IterableSpan(0, core.int._check(dart.dload(object, 'length')), core.Iterable._check(object)).children()));
|
| this.addMetadataChildren(object, ret);
|
| return ret.toList();
|
| }
|
| @@ -2909,14 +2942,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| return _debugger.IterableSpan.is(object);
|
| }
|
| preview(object) {
|
| - let entry = _debugger.IterableSpan._check(object);
|
| return dart.str`[${dart.dload(object, 'start')}...${dart.dsend(dart.dload(object, 'end'), '-', 1)}]`;
|
| }
|
| hasChildren(object) {
|
| return true;
|
| }
|
| children(object) {
|
| - return _debugger.childrenHelper(_debugger.IterableSpan._check(object));
|
| + return ListOfNameValuePair()._check(dart.dsend(object, 'children'));
|
| }
|
| };
|
| _debugger.IterableSpanFormatter[dart.implements] = () => [_debugger.Formatter];
|
| @@ -2928,29 +2960,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| children: dart.definiteFunctionType(core.List$(_debugger.NameValuePair), [dart.dynamic])
|
| })
|
| });
|
| - _debugger.childrenHelper = function(span) {
|
| - let length = dart.notNull(span.end) - dart.notNull(span.start);
|
| - let ret = ListOfNameValuePair().new();
|
| - if (length <= dart.notNull(_debugger._maxSpanLength)) {
|
| - for (let i = span.start; dart.notNull(i) < dart.notNull(span.end); i = dart.notNull(i) + 1) {
|
| - ret[dartx.add](new _debugger.NameValuePair({name: dart.toString(i), value: span.iterable[dartx.elementAt](i)}));
|
| - }
|
| - } else {
|
| - let maxPowerOfSubsetSize = (dart.notNull(math.log(length - 0.5)) / dart.notNull(math.log(_debugger._maxSpanLength)))[dartx.truncate]();
|
| - let subsetSize = math.pow(_debugger._maxSpanLength, maxPowerOfSubsetSize);
|
| - for (let i = span.start; dart.notNull(i) < dart.notNull(span.end); i = dart.notNull(i) + dart.notNull(dart.asInt(subsetSize))) {
|
| - let endIndex = math.min(core.num)(span.end, dart.notNull(subsetSize) + dart.notNull(i));
|
| - if (dart.notNull(endIndex) - dart.notNull(i) == 1)
|
| - ret[dartx.add](new _debugger.NameValuePair({name: dart.toString(i), value: span.iterable[dartx.elementAt](i)}));
|
| - else {
|
| - let entryWrapper = new _debugger.IterableSpan({start: i, end: dart.asInt(endIndex), iterable: span.iterable});
|
| - ret[dartx.add](new _debugger.NameValuePair({name: dart.str`[${i}...${dart.notNull(endIndex) - 1}]`, value: entryWrapper, hideName: true}));
|
| - }
|
| - }
|
| - }
|
| - return ret;
|
| - };
|
| - dart.lazyFn(_debugger.childrenHelper, () => IterableSpanToListOfNameValuePair());
|
| _debugger.registerDevtoolsFormatter = function() {
|
| let formatters = JSArrayOfJsonMLFormatter().of([_debugger._devtoolsFormatter]);
|
| dart.global.devtoolsFormatters = formatters;
|
|
|