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

Side by Side Diff: lib/runtime/dart/isolate.js

Issue 1879373004: Implement modular compilation (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 dart_library.library('dart/isolate', null, /* Imports */[
2 'dart/_runtime',
3 'dart/core',
4 'dart/async'
5 ], /* Lazy imports */[
6 'dart/_isolate_helper'
7 ], function(exports, dart, core, async, _isolate_helper) {
8 'use strict';
9 let dartx = dart.dartx;
10 class Capability extends core.Object {
11 static new() {
12 return new _isolate_helper.CapabilityImpl();
13 }
14 }
15 dart.setSignature(Capability, {
16 constructors: () => ({new: [Capability, []]})
17 });
18 class IsolateSpawnException extends core.Object {
19 IsolateSpawnException(message) {
20 this.message = message;
21 }
22 toString() {
23 return `IsolateSpawnException: ${this.message}`;
24 }
25 }
26 IsolateSpawnException[dart.implements] = () => [core.Exception];
27 dart.setSignature(IsolateSpawnException, {
28 constructors: () => ({IsolateSpawnException: [IsolateSpawnException, [core.S tring]]})
29 });
30 const _pause = Symbol('_pause');
31 class Isolate extends core.Object {
32 Isolate(controlPort, opts) {
33 let pauseCapability = opts && 'pauseCapability' in opts ? opts.pauseCapabi lity : null;
34 let terminateCapability = opts && 'terminateCapability' in opts ? opts.ter minateCapability : null;
35 this.controlPort = controlPort;
36 this.pauseCapability = pauseCapability;
37 this.terminateCapability = terminateCapability;
38 }
39 static get current() {
40 return Isolate._currentIsolateCache;
41 }
42 static spawn(entryPoint, message, opts) {
43 let paused = opts && 'paused' in opts ? opts.paused : false;
44 try {
45 return _isolate_helper.IsolateNatives.spawnFunction(entryPoint, message, paused).then(dart.fn(msg => new Isolate(dart.as(msg[dartx.get](1), SendPort), { pauseCapability: dart.as(msg[dartx.get](2), Capability), terminateCapability: da rt.as(msg[dartx.get](3), Capability)}), Isolate, [core.List]));
46 } catch (e) {
47 let st = dart.stackTrace(e);
48 return async.Future$(Isolate).error(e, st);
49 }
50
51 }
52 static spawnUri(uri, args, message, opts) {
53 let paused = opts && 'paused' in opts ? opts.paused : false;
54 let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null;
55 if (packageRoot != null) dart.throw(new core.UnimplementedError("packageRo ot"));
56 try {
57 if (dart.is(args, core.List)) {
58 for (let i = 0; i < dart.notNull(args[dartx.length]); i++) {
59 if (!(typeof args[dartx.get](i) == 'string')) {
60 dart.throw(new core.ArgumentError(`Args must be a list of Strings ${args}`));
61 }
62 }
63 } else if (args != null) {
64 dart.throw(new core.ArgumentError(`Args must be a list of Strings ${ar gs}`));
65 }
66 return _isolate_helper.IsolateNatives.spawnUri(uri, args, message, pause d).then(dart.fn(msg => new Isolate(dart.as(msg[dartx.get](1), SendPort), {pauseC apability: dart.as(msg[dartx.get](2), Capability), terminateCapability: dart.as( msg[dartx.get](3), Capability)}), Isolate, [core.List]));
67 } catch (e) {
68 let st = dart.stackTrace(e);
69 return async.Future$(Isolate).error(e, st);
70 }
71
72 }
73 pause(resumeCapability) {
74 if (resumeCapability === void 0) resumeCapability = null;
75 if (resumeCapability == null) resumeCapability = Capability.new();
76 this[_pause](resumeCapability);
77 return resumeCapability;
78 }
79 [_pause](resumeCapability) {
80 let message = core.List.new(3);
81 message[dartx.set](0, "pause");
82 message[dartx.set](1, this.pauseCapability);
83 message[dartx.set](2, resumeCapability);
84 this.controlPort.send(message);
85 }
86 resume(resumeCapability) {
87 let message = core.List.new(2);
88 message[dartx.set](0, "resume");
89 message[dartx.set](1, resumeCapability);
90 this.controlPort.send(message);
91 }
92 addOnExitListener(responsePort) {
93 let message = core.List.new(2);
94 message[dartx.set](0, "add-ondone");
95 message[dartx.set](1, responsePort);
96 this.controlPort.send(message);
97 }
98 removeOnExitListener(responsePort) {
99 let message = core.List.new(2);
100 message[dartx.set](0, "remove-ondone");
101 message[dartx.set](1, responsePort);
102 this.controlPort.send(message);
103 }
104 setErrorsFatal(errorsAreFatal) {
105 let message = core.List.new(3);
106 message[dartx.set](0, "set-errors-fatal");
107 message[dartx.set](1, this.terminateCapability);
108 message[dartx.set](2, errorsAreFatal);
109 this.controlPort.send(message);
110 }
111 kill(priority) {
112 if (priority === void 0) priority = Isolate.BEFORE_NEXT_EVENT;
113 this.controlPort.send(dart.list(["kill", this.terminateCapability, priorit y], core.Object));
114 }
115 ping(responsePort, pingType) {
116 if (pingType === void 0) pingType = Isolate.IMMEDIATE;
117 let message = core.List.new(3);
118 message[dartx.set](0, "ping");
119 message[dartx.set](1, responsePort);
120 message[dartx.set](2, pingType);
121 this.controlPort.send(message);
122 }
123 addErrorListener(port) {
124 let message = core.List.new(2);
125 message[dartx.set](0, "getErrors");
126 message[dartx.set](1, port);
127 this.controlPort.send(message);
128 }
129 removeErrorListener(port) {
130 let message = core.List.new(2);
131 message[dartx.set](0, "stopErrors");
132 message[dartx.set](1, port);
133 this.controlPort.send(message);
134 }
135 get errors() {
136 let controller = null;
137 let port = null;
138 function handleError(message) {
139 let errorDescription = dart.as(dart.dindex(message, 0), core.String);
140 let stackDescription = dart.as(dart.dindex(message, 1), core.String);
141 let error = new RemoteError(errorDescription, stackDescription);
142 controller.addError(error, error.stackTrace);
143 }
144 dart.fn(handleError, dart.void, [dart.dynamic]);
145 controller = async.StreamController.broadcast({sync: true, onListen: dart. fn(() => {
146 port = RawReceivePort.new(handleError);
147 this.addErrorListener(port.sendPort);
148 }, dart.void, []), onCancel: dart.fn(() => {
149 this.removeErrorListener(port.sendPort);
150 port.close();
151 port = null;
152 }, dart.void, [])});
153 return controller.stream;
154 }
155 }
156 dart.setSignature(Isolate, {
157 constructors: () => ({Isolate: [Isolate, [SendPort], {pauseCapability: Capab ility, terminateCapability: Capability}]}),
158 methods: () => ({
159 pause: [Capability, [], [Capability]],
160 [_pause]: [dart.void, [Capability]],
161 resume: [dart.void, [Capability]],
162 addOnExitListener: [dart.void, [SendPort]],
163 removeOnExitListener: [dart.void, [SendPort]],
164 setErrorsFatal: [dart.void, [core.bool]],
165 kill: [dart.void, [], [core.int]],
166 ping: [dart.void, [SendPort], [core.int]],
167 addErrorListener: [dart.void, [SendPort]],
168 removeErrorListener: [dart.void, [SendPort]]
169 }),
170 statics: () => ({
171 spawn: [async.Future$(Isolate), [dart.functionType(dart.void, [dart.dynami c]), dart.dynamic], {paused: core.bool}],
172 spawnUri: [async.Future$(Isolate), [core.Uri, core.List$(core.String), dar t.dynamic], {paused: core.bool, packageRoot: core.Uri}]
173 }),
174 names: ['spawn', 'spawnUri']
175 });
176 Isolate.IMMEDIATE = 0;
177 Isolate.BEFORE_NEXT_EVENT = 1;
178 Isolate.AS_EVENT = 2;
179 dart.defineLazyProperties(Isolate, {
180 get _currentIsolateCache() {
181 return _isolate_helper.IsolateNatives.currentIsolate;
182 }
183 });
184 class SendPort extends core.Object {}
185 SendPort[dart.implements] = () => [Capability];
186 class ReceivePort extends core.Object {
187 static new() {
188 return new _isolate_helper.ReceivePortImpl();
189 }
190 static fromRawReceivePort(rawPort) {
191 return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort);
192 }
193 }
194 ReceivePort[dart.implements] = () => [async.Stream];
195 dart.setSignature(ReceivePort, {
196 constructors: () => ({
197 new: [ReceivePort, []],
198 fromRawReceivePort: [ReceivePort, [RawReceivePort]]
199 })
200 });
201 class RawReceivePort extends core.Object {
202 static new(handler) {
203 if (handler === void 0) handler = null;
204 return new _isolate_helper.RawReceivePortImpl(handler);
205 }
206 }
207 dart.setSignature(RawReceivePort, {
208 constructors: () => ({new: [RawReceivePort, [], [dart.functionType(dart.void , [dart.dynamic])]]})
209 });
210 class _IsolateUnhandledException extends core.Object {
211 _IsolateUnhandledException(message, source, stackTrace) {
212 this.message = message;
213 this.source = source;
214 this.stackTrace = stackTrace;
215 }
216 toString() {
217 return 'IsolateUnhandledException: exception while handling message: ' + ` ${this.message} \n ` + `${dart.toString(this.source)[dartx.replaceAll]("\n", "\ n ")}\n` + 'original stack trace:\n ' + `${dart.toString(this.stackTrace)[dart x.replaceAll]("\n", "\n ")}`;
218 }
219 }
220 _IsolateUnhandledException[dart.implements] = () => [core.Exception];
221 dart.setSignature(_IsolateUnhandledException, {
222 constructors: () => ({_IsolateUnhandledException: [_IsolateUnhandledExceptio n, [dart.dynamic, dart.dynamic, core.StackTrace]]})
223 });
224 const _description = Symbol('_description');
225 class RemoteError extends core.Object {
226 RemoteError(description, stackDescription) {
227 this[_description] = description;
228 this.stackTrace = new _RemoteStackTrace(stackDescription);
229 }
230 toString() {
231 return this[_description];
232 }
233 }
234 RemoteError[dart.implements] = () => [core.Error];
235 dart.setSignature(RemoteError, {
236 constructors: () => ({RemoteError: [RemoteError, [core.String, core.String]] })
237 });
238 const _trace = Symbol('_trace');
239 class _RemoteStackTrace extends core.Object {
240 _RemoteStackTrace(trace) {
241 this[_trace] = trace;
242 }
243 toString() {
244 return this[_trace];
245 }
246 }
247 _RemoteStackTrace[dart.implements] = () => [core.StackTrace];
248 dart.setSignature(_RemoteStackTrace, {
249 constructors: () => ({_RemoteStackTrace: [_RemoteStackTrace, [core.String]]} )
250 });
251 // Exports:
252 exports.Capability = Capability;
253 exports.IsolateSpawnException = IsolateSpawnException;
254 exports.Isolate = Isolate;
255 exports.SendPort = SendPort;
256 exports.ReceivePort = ReceivePort;
257 exports.RawReceivePort = RawReceivePort;
258 exports.RemoteError = RemoteError;
259 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698