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

Side by Side Diff: lib/runtime/dart/_isolate_helper.js

Issue 1148333003: No dynamic at runtime (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Address comments Created 5 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:
View unified diff | Download patch
OLDNEW
1 var _isolate_helper = dart.defineLibrary(_isolate_helper, {}); 1 var _isolate_helper = dart.defineLibrary(_isolate_helper, {});
2 var core = dart.import(core); 2 var core = dart.import(core);
3 var _native_typed_data = dart.import(_native_typed_data); 3 var _native_typed_data = dart.import(_native_typed_data);
4 var _interceptors = dart.lazyImport(_interceptors); 4 var _interceptors = dart.lazyImport(_interceptors);
5 var _js_helper = dart.lazyImport(_js_helper); 5 var _js_helper = dart.lazyImport(_js_helper);
6 var isolate = dart.import(isolate); 6 var isolate = dart.import(isolate);
7 var _foreign_helper = dart.import(_foreign_helper); 7 var _foreign_helper = dart.import(_foreign_helper);
8 var _js_embedded_names = dart.import(_js_embedded_names); 8 var _js_embedded_names = dart.import(_js_embedded_names);
9 var collection = dart.import(collection); 9 var collection = dart.import(collection);
10 var async = dart.import(async); 10 var async = dart.import(async);
(...skipping 15 matching lines...) Expand all
26 dart.fn(_clone); 26 dart.fn(_clone);
27 let _serializeSendPorts = Symbol('_serializeSendPorts'); 27 let _serializeSendPorts = Symbol('_serializeSendPorts');
28 let _workerId = Symbol('_workerId'); 28 let _workerId = Symbol('_workerId');
29 let _isolateId = Symbol('_isolateId'); 29 let _isolateId = Symbol('_isolateId');
30 let _receivePortId = Symbol('_receivePortId'); 30 let _receivePortId = Symbol('_receivePortId');
31 let _id = Symbol('_id'); 31 let _id = Symbol('_id');
32 let _receivePort = Symbol('_receivePort'); 32 let _receivePort = Symbol('_receivePort');
33 class _Serializer extends core.Object { 33 class _Serializer extends core.Object {
34 _Serializer(opts) { 34 _Serializer(opts) {
35 let serializeSendPorts = opts && 'serializeSendPorts' in opts ? opts.seria lizeSendPorts : true; 35 let serializeSendPorts = opts && 'serializeSendPorts' in opts ? opts.seria lizeSendPorts : true;
36 this.serializedObjectIds = new (core.Map$(dart.dynamic, core.int)).identit y(); 36 this.serializedObjectIds = new (core.Map$(core.Object, core.int)).identity ();
37 this[_serializeSendPorts] = dart.as(serializeSendPorts, core.bool); 37 this[_serializeSendPorts] = dart.as(serializeSendPorts, core.bool);
38 } 38 }
39 serialize(x) { 39 serialize(x) {
40 if (this.isPrimitive(x)) 40 if (this.isPrimitive(x))
41 return this.serializePrimitive(x); 41 return this.serializePrimitive(x);
42 let serializationId = this.serializedObjectIds.get(x); 42 let serializationId = this.serializedObjectIds.get(x);
43 if (serializationId != null) 43 if (serializationId != null)
44 return this.makeRef(serializationId); 44 return this.makeRef(serializationId);
45 serializationId = this.serializedObjectIds.length; 45 serializationId = this.serializedObjectIds.length;
46 this.serializedObjectIds.set(x, serializationId); 46 this.serializedObjectIds.set(x, serializationId);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 return serialized; 112 return serialized;
113 } 113 }
114 serializeArrayInPlace(x) { 114 serializeArrayInPlace(x) {
115 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) { 115 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) {
116 x[core.$set](i, this.serialize(x[core.$get](i))); 116 x[core.$set](i, this.serialize(x[core.$get](i)));
117 } 117 }
118 return x; 118 return x;
119 } 119 }
120 serializeMap(x) { 120 serializeMap(x) {
121 let serializeTearOff = dart.bind(this, 'serialize'); 121 let serializeTearOff = dart.bind(this, 'serialize');
122 return ['map', x.keys[core.$map](dart.as(serializeTearOff, __CastType0))[c ore.$toList](), x.values[core.$map](dart.as(serializeTearOff, dart.functionType( dart.dynamic, [dart.dynamic])))[core.$toList]()]; 122 return ['map', x.keys[core.$map](dart.as(serializeTearOff, __CastType0))[c ore.$toList](), x.values[core.$map](dart.as(serializeTearOff, dart.functionType( core.Object, [dart.bottom])))[core.$toList]()];
123 } 123 }
124 serializeJSObject(x) { 124 serializeJSObject(x) {
125 if (!!x.constructor && x.constructor !== Object) { 125 if (!!x.constructor && x.constructor !== Object) {
126 this.unsupported(x, "Only plain JS Objects are supported:"); 126 this.unsupported(x, "Only plain JS Objects are supported:");
127 } 127 }
128 let keys = dart.as(Object.keys(x), core.List); 128 let keys = dart.as(Object.keys(x), core.List);
129 let values = []; 129 let values = [];
130 values[core.$length] = keys[core.$length]; 130 values[core.$length] = keys[core.$length];
131 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) { 131 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) {
132 values[core.$set](i, this.serialize(x[keys[core.$get](i)])); 132 values[core.$set](i, this.serialize(x[keys[core.$get](i)]));
(...skipping 26 matching lines...) Expand all
159 serializeDartObject(x) { 159 serializeDartObject(x) {
160 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR); 160 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR);
161 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR); 161 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR);
162 let classId = classExtractor(x); 162 let classId = classExtractor(x);
163 let fields = dart.as(fieldsExtractor(x), core.List); 163 let fields = dart.as(fieldsExtractor(x), core.List);
164 return ['dart', classId, this.serializeArrayInPlace(dart.as(fields, _inter ceptors.JSArray))]; 164 return ['dart', classId, this.serializeArrayInPlace(dart.as(fields, _inter ceptors.JSArray))];
165 } 165 }
166 } 166 }
167 dart.setSignature(_Serializer, { 167 dart.setSignature(_Serializer, {
168 methods: () => ({ 168 methods: () => ({
169 serialize: [dart.dynamic, [dart.dynamic]], 169 serialize: [core.Object, [core.Object]],
170 unsupported: [dart.void, [dart.dynamic], [core.String]], 170 unsupported: [dart.void, [core.Object], [core.String]],
171 makeRef: [dart.dynamic, [core.int]], 171 makeRef: [core.Object, [core.int]],
172 isPrimitive: [core.bool, [dart.dynamic]], 172 isPrimitive: [core.bool, [core.Object]],
173 serializePrimitive: [dart.dynamic, [dart.dynamic]], 173 serializePrimitive: [core.Object, [core.Object]],
174 serializeByteBuffer: [dart.dynamic, [_native_typed_data.NativeByteBuffer]] , 174 serializeByteBuffer: [core.Object, [_native_typed_data.NativeByteBuffer]],
175 serializeTypedData: [dart.dynamic, [_native_typed_data.NativeTypedData]], 175 serializeTypedData: [core.Object, [_native_typed_data.NativeTypedData]],
176 serializeJSIndexable: [dart.dynamic, [_interceptors.JSIndexable]], 176 serializeJSIndexable: [core.Object, [_interceptors.JSIndexable]],
177 serializeArray: [dart.dynamic, [_interceptors.JSArray]], 177 serializeArray: [core.Object, [_interceptors.JSArray]],
178 serializeArrayInPlace: [dart.dynamic, [_interceptors.JSArray]], 178 serializeArrayInPlace: [core.Object, [_interceptors.JSArray]],
179 serializeMap: [dart.dynamic, [core.Map]], 179 serializeMap: [core.Object, [core.Map]],
180 serializeJSObject: [dart.dynamic, [_interceptors.JSObject]], 180 serializeJSObject: [core.Object, [_interceptors.JSObject]],
181 serializeWorkerSendPort: [dart.dynamic, [_WorkerSendPort]], 181 serializeWorkerSendPort: [core.Object, [_WorkerSendPort]],
182 serializeJsSendPort: [dart.dynamic, [_NativeJsSendPort]], 182 serializeJsSendPort: [core.Object, [_NativeJsSendPort]],
183 serializeCapability: [dart.dynamic, [CapabilityImpl]], 183 serializeCapability: [core.Object, [CapabilityImpl]],
184 serializeClosure: [dart.dynamic, [_js_helper.Closure]], 184 serializeClosure: [core.Object, [_js_helper.Closure]],
185 serializeDartObject: [dart.dynamic, [dart.dynamic]] 185 serializeDartObject: [core.Object, [core.Object]]
186 }) 186 })
187 }); 187 });
188 let _adjustSendPorts = Symbol('_adjustSendPorts'); 188 let _adjustSendPorts = Symbol('_adjustSendPorts');
189 class _Deserializer extends core.Object { 189 class _Deserializer extends core.Object {
190 _Deserializer(opts) { 190 _Deserializer(opts) {
191 let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendP orts : true; 191 let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendP orts : true;
192 this.deserializedObjects = new core.List(); 192 this.deserializedObjects = new core.List();
193 this[_adjustSendPorts] = dart.as(adjustSendPorts, core.bool); 193 this[_adjustSendPorts] = dart.as(adjustSendPorts, core.bool);
194 } 194 }
195 deserialize(x) { 195 deserialize(x) {
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embed ded_names.INSTANCE_FROM_CLASS_ID); 372 let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embed ded_names.INSTANCE_FROM_CLASS_ID);
373 let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded _names.INITIALIZE_EMPTY_INSTANCE); 373 let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded _names.INITIALIZE_EMPTY_INSTANCE);
374 let emptyInstance = instanceFromClassId(classId); 374 let emptyInstance = instanceFromClassId(classId);
375 this.deserializedObjects[core.$add](emptyInstance); 375 this.deserializedObjects[core.$add](emptyInstance);
376 this.deserializeArrayInPlace(dart.as(fields, _interceptors.JSArray)); 376 this.deserializeArrayInPlace(dart.as(fields, _interceptors.JSArray));
377 return initializeObject(classId, emptyInstance, fields); 377 return initializeObject(classId, emptyInstance, fields);
378 } 378 }
379 } 379 }
380 dart.setSignature(_Deserializer, { 380 dart.setSignature(_Deserializer, {
381 methods: () => ({ 381 methods: () => ({
382 deserialize: [dart.dynamic, [dart.dynamic]], 382 deserialize: [core.Object, [core.Object]],
383 isPrimitive: [core.bool, [dart.dynamic]], 383 isPrimitive: [core.bool, [core.Object]],
384 deserializePrimitive: [dart.dynamic, [dart.dynamic]], 384 deserializePrimitive: [core.Object, [core.Object]],
385 deserializeRef: [dart.dynamic, [dart.dynamic]], 385 deserializeRef: [core.Object, [core.Object]],
386 deserializeByteBuffer: [_native_typed_data.NativeByteBuffer, [dart.dynamic ]], 386 deserializeByteBuffer: [_native_typed_data.NativeByteBuffer, [core.Object] ],
387 deserializeTypedData: [_native_typed_data.NativeTypedData, [dart.dynamic]] , 387 deserializeTypedData: [_native_typed_data.NativeTypedData, [core.Object]],
388 deserializeArrayInPlace: [core.List, [_interceptors.JSArray]], 388 deserializeArrayInPlace: [core.List, [_interceptors.JSArray]],
389 deserializeFixed: [core.List, [dart.dynamic]], 389 deserializeFixed: [core.List, [core.Object]],
390 deserializeExtendable: [core.List, [dart.dynamic]], 390 deserializeExtendable: [core.List, [core.Object]],
391 deserializeMutable: [core.List, [dart.dynamic]], 391 deserializeMutable: [core.List, [core.Object]],
392 deserializeConst: [core.List, [dart.dynamic]], 392 deserializeConst: [core.List, [core.Object]],
393 deserializeMap: [core.Map, [dart.dynamic]], 393 deserializeMap: [core.Map, [core.Object]],
394 deserializeSendPort: [isolate.SendPort, [dart.dynamic]], 394 deserializeSendPort: [isolate.SendPort, [core.Object]],
395 deserializeRawSendPort: [isolate.SendPort, [dart.dynamic]], 395 deserializeRawSendPort: [isolate.SendPort, [core.Object]],
396 deserializeJSObject: [dart.dynamic, [dart.dynamic]], 396 deserializeJSObject: [core.Object, [core.Object]],
397 deserializeClosure: [core.Function, [dart.dynamic]], 397 deserializeClosure: [core.Function, [core.Object]],
398 deserializeDartObject: [dart.dynamic, [dart.dynamic]] 398 deserializeDartObject: [core.Object, [core.Object]]
399 }) 399 })
400 }); 400 });
401 let __CastType0 = dart.typedef('__CastType0', () => dart.functionType(dart.dyn amic, [dart.dynamic])); 401 let __CastType0 = dart.typedef('__CastType0', () => dart.functionType(core.Obj ect, [dart.bottom]));
402 function _callInIsolate(isolate, func) { 402 function _callInIsolate(isolate, func) {
403 let result = isolate.eval(func); 403 let result = isolate.eval(func);
404 exports._globalState.topEventLoop.run(); 404 exports._globalState.topEventLoop.run();
405 return result; 405 return result;
406 } 406 }
407 dart.fn(_callInIsolate, () => dart.functionType(dart.dynamic, [_IsolateContext , core.Function])); 407 dart.fn(_callInIsolate, () => dart.functionType(core.Object, [_IsolateContext, core.Function]));
408 let _activeJsAsyncCount = Symbol('_activeJsAsyncCount'); 408 let _activeJsAsyncCount = Symbol('_activeJsAsyncCount');
409 function enterJsAsync() { 409 function enterJsAsync() {
410 let o = exports._globalState.topEventLoop; 410 let o = exports._globalState.topEventLoop;
411 o[_activeJsAsyncCount] = dart.notNull(o[_activeJsAsyncCount]) + 1; 411 o[_activeJsAsyncCount] = dart.notNull(o[_activeJsAsyncCount]) + 1;
412 } 412 }
413 dart.fn(enterJsAsync); 413 dart.fn(enterJsAsync);
414 function leaveJsAsync() { 414 function leaveJsAsync() {
415 let o = exports._globalState.topEventLoop; 415 let o = exports._globalState.topEventLoop;
416 o[_activeJsAsyncCount] = dart.notNull(o[_activeJsAsyncCount]) - 1; 416 o[_activeJsAsyncCount] = dart.notNull(o[_activeJsAsyncCount]) - 1;
417 dart.assert(dart.notNull(exports._globalState.topEventLoop[_activeJsAsyncCou nt]) >= 0); 417 dart.assert(dart.notNull(exports._globalState.topEventLoop[_activeJsAsyncCou nt]) >= 0);
(...skipping 26 matching lines...) Expand all
444 })); 444 }));
445 } else if (dart.is(entry, _MainFunctionArgsMessage)) { 445 } else if (dart.is(entry, _MainFunctionArgsMessage)) {
446 rootContext.eval(dart.fn(() => { 446 rootContext.eval(dart.fn(() => {
447 dart.dcall(entry, args, null); 447 dart.dcall(entry, args, null);
448 })); 448 }));
449 } else { 449 } else {
450 rootContext.eval(dart.as(entry, core.Function)); 450 rootContext.eval(dart.as(entry, core.Function));
451 } 451 }
452 exports._globalState.topEventLoop.run(); 452 exports._globalState.topEventLoop.run();
453 } 453 }
454 dart.fn(startRootIsolate, dart.void, [dart.dynamic, dart.dynamic]); 454 dart.fn(startRootIsolate, dart.void, [core.Object, core.Object]);
455 dart.copyProperties(exports, { 455 dart.copyProperties(exports, {
456 get _globalState() { 456 get _globalState() {
457 return dart.as(dart.globalState, _Manager); 457 return dart.as(dart.globalState, _Manager);
458 }, 458 },
459 set _globalState(val) { 459 set _globalState(val) {
460 dart.globalState = val; 460 dart.globalState = val;
461 } 461 }
462 }); 462 });
463 let _nativeDetectEnvironment = Symbol('_nativeDetectEnvironment'); 463 let _nativeDetectEnvironment = Symbol('_nativeDetectEnvironment');
464 let _nativeInitWorkerMessageHandler = Symbol('_nativeInitWorkerMessageHandler' ); 464 let _nativeInitWorkerMessageHandler = Symbol('_nativeInitWorkerMessageHandler' );
(...skipping 11 matching lines...) Expand all
476 this.topEventLoop = null; 476 this.topEventLoop = null;
477 this.fromCommandLine = null; 477 this.fromCommandLine = null;
478 this.isWorker = null; 478 this.isWorker = null;
479 this.supportsWorkers = null; 479 this.supportsWorkers = null;
480 this.isolates = null; 480 this.isolates = null;
481 this.mainManager = null; 481 this.mainManager = null;
482 this.managers = null; 482 this.managers = null;
483 this[_nativeDetectEnvironment](); 483 this[_nativeDetectEnvironment]();
484 this.topEventLoop = new _EventLoop(); 484 this.topEventLoop = new _EventLoop();
485 this.isolates = new (core.Map$(core.int, _IsolateContext))(); 485 this.isolates = new (core.Map$(core.int, _IsolateContext))();
486 this.managers = new (core.Map$(core.int, dart.dynamic))(); 486 this.managers = new (core.Map$(core.int, core.Object))();
487 if (this.isWorker) { 487 if (this.isWorker) {
488 this.mainManager = new _MainManagerStub(); 488 this.mainManager = new _MainManagerStub();
489 this[_nativeInitWorkerMessageHandler](); 489 this[_nativeInitWorkerMessageHandler]();
490 } 490 }
491 } 491 }
492 [_nativeDetectEnvironment]() { 492 [_nativeDetectEnvironment]() {
493 let isWindowDefined = exports.globalWindow != null; 493 let isWindowDefined = exports.globalWindow != null;
494 let isWorkerDefined = exports.globalWorker != null; 494 let isWorkerDefined = exports.globalWorker != null;
495 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo balPostMessageDefined); 495 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo balPostMessageDefined);
496 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke rDefined) && IsolateNatives.thisScript != null; 496 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke rDefined) && IsolateNatives.thisScript != null;
(...skipping 24 matching lines...) Expand all
521 this.mainManager.postMessage(_serializeMessage(dart.map({command: 'close '}))); 521 this.mainManager.postMessage(_serializeMessage(dart.map({command: 'close '})));
522 } 522 }
523 } 523 }
524 } 524 }
525 dart.setSignature(_Manager, { 525 dart.setSignature(_Manager, {
526 methods: () => ({ 526 methods: () => ({
527 [_nativeDetectEnvironment]: [dart.void, []], 527 [_nativeDetectEnvironment]: [dart.void, []],
528 [_nativeInitWorkerMessageHandler]: [dart.void, []], 528 [_nativeInitWorkerMessageHandler]: [dart.void, []],
529 maybeCloseWorker: [dart.void, []] 529 maybeCloseWorker: [dart.void, []]
530 }), 530 }),
531 statics: () => ({_serializePrintMessage: [dart.dynamic, [dart.dynamic]]}), 531 statics: () => ({_serializePrintMessage: [core.Object, [core.Object]]}),
532 names: ['_serializePrintMessage'] 532 names: ['_serializePrintMessage']
533 }); 533 });
534 let _scheduledControlEvents = Symbol('_scheduledControlEvents'); 534 let _scheduledControlEvents = Symbol('_scheduledControlEvents');
535 let _isExecutingEvent = Symbol('_isExecutingEvent'); 535 let _isExecutingEvent = Symbol('_isExecutingEvent');
536 let _updateGlobalState = Symbol('_updateGlobalState'); 536 let _updateGlobalState = Symbol('_updateGlobalState');
537 let _setGlobals = Symbol('_setGlobals'); 537 let _setGlobals = Symbol('_setGlobals');
538 let _addRegistration = Symbol('_addRegistration'); 538 let _addRegistration = Symbol('_addRegistration');
539 let _close = Symbol('_close'); 539 let _close = Symbol('_close');
540 class _IsolateContext extends core.Object { 540 class _IsolateContext extends core.Object {
541 _IsolateContext() { 541 _IsolateContext() {
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 methods: () => ({ 799 methods: () => ({
800 addPause: [dart.void, [isolate.Capability, isolate.Capability]], 800 addPause: [dart.void, [isolate.Capability, isolate.Capability]],
801 removePause: [dart.void, [isolate.Capability]], 801 removePause: [dart.void, [isolate.Capability]],
802 addDoneListener: [dart.void, [isolate.SendPort]], 802 addDoneListener: [dart.void, [isolate.SendPort]],
803 removeDoneListener: [dart.void, [isolate.SendPort]], 803 removeDoneListener: [dart.void, [isolate.SendPort]],
804 setErrorsFatal: [dart.void, [isolate.Capability, core.bool]], 804 setErrorsFatal: [dart.void, [isolate.Capability, core.bool]],
805 handlePing: [dart.void, [isolate.SendPort, core.int]], 805 handlePing: [dart.void, [isolate.SendPort, core.int]],
806 handleKill: [dart.void, [isolate.Capability, core.int]], 806 handleKill: [dart.void, [isolate.Capability, core.int]],
807 addErrorListener: [dart.void, [isolate.SendPort]], 807 addErrorListener: [dart.void, [isolate.SendPort]],
808 removeErrorListener: [dart.void, [isolate.SendPort]], 808 removeErrorListener: [dart.void, [isolate.SendPort]],
809 handleUncaughtError: [dart.void, [dart.dynamic, core.StackTrace]], 809 handleUncaughtError: [dart.void, [core.Object, core.StackTrace]],
810 eval: [dart.dynamic, [core.Function]], 810 eval: [core.Object, [core.Function]],
811 [_setGlobals]: [dart.void, []], 811 [_setGlobals]: [dart.void, []],
812 handleControlMessage: [dart.void, [dart.dynamic]], 812 handleControlMessage: [dart.void, [core.Object]],
813 lookup: [RawReceivePortImpl, [core.int]], 813 lookup: [RawReceivePortImpl, [core.int]],
814 [_addRegistration]: [dart.void, [core.int, RawReceivePortImpl]], 814 [_addRegistration]: [dart.void, [core.int, RawReceivePortImpl]],
815 register: [dart.void, [core.int, RawReceivePortImpl]], 815 register: [dart.void, [core.int, RawReceivePortImpl]],
816 registerWeak: [dart.void, [core.int, RawReceivePortImpl]], 816 registerWeak: [dart.void, [core.int, RawReceivePortImpl]],
817 [_updateGlobalState]: [dart.void, []], 817 [_updateGlobalState]: [dart.void, []],
818 kill: [dart.void, []], 818 kill: [dart.void, []],
819 unregister: [dart.void, [core.int]] 819 unregister: [dart.void, [core.int]]
820 }) 820 })
821 }); 821 });
822 let _runHelper = Symbol('_runHelper'); 822 let _runHelper = Symbol('_runHelper');
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 } catch (e) { 874 } catch (e) {
875 let trace = dart.stackTrace(e); 875 let trace = dart.stackTrace(e);
876 exports._globalState.mainManager.postMessage(_serializeMessage(dart.ma p({command: 'error', msg: `${e}\n${trace}`}))); 876 exports._globalState.mainManager.postMessage(_serializeMessage(dart.ma p({command: 'error', msg: `${e}\n${trace}`})));
877 } 877 }
878 878
879 } 879 }
880 } 880 }
881 } 881 }
882 dart.setSignature(_EventLoop, { 882 dart.setSignature(_EventLoop, {
883 methods: () => ({ 883 methods: () => ({
884 enqueue: [dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]], 884 enqueue: [dart.void, [core.Object, core.Object, core.Object]],
885 prequeue: [dart.void, [_IsolateEvent]], 885 prequeue: [dart.void, [_IsolateEvent]],
886 dequeue: [_IsolateEvent, []], 886 dequeue: [_IsolateEvent, []],
887 checkOpenReceivePortsFromCommandLine: [dart.void, []], 887 checkOpenReceivePortsFromCommandLine: [dart.void, []],
888 runIteration: [core.bool, []], 888 runIteration: [core.bool, []],
889 [_runHelper]: [dart.void, []], 889 [_runHelper]: [dart.void, []],
890 run: [dart.void, []] 890 run: [dart.void, []]
891 }) 891 })
892 }); 892 });
893 class _IsolateEvent extends core.Object { 893 class _IsolateEvent extends core.Object {
894 _IsolateEvent(isolate, fn, message) { 894 _IsolateEvent(isolate, fn, message) {
(...skipping 12 matching lines...) Expand all
907 dart.setSignature(_IsolateEvent, { 907 dart.setSignature(_IsolateEvent, {
908 methods: () => ({process: [dart.void, []]}) 908 methods: () => ({process: [dart.void, []]})
909 }); 909 });
910 class _MainManagerStub extends core.Object { 910 class _MainManagerStub extends core.Object {
911 postMessage(msg) { 911 postMessage(msg) {
912 _js_helper.requiresPreamble(); 912 _js_helper.requiresPreamble();
913 self.postMessage(msg); 913 self.postMessage(msg);
914 } 914 }
915 } 915 }
916 dart.setSignature(_MainManagerStub, { 916 dart.setSignature(_MainManagerStub, {
917 methods: () => ({postMessage: [dart.void, [dart.dynamic]]}) 917 methods: () => ({postMessage: [dart.void, [core.Object]]})
918 }); 918 });
919 let _SPAWNED_SIGNAL = "spawned"; 919 let _SPAWNED_SIGNAL = "spawned";
920 let _SPAWN_FAILED_SIGNAL = "spawn failed"; 920 let _SPAWN_FAILED_SIGNAL = "spawn failed";
921 dart.copyProperties(exports, { 921 dart.copyProperties(exports, {
922 get globalWindow() { 922 get globalWindow() {
923 _js_helper.requiresPreamble(); 923 _js_helper.requiresPreamble();
924 return self.window; 924 return self.window;
925 }, 925 },
926 get globalWorker() { 926 get globalWorker() {
927 _js_helper.requiresPreamble(); 927 _js_helper.requiresPreamble();
928 return self.Worker; 928 return self.Worker;
929 }, 929 },
930 get globalPostMessageDefined() { 930 get globalPostMessageDefined() {
931 _js_helper.requiresPreamble(); 931 _js_helper.requiresPreamble();
932 return !!self.postMessage; 932 return !!self.postMessage;
933 } 933 }
934 }); 934 });
935 let _MainFunction = dart.typedef('_MainFunction', () => dart.functionType(dart .dynamic, [])); 935 let _MainFunction = dart.typedef('_MainFunction', () => dart.functionType(core .Object, []));
936 let _MainFunctionArgs = dart.typedef('_MainFunctionArgs', () => dart.functionT ype(dart.dynamic, [dart.dynamic])); 936 let _MainFunctionArgs = dart.typedef('_MainFunctionArgs', () => dart.functionT ype(core.Object, [dart.bottom]));
937 let _MainFunctionArgsMessage = dart.typedef('_MainFunctionArgsMessage', () => dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic])); 937 let _MainFunctionArgsMessage = dart.typedef('_MainFunctionArgsMessage', () => dart.functionType(core.Object, [dart.bottom, dart.bottom]));
938 class IsolateNatives extends core.Object { 938 class IsolateNatives extends core.Object {
939 static computeThisScript() { 939 static computeThisScript() {
940 let currentScript = document.currentScript; 940 let currentScript = document.currentScript;
941 if (currentScript != null) { 941 if (currentScript != null) {
942 return String(currentScript.src); 942 return String(currentScript.src);
943 } 943 }
944 if (_js_helper.Primitives.isD8) 944 if (_js_helper.Primitives.isD8)
945 return IsolateNatives.computeThisScriptD8(); 945 return IsolateNatives.computeThisScriptD8();
946 if (_js_helper.Primitives.isJsshell) 946 if (_js_helper.Primitives.isJsshell)
947 return IsolateNatives.computeThisScriptJsshell(); 947 return IsolateNatives.computeThisScriptJsshell();
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 throw dart.dindex(msg, 'msg'); 1045 throw dart.dindex(msg, 'msg');
1046 } 1046 }
1047 } 1047 }
1048 } 1048 }
1049 static handleSpawnWorkerRequest(msg) { 1049 static handleSpawnWorkerRequest(msg) {
1050 let replyPort = dart.dindex(msg, 'replyPort'); 1050 let replyPort = dart.dindex(msg, 'replyPort');
1051 IsolateNatives.spawn(dart.as(dart.dindex(msg, 'functionName'), core.String ), dart.as(dart.dindex(msg, 'uri'), core.String), dart.as(dart.dindex(msg, 'args '), core.List$(core.String)), dart.dindex(msg, 'msg'), false, dart.as(dart.dinde x(msg, 'isSpawnUri'), core.bool), dart.as(dart.dindex(msg, 'startPaused'), core. bool)).then(dart.fn(msg => { 1051 IsolateNatives.spawn(dart.as(dart.dindex(msg, 'functionName'), core.String ), dart.as(dart.dindex(msg, 'uri'), core.String), dart.as(dart.dindex(msg, 'args '), core.List$(core.String)), dart.dindex(msg, 'msg'), false, dart.as(dart.dinde x(msg, 'isSpawnUri'), core.bool), dart.as(dart.dindex(msg, 'startPaused'), core. bool)).then(dart.fn(msg => {
1052 dart.dsend(replyPort, 'send', msg); 1052 dart.dsend(replyPort, 'send', msg);
1053 }), {onError: dart.fn(errorMessage => { 1053 }), {onError: dart.fn(errorMessage => {
1054 dart.dsend(replyPort, 'send', [_SPAWN_FAILED_SIGNAL, errorMessage]); 1054 dart.dsend(replyPort, 'send', [_SPAWN_FAILED_SIGNAL, errorMessage]);
1055 }, dart.dynamic, [core.String])}); 1055 }, core.Object, [core.String])});
1056 } 1056 }
1057 static _log(msg) { 1057 static _log(msg) {
1058 if (exports._globalState.isWorker) { 1058 if (exports._globalState.isWorker) {
1059 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg}))); 1059 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg})));
1060 } else { 1060 } else {
1061 try { 1061 try {
1062 IsolateNatives._consoleLog(msg); 1062 IsolateNatives._consoleLog(msg);
1063 } catch (e) { 1063 } catch (e) {
1064 let trace = dart.stackTrace(e); 1064 let trace = dart.stackTrace(e);
1065 throw new core.Exception(trace); 1065 throw new core.Exception(trace);
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1203 onError(message); 1203 onError(message);
1204 return true; 1204 return true;
1205 } 1205 }
1206 } 1206 }
1207 dart.setSignature(IsolateNatives, { 1207 dart.setSignature(IsolateNatives, {
1208 statics: () => ({ 1208 statics: () => ({
1209 computeThisScript: [core.String, []], 1209 computeThisScript: [core.String, []],
1210 computeThisScriptJsshell: [core.String, []], 1210 computeThisScriptJsshell: [core.String, []],
1211 computeThisScriptD8: [core.String, []], 1211 computeThisScriptD8: [core.String, []],
1212 computeThisScriptFromTrace: [core.String, []], 1212 computeThisScriptFromTrace: [core.String, []],
1213 _getEventData: [dart.dynamic, [dart.dynamic]], 1213 _getEventData: [core.Object, [core.Object]],
1214 _processWorkerMessage: [dart.void, [dart.dynamic, dart.dynamic]], 1214 _processWorkerMessage: [dart.void, [core.Object, core.Object]],
1215 handleSpawnWorkerRequest: [dart.dynamic, [dart.dynamic]], 1215 handleSpawnWorkerRequest: [core.Object, [core.Object]],
1216 _log: [dart.dynamic, [dart.dynamic]], 1216 _log: [core.Object, [core.Object]],
1217 _consoleLog: [dart.void, [dart.dynamic]], 1217 _consoleLog: [dart.void, [core.Object]],
1218 _getJSFunctionFromName: [dart.dynamic, [core.String]], 1218 _getJSFunctionFromName: [core.Object, [core.String]],
1219 _getJSFunctionName: [core.String, [core.Function]], 1219 _getJSFunctionName: [core.String, [core.Function]],
1220 _allocate: [dart.dynamic, [dart.dynamic]], 1220 _allocate: [core.Object, [core.Object]],
1221 spawnFunction: [async.Future$(core.List), [dart.functionType(dart.void, [d art.dynamic]), dart.dynamic, core.bool]], 1221 spawnFunction: [async.Future$(core.List), [dart.functionType(dart.void, [d art.bottom]), core.Object, core.bool]],
1222 spawnUri: [async.Future$(core.List), [core.Uri, core.List$(core.String), d art.dynamic, core.bool]], 1222 spawnUri: [async.Future$(core.List), [core.Uri, core.List$(core.String), c ore.Object, core.bool]],
1223 spawn: [async.Future$(core.List), [core.String, core.String, core.List$(co re.String), dart.dynamic, core.bool, core.bool, core.bool]], 1223 spawn: [async.Future$(core.List), [core.String, core.String, core.List$(co re.String), core.Object, core.bool, core.bool, core.bool]],
1224 _startWorker: [dart.void, [core.String, core.String, core.List$(core.Strin g), dart.dynamic, core.bool, core.bool, isolate.SendPort, dart.functionType(dart .void, [core.String])]], 1224 _startWorker: [dart.void, [core.String, core.String, core.List$(core.Strin g), core.Object, core.bool, core.bool, isolate.SendPort, dart.functionType(dart. void, [core.String])]],
1225 _startNonWorker: [dart.void, [core.String, core.String, core.List$(core.St ring), dart.dynamic, core.bool, core.bool, isolate.SendPort]], 1225 _startNonWorker: [dart.void, [core.String, core.String, core.List$(core.St ring), core.Object, core.bool, core.bool, isolate.SendPort]],
1226 _startIsolate: [dart.void, [core.Function, core.List$(core.String), dart.d ynamic, core.bool, core.bool, isolate.SendPort]], 1226 _startIsolate: [dart.void, [core.Function, core.List$(core.String), core.O bject, core.bool, core.bool, isolate.SendPort]],
1227 _spawnWorker: [dart.void, [dart.dynamic, core.String, core.List$(core.Stri ng), dart.dynamic, core.bool, core.bool, isolate.SendPort, dart.functionType(dar t.void, [core.String])]], 1227 _spawnWorker: [dart.void, [core.Object, core.String, core.List$(core.Strin g), core.Object, core.bool, core.bool, isolate.SendPort, dart.functionType(dart. void, [core.String])]],
1228 workerOnError: [core.bool, [dart.dynamic, core.String, dart.functionType(d art.void, [core.String])]] 1228 workerOnError: [core.bool, [core.Object, core.String, dart.functionType(da rt.void, [core.String])]]
1229 }), 1229 }),
1230 names: ['computeThisScript', 'computeThisScriptJsshell', 'computeThisScriptD 8', 'computeThisScriptFromTrace', '_getEventData', '_processWorkerMessage', 'han dleSpawnWorkerRequest', '_log', '_consoleLog', '_getJSFunctionFromName', '_getJS FunctionName', '_allocate', 'spawnFunction', 'spawnUri', 'spawn', '_startWorker' , '_startNonWorker', '_startIsolate', '_spawnWorker', 'workerOnError'] 1230 names: ['computeThisScript', 'computeThisScriptJsshell', 'computeThisScriptD 8', 'computeThisScriptFromTrace', '_getEventData', '_processWorkerMessage', 'han dleSpawnWorkerRequest', '_log', '_consoleLog', '_getJSFunctionFromName', '_getJS FunctionName', '_allocate', 'spawnFunction', 'spawnUri', 'spawn', '_startWorker' , '_startNonWorker', '_startIsolate', '_spawnWorker', 'workerOnError']
1231 }); 1231 });
1232 IsolateNatives.enableSpawnWorker = null; 1232 IsolateNatives.enableSpawnWorker = null;
1233 dart.defineLazyProperties(IsolateNatives, { 1233 dart.defineLazyProperties(IsolateNatives, {
1234 get thisScript() { 1234 get thisScript() {
1235 return IsolateNatives.computeThisScript(); 1235 return IsolateNatives.computeThisScript();
1236 }, 1236 },
1237 set thisScript(_) {}, 1237 set thisScript(_) {},
1238 get workerIds() { 1238 get workerIds() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1280 } 1280 }
1281 ['=='](other) { 1281 ['=='](other) {
1282 return dart.is(other, _NativeJsSendPort) && dart.notNull(dart.equals(this[ _receivePort], dart.dload(other, _receivePort))); 1282 return dart.is(other, _NativeJsSendPort) && dart.notNull(dart.equals(this[ _receivePort], dart.dload(other, _receivePort)));
1283 } 1283 }
1284 get hashCode() { 1284 get hashCode() {
1285 return this[_receivePort][_id]; 1285 return this[_receivePort][_id];
1286 } 1286 }
1287 } 1287 }
1288 _NativeJsSendPort[dart.implements] = () => [isolate.SendPort]; 1288 _NativeJsSendPort[dart.implements] = () => [isolate.SendPort];
1289 dart.setSignature(_NativeJsSendPort, { 1289 dart.setSignature(_NativeJsSendPort, {
1290 methods: () => ({send: [dart.void, [dart.dynamic]]}) 1290 methods: () => ({send: [dart.void, [core.Object]]})
1291 }); 1291 });
1292 class _WorkerSendPort extends _BaseSendPort { 1292 class _WorkerSendPort extends _BaseSendPort {
1293 _WorkerSendPort(workerId, isolateId, receivePortId) { 1293 _WorkerSendPort(workerId, isolateId, receivePortId) {
1294 this[_workerId] = workerId; 1294 this[_workerId] = workerId;
1295 this[_receivePortId] = receivePortId; 1295 this[_receivePortId] = receivePortId;
1296 super._BaseSendPort(isolateId); 1296 super._BaseSendPort(isolateId);
1297 } 1297 }
1298 send(message) { 1298 send(message) {
1299 let workerMessage = _serializeMessage(dart.map({command: 'message', port: this, msg: message})); 1299 let workerMessage = _serializeMessage(dart.map({command: 'message', port: this, msg: message}));
1300 if (exports._globalState.isWorker) { 1300 if (exports._globalState.isWorker) {
1301 exports._globalState.mainManager.postMessage(workerMessage); 1301 exports._globalState.mainManager.postMessage(workerMessage);
1302 } else { 1302 } else {
1303 let manager = exports._globalState.managers.get(this[_workerId]); 1303 let manager = exports._globalState.managers.get(this[_workerId]);
1304 if (manager != null) { 1304 if (manager != null) {
1305 manager.postMessage(workerMessage); 1305 manager.postMessage(workerMessage);
1306 } 1306 }
1307 } 1307 }
1308 } 1308 }
1309 ['=='](other) { 1309 ['=='](other) {
1310 return dart.is(other, _WorkerSendPort) && dart.equals(this[_workerId], dar t.dload(other, _workerId)) && dart.equals(this[_isolateId], dart.dload(other, _i solateId)) && dart.equals(this[_receivePortId], dart.dload(other, _receivePortId )); 1310 return dart.is(other, _WorkerSendPort) && dart.equals(this[_workerId], dar t.dload(other, _workerId)) && dart.equals(this[_isolateId], dart.dload(other, _i solateId)) && dart.equals(this[_receivePortId], dart.dload(other, _receivePortId ));
1311 } 1311 }
1312 get hashCode() { 1312 get hashCode() {
1313 return dart.notNull(this[_workerId]) << 16 ^ dart.notNull(this[_isolateId] ) << 8 ^ dart.notNull(this[_receivePortId]); 1313 return dart.notNull(this[_workerId]) << 16 ^ dart.notNull(this[_isolateId] ) << 8 ^ dart.notNull(this[_receivePortId]);
1314 } 1314 }
1315 } 1315 }
1316 _WorkerSendPort[dart.implements] = () => [isolate.SendPort]; 1316 _WorkerSendPort[dart.implements] = () => [isolate.SendPort];
1317 dart.setSignature(_WorkerSendPort, { 1317 dart.setSignature(_WorkerSendPort, {
1318 methods: () => ({send: [dart.void, [dart.dynamic]]}) 1318 methods: () => ({send: [dart.void, [core.Object]]})
1319 }); 1319 });
1320 let _handler = Symbol('_handler'); 1320 let _handler = Symbol('_handler');
1321 class RawReceivePortImpl extends core.Object { 1321 class RawReceivePortImpl extends core.Object {
1322 RawReceivePortImpl(handler) { 1322 RawReceivePortImpl(handler) {
1323 this[_handler] = handler; 1323 this[_handler] = handler;
1324 this[_id] = (() => { 1324 this[_id] = (() => {
1325 let x = RawReceivePortImpl._nextFreeId; 1325 let x = RawReceivePortImpl._nextFreeId;
1326 RawReceivePortImpl._nextFreeId = dart.notNull(x) + 1; 1326 RawReceivePortImpl._nextFreeId = dart.notNull(x) + 1;
1327 return x; 1327 return x;
1328 })(); 1328 })();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 return new _NativeJsSendPort(this, exports._globalState.currentContext.id) ; 1367 return new _NativeJsSendPort(this, exports._globalState.currentContext.id) ;
1368 } 1368 }
1369 } 1369 }
1370 RawReceivePortImpl[dart.implements] = () => [isolate.RawReceivePort]; 1370 RawReceivePortImpl[dart.implements] = () => [isolate.RawReceivePort];
1371 dart.defineNamedConstructor(RawReceivePortImpl, 'weak'); 1371 dart.defineNamedConstructor(RawReceivePortImpl, 'weak');
1372 dart.defineNamedConstructor(RawReceivePortImpl, '_controlPort'); 1372 dart.defineNamedConstructor(RawReceivePortImpl, '_controlPort');
1373 dart.setSignature(RawReceivePortImpl, { 1373 dart.setSignature(RawReceivePortImpl, {
1374 methods: () => ({ 1374 methods: () => ({
1375 [_close]: [dart.void, []], 1375 [_close]: [dart.void, []],
1376 close: [dart.void, []], 1376 close: [dart.void, []],
1377 [_add]: [dart.void, [dart.dynamic]] 1377 [_add]: [dart.void, [core.Object]]
1378 }) 1378 })
1379 }); 1379 });
1380 RawReceivePortImpl._nextFreeId = 1; 1380 RawReceivePortImpl._nextFreeId = 1;
1381 let _rawPort = Symbol('_rawPort'); 1381 let _rawPort = Symbol('_rawPort');
1382 let _controller = Symbol('_controller'); 1382 let _controller = Symbol('_controller');
1383 class ReceivePortImpl extends async.Stream { 1383 class ReceivePortImpl extends async.Stream {
1384 ReceivePortImpl() { 1384 ReceivePortImpl() {
1385 this.fromRawReceivePort(new RawReceivePortImpl(null)); 1385 this.fromRawReceivePort(new RawReceivePortImpl(null));
1386 } 1386 }
1387 weak() { 1387 weak() {
(...skipping 18 matching lines...) Expand all
1406 } 1406 }
1407 get sendPort() { 1407 get sendPort() {
1408 return this[_rawPort].sendPort; 1408 return this[_rawPort].sendPort;
1409 } 1409 }
1410 } 1410 }
1411 ReceivePortImpl[dart.implements] = () => [isolate.ReceivePort]; 1411 ReceivePortImpl[dart.implements] = () => [isolate.ReceivePort];
1412 dart.defineNamedConstructor(ReceivePortImpl, 'weak'); 1412 dart.defineNamedConstructor(ReceivePortImpl, 'weak');
1413 dart.defineNamedConstructor(ReceivePortImpl, 'fromRawReceivePort'); 1413 dart.defineNamedConstructor(ReceivePortImpl, 'fromRawReceivePort');
1414 dart.setSignature(ReceivePortImpl, { 1414 dart.setSignature(ReceivePortImpl, {
1415 methods: () => ({ 1415 methods: () => ({
1416 listen: [async.StreamSubscription, [dart.functionType(dart.void, [dart.dyn amic])], {nErro: core.Function, nDon: dart.functionType(dart.void, []), ancelOnE rro: core.bool}], 1416 listen: [async.StreamSubscription, [dart.functionType(dart.void, [dart.bot tom])], {nErro: core.Function, nDon: dart.functionType(dart.void, []), ancelOnEr ro: core.bool}],
1417 close: [dart.void, []] 1417 close: [dart.void, []]
1418 }) 1418 })
1419 }); 1419 });
1420 let _once = Symbol('_once'); 1420 let _once = Symbol('_once');
1421 let _inEventLoop = Symbol('_inEventLoop'); 1421 let _inEventLoop = Symbol('_inEventLoop');
1422 let _handle = Symbol('_handle'); 1422 let _handle = Symbol('_handle');
1423 class TimerImpl extends core.Object { 1423 class TimerImpl extends core.Object {
1424 TimerImpl(milliseconds, callback) { 1424 TimerImpl(milliseconds, callback) {
1425 this[_once] = true; 1425 this[_once] = true;
1426 this[_inEventLoop] = false; 1426 this[_inEventLoop] = false;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 exports.leaveJsAsync = leaveJsAsync; 1530 exports.leaveJsAsync = leaveJsAsync;
1531 exports.isWorker = isWorker; 1531 exports.isWorker = isWorker;
1532 exports.startRootIsolate = startRootIsolate; 1532 exports.startRootIsolate = startRootIsolate;
1533 exports.IsolateNatives = IsolateNatives; 1533 exports.IsolateNatives = IsolateNatives;
1534 exports.RawReceivePortImpl = RawReceivePortImpl; 1534 exports.RawReceivePortImpl = RawReceivePortImpl;
1535 exports.ReceivePortImpl = ReceivePortImpl; 1535 exports.ReceivePortImpl = ReceivePortImpl;
1536 exports.TimerImpl = TimerImpl; 1536 exports.TimerImpl = TimerImpl;
1537 exports.hasTimer = hasTimer; 1537 exports.hasTimer = hasTimer;
1538 exports.CapabilityImpl = CapabilityImpl; 1538 exports.CapabilityImpl = CapabilityImpl;
1539 })(_isolate_helper, core, _native_typed_data, _interceptors, _js_helper, isolate , _foreign_helper, _js_embedded_names, collection, async); 1539 })(_isolate_helper, core, _native_typed_data, _interceptors, _js_helper, isolate , _foreign_helper, _js_embedded_names, collection, async);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698