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

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

Issue 1355893003: Rewire DDC to use the analyzer task model (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Fix for identifiers Created 5 years, 3 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 dart_library.library('dart/isolate', null, /* Imports */[ 1 dart_library.library('dart/isolate', null, /* Imports */[
2 "dart_runtime/dart", 2 "dart_runtime/dart",
3 'dart/core', 3 'dart/core',
4 'dart/async' 4 'dart/async'
5 ], /* Lazy imports */[ 5 ], /* Lazy imports */[
6 'dart/_isolate_helper' 6 'dart/_isolate_helper'
7 ], function(exports, dart, core, async, _isolate_helper) { 7 ], function(exports, dart, core, async, _isolate_helper) {
8 'use strict'; 8 'use strict';
9 let dartx = dart.dartx; 9 let dartx = dart.dartx;
10 class Capability extends core.Object { 10 class Capability extends core.Object {
(...skipping 19 matching lines...) Expand all
30 let _pause = Symbol('_pause'); 30 let _pause = Symbol('_pause');
31 class Isolate extends core.Object { 31 class Isolate extends core.Object {
32 Isolate(controlPort, opts) { 32 Isolate(controlPort, opts) {
33 let pauseCapability = opts && 'pauseCapability' in opts ? opts.pauseCapabi lity : null; 33 let pauseCapability = opts && 'pauseCapability' in opts ? opts.pauseCapabi lity : null;
34 let terminateCapability = opts && 'terminateCapability' in opts ? opts.ter minateCapability : null; 34 let terminateCapability = opts && 'terminateCapability' in opts ? opts.ter minateCapability : null;
35 this.controlPort = controlPort; 35 this.controlPort = controlPort;
36 this.pauseCapability = pauseCapability; 36 this.pauseCapability = pauseCapability;
37 this.terminateCapability = terminateCapability; 37 this.terminateCapability = terminateCapability;
38 } 38 }
39 static get current() { 39 static get current() {
40 return Isolate._currentIsolateCache; 40 return dart.as(Isolate._currentIsolateCache, Isolate);
41 } 41 }
42 static spawn(entryPoint, message, opts) { 42 static spawn(entryPoint, message, opts) {
43 let paused = opts && 'paused' in opts ? opts.paused : false; 43 let paused = opts && 'paused' in opts ? opts.paused : false;
44 try { 44 try {
45 return _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])); 45 return dart.as(dart.dcall(dart.dcall(_isolate_helper.IsolateNatives.spaw nFunction, 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)}), Is olate, [dart.dynamic])), async.Future$(Isolate));
46 } catch (e) { 46 } catch (e) {
47 let st = dart.stackTrace(e); 47 let st = dart.stackTrace(e);
48 return async.Future$(Isolate).error(e, st); 48 return async.Future$(Isolate).error(e, st);
49 } 49 }
50 50
51 } 51 }
52 static spawnUri(uri, args, message, opts) { 52 static spawnUri(uri, args, message, opts) {
53 let paused = opts && 'paused' in opts ? opts.paused : false; 53 let paused = opts && 'paused' in opts ? opts.paused : false;
54 let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null; 54 let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null;
55 if (packageRoot != null) 55 if (packageRoot != null)
56 dart.throw(new core.UnimplementedError("packageRoot")); 56 dart.throw(new core.UnimplementedError("packageRoot"));
57 try { 57 try {
58 if (dart.is(args, core.List)) { 58 if (dart.is(args, core.List)) {
59 for (let i = 0; dart.notNull(i) < dart.notNull(args[dartx.length]); i = dart.notNull(i) + 1) { 59 for (let i = 0; dart.notNull(i) < dart.notNull(args[dartx.length]); i = dart.notNull(i) + 1) {
60 if (!(typeof args[dartx.get](i) == 'string')) { 60 if (!(typeof args[dartx.get](i) == 'string')) {
61 dart.throw(new core.ArgumentError(`Args must be a list of Strings ${args}`)); 61 dart.throw(new core.ArgumentError(`Args must be a list of Strings ${args}`));
62 } 62 }
63 } 63 }
64 } else if (args != null) { 64 } else if (args != null) {
65 dart.throw(new core.ArgumentError(`Args must be a list of Strings ${ar gs}`)); 65 dart.throw(new core.ArgumentError(`Args must be a list of Strings ${ar gs}`));
66 } 66 }
67 return _isolate_helper.IsolateNatives.spawnUri(uri, args, message, pause d).then(dart.fn(msg => new Isolate(dart.as(dart.dindex(msg, 1), SendPort), {paus eCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapability: dart .as(dart.dindex(msg, 3), Capability)}), Isolate, [dart.dynamic])); 67 return dart.as(dart.dcall(dart.dcall(_isolate_helper.IsolateNatives.spaw nUri, uri, args, message, paused).then, dart.fn(msg => new Isolate(dart.as(dart. dindex(msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capabi lity), terminateCapability: dart.as(dart.dindex(msg, 3), Capability)}), Isolate, [dart.dynamic])), async.Future$(Isolate));
68 } catch (e) { 68 } catch (e) {
69 let st = dart.stackTrace(e); 69 let st = dart.stackTrace(e);
70 return async.Future$(Isolate).error(e, st); 70 return async.Future$(Isolate).error(e, st);
71 } 71 }
72 72
73 } 73 }
74 pause(resumeCapability) { 74 pause(resumeCapability) {
75 if (resumeCapability === void 0) 75 if (resumeCapability === void 0)
76 resumeCapability = null; 76 resumeCapability = null;
77 if (resumeCapability == null) 77 if (resumeCapability == null)
78 resumeCapability = Capability.new(); 78 resumeCapability = Capability.new();
79 this[_pause](resumeCapability); 79 dart.dcall(this[_pause], resumeCapability);
80 return resumeCapability; 80 return resumeCapability;
81 } 81 }
82 [_pause](resumeCapability) { 82 [_pause](resumeCapability) {
83 let message = core.List.new(3); 83 let message = core.List.new(3);
84 message[dartx.set](0, "pause"); 84 message[dartx.set](0, "pause");
85 message[dartx.set](1, this.pauseCapability); 85 message[dartx.set](1, this.pauseCapability);
86 message[dartx.set](2, resumeCapability); 86 message[dartx.set](2, resumeCapability);
87 this.controlPort.send(message); 87 dart.dcall(this.controlPort.send, message);
88 } 88 }
89 resume(resumeCapability) { 89 resume(resumeCapability) {
90 let message = core.List.new(2); 90 let message = core.List.new(2);
91 message[dartx.set](0, "resume"); 91 message[dartx.set](0, "resume");
92 message[dartx.set](1, resumeCapability); 92 message[dartx.set](1, resumeCapability);
93 this.controlPort.send(message); 93 dart.dcall(this.controlPort.send, message);
94 } 94 }
95 addOnExitListener(responsePort) { 95 addOnExitListener(responsePort) {
96 let message = core.List.new(2); 96 let message = core.List.new(2);
97 message[dartx.set](0, "add-ondone"); 97 message[dartx.set](0, "add-ondone");
98 message[dartx.set](1, responsePort); 98 message[dartx.set](1, responsePort);
99 this.controlPort.send(message); 99 dart.dcall(this.controlPort.send, message);
100 } 100 }
101 removeOnExitListener(responsePort) { 101 removeOnExitListener(responsePort) {
102 let message = core.List.new(2); 102 let message = core.List.new(2);
103 message[dartx.set](0, "remove-ondone"); 103 message[dartx.set](0, "remove-ondone");
104 message[dartx.set](1, responsePort); 104 message[dartx.set](1, responsePort);
105 this.controlPort.send(message); 105 dart.dcall(this.controlPort.send, message);
106 } 106 }
107 setErrorsFatal(errorsAreFatal) { 107 setErrorsFatal(errorsAreFatal) {
108 let message = core.List.new(3); 108 let message = core.List.new(3);
109 message[dartx.set](0, "set-errors-fatal"); 109 message[dartx.set](0, "set-errors-fatal");
110 message[dartx.set](1, this.terminateCapability); 110 message[dartx.set](1, this.terminateCapability);
111 message[dartx.set](2, errorsAreFatal); 111 message[dartx.set](2, errorsAreFatal);
112 this.controlPort.send(message); 112 dart.dcall(this.controlPort.send, message);
113 } 113 }
114 kill(priority) { 114 kill(priority) {
115 if (priority === void 0) 115 if (priority === void 0)
116 priority = Isolate.BEFORE_NEXT_EVENT; 116 priority = Isolate.BEFORE_NEXT_EVENT;
117 this.controlPort.send(["kill", this.terminateCapability, priority]); 117 dart.dcall(this.controlPort.send, ["kill", this.terminateCapability, prior ity]);
118 } 118 }
119 ping(responsePort, pingType) { 119 ping(responsePort, pingType) {
120 if (pingType === void 0) 120 if (pingType === void 0)
121 pingType = Isolate.IMMEDIATE; 121 pingType = Isolate.IMMEDIATE;
122 let message = core.List.new(3); 122 let message = core.List.new(3);
123 message[dartx.set](0, "ping"); 123 message[dartx.set](0, "ping");
124 message[dartx.set](1, responsePort); 124 message[dartx.set](1, responsePort);
125 message[dartx.set](2, pingType); 125 message[dartx.set](2, pingType);
126 this.controlPort.send(message); 126 dart.dcall(this.controlPort.send, message);
127 } 127 }
128 addErrorListener(port) { 128 addErrorListener(port) {
129 let message = core.List.new(2); 129 let message = core.List.new(2);
130 message[dartx.set](0, "getErrors"); 130 message[dartx.set](0, "getErrors");
131 message[dartx.set](1, port); 131 message[dartx.set](1, port);
132 this.controlPort.send(message); 132 dart.dcall(this.controlPort.send, message);
133 } 133 }
134 removeErrorListener(port) { 134 removeErrorListener(port) {
135 let message = core.List.new(2); 135 let message = core.List.new(2);
136 message[dartx.set](0, "stopErrors"); 136 message[dartx.set](0, "stopErrors");
137 message[dartx.set](1, port); 137 message[dartx.set](1, port);
138 this.controlPort.send(message); 138 dart.dcall(this.controlPort.send, message);
139 } 139 }
140 get errors() { 140 get errors() {
141 let controller = null; 141 let controller = null;
142 let port = null; 142 let port = null;
143 function handleError(message) { 143 function handleError(message) {
144 let errorDescription = dart.as(dart.dindex(message, 0), core.String); 144 let errorDescription = dart.as(dart.dindex(message, 0), core.String);
145 let stackDescription = dart.as(dart.dindex(message, 1), core.String); 145 let stackDescription = dart.as(dart.dindex(message, 1), core.String);
146 let error = new RemoteError(errorDescription, stackDescription); 146 let error = new RemoteError(errorDescription, stackDescription);
147 controller.addError(error, error.stackTrace); 147 dart.dcall(controller.addError, error, dart.dload(error, 'stackTrace'));
148 } 148 }
149 dart.fn(handleError, dart.void, [dart.dynamic]); 149 dart.fn(handleError, dart.void, [dart.dynamic]);
150 controller = async.StreamController.broadcast({sync: true, onListen: dart. fn((() => { 150 controller = async.StreamController.broadcast({sync: true, onListen: dart. fn((() => {
151 port = RawReceivePort.new(handleError); 151 port = RawReceivePort.new(handleError);
152 this.addErrorListener(port.sendPort); 152 dart.dcall(this.addErrorListener, port.sendPort);
153 }).bind(this)), onCancel: dart.fn((() => { 153 }).bind(this)), onCancel: dart.fn((() => {
154 this.removeErrorListener(port.sendPort); 154 dart.dcall(this.removeErrorListener, port.sendPort);
155 port.close(); 155 dart.dcall(port.close);
156 port = null; 156 port = null;
157 }).bind(this))}); 157 }).bind(this))});
158 return controller.stream; 158 return controller.stream;
159 } 159 }
160 } 160 }
161 dart.setSignature(Isolate, { 161 dart.setSignature(Isolate, {
162 constructors: () => ({Isolate: [Isolate, [SendPort], {pauseCapability: Capab ility, terminateCapability: Capability}]}), 162 constructors: () => ({Isolate: [Isolate, [SendPort], {pauseCapability: Capab ility, terminateCapability: Capability}]}),
163 methods: () => ({ 163 methods: () => ({
164 pause: [Capability, [], [Capability]], 164 pause: [Capability, [], [Capability]],
165 [_pause]: [dart.void, [Capability]], 165 [_pause]: [dart.void, [Capability]],
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 dart.setSignature(RawReceivePort, { 213 dart.setSignature(RawReceivePort, {
214 constructors: () => ({new: [RawReceivePort, [], [dart.functionType(dart.void , [dart.dynamic])]]}) 214 constructors: () => ({new: [RawReceivePort, [], [dart.functionType(dart.void , [dart.dynamic])]]})
215 }); 215 });
216 class _IsolateUnhandledException extends core.Object { 216 class _IsolateUnhandledException extends core.Object {
217 _IsolateUnhandledException(message, source, stackTrace) { 217 _IsolateUnhandledException(message, source, stackTrace) {
218 this.message = message; 218 this.message = message;
219 this.source = source; 219 this.source = source;
220 this.stackTrace = stackTrace; 220 this.stackTrace = stackTrace;
221 } 221 }
222 toString() { 222 toString() {
223 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 ")}`; 223 return 'IsolateUnhandledException: exception while handling message: ' + ` ${this.message} \n ` + `${dart.dsend(dart.dsend(this.source, 'toString'), 'repl aceAll', "\n", "\n ")}\n` + 'original stack trace:\n ' + `${dart.dcall(dart.dc all(this.stackTrace.toString)[dartx.replaceAll], "\n", "\n ")}`;
224 } 224 }
225 } 225 }
226 _IsolateUnhandledException[dart.implements] = () => [core.Exception]; 226 _IsolateUnhandledException[dart.implements] = () => [core.Exception];
227 dart.setSignature(_IsolateUnhandledException, { 227 dart.setSignature(_IsolateUnhandledException, {
228 constructors: () => ({_IsolateUnhandledException: [_IsolateUnhandledExceptio n, [dart.dynamic, dart.dynamic, core.StackTrace]]}) 228 constructors: () => ({_IsolateUnhandledException: [_IsolateUnhandledExceptio n, [dart.dynamic, dart.dynamic, core.StackTrace]]})
229 }); 229 });
230 let _description = Symbol('_description'); 230 let _description = Symbol('_description');
231 class RemoteError extends core.Object { 231 class RemoteError extends core.Object {
232 RemoteError(description, stackDescription) { 232 RemoteError(description, stackDescription) {
233 this[_description] = description; 233 this[_description] = description;
(...skipping 22 matching lines...) Expand all
256 }); 256 });
257 // Exports: 257 // Exports:
258 exports.Capability = Capability; 258 exports.Capability = Capability;
259 exports.IsolateSpawnException = IsolateSpawnException; 259 exports.IsolateSpawnException = IsolateSpawnException;
260 exports.Isolate = Isolate; 260 exports.Isolate = Isolate;
261 exports.SendPort = SendPort; 261 exports.SendPort = SendPort;
262 exports.ReceivePort = ReceivePort; 262 exports.ReceivePort = ReceivePort;
263 exports.RawReceivePort = RawReceivePort; 263 exports.RawReceivePort = RawReceivePort;
264 exports.RemoteError = RemoteError; 264 exports.RemoteError = RemoteError;
265 }); 265 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698