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

Unified Diff: lib/runtime/dart/_isolate_helper.js

Issue 1042003002: fix list literal initialization call fix typeof calls for primitive JS types add dart/collection.js… (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: lib/runtime/dart/_isolate_helper.js
diff --git a/lib/runtime/dart/_isolate_helper.js b/lib/runtime/dart/_isolate_helper.js
index 56ac0bc7c9048508b22a2d4a0e6902370299acc5..6dd604ccde5bab75e8164c98212c27eb37b9cc4a 100644
--- a/lib/runtime/dart/_isolate_helper.js
+++ b/lib/runtime/dart/_isolate_helper.js
@@ -66,36 +66,36 @@ var _isolate_helper;
throw new core.UnsupportedError(`${message} ${x}`);
}
makeRef(serializationId) {
- return new List.from(["ref", serializationId]);
+ return new core.List.from(["ref", serializationId]);
}
isPrimitive(x) {
- return dart.notNull(x === null) || dart.notNull(typeof x == string) || dart.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == boolean);
+ return dart.notNull(x === null) || dart.notNull(typeof x == 'string') || dart.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == 'boolean');
}
serializePrimitive(primitive) {
return primitive;
}
serializeByteBuffer(buffer) {
- return new List.from(["buffer", buffer]);
+ return new core.List.from(["buffer", buffer]);
}
serializeTypedData(data) {
- return new List.from(["typed", data]);
+ return new core.List.from(["typed", data]);
}
serializeJSIndexable(indexable) {
- dart.assert(!(typeof indexable == string));
+ dart.assert(!(typeof indexable == 'string'));
let serialized = dart.as(this.serializeArray(dart.as(indexable, _interceptors.JSArray)), core.List);
if (dart.is(indexable, _interceptors.JSFixedArray))
- return new List.from(["fixed", serialized]);
+ return new core.List.from(["fixed", serialized]);
if (dart.is(indexable, _interceptors.JSExtendableArray))
- return new List.from(["extendable", serialized]);
+ return new core.List.from(["extendable", serialized]);
if (dart.is(indexable, _interceptors.JSMutableArray))
- return new List.from(["mutable", serialized]);
+ return new core.List.from(["mutable", serialized]);
if (dart.is(indexable, _interceptors.JSArray))
- return new List.from(["const", serialized]);
+ return new core.List.from(["const", serialized]);
this.unsupported(indexable, "Can't serialize indexable: ");
return null;
}
serializeArray(x) {
- let serialized = new List.from([]);
+ let serialized = new core.List.from([]);
serialized.length = x.length;
for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull(i) + 1) {
serialized.set(i, this.serialize(x.get(i)));
@@ -110,49 +110,49 @@ var _isolate_helper;
}
serializeMap(x) {
let serializeTearOff = this.serialize;
- 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()]);
+ return new core.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 (!!x.constructor && x.constructor !== Object) {
this.unsupported(x, "Only plain JS Objects are supported:");
}
let keys = dart.as(Object.keys(x), core.List);
- let values = new List.from([]);
+ let values = new core.List.from([]);
values.length = keys.length;
for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notNull(i) + 1) {
values.set(i, this.serialize(x[keys.get(i)]));
}
- return new List.from(['js-object', keys, values]);
+ return new core.List.from(['js-object', keys, values]);
}
serializeWorkerSendPort(x) {
if (this[_serializeSendPorts]) {
- return new List.from(['sendport', x[_workerId], x[_isolateId], x[_receivePortId]]);
+ return new core.List.from(['sendport', x[_workerId], x[_isolateId], x[_receivePortId]]);
}
- return new List.from(['raw sendport', x]);
+ return new core.List.from(['raw sendport', x]);
}
serializeJsSendPort(x) {
if (this[_serializeSendPorts]) {
let workerId = exports._globalState.currentManagerId;
- return new List.from(['sendport', workerId, x[_isolateId], x[_receivePort][_id]]);
+ return new core.List.from(['sendport', workerId, x[_isolateId], x[_receivePort][_id]]);
}
- return new List.from(['raw sendport', x]);
+ return new core.List.from(['raw sendport', x]);
}
serializeCapability(x) {
- return new List.from(['capability', x[_id]]);
+ return new core.List.from(['capability', x[_id]]);
}
serializeClosure(x) {
let name = IsolateNatives._getJSFunctionName(x);
if (name === null) {
this.unsupported(x, "Closures can't be transmitted:");
}
- return new List.from(['function', name]);
+ return new core.List.from(['function', name]);
}
serializeDartObject(x) {
let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_names.CLASS_ID_EXTRACTOR);
let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_names.CLASS_FIELDS_EXTRACTOR);
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))]);
+ return new core.List.from(['dart', classId, this.serializeArrayInPlace(dart.as(fields, _interceptors.JSArray))]);
}
}
let _adjustSendPorts = Symbol('_adjustSendPorts');
@@ -169,37 +169,65 @@ var _isolate_helper;
throw new core.ArgumentError(`Bad serialized message: ${x}`);
switch (dart.dload(x, 'first')) {
case "ref":
+ {
return this.deserializeRef(x);
+ }
case "buffer":
+ {
return this.deserializeByteBuffer(x);
+ }
case "typed":
+ {
return this.deserializeTypedData(x);
+ }
case "fixed":
+ {
return this.deserializeFixed(x);
+ }
case "extendable":
+ {
return this.deserializeExtendable(x);
+ }
case "mutable":
+ {
return this.deserializeMutable(x);
+ }
case "const":
+ {
return this.deserializeConst(x);
+ }
case "map":
+ {
return this.deserializeMap(x);
+ }
case "sendport":
+ {
return this.deserializeSendPort(x);
+ }
case "raw sendport":
+ {
return this.deserializeRawSendPort(x);
+ }
case "js-object":
+ {
return this.deserializeJSObject(x);
+ }
case "function":
+ {
return this.deserializeClosure(x);
+ }
case "dart":
+ {
return this.deserializeDartObject(x);
+ }
default:
+ {
throw `couldn't deserialize: ${x}`;
+ }
}
}
isPrimitive(x) {
- return dart.notNull(x === null) || dart.notNull(typeof x == string) || dart.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == boolean);
+ return dart.notNull(x === null) || dart.notNull(typeof x == 'string') || dart.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == 'boolean');
}
deserializePrimitive(x) {
return x;
@@ -347,7 +375,7 @@ var _isolate_helper;
function startRootIsolate(entry, args) {
args = args;
if (args === null)
- args = new List.from([]);
+ args = new core.List.from([]);
if (!dart.is(args, core.List)) {
throw new core.ArgumentError(`Arguments to main must be a List: ${args}`);
}
@@ -456,7 +484,7 @@ var _isolate_helper;
this.controlPort = new RawReceivePortImpl._controlPort();
this.pauseCapability = new isolate.Capability();
this.terminateCapability = new isolate.Capability();
- this.delayedEvents = dart.as(new List.from([]), core.List$(_IsolateEvent));
+ this.delayedEvents = dart.as(new core.List.from([]), core.List$(_IsolateEvent));
this.pauseTokens = dart.as(new core.Set(), core.Set$(isolate.Capability));
this.errorPorts = dart.as(new core.Set(), core.Set$(isolate.SendPort));
this.initialized = false;
@@ -490,7 +518,7 @@ var _isolate_helper;
}
addDoneListener(responsePort) {
if (this.doneHandlers === null) {
- this.doneHandlers = new List.from([]);
+ this.doneHandlers = new core.List.from([]);
}
if (dart.dinvoke(this.doneHandlers, 'contains', responsePort))
return;
@@ -605,32 +633,50 @@ var _isolate_helper;
handleControlMessage(message) {
switch (dart.dindex(message, 0)) {
case "pause":
+ {
this.addPause(dart.as(dart.dindex(message, 1), isolate.Capability), dart.as(dart.dindex(message, 2), isolate.Capability));
break;
+ }
case "resume":
+ {
this.removePause(dart.as(dart.dindex(message, 1), isolate.Capability));
break;
+ }
case 'add-ondone':
+ {
this.addDoneListener(dart.as(dart.dindex(message, 1), isolate.SendPort));
break;
+ }
case 'remove-ondone':
+ {
this.removeDoneListener(dart.as(dart.dindex(message, 1), isolate.SendPort));
break;
+ }
case 'set-errors-fatal':
+ {
this.setErrorsFatal(dart.as(dart.dindex(message, 1), isolate.Capability), dart.as(dart.dindex(message, 2), core.bool));
break;
+ }
case "ping":
+ {
this.handlePing(dart.as(dart.dindex(message, 1), isolate.SendPort), dart.as(dart.dindex(message, 2), core.int));
break;
+ }
case "kill":
+ {
this.handleKill(dart.as(dart.dindex(message, 1), isolate.Capability), dart.as(dart.dindex(message, 2), core.int));
break;
+ }
case "getErrors":
+ {
this.addErrorListener(dart.as(dart.dindex(message, 1), isolate.SendPort));
break;
+ }
case "stopErrors":
+ {
this.removeErrorListener(dart.as(dart.dindex(message, 1), isolate.SendPort));
break;
+ }
default:
}
}
@@ -840,6 +886,7 @@ var _isolate_helper;
let msg = _deserializeMessage(_getEventData(e));
switch (dart.dindex(msg, 'command')) {
case 'start':
+ {
exports._globalState.currentManagerId = dart.as(dart.dindex(msg, 'id'), core.int);
let functionName = dart.as(dart.dindex(msg, 'functionName'), core.String);
let entryPoint = dart.as(functionName === null ? exports._globalState.entry : _getJSFunctionFromName(functionName), core.Function);
@@ -855,34 +902,47 @@ var _isolate_helper;
exports._globalState.currentContext = context;
exports._globalState.topEventLoop.run();
break;
+ }
case 'spawn-worker':
+ {
if (enableSpawnWorker !== null)
handleSpawnWorkerRequest(msg);
break;
+ }
case 'message':
+ {
let port = dart.as(dart.dindex(msg, 'port'), isolate.SendPort);
if (port !== null) {
dart.dinvoke(dart.dindex(msg, 'port'), 'send', dart.dindex(msg, 'msg'));
}
exports._globalState.topEventLoop.run();
break;
+ }
case 'close':
+ {
exports._globalState.managers.remove(workerIds.get(sender));
sender.terminate();
exports._globalState.topEventLoop.run();
break;
+ }
case 'log':
+ {
_log(dart.dindex(msg, 'msg'));
break;
+ }
case 'print':
+ {
if (exports._globalState.isWorker) {
exports._globalState.mainManager.postMessage(_serializeMessage(dart.map({command: 'print', msg: msg})));
} else {
core.print(dart.dindex(msg, 'msg'));
}
break;
+ }
case 'error':
+ {
throw dart.dindex(msg, 'msg');
+ }
}
}
static handleSpawnWorkerRequest(msg) {
@@ -891,7 +951,7 @@ var _isolate_helper;
dart.dinvoke(replyPort, 'send', msg);
}, "(List<dynamic>) → dynamic"), {
onError: (errorMessage) => {
- dart.dinvoke(replyPort, 'send', new List.from([_SPAWN_FAILED_SIGNAL, errorMessage]));
+ dart.dinvoke(replyPort, 'send', new core.List.from([_SPAWN_FAILED_SIGNAL, errorMessage]));
}
});
}
@@ -987,7 +1047,7 @@ var _isolate_helper;
static [_startIsolate$](topLevel, args, message, isSpawnUri, startPaused, replyTo) {
let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _IsolateContext);
_js_helper.Primitives.initializeStatics(context.id);
- replyTo.send(new List.from([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pauseCapability, context.terminateCapability]));
+ replyTo.send(new core.List.from([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pauseCapability, context.terminateCapability]));
// Function runStartFunction: () → void
function runStartFunction() {
context.initialized = true;

Powered by Google App Engine
This is Rietveld 408576698