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

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

Issue 1138793002: Tag closures with their types (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Address jmesserly's 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 side-by-side diff with in-line comments
Download patch
Index: lib/runtime/dart/isolate.js
diff --git a/lib/runtime/dart/isolate.js b/lib/runtime/dart/isolate.js
index a80de6f30d3f85140ea37a44d0b425687e0718bb..547cd41b1e12f76b281ca23ae2d1377713b0a432 100644
--- a/lib/runtime/dart/isolate.js
+++ b/lib/runtime/dart/isolate.js
@@ -9,6 +9,7 @@ var async = dart.import(async);
return new _isolate_helper.CapabilityImpl();
}
}
+ dart.setSignature(Capability, {});
class IsolateSpawnException extends core.Object {
IsolateSpawnException(message) {
this.message = message;
@@ -18,6 +19,9 @@ var async = dart.import(async);
}
}
IsolateSpawnException[dart.implements] = () => [core.Exception];
+ dart.setSignature(IsolateSpawnException, {
+ methods: () => ({toString: dart.functionType(core.String, [])})
+ });
let _pause = Symbol('_pause');
class Isolate extends core.Object {
Isolate(controlPort, opts) {
@@ -33,7 +37,7 @@ var async = dart.import(async);
static spawn(entryPoint, message, opts) {
let paused = opts && 'paused' in opts ? opts.paused : false;
try {
- return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint, message, paused).then(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapability: dart.as(dart.dindex(msg, 3), Capability)})), async.Future$(Isolate));
+ return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint, message, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapability: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [dart.dynamic])), async.Future$(Isolate));
} catch (e) {
let st = dart.stackTrace(e);
return new (async.Future$(Isolate)).error(e, st);
@@ -55,7 +59,7 @@ var async = dart.import(async);
} else if (args != null) {
throw new core.ArgumentError(`Args must be a list of Strings ${args}`);
}
- return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, message, paused).then(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapability: dart.as(dart.dindex(msg, 3), Capability)})), async.Future$(Isolate));
+ return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, message, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapability: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [dart.dynamic])), async.Future$(Isolate));
} catch (e) {
let st = dart.stackTrace(e);
return new (async.Future$(Isolate)).error(e, st);
@@ -131,28 +135,43 @@ var async = dart.import(async);
get errors() {
let controller = null;
let port = null;
- // Function handleError: (dynamic) → void
let handleError = message => {
let errorDescription = dart.as(dart.dindex(message, 0), core.String);
let stackDescription = dart.as(dart.dindex(message, 1), core.String);
let error = new RemoteError(errorDescription, stackDescription);
controller.addError(error, error.stackTrace);
};
- controller = new async.StreamController.broadcast({
- sync: true,
- onListen: (() => {
+ dart.fn(handleError, dart.void, [dart.dynamic]);
+ controller = new async.StreamController.broadcast({sync: true, onListen: dart.fn((() => {
port = new RawReceivePort(handleError);
this.addErrorListener(port.sendPort);
- }).bind(this),
- onCancel: (() => {
+ }).bind(this)), onCancel: dart.fn((() => {
this.removeErrorListener(port.sendPort);
port.close();
port = null;
- }).bind(this)
- });
+ }).bind(this))});
return controller.stream;
}
}
+ dart.setSignature(Isolate, {
+ methods: () => ({
+ pause: dart.functionType(Capability, [], [Capability]),
+ [_pause]: dart.functionType(dart.void, [Capability]),
+ resume: dart.functionType(dart.void, [Capability]),
+ addOnExitListener: dart.functionType(dart.void, [SendPort]),
+ removeOnExitListener: dart.functionType(dart.void, [SendPort]),
+ setErrorsFatal: dart.functionType(dart.void, [core.bool]),
+ kill: dart.functionType(dart.void, [], [core.int]),
+ ping: dart.functionType(dart.void, [SendPort], [core.int]),
+ addErrorListener: dart.functionType(dart.void, [SendPort]),
+ removeErrorListener: dart.functionType(dart.void, [SendPort])
+ }),
+ statics: () => ({
+ spawn: dart.functionType(async.Future$(Isolate), [dart.functionType(dart.void, [dart.dynamic]), dart.dynamic], {ause: core.bool}),
+ spawnUri: dart.functionType(async.Future$(Isolate), [core.Uri, core.List$(core.String), dart.dynamic], {ause: core.bool, ackageRoo: core.Uri})
+ }),
+ names: ['spawn', 'spawnUri']
+ });
Isolate.IMMEDIATE = 0;
Isolate.BEFORE_NEXT_EVENT = 1;
Isolate.AS_EVENT = 2;
@@ -163,6 +182,7 @@ var async = dart.import(async);
});
class SendPort extends core.Object {}
SendPort[dart.implements] = () => [Capability];
+ dart.setSignature(SendPort, {});
class ReceivePort extends core.Object {
ReceivePort() {
return new _isolate_helper.ReceivePortImpl();
@@ -173,6 +193,7 @@ var async = dart.import(async);
}
ReceivePort[dart.implements] = () => [async.Stream];
dart.defineNamedConstructor(ReceivePort, 'fromRawReceivePort');
+ dart.setSignature(ReceivePort, {});
class RawReceivePort extends core.Object {
RawReceivePort(handler) {
if (handler === void 0)
@@ -180,6 +201,7 @@ var async = dart.import(async);
return new _isolate_helper.RawReceivePortImpl(handler);
}
}
+ dart.setSignature(RawReceivePort, {});
class _IsolateUnhandledException extends core.Object {
_IsolateUnhandledException(message, source, stackTrace) {
this.message = message;
@@ -191,6 +213,9 @@ var async = dart.import(async);
}
}
_IsolateUnhandledException[dart.implements] = () => [core.Exception];
+ dart.setSignature(_IsolateUnhandledException, {
+ methods: () => ({toString: dart.functionType(core.String, [])})
+ });
let _description = Symbol('_description');
class RemoteError extends core.Object {
RemoteError(description, stackDescription) {
@@ -202,6 +227,9 @@ var async = dart.import(async);
}
}
RemoteError[dart.implements] = () => [core.Error];
+ dart.setSignature(RemoteError, {
+ methods: () => ({toString: dart.functionType(core.String, [])})
+ });
let _trace = Symbol('_trace');
class _RemoteStackTrace extends core.Object {
_RemoteStackTrace(trace) {
@@ -212,6 +240,9 @@ var async = dart.import(async);
}
}
_RemoteStackTrace[dart.implements] = () => [core.StackTrace];
+ dart.setSignature(_RemoteStackTrace, {
+ methods: () => ({toString: dart.functionType(core.String, [])})
+ });
// Exports:
exports.Capability = Capability;
exports.IsolateSpawnException = IsolateSpawnException;
« no previous file with comments | « lib/runtime/dart/core.js ('k') | lib/runtime/dart/math.js » ('j') | lib/src/js/printer.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698