Index: compiler/lib/implementation/isolate.dart |
diff --git a/compiler/lib/implementation/isolate.dart b/compiler/lib/implementation/isolate.dart |
deleted file mode 100644 |
index a3586985f3a09631d752a4b12022f15059c0048d..0000000000000000000000000000000000000000 |
--- a/compiler/lib/implementation/isolate.dart |
+++ /dev/null |
@@ -1,197 +0,0 @@ |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-class SendPortImpl implements SendPort { |
- |
- const SendPortImpl(this._workerId, this._isolateId, this._receivePortId); |
- |
- void send(var message, [SendPort replyTo = null]) { |
- // TODO(kasperl): get rid of _sendNow. |
- this._sendNow(message, replyTo); |
- } |
- |
- void _sendNow(var message, SendPort replyTo) native; |
- |
- ReceivePortSingleShotImpl call(var message) { |
- final result = new ReceivePortSingleShotImpl(); |
- this.send(message, result.toSendPort()); |
- return result; |
- } |
- |
- ReceivePortSingleShotImpl _callNow(var message) { |
- final result = new ReceivePortSingleShotImpl(); |
- this._sendNow(message, result.toSendPort()); |
- return result; |
- } |
- |
- bool operator==(var other) { |
- return (other is SendPortImpl) && |
- (_workerId == other._workerId) && |
- (_isolateId == other._isolateId) && |
- (_receivePortId == other._receivePortId); |
- } |
- |
- int hashCode() { |
- return (_workerId << 16) ^ (_isolateId << 8) ^ _receivePortId; |
- } |
- |
- final int _receivePortId; |
- final int _isolateId; |
- final int _workerId; |
- |
- static _create(int workerId, int isolateId, int receivePortId) native { |
- return new SendPortImpl(workerId, isolateId, receivePortId); |
- } |
- static _getReceivePortId(SendPortImpl port) native { |
- return port._receivePortId; |
- } |
- static _getIsolateId(SendPortImpl port) native { |
- return port._isolateId; |
- } |
- static _getWorkerId(SendPortImpl port) native { |
- return port._workerId; |
- } |
-} |
- |
- |
-class ReceivePortFactory { |
- |
- factory ReceivePort() { |
- return new ReceivePortImpl(); |
- } |
- |
- factory ReceivePort.singleShot() { |
- return new ReceivePortSingleShotImpl(); |
- } |
- |
-} |
- |
- |
-class ReceivePortImpl implements ReceivePort { |
- ReceivePortImpl() |
- : _id = _nextFreeId++ { |
- _register(_id); |
- } |
- |
- void receive(void onMessage(var message, SendPort replyTo)) { |
- _callback = onMessage; |
- } |
- |
- void close() { |
- _callback = null; |
- _unregister(_id); |
- } |
- |
- SendPort toSendPort() { |
- return _toNewSendPort(); |
- } |
- |
- /** |
- * Returns a fresh [SendPort]. The implementation is not allowed to cache |
- * existing ports. |
- */ |
- SendPort _toNewSendPort() { |
- return new SendPortImpl(_currentWorkerId(), _currentIsolateId(), _id); |
- } |
- |
- int _id; |
- Function _callback = null; |
- |
- static int _nextFreeId = 1; |
- |
- void _register(int id) native; |
- void _unregister(int id) native; |
- |
- static int _currentWorkerId() native; |
- static int _currentIsolateId() native; |
- |
- static void _invokeCallback(ReceivePortImpl port, message, replyTo) native { |
- if (port._callback !== null) (port._callback)(message, replyTo); |
- } |
- |
- static int _getId(ReceivePortImpl port) native { |
- return port._id; |
- } |
- static Function _getCallback(ReceivePortImpl port) native { |
- return port._callback; |
- } |
-} |
- |
- |
-class ReceivePortSingleShotImpl implements ReceivePort { |
- |
- ReceivePortSingleShotImpl() : _port = new ReceivePortImpl() { } |
- |
- void receive(void callback(var message, SendPort replyTo)) { |
- _port.receive((var message, SendPort replyTo) { |
- _port.close(); |
- callback(message, replyTo); |
- }); |
- } |
- |
- void close() { |
- _port.close(); |
- } |
- |
- SendPort toSendPort() { |
- return _toNewSendPort(); |
- } |
- |
- /** |
- * Returns a fresh [SendPort]. The implementation is not allowed to cache |
- * existing ports. |
- */ |
- SendPort _toNewSendPort() { |
- return _port._toNewSendPort(); |
- } |
- |
- final ReceivePortImpl _port; |
- |
-} |
- |
-final String _SPAWNED_SIGNAL = "spawned"; |
- |
-class IsolateNatives { |
- static Future<SendPort> spawn(Isolate isolate, bool isLight) { |
- Completer<SendPort> result = new Completer<SendPort>(); |
- ReceivePort port = new ReceivePort.singleShot(); |
- port.receive((msg, SendPort replyPort) { |
- assert(msg == _SPAWNED_SIGNAL); |
- result.complete(replyPort); |
- }); |
- _spawn(isolate, isLight, port.toSendPort()); |
- return result.future; |
- } |
- |
- static SendPort _spawn(Isolate isolate, bool light, SendPort port) native; |
-} |
- |
- |
-class _IsolateJsUtil { |
- static void _startIsolate(Isolate isolate, SendPort replyTo) native { |
- ReceivePort port = new ReceivePort(); |
- replyTo.send(_SPAWNED_SIGNAL, port.toSendPort()); |
- isolate._run(port); |
- } |
- |
- static SendPort _toSendPort(port) native { |
- return port.toSendPort(); |
- } |
- |
- static void _print(String msg) native { |
- print(msg); |
- } |
- |
- static _copyObject(obj) native { |
- return new Copier().traverse(obj); |
- } |
- |
- static _serializeObject(obj) native { |
- return new Serializer().traverse(obj); |
- } |
- |
- static _deserializeMessage(message) native { |
- return new Deserializer().deserialize(message); |
- } |
-} |