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

Side by Side Diff: pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart

Issue 2698353003: unfork DDC's copy of most SDK libraries (Closed)
Patch Set: revert core_patch Created 3 years, 9 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 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // Patch file for the dart:isolate library. 5 // Patch file for the dart:isolate library.
6 6
7 import 'dart:_js_helper' show patch; 7 import 'dart:_js_helper' show patch;
8 import 'dart:_isolate_helper' show CapabilityImpl, 8 import 'dart:_isolate_helper' show CapabilityImpl,
9 CloseToken,
10 IsolateNatives, 9 IsolateNatives,
11 JsIsolateSink,
12 ReceivePortImpl, 10 ReceivePortImpl,
13 RawReceivePortImpl; 11 RawReceivePortImpl;
14 12
13 typedef _UnaryFunction(arg);
14
15 @patch 15 @patch
16 class Isolate { 16 class Isolate {
17 static final _currentIsolateCache = IsolateNatives.currentIsolate; 17 static final _currentIsolateCache = IsolateNatives.currentIsolate;
18 18
19 // `current` must be a getter, not just a final field, 19 // `current` must be a getter, not just a final field,
20 // to match the external declaration. 20 // to match the external declaration.
21 @patch 21 @patch
22 static Isolate get current => _currentIsolateCache; 22 static Isolate get current => _currentIsolateCache;
23 23
24 @patch 24 @patch
25 static Future<Uri> get packageRoot {
26 throw new UnsupportedError("Isolate.packageRoot");
27 }
28
29 @patch
30 static Future<Uri> get packageConfig {
31 throw new UnsupportedError("Isolate.packageConfig");
32 }
33
34 static Uri _packageBase = Uri.base.resolve(IsolateNatives.packagesBase);
35
36 @patch
37 static Future<Uri> resolvePackageUri(Uri packageUri) async {
38 if (packageUri.scheme != 'package') return packageUri;
39 return _packageBase.resolveUri(packageUri.replace(scheme: ''));
40 }
41
42 @patch
25 static Future<Isolate> spawn(void entryPoint(message), var message, 43 static Future<Isolate> spawn(void entryPoint(message), var message,
26 { bool paused: false }) { 44 {bool paused: false, bool errorsAreFatal,
45 SendPort onExit, SendPort onError}) {
46 bool forcePause = (errorsAreFatal != null) ||
47 (onExit != null) ||
48 (onError != null);
27 try { 49 try {
28 return IsolateNatives.spawnFunction(entryPoint, message, paused) 50 // Check for the type of `entryPoint` on the spawning isolate to make
29 .then((msg) => new Isolate(msg[1], 51 // error-handling easier.
30 pauseCapability: msg[2], 52 if (entryPoint is! _UnaryFunction) {
31 terminateCapability: msg[3])); 53 throw new ArgumentError(entryPoint);
54 }
55 // TODO: Consider passing the errorsAreFatal/onExit/onError values
56 // as arguments to the internal spawnUri instead of setting
57 // them after the isolate has been created.
58 return IsolateNatives.spawnFunction(entryPoint, message,
59 paused || forcePause)
60 .then((msg) {
61 var isolate = new Isolate(msg[1],
62 pauseCapability: msg[2],
63 terminateCapability: msg[3]);
64 if (forcePause) {
65 if (errorsAreFatal != null) {
66 isolate.setErrorsFatal(errorsAreFatal);
67 }
68 if (onExit != null) {
69 isolate.addOnExitListener(onExit);
70 }
71 if (onError != null) {
72 isolate.addErrorListener(onError);
73 }
74 if (!paused) {
75 isolate.resume(isolate.pauseCapability);
76 }
77 }
78 return isolate;
79 });
32 } catch (e, st) { 80 } catch (e, st) {
33 return new Future<Isolate>.error(e, st); 81 return new Future<Isolate>.error(e, st);
34 } 82 }
35 } 83 }
36 84
37 @patch 85 @patch
38 static Future<Isolate> spawnUri( 86 static Future<Isolate> spawnUri(
39 Uri uri, List<String> args, var message, { bool paused: false, 87 Uri uri, List<String> args, var message,
40 Uri packageRoot }) { 88 {bool paused: false,
89 SendPort onExit,
90 SendPort onError,
91 bool errorsAreFatal,
92 bool checked,
93 Map<String, String> environment,
94 Uri packageRoot,
95 Uri packageConfig,
96 bool automaticPackageResolution: false}) {
97 if (environment != null) throw new UnimplementedError("environment");
41 if (packageRoot != null) throw new UnimplementedError("packageRoot"); 98 if (packageRoot != null) throw new UnimplementedError("packageRoot");
99 if (packageConfig != null) throw new UnimplementedError("packageConfig");
100 // TODO(lrn): Figure out how to handle the automaticPackageResolution
101 // parameter.
102 bool forcePause = (errorsAreFatal != null) ||
103 (onExit != null) ||
104 (onError != null);
42 try { 105 try {
43 if (args is List) { 106 if (args is List<String>) {
44 for (int i = 0; i < args.length; i++) { 107 for (int i = 0; i < args.length; i++) {
45 if (args[i] is! String) { 108 if (args[i] is! String) {
46 throw new ArgumentError("Args must be a list of Strings $args"); 109 throw new ArgumentError("Args must be a list of Strings $args");
47 } 110 }
48 } 111 }
49 } else if (args != null) { 112 } else if (args != null) {
50 throw new ArgumentError("Args must be a list of Strings $args"); 113 throw new ArgumentError("Args must be a list of Strings $args");
51 } 114 }
52 return IsolateNatives.spawnUri(uri, args, message, paused) 115 // TODO: Handle [packageRoot] somehow, possibly by throwing.
53 .then((msg) => new Isolate(msg[1], 116 // TODO: Consider passing the errorsAreFatal/onExit/onError values
54 pauseCapability: msg[2], 117 // as arguments to the internal spawnUri instead of setting
55 terminateCapability: msg[3])); 118 // them after the isolate has been created.
119 return IsolateNatives.spawnUri(uri, args, message, paused || forcePause)
120 .then((msg) {
121 var isolate = new Isolate(msg[1],
122 pauseCapability: msg[2],
123 terminateCapability: msg[3]);
124 if (forcePause) {
125 if (errorsAreFatal != null) {
126 isolate.setErrorsFatal(errorsAreFatal);
127 }
128 if (onExit != null) {
129 isolate.addOnExitListener(onExit);
130 }
131 if (onError != null) {
132 isolate.addErrorListener(onError);
133 }
134 if (!paused) {
135 isolate.resume(isolate.pauseCapability);
136 }
137 }
138 return isolate;
139 });
56 } catch (e, st) { 140 } catch (e, st) {
57 return new Future<Isolate>.error(e, st); 141 return new Future<Isolate>.error(e, st);
58 } 142 }
59 } 143 }
60 144
61 @patch 145 @patch
62 void _pause(Capability resumeCapability) { 146 void _pause(Capability resumeCapability) {
63 var message = new List(3) 147 var message = new List(3)
64 ..[0] = "pause" 148 ..[0] = "pause"
65 ..[1] = pauseCapability 149 ..[1] = pauseCapability
66 ..[2] = resumeCapability; 150 ..[2] = resumeCapability;
67 controlPort.send(message); 151 controlPort.send(message);
68 } 152 }
69 153
70 @patch 154 @patch
71 void resume(Capability resumeCapability) { 155 void resume(Capability resumeCapability) {
72 var message = new List(2) 156 var message = new List(2)
73 ..[0] = "resume" 157 ..[0] = "resume"
74 ..[1] = resumeCapability; 158 ..[1] = resumeCapability;
75 controlPort.send(message); 159 controlPort.send(message);
76 } 160 }
77 161
78 @patch 162 @patch
79 void addOnExitListener(SendPort responsePort) { 163 void addOnExitListener(SendPort responsePort, {Object response}) {
80 // TODO(lrn): Can we have an internal method that checks if the receiving 164 // TODO(lrn): Can we have an internal method that checks if the receiving
81 // isolate of a SendPort is still alive? 165 // isolate of a SendPort is still alive?
82 var message = new List(2) 166 var message = new List(3)
83 ..[0] = "add-ondone" 167 ..[0] = "add-ondone"
84 ..[1] = responsePort; 168 ..[1] = responsePort
169 ..[2] = response;
85 controlPort.send(message); 170 controlPort.send(message);
86 } 171 }
87 172
88 @patch 173 @patch
89 void removeOnExitListener(SendPort responsePort) { 174 void removeOnExitListener(SendPort responsePort) {
90 var message = new List(2) 175 var message = new List(2)
91 ..[0] = "remove-ondone" 176 ..[0] = "remove-ondone"
92 ..[1] = responsePort; 177 ..[1] = responsePort;
93 controlPort.send(message); 178 controlPort.send(message);
94 } 179 }
95 180
96 @patch 181 @patch
97 void setErrorsFatal(bool errorsAreFatal) { 182 void setErrorsFatal(bool errorsAreFatal) {
98 var message = new List(3) 183 var message = new List(3)
99 ..[0] = "set-errors-fatal" 184 ..[0] = "set-errors-fatal"
100 ..[1] = terminateCapability 185 ..[1] = terminateCapability
101 ..[2] = errorsAreFatal; 186 ..[2] = errorsAreFatal;
102 controlPort.send(message); 187 controlPort.send(message);
103 } 188 }
104 189
105 @patch 190 @patch
106 void kill([int priority = BEFORE_NEXT_EVENT]) { 191 void kill({int priority: BEFORE_NEXT_EVENT}) {
107 controlPort.send(["kill", terminateCapability, priority]); 192 controlPort.send(["kill", terminateCapability, priority]);
108 } 193 }
109 194
110 @patch 195 @patch
111 void ping(SendPort responsePort, [int pingType = IMMEDIATE]) { 196 void ping(SendPort responsePort, {Object response,
112 var message = new List(3) 197 int priority: IMMEDIATE}) {
198 var message = new List(4)
113 ..[0] = "ping" 199 ..[0] = "ping"
114 ..[1] = responsePort 200 ..[1] = responsePort
115 ..[2] = pingType; 201 ..[2] = priority
202 ..[3] = response;
116 controlPort.send(message); 203 controlPort.send(message);
117 } 204 }
118 205
119 @patch 206 @patch
120 void addErrorListener(SendPort port) { 207 void addErrorListener(SendPort port) {
121 var message = new List(2) 208 var message = new List(2)
122 ..[0] = "getErrors" 209 ..[0] = "getErrors"
123 ..[1] = port; 210 ..[1] = port;
124 controlPort.send(message); 211 controlPort.send(message);
125 } 212 }
(...skipping 25 matching lines...) Expand all
151 factory RawReceivePort([void handler(event)]) { 238 factory RawReceivePort([void handler(event)]) {
152 return new RawReceivePortImpl(handler); 239 return new RawReceivePortImpl(handler);
153 } 240 }
154 } 241 }
155 242
156 @patch 243 @patch
157 class Capability { 244 class Capability {
158 @patch 245 @patch
159 factory Capability() = CapabilityImpl; 246 factory Capability() = CapabilityImpl;
160 } 247 }
OLDNEW
« no previous file with comments | « pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart ('k') | pkg/dev_compiler/tool/input_sdk/patch/mirrors_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698