| Index: test/codegen/expect/_isolate_helper/_isolate_helper.js
|
| diff --git a/test/codegen/expect/_isolate_helper/_isolate_helper.js b/test/codegen/expect/_isolate_helper/_isolate_helper.js
|
| index 7126c531a6352bba16df0e57b03c598abbfabdfd..92af8cdd087eaf6c5861c3b3a433345c39d3c972 100644
|
| --- a/test/codegen/expect/_isolate_helper/_isolate_helper.js
|
| +++ b/test/codegen/expect/_isolate_helper/_isolate_helper.js
|
| @@ -26,7 +26,7 @@ var _isolate_helper;
|
| }
|
| // Function startRootIsolate: (dynamic, dynamic) → void
|
| function startRootIsolate(entry, args) {
|
| - args = _foreign_helper.JS("", "#", args);
|
| + args = args;
|
| if (args === null)
|
| args = new List.from([]);
|
| if (!dart.is(args, core.List)) {
|
| @@ -53,10 +53,10 @@ var _isolate_helper;
|
| }
|
| dart.copyProperties(_isolate_helper, {
|
| get _globalState() {
|
| - return dart.as(_foreign_helper.JS("_Manager", "init.globalState"), _Manager);
|
| + return dart.as(init.globalState, _Manager);
|
| },
|
| set _globalState(val) {
|
| - _foreign_helper.JS("void", "init.globalState = #", val);
|
| + init.globalState = val;
|
| }
|
| });
|
| class _Manager extends dart.Object {
|
| @@ -94,9 +94,21 @@ var _isolate_helper;
|
| this.fromCommandLine = dart.notNull(!dart.notNull(isWindowDefined)) && dart.notNull(!dart.notNull(this.isWorker));
|
| }
|
| _nativeInitWorkerMessageHandler() {
|
| - let function = _foreign_helper.JS('', "(function (f, a) { return function (e) { f(a, e); }})(#, #)", _foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives._processWorkerMessage), this.mainManager);
|
| - _foreign_helper.JS("void", "self.onmessage = #", function);
|
| - _foreign_helper.JS('', 'self.dartPrint = self.dartPrint || (function(serialize) {\n return function (object) {\n if (self.console && self.console.log) {\n self.console.log(object)\n } else {\n self.postMessage(serialize(object));\n }\n }\n})(#)', _foreign_helper.DART_CLOSURE_TO_JS(_serializePrintMessage));
|
| + let function = function(f, a) {
|
| + return function(e) {
|
| + f(a, e);
|
| + };
|
| + }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives._processWorkerMessage), this.mainManager);
|
| + self.onmessage = function;
|
| + self.dartPrint = self.dartPrint || function(serialize) {
|
| + return function(object) {
|
| + if (self.console && self.console.log) {
|
| + self.console.log(object);
|
| + } else {
|
| + self.postMessage(serialize(object));
|
| + }
|
| + };
|
| + }(_foreign_helper.DART_CLOSURE_TO_JS(_serializePrintMessage));
|
| }
|
| static _serializePrintMessage(object) {
|
| return _serializeMessage(dart.map({command: "print", msg: object}));
|
| @@ -213,8 +225,8 @@ var _isolate_helper;
|
| if (dart.notNull(this.errorsAreFatal) && dart.notNull(core.identical(this, _isolate_helper._globalState.rootContext))) {
|
| return;
|
| }
|
| - if (_foreign_helper.JS('bool', 'self.console && self.console.error')) {
|
| - _foreign_helper.JS('void', 'self.console.error(#, #)', error, stackTrace);
|
| + if (self.console && self.console.error) {
|
| + self.console.error(error, stackTrace);
|
| } else {
|
| core.print(error);
|
| if (stackTrace !== null)
|
| @@ -418,7 +430,7 @@ var _isolate_helper;
|
| class _MainManagerStub extends dart.Object {
|
| postMessage(msg) {
|
| _js_helper.requiresPreamble();
|
| - _foreign_helper.JS("void", "self.postMessage(#)", msg);
|
| + self.postMessage(msg);
|
| }
|
| }
|
| let _SPAWNED_SIGNAL = "spawned";
|
| @@ -426,22 +438,22 @@ var _isolate_helper;
|
| dart.copyProperties(_isolate_helper, {
|
| get globalWindow() {
|
| _js_helper.requiresPreamble();
|
| - return _foreign_helper.JS('', "self.window");
|
| + return self.window;
|
| },
|
| get globalWorker() {
|
| _js_helper.requiresPreamble();
|
| - return _foreign_helper.JS('', "self.Worker");
|
| + return self.Worker;
|
| },
|
| get globalPostMessageDefined() {
|
| _js_helper.requiresPreamble();
|
| - return dart.as(_foreign_helper.JS('bool', "!!self.postMessage"), core.bool);
|
| + return !!self.postMessage;
|
| }
|
| });
|
| class IsolateNatives extends dart.Object {
|
| static computeThisScript() {
|
| let currentScript = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_embedded_names.CURRENT_SCRIPT, core.String));
|
| if (currentScript !== null) {
|
| - return dart.as(_foreign_helper.JS('String', 'String(#.src)', currentScript), core.String);
|
| + return String(currentScript.src);
|
| }
|
| if (_js_helper.Primitives.isD8)
|
| return computeThisScriptD8();
|
| @@ -452,31 +464,38 @@ var _isolate_helper;
|
| return null;
|
| }
|
| static computeThisScriptJsshell() {
|
| - return dart.as(_foreign_helper.JS('String|Null', 'thisFilename()'), core.String);
|
| + return dart.as(thisFilename(), core.String);
|
| }
|
| static computeThisScriptD8() {
|
| return computeThisScriptFromTrace();
|
| }
|
| static computeThisScriptFromTrace() {
|
| - let stack = _foreign_helper.JS('String|Null', 'new Error().stack');
|
| + let stack = new Error().stack;
|
| if (stack === null) {
|
| - stack = _foreign_helper.JS('String|Null', '(function() {' + 'try { throw new Error() } catch(e) { return e.stack }' + '})()');
|
| + stack = function() {
|
| + try {
|
| + throw new Error();
|
| + } catch (e) {
|
| + return e.stack;
|
| + }
|
| +
|
| + }();
|
| if (stack === null)
|
| throw new core.UnsupportedError('No stack trace');
|
| }
|
| let pattern = null, matches = null;
|
| - pattern = _foreign_helper.JS('', 'new RegExp("^ *at [^(]*\\\\((.*):[0-9]*:[0-9]*\\\\)$", "m")');
|
| - matches = _foreign_helper.JS('JSExtendableArray|Null', '#.match(#)', stack, pattern);
|
| + pattern = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "m");
|
| + matches = stack.match(pattern);
|
| if (matches !== null)
|
| - return dart.as(_foreign_helper.JS('String', '#[1]', matches), core.String);
|
| - pattern = _foreign_helper.JS('', 'new RegExp("^[^@]*@(.*):[0-9]*$", "m")');
|
| - matches = _foreign_helper.JS('JSExtendableArray|Null', '#.match(#)', stack, pattern);
|
| + return matches[1];
|
| + pattern = new RegExp("^[^@]*@(.*):[0-9]*$", "m");
|
| + matches = stack.match(pattern);
|
| if (matches !== null)
|
| - return dart.as(_foreign_helper.JS('String', '#[1]', matches), core.String);
|
| + return matches[1];
|
| throw new core.UnsupportedError(`Cannot extract URI from "${stack}"`);
|
| }
|
| static _getEventData(e) {
|
| - return _foreign_helper.JS("", "#.data", e);
|
| + return e.data;
|
| }
|
| static _processWorkerMessage(sender, e) {
|
| let msg = _deserializeMessage(_getEventData(e));
|
| @@ -510,7 +529,7 @@ var _isolate_helper;
|
| break;
|
| case 'close':
|
| _isolate_helper._globalState.managers.remove(workerIds.get(sender));
|
| - _foreign_helper.JS('void', '#.terminate()', sender);
|
| + sender.terminate();
|
| _isolate_helper._globalState.topEventLoop.run();
|
| break;
|
| case 'log':
|
| @@ -552,17 +571,17 @@ var _isolate_helper;
|
| }
|
| static _consoleLog(msg) {
|
| _js_helper.requiresPreamble();
|
| - _foreign_helper.JS("void", "self.console.log(#)", msg);
|
| + self.console.log(msg);
|
| }
|
| static _getJSFunctionFromName(functionName) {
|
| let globalFunctionsContainer = _foreign_helper.JS_EMBEDDED_GLOBAL("", dart.as(_js_embedded_names.GLOBAL_FUNCTIONS, core.String));
|
| - return _foreign_helper.JS("", "#[#]()", globalFunctionsContainer, functionName);
|
| + return globalFunctionsContainer[functionName]();
|
| }
|
| static _getJSFunctionName(f) {
|
| - return dart.as(dart.is(f, _js_helper.Closure) ? _foreign_helper.JS("String|Null", '#.$name', f) : null, core.String);
|
| + return dart.as(dart.is(f, _js_helper.Closure) ? f.$name : null, core.String);
|
| }
|
| static _allocate(ctor) {
|
| - return _foreign_helper.JS("", "new #()", ctor);
|
| + return new ctor();
|
| }
|
| static spawnFunction(topLevelFunction, message, startPaused) {
|
| IsolateNatives.enableSpawnWorker = true;
|
| @@ -653,19 +672,28 @@ var _isolate_helper;
|
| static _spawnWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort, onError) {
|
| if (uri === null)
|
| uri = thisScript;
|
| - let worker = _foreign_helper.JS('var', 'new Worker(#)', uri);
|
| - let onerrorTrampoline = _foreign_helper.JS('', '\n(function (f, u, c) {\n return function(e) {\n return f(e, u, c)\n }\n})(#, #, #)', _foreign_helper.DART_CLOSURE_TO_JS(workerOnError), uri, onError);
|
| - _foreign_helper.JS('void', '#.onerror = #', worker, onerrorTrampoline);
|
| - let processWorkerMessageTrampoline = _foreign_helper.JS('', "\n(function (f, a) {\n return function (e) {\n // We can stop listening for errors when the first message is received as\n // we only listen for messages to determine if the uri was bad.\n e.onerror = null;\n return f(a, e);\n }\n})(#, #)", _foreign_helper.DART_CLOSURE_TO_JS(_processWorkerMessage), worker);
|
| - _foreign_helper.JS('void', '#.onmessage = #', worker, processWorkerMessageTrampoline);
|
| + let worker = new Worker(uri);
|
| + let onerrorTrampoline = function(f, u, c) {
|
| + return function(e) {
|
| + return f(e, u, c);
|
| + };
|
| + }(_foreign_helper.DART_CLOSURE_TO_JS(workerOnError), uri, onError);
|
| + worker.onerror = onerrorTrampoline;
|
| + let processWorkerMessageTrampoline = function(f, a) {
|
| + return function(e) {
|
| + e.onerror = null;
|
| + return f(a, e);
|
| + };
|
| + }(_foreign_helper.DART_CLOSURE_TO_JS(_processWorkerMessage), worker);
|
| + worker.onmessage = processWorkerMessageTrampoline;
|
| let workerId = _isolate_helper._globalState.nextManagerId++;
|
| workerIds.set(worker, workerId);
|
| _isolate_helper._globalState.managers.set(workerId, worker);
|
| - _foreign_helper.JS('void', '#.postMessage(#)', worker, _serializeMessage(dart.map({command: 'start', id: workerId, replyTo: _serializeMessage(replyPort), args: args, msg: _serializeMessage(message), isSpawnUri: isSpawnUri, startPaused: startPaused, functionName: functionName})));
|
| + worker.postMessage(_serializeMessage(dart.map({command: 'start', id: workerId, replyTo: _serializeMessage(replyPort), args: args, msg: _serializeMessage(message), isSpawnUri: isSpawnUri, startPaused: startPaused, functionName: functionName})));
|
| }
|
| static workerOnError(event, uri, onError) {
|
| - _foreign_helper.JS('void', '#.preventDefault()', event);
|
| - let message = dart.as(_foreign_helper.JS('String|Null', '#.message', event), core.String);
|
| + event.preventDefault();
|
| + let message = dart.as(event.message, core.String);
|
| if (message === null) {
|
| message = `Error spawning worker for ${uri}`;
|
| } else {
|
| @@ -737,7 +765,7 @@ var _isolate_helper;
|
| } else {
|
| let manager = _isolate_helper._globalState.managers.get(this._workerId);
|
| if (manager !== null) {
|
| - _foreign_helper.JS('void', '#.postMessage(#)', manager, workerMessage);
|
| + manager.postMessage(workerMessage);
|
| }
|
| }
|
| }
|
| @@ -844,7 +872,7 @@ var _isolate_helper;
|
| callback();
|
| }
|
| enterJsAsync();
|
| - this._handle = dart.as(_foreign_helper.JS('int', 'self.setTimeout(#, #)', _js_helper.convertDartClosureToJS(internalCallback, 0), milliseconds), core.int);
|
| + this._handle = self.setTimeout(_js_helper.convertDartClosureToJS(internalCallback, 0), milliseconds);
|
| } else {
|
| dart.assert(milliseconds > 0);
|
| throw new core.UnsupportedError("Timer greater than 0.");
|
| @@ -856,9 +884,9 @@ var _isolate_helper;
|
| this._handle = dart.as(null, core.int);
|
| if (hasTimer()) {
|
| enterJsAsync();
|
| - this._handle = dart.as(_foreign_helper.JS('int', 'self.setInterval(#, #)', _js_helper.convertDartClosureToJS((() => {
|
| + this._handle = self.setInterval(_js_helper.convertDartClosureToJS((() => {
|
| callback(this);
|
| - }).bind(this), 0), milliseconds), core.int);
|
| + }).bind(this), 0), milliseconds);
|
| } else {
|
| throw new core.UnsupportedError("Periodic timer.");
|
| }
|
| @@ -872,9 +900,9 @@ var _isolate_helper;
|
| return;
|
| leaveJsAsync();
|
| if (this._once) {
|
| - _foreign_helper.JS('void', 'self.clearTimeout(#)', this._handle);
|
| + self.clearTimeout(this._handle);
|
| } else {
|
| - _foreign_helper.JS('void', 'self.clearInterval(#)', this._handle);
|
| + self.clearInterval(this._handle);
|
| }
|
| this._handle = dart.as(null, core.int);
|
| } else {
|
| @@ -889,7 +917,7 @@ var _isolate_helper;
|
| // Function hasTimer: () → bool
|
| function hasTimer() {
|
| _js_helper.requiresPreamble();
|
| - return _foreign_helper.JS('', 'self.setTimeout') !== null;
|
| + return self.setTimeout !== null;
|
| }
|
| class CapabilityImpl extends dart.Object {
|
| CapabilityImpl() {
|
| @@ -1025,14 +1053,14 @@ var _isolate_helper;
|
| return new List.from(['map', x.keys.map(dart.as(serializeTearOff, dart.throw_("Unimplemented type (dynamic) → dynamic"))).toList(), x.values.map(dart.as(serializeTearOff, dart.throw_("Unimplemented type (dynamic) → dynamic"))).toList()]);
|
| }
|
| serializeJSObject(x) {
|
| - if (dart.dbinary(_foreign_helper.JS('bool', '!!(#.constructor)', x), '&&', _foreign_helper.JS('bool', 'x.constructor !== Object'))) {
|
| + if (dart.notNull(!!x.constructor) && dart.notNull(x.constructor !== Object)) {
|
| this.unsupported(x, "Only plain JS Objects are supported:");
|
| }
|
| - let keys = dart.as(_foreign_helper.JS('JSArray', 'Object.keys(#)', x), core.List);
|
| + let keys = dart.as(Object.keys(x), core.List);
|
| let values = new List.from([]);
|
| values.length = keys.length;
|
| for (let i = 0; i < keys.length; i++) {
|
| - values.set(i, this.serialize(_foreign_helper.JS('', '#[#]', x, keys.get(i))));
|
| + values.set(i, this.serialize(x[keys.get(i)]));
|
| }
|
| return new List.from(['js-object', keys, values]);
|
| }
|
| @@ -1062,8 +1090,8 @@ var _isolate_helper;
|
| serializeDartObject(x) {
|
| let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_embedded_names.CLASS_ID_EXTRACTOR, core.String));
|
| let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_embedded_names.CLASS_FIELDS_EXTRACTOR, core.String));
|
| - let classId = dart.as(_foreign_helper.JS('String', '#(#)', classExtractor, x), core.String);
|
| - let fields = dart.as(_foreign_helper.JS('JSArray', '#(#)', fieldsExtractor, x), core.List);
|
| + let classId = classExtractor(x);
|
| + let fields = dart.as(fieldsExtractor(x), core.List);
|
| return new List.from(['dart', classId, this.serializeArrayInPlace(dart.as(fields, _interceptors.JSArray))]);
|
| }
|
| }
|
| @@ -1204,10 +1232,10 @@ var _isolate_helper;
|
| dart.assert(dart.equals(dart.dindex(x, 0), 'js-object'));
|
| let keys = dart.as(dart.dindex(x, 1), core.List);
|
| let values = dart.as(dart.dindex(x, 2), core.List);
|
| - let o = _foreign_helper.JS('', '{}');
|
| + let o = {};
|
| this.deserializedObjects.add(o);
|
| for (let i = 0; i < keys.length; i++) {
|
| - _foreign_helper.JS('', '#[#]=#', o, keys.get(i), this.deserialize(values.get(i)));
|
| + o[keys.get(i)] = this.deserialize(values.get(i));
|
| }
|
| return o;
|
| }
|
| @@ -1224,10 +1252,10 @@ var _isolate_helper;
|
| let fields = dart.as(dart.dindex(x, 2), core.List);
|
| let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_embedded_names.INSTANCE_FROM_CLASS_ID, core.String));
|
| let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_embedded_names.INITIALIZE_EMPTY_INSTANCE, core.String));
|
| - let emptyInstance = _foreign_helper.JS('', '#(#)', instanceFromClassId, classId);
|
| + let emptyInstance = instanceFromClassId(classId);
|
| this.deserializedObjects.add(emptyInstance);
|
| this.deserializeArrayInPlace(dart.as(fields, _interceptors.JSArray));
|
| - return _foreign_helper.JS('', '#(#, #, #)', initializeObject, classId, emptyInstance, fields);
|
| + return initializeObject(classId, emptyInstance, fields);
|
| }
|
| }
|
| // Exports:
|
|
|