| Index: sdk/lib/_internal/lib/isolate_patch.dart
|
| diff --git a/sdk/lib/_internal/lib/isolate_patch.dart b/sdk/lib/_internal/lib/isolate_patch.dart
|
| index 4e6982ae430082ac93dbca7bab7d55b89829bcea..057e571d71664e3d2f9e0ddde4d828f5d1a77e76 100644
|
| --- a/sdk/lib/_internal/lib/isolate_patch.dart
|
| +++ b/sdk/lib/_internal/lib/isolate_patch.dart
|
| @@ -10,56 +10,41 @@ import 'dart:_isolate_helper' show IsolateNatives,
|
| CloseToken,
|
| JsIsolateSink;
|
|
|
| -patch class _Isolate {
|
| - patch static ReceivePort get port {
|
| - if (lazyPort == null) {
|
| - lazyPort = new ReceivePort();
|
| - }
|
| - return lazyPort;
|
| +patch class Isolate {
|
| + patch static Future<Isolate> spawn(void entryPoint(message), var message) {
|
| + SendPort controlPort = IsolateNatives.spawnFunction(entryPoint, message);
|
| + return new Future<Isolate>.value(new Isolate._fromControlPort(controlPort));
|
| }
|
|
|
| - patch static SendPort spawnFunction(void topLevelFunction(),
|
| - [bool unhandledExceptionCallback(IsolateUnhandledException e)]) {
|
| - if (unhandledExceptionCallback != null) {
|
| - // TODO(9012): Implement the UnhandledExceptionCallback.
|
| - throw new UnimplementedError(
|
| - "spawnFunction with unhandledExceptionCallback");
|
| + patch static Future<Isolate> spawnUri(
|
| + Uri uri, List<String> args, var message) {
|
| + if (args is List<String>) {
|
| + for (int i = 0; i < args.length; i++) {
|
| + if (args[i] is! String) {
|
| + throw new ArgumentError("Args must be a list of Strings $args");
|
| + }
|
| + }
|
| + } else if (args != null) {
|
| + throw new ArgumentError("Args must be a list of Strings $args");
|
| }
|
| - return IsolateNatives.spawnFunction(topLevelFunction);
|
| - }
|
| -
|
| - patch static SendPort spawnUri(String uri) {
|
| - return IsolateNatives.spawn(null, uri, false);
|
| + SendPort controlPort = IsolateNatives.spawnUri(uri, args, message);
|
| + return new Future<Isolate>.value(new Isolate._fromControlPort(controlPort));
|
| }
|
| }
|
|
|
| -patch bool _isCloseToken(var object) {
|
| - return identical(object, const CloseToken());
|
| -}
|
| -
|
| /** Default factory for receive ports. */
|
| patch class ReceivePort {
|
| patch factory ReceivePort() {
|
| return new ReceivePortImpl();
|
| }
|
| -}
|
| -
|
| -patch class MessageBox {
|
| - patch MessageBox.oneShot() : this._oneShot(new ReceivePort());
|
| - MessageBox._oneShot(ReceivePort receivePort)
|
| - : stream = new IsolateStream._fromOriginalReceivePortOneShot(receivePort),
|
| - sink = new JsIsolateSink.fromPort(receivePort.toSendPort());
|
|
|
| - patch MessageBox() : this._(new ReceivePort());
|
| - MessageBox._(ReceivePort receivePort)
|
| - : stream = new IsolateStream._fromOriginalReceivePort(receivePort),
|
| - sink = new JsIsolateSink.fromPort(receivePort.toSendPort());
|
| + patch factory ReceivePort.fromRawReceivePort(RawReceivePort rawPort) {
|
| + throw new UnimplementedError("ReceivePort.fromRawReceivePort");
|
| + }
|
| }
|
|
|
| -patch IsolateSink streamSpawnFunction(
|
| - void topLevelFunction(),
|
| - [bool unhandledExceptionCallback(IsolateUnhandledException e)]) {
|
| - SendPort sendPort = spawnFunction(topLevelFunction,
|
| - unhandledExceptionCallback);
|
| - return new JsIsolateSink.fromPort(sendPort);
|
| +patch class RawReceivePort {
|
| + patch factory RawReceivePort([void handler(event)]) {
|
| + throw new UnimplementedError("RawReceivePort");
|
| + }
|
| }
|
|
|