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

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

Issue 1156993015: fixes #193, factory constructors as static methods (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 6 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
1 var isolate = dart.defineLibrary(isolate, {}); 1 var isolate = dart.defineLibrary(isolate, {});
2 var core = dart.import(core); 2 var core = dart.import(core);
3 var _isolate_helper = dart.lazyImport(_isolate_helper); 3 var _isolate_helper = dart.lazyImport(_isolate_helper);
4 var async = dart.import(async); 4 var async = dart.import(async);
5 (function(exports, core, _isolate_helper, async) { 5 (function(exports, core, _isolate_helper, async) {
6 'use strict'; 6 'use strict';
7 class Capability extends core.Object { 7 class Capability extends core.Object {
8 Capability() { 8 static new() {
9 return new _isolate_helper.CapabilityImpl(); 9 return new _isolate_helper.CapabilityImpl();
10 } 10 }
11 } 11 }
12 dart.setSignature(Capability, { 12 dart.setSignature(Capability, {
13 constructors: () => ({Capability: [Capability, []]}) 13 constructors: () => ({new: [Capability, []]})
14 }); 14 });
15 class IsolateSpawnException extends core.Object { 15 class IsolateSpawnException extends core.Object {
16 IsolateSpawnException(message) { 16 IsolateSpawnException(message) {
17 this.message = message; 17 this.message = message;
18 } 18 }
19 toString() { 19 toString() {
20 return `IsolateSpawnException: ${this.message}`; 20 return `IsolateSpawnException: ${this.message}`;
21 } 21 }
22 } 22 }
23 IsolateSpawnException[dart.implements] = () => [core.Exception]; 23 IsolateSpawnException[dart.implements] = () => [core.Exception];
(...skipping 11 matching lines...) Expand all
35 } 35 }
36 static get current() { 36 static get current() {
37 return Isolate._currentIsolateCache; 37 return Isolate._currentIsolateCache;
38 } 38 }
39 static spawn(entryPoint, message, opts) { 39 static spawn(entryPoint, message, opts) {
40 let paused = opts && 'paused' in opts ? opts.paused : false; 40 let paused = opts && 'paused' in opts ? opts.paused : false;
41 try { 41 try {
42 return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint, message, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), Se ndPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCa pability: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])), async.Future$(Isolate)); 42 return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint, message, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), Se ndPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCa pability: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])), async.Future$(Isolate));
43 } catch (e) { 43 } catch (e) {
44 let st = dart.stackTrace(e); 44 let st = dart.stackTrace(e);
45 return new (async.Future$(Isolate)).error(e, st); 45 return async.Future$(Isolate).error(e, st);
46 } 46 }
47 47
48 } 48 }
49 static spawnUri(uri, args, message, opts) { 49 static spawnUri(uri, args, message, opts) {
50 let paused = opts && 'paused' in opts ? opts.paused : false; 50 let paused = opts && 'paused' in opts ? opts.paused : false;
51 let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null; 51 let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null;
52 if (packageRoot != null) 52 if (packageRoot != null)
53 throw new core.UnimplementedError("packageRoot"); 53 throw new core.UnimplementedError("packageRoot");
54 try { 54 try {
55 if (dart.is(args, core.List)) { 55 if (dart.is(args, core.List)) {
56 for (let i = 0; dart.notNull(i) < dart.notNull(args[core.$length]); i = dart.notNull(i) + 1) { 56 for (let i = 0; dart.notNull(i) < dart.notNull(args[core.$length]); i = dart.notNull(i) + 1) {
57 if (!(typeof args[core.$get](i) == 'string')) { 57 if (!(typeof args[core.$get](i) == 'string')) {
58 throw new core.ArgumentError(`Args must be a list of Strings ${arg s}`); 58 throw new core.ArgumentError(`Args must be a list of Strings ${arg s}`);
59 } 59 }
60 } 60 }
61 } else if (args != null) { 61 } else if (args != null) {
62 throw new core.ArgumentError(`Args must be a list of Strings ${args}`) ; 62 throw new core.ArgumentError(`Args must be a list of Strings ${args}`) ;
63 } 63 }
64 return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, messag e, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort ), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapabili ty: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])), async. Future$(Isolate)); 64 return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, messag e, paused).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort ), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapabili ty: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [core.Object])), async. Future$(Isolate));
65 } catch (e) { 65 } catch (e) {
66 let st = dart.stackTrace(e); 66 let st = dart.stackTrace(e);
67 return new (async.Future$(Isolate)).error(e, st); 67 return async.Future$(Isolate).error(e, st);
68 } 68 }
69 69
70 } 70 }
71 pause(resumeCapability) { 71 pause(resumeCapability) {
72 if (resumeCapability === void 0) 72 if (resumeCapability === void 0)
73 resumeCapability = null; 73 resumeCapability = null;
74 if (resumeCapability == null) 74 if (resumeCapability == null)
75 resumeCapability = new Capability(); 75 resumeCapability = Capability.new();
76 this[_pause](resumeCapability); 76 this[_pause](resumeCapability);
77 return resumeCapability; 77 return resumeCapability;
78 } 78 }
79 [_pause](resumeCapability) { 79 [_pause](resumeCapability) {
80 let message = new core.List(3); 80 let message = core.List.new(3);
81 message[core.$set](0, "pause"); 81 message[core.$set](0, "pause");
82 message[core.$set](1, this.pauseCapability); 82 message[core.$set](1, this.pauseCapability);
83 message[core.$set](2, resumeCapability); 83 message[core.$set](2, resumeCapability);
84 this.controlPort.send(message); 84 this.controlPort.send(message);
85 } 85 }
86 resume(resumeCapability) { 86 resume(resumeCapability) {
87 let message = new core.List(2); 87 let message = core.List.new(2);
88 message[core.$set](0, "resume"); 88 message[core.$set](0, "resume");
89 message[core.$set](1, resumeCapability); 89 message[core.$set](1, resumeCapability);
90 this.controlPort.send(message); 90 this.controlPort.send(message);
91 } 91 }
92 addOnExitListener(responsePort) { 92 addOnExitListener(responsePort) {
93 let message = new core.List(2); 93 let message = core.List.new(2);
94 message[core.$set](0, "add-ondone"); 94 message[core.$set](0, "add-ondone");
95 message[core.$set](1, responsePort); 95 message[core.$set](1, responsePort);
96 this.controlPort.send(message); 96 this.controlPort.send(message);
97 } 97 }
98 removeOnExitListener(responsePort) { 98 removeOnExitListener(responsePort) {
99 let message = new core.List(2); 99 let message = core.List.new(2);
100 message[core.$set](0, "remove-ondone"); 100 message[core.$set](0, "remove-ondone");
101 message[core.$set](1, responsePort); 101 message[core.$set](1, responsePort);
102 this.controlPort.send(message); 102 this.controlPort.send(message);
103 } 103 }
104 setErrorsFatal(errorsAreFatal) { 104 setErrorsFatal(errorsAreFatal) {
105 let message = new core.List(3); 105 let message = core.List.new(3);
106 message[core.$set](0, "set-errors-fatal"); 106 message[core.$set](0, "set-errors-fatal");
107 message[core.$set](1, this.terminateCapability); 107 message[core.$set](1, this.terminateCapability);
108 message[core.$set](2, errorsAreFatal); 108 message[core.$set](2, errorsAreFatal);
109 this.controlPort.send(message); 109 this.controlPort.send(message);
110 } 110 }
111 kill(priority) { 111 kill(priority) {
112 if (priority === void 0) 112 if (priority === void 0)
113 priority = Isolate.BEFORE_NEXT_EVENT; 113 priority = Isolate.BEFORE_NEXT_EVENT;
114 this.controlPort.send(["kill", this.terminateCapability, priority]); 114 this.controlPort.send(["kill", this.terminateCapability, priority]);
115 } 115 }
116 ping(responsePort, pingType) { 116 ping(responsePort, pingType) {
117 if (pingType === void 0) 117 if (pingType === void 0)
118 pingType = Isolate.IMMEDIATE; 118 pingType = Isolate.IMMEDIATE;
119 let message = new core.List(3); 119 let message = core.List.new(3);
120 message[core.$set](0, "ping"); 120 message[core.$set](0, "ping");
121 message[core.$set](1, responsePort); 121 message[core.$set](1, responsePort);
122 message[core.$set](2, pingType); 122 message[core.$set](2, pingType);
123 this.controlPort.send(message); 123 this.controlPort.send(message);
124 } 124 }
125 addErrorListener(port) { 125 addErrorListener(port) {
126 let message = new core.List(2); 126 let message = core.List.new(2);
127 message[core.$set](0, "getErrors"); 127 message[core.$set](0, "getErrors");
128 message[core.$set](1, port); 128 message[core.$set](1, port);
129 this.controlPort.send(message); 129 this.controlPort.send(message);
130 } 130 }
131 removeErrorListener(port) { 131 removeErrorListener(port) {
132 let message = new core.List(2); 132 let message = core.List.new(2);
133 message[core.$set](0, "stopErrors"); 133 message[core.$set](0, "stopErrors");
134 message[core.$set](1, port); 134 message[core.$set](1, port);
135 this.controlPort.send(message); 135 this.controlPort.send(message);
136 } 136 }
137 get errors() { 137 get errors() {
138 let controller = null; 138 let controller = null;
139 let port = null; 139 let port = null;
140 let handleError = message => { 140 let handleError = message => {
141 let errorDescription = dart.as(dart.dindex(message, 0), core.String); 141 let errorDescription = dart.as(dart.dindex(message, 0), core.String);
142 let stackDescription = dart.as(dart.dindex(message, 1), core.String); 142 let stackDescription = dart.as(dart.dindex(message, 1), core.String);
143 let error = new RemoteError(errorDescription, stackDescription); 143 let error = new RemoteError(errorDescription, stackDescription);
144 controller.addError(error, error.stackTrace); 144 controller.addError(error, error.stackTrace);
145 }; 145 };
146 dart.fn(handleError, dart.void, [core.Object]); 146 dart.fn(handleError, dart.void, [core.Object]);
147 controller = new async.StreamController.broadcast({sync: true, onListen: d art.fn((() => { 147 controller = async.StreamController.broadcast({sync: true, onListen: dart. fn((() => {
148 port = new RawReceivePort(handleError); 148 port = RawReceivePort.new(handleError);
149 this.addErrorListener(port.sendPort); 149 this.addErrorListener(port.sendPort);
150 }).bind(this)), onCancel: dart.fn((() => { 150 }).bind(this)), onCancel: dart.fn((() => {
151 this.removeErrorListener(port.sendPort); 151 this.removeErrorListener(port.sendPort);
152 port.close(); 152 port.close();
153 port = null; 153 port = null;
154 }).bind(this))}); 154 }).bind(this))});
155 return controller.stream; 155 return controller.stream;
156 } 156 }
157 } 157 }
158 dart.setSignature(Isolate, { 158 dart.setSignature(Isolate, {
(...skipping 20 matching lines...) Expand all
179 Isolate.BEFORE_NEXT_EVENT = 1; 179 Isolate.BEFORE_NEXT_EVENT = 1;
180 Isolate.AS_EVENT = 2; 180 Isolate.AS_EVENT = 2;
181 dart.defineLazyProperties(Isolate, { 181 dart.defineLazyProperties(Isolate, {
182 get _currentIsolateCache() { 182 get _currentIsolateCache() {
183 return _isolate_helper.IsolateNatives.currentIsolate; 183 return _isolate_helper.IsolateNatives.currentIsolate;
184 } 184 }
185 }); 185 });
186 class SendPort extends core.Object {} 186 class SendPort extends core.Object {}
187 SendPort[dart.implements] = () => [Capability]; 187 SendPort[dart.implements] = () => [Capability];
188 class ReceivePort extends core.Object { 188 class ReceivePort extends core.Object {
189 ReceivePort() { 189 static new() {
190 return new _isolate_helper.ReceivePortImpl(); 190 return new _isolate_helper.ReceivePortImpl();
191 } 191 }
192 fromRawReceivePort(rawPort) { 192 static fromRawReceivePort(rawPort) {
193 return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort); 193 return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort);
194 } 194 }
195 } 195 }
196 ReceivePort[dart.implements] = () => [async.Stream]; 196 ReceivePort[dart.implements] = () => [async.Stream];
197 dart.defineNamedConstructor(ReceivePort, 'fromRawReceivePort');
198 dart.setSignature(ReceivePort, { 197 dart.setSignature(ReceivePort, {
199 constructors: () => ({ 198 constructors: () => ({
200 ReceivePort: [ReceivePort, []], 199 new: [ReceivePort, []],
201 fromRawReceivePort: [ReceivePort, [RawReceivePort]] 200 fromRawReceivePort: [ReceivePort, [RawReceivePort]]
202 }) 201 })
203 }); 202 });
204 class RawReceivePort extends core.Object { 203 class RawReceivePort extends core.Object {
205 RawReceivePort(handler) { 204 static new(handler) {
206 if (handler === void 0) 205 if (handler === void 0)
207 handler = null; 206 handler = null;
208 return new _isolate_helper.RawReceivePortImpl(handler); 207 return new _isolate_helper.RawReceivePortImpl(handler);
209 } 208 }
210 } 209 }
211 dart.setSignature(RawReceivePort, { 210 dart.setSignature(RawReceivePort, {
212 constructors: () => ({RawReceivePort: [RawReceivePort, [], [dart.functionTyp e(dart.void, [dart.bottom])]]}) 211 constructors: () => ({new: [RawReceivePort, [], [dart.functionType(dart.void , [dart.bottom])]]})
213 }); 212 });
214 class _IsolateUnhandledException extends core.Object { 213 class _IsolateUnhandledException extends core.Object {
215 _IsolateUnhandledException(message, source, stackTrace) { 214 _IsolateUnhandledException(message, source, stackTrace) {
216 this.message = message; 215 this.message = message;
217 this.source = source; 216 this.source = source;
218 this.stackTrace = stackTrace; 217 this.stackTrace = stackTrace;
219 } 218 }
220 toString() { 219 toString() {
221 return 'IsolateUnhandledException: exception while handling message: ' + ` ${this.message} \n ` + `${dart.toString(this.source).replaceAll("\n", "\n ")}\ n` + 'original stack trace:\n ' + `${dart.toString(this.stackTrace).replaceAll( "\n", "\n ")}`; 220 return 'IsolateUnhandledException: exception while handling message: ' + ` ${this.message} \n ` + `${dart.toString(this.source).replaceAll("\n", "\n ")}\ n` + 'original stack trace:\n ' + `${dart.toString(this.stackTrace).replaceAll( "\n", "\n ")}`;
222 } 221 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 }); 253 });
255 // Exports: 254 // Exports:
256 exports.Capability = Capability; 255 exports.Capability = Capability;
257 exports.IsolateSpawnException = IsolateSpawnException; 256 exports.IsolateSpawnException = IsolateSpawnException;
258 exports.Isolate = Isolate; 257 exports.Isolate = Isolate;
259 exports.SendPort = SendPort; 258 exports.SendPort = SendPort;
260 exports.ReceivePort = ReceivePort; 259 exports.ReceivePort = ReceivePort;
261 exports.RawReceivePort = RawReceivePort; 260 exports.RawReceivePort = RawReceivePort;
262 exports.RemoteError = RemoteError; 261 exports.RemoteError = RemoteError;
263 })(isolate, core, _isolate_helper, async); 262 })(isolate, core, _isolate_helper, async);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698