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

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

Issue 1069493002: implement opassign, fix bugs in pre/postfix, introduce a let* helper (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 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
« no previous file with comments | « lib/runtime/dart/_internal.js ('k') | lib/runtime/dart/_js_helper.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 var _isolate_helper; 1 var _isolate_helper;
2 (function(exports) { 2 (function(exports) {
3 'use strict'; 3 'use strict';
4 // Function _serializeMessage: (dynamic) → dynamic 4 // Function _serializeMessage: (dynamic) → dynamic
5 function _serializeMessage(message) { 5 function _serializeMessage(message) {
6 return new _Serializer().serialize(message); 6 return new _Serializer().serialize(message);
7 } 7 }
8 // Function _deserializeMessage: (dynamic) → dynamic 8 // Function _deserializeMessage: (dynamic) → dynamic
9 function _deserializeMessage(message) { 9 function _deserializeMessage(message) {
10 return new _Deserializer().deserialize(message); 10 return new _Deserializer().deserialize(message);
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 } 351 }
352 // Function _callInIsolate: (_IsolateContext, Function) → dynamic 352 // Function _callInIsolate: (_IsolateContext, Function) → dynamic
353 function _callInIsolate(isolate, function$0) { 353 function _callInIsolate(isolate, function$0) {
354 let result = isolate.eval(function$0); 354 let result = isolate.eval(function$0);
355 exports._globalState.topEventLoop.run(); 355 exports._globalState.topEventLoop.run();
356 return result; 356 return result;
357 } 357 }
358 let _activeJsAsyncCount = Symbol('_activeJsAsyncCount'); 358 let _activeJsAsyncCount = Symbol('_activeJsAsyncCount');
359 // Function enterJsAsync: () → dynamic 359 // Function enterJsAsync: () → dynamic
360 function enterJsAsync() { 360 function enterJsAsync() {
361 exports._globalState.topEventLoop[_activeJsAsyncCount] = dart.notNull(export s._globalState.topEventLoop[_activeJsAsyncCount]) + 1; 361 let o$ = exports._globalState.topEventLoop;
362 o$[_activeJsAsyncCount] = dart.notNull(o$[_activeJsAsyncCount]) + 1;
362 } 363 }
363 // Function leaveJsAsync: () → dynamic 364 // Function leaveJsAsync: () → dynamic
364 function leaveJsAsync() { 365 function leaveJsAsync() {
365 exports._globalState.topEventLoop[_activeJsAsyncCount] = dart.notNull(export s._globalState.topEventLoop[_activeJsAsyncCount]) - 1; 366 let o$ = exports._globalState.topEventLoop;
367 o$[_activeJsAsyncCount] = dart.notNull(o$[_activeJsAsyncCount]) - 1;
366 dart.assert(dart.notNull(exports._globalState.topEventLoop[_activeJsAsyncCou nt]) >= 0); 368 dart.assert(dart.notNull(exports._globalState.topEventLoop[_activeJsAsyncCou nt]) >= 0);
367 } 369 }
368 // Function isWorker: () → bool 370 // Function isWorker: () → bool
369 function isWorker() { 371 function isWorker() {
370 return exports._globalState.isWorker; 372 return exports._globalState.isWorker;
371 } 373 }
372 // Function _currentIsolate: () → _IsolateContext 374 // Function _currentIsolate: () → _IsolateContext
373 function _currentIsolate() { 375 function _currentIsolate() {
374 return exports._globalState.currentContext; 376 return exports._globalState.currentContext;
375 } 377 }
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 } 476 }
475 let _controlPort = Symbol('_controlPort'); 477 let _controlPort = Symbol('_controlPort');
476 let _scheduledControlEvents = Symbol('_scheduledControlEvents'); 478 let _scheduledControlEvents = Symbol('_scheduledControlEvents');
477 let _isExecutingEvent = Symbol('_isExecutingEvent'); 479 let _isExecutingEvent = Symbol('_isExecutingEvent');
478 let _updateGlobalState = Symbol('_updateGlobalState'); 480 let _updateGlobalState = Symbol('_updateGlobalState');
479 let _setGlobals = Symbol('_setGlobals'); 481 let _setGlobals = Symbol('_setGlobals');
480 let _addRegistration = Symbol('_addRegistration'); 482 let _addRegistration = Symbol('_addRegistration');
481 let _close = Symbol('_close'); 483 let _close = Symbol('_close');
482 class _IsolateContext extends core.Object { 484 class _IsolateContext extends core.Object {
483 _IsolateContext() { 485 _IsolateContext() {
484 this.id = ((x$) => exports._globalState.nextIsolateId = dart.notNull(x$) + 1, x$)(exports._globalState.nextIsolateId); 486 this.id = (() => {
487 let o$ = exports._globalState, x$ = o$.nextIsolateId;
488 o$.nextIsolateId = dart.notNull(x$) + 1;
489 return x$;
490 })();
485 this.ports = new (core.Map$(core.int, RawReceivePortImpl))(); 491 this.ports = new (core.Map$(core.int, RawReceivePortImpl))();
486 this.weakPorts = new (core.Set$(core.int))(); 492 this.weakPorts = new (core.Set$(core.int))();
487 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE(); 493 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE();
488 this.controlPort = new RawReceivePortImpl[_controlPort](); 494 this.controlPort = new RawReceivePortImpl[_controlPort]();
489 this.pauseCapability = new isolate.Capability(); 495 this.pauseCapability = new isolate.Capability();
490 this.terminateCapability = new isolate.Capability(); 496 this.terminateCapability = new isolate.Capability();
491 this.delayedEvents = dart.as(new core.List.from([]), core.List$(_IsolateEv ent)); 497 this.delayedEvents = dart.as(new core.List.from([]), core.List$(_IsolateEv ent));
492 this.pauseTokens = dart.as(new core.Set(), core.Set$(isolate.Capability)); 498 this.pauseTokens = dart.as(new core.Set(), core.Set$(isolate.Capability));
493 this.errorPorts = dart.as(new core.Set(), core.Set$(isolate.SendPort)); 499 this.errorPorts = dart.as(new core.Set(), core.Set$(isolate.SendPort));
494 this.initialized = false; 500 this.initialized = false;
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 break; 952 break;
947 } 953 }
948 case 'error': 954 case 'error':
949 { 955 {
950 throw dart.dindex(msg, 'msg'); 956 throw dart.dindex(msg, 'msg');
951 } 957 }
952 } 958 }
953 } 959 }
954 static handleSpawnWorkerRequest(msg) { 960 static handleSpawnWorkerRequest(msg) {
955 let replyPort = dart.dindex(msg, 'replyPort'); 961 let replyPort = dart.dindex(msg, 'replyPort');
956 IsolateNatives.spawn(dart.as(dart.dindex(msg, 'functionName'), core.String ), dart.as(dart.dindex(msg, 'uri'), core.String), dart.as(dart.dindex(msg, 'args '), core.List$(core.String)), dart.dindex(msg, 'msg'), false, dart.as(dart.dinde x(msg, 'isSpawnUri'), core.bool), dart.as(dart.dindex(msg, 'startPaused'), core. bool)).then(dart.as((msg) => { 962 IsolateNatives.spawn(dart.as(dart.dindex(msg, 'functionName'), core.String ), dart.as(dart.dindex(msg, 'uri'), core.String), dart.as(dart.dindex(msg, 'args '), core.List$(core.String)), dart.dindex(msg, 'msg'), false, dart.as(dart.dinde x(msg, 'isSpawnUri'), core.bool), dart.as(dart.dindex(msg, 'startPaused'), core. bool)).then(dart.as(msg => {
957 dart.dinvoke(replyPort, 'send', msg); 963 dart.dinvoke(replyPort, 'send', msg);
958 }, dart.throw_("Unimplemented type (List<dynamic>) → dynamic")), { 964 }, dart.throw_("Unimplemented type (List<dynamic>) → dynamic")), {
959 onError: (errorMessage) => { 965 onError: errorMessage => {
960 dart.dinvoke(replyPort, 'send', new core.List.from([_SPAWN_FAILED_SIGN AL, errorMessage])); 966 dart.dinvoke(replyPort, 'send', new core.List.from([_SPAWN_FAILED_SIGN AL, errorMessage]));
961 } 967 }
962 }); 968 });
963 } 969 }
964 static [_log](msg) { 970 static [_log](msg) {
965 if (exports._globalState.isWorker) { 971 if (exports._globalState.isWorker) {
966 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg}))); 972 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg})));
967 } else { 973 } else {
968 try { 974 try {
969 IsolateNatives[_consoleLog](msg); 975 IsolateNatives[_consoleLog](msg);
(...skipping 28 matching lines...) Expand all
998 let isSpawnUri = false; 1004 let isSpawnUri = false;
999 return IsolateNatives.spawn(name, null, null, message, isLight, isSpawnUri , startPaused); 1005 return IsolateNatives.spawn(name, null, null, message, isLight, isSpawnUri , startPaused);
1000 } 1006 }
1001 static spawnUri(uri, args, message, startPaused) { 1007 static spawnUri(uri, args, message, startPaused) {
1002 IsolateNatives.enableSpawnWorker = true; 1008 IsolateNatives.enableSpawnWorker = true;
1003 let isLight = false; 1009 let isLight = false;
1004 let isSpawnUri = true; 1010 let isSpawnUri = true;
1005 return IsolateNatives.spawn(null, uri.toString(), args, message, isLight, isSpawnUri, startPaused); 1011 return IsolateNatives.spawn(null, uri.toString(), args, message, isLight, isSpawnUri, startPaused);
1006 } 1012 }
1007 static spawn(functionName, uri, args, message, isLight, isSpawnUri, startPau sed) { 1013 static spawn(functionName, uri, args, message, isLight, isSpawnUri, startPau sed) {
1008 if (dart.notNull(uri != null) && dart.notNull(uri.endsWith(".dart"))) 1014 if (dart.notNull(uri != null) && dart.notNull(uri.endsWith(".dart"))) {
1009 uri = ".js"; 1015 uri = core.String['+'](uri, ".js");
1016 }
1010 let port = new isolate.ReceivePort(); 1017 let port = new isolate.ReceivePort();
1011 let completer = dart.as(new async.Completer(), async.Completer$(core.List) ); 1018 let completer = dart.as(new async.Completer(), async.Completer$(core.List) );
1012 port.first.then((msg) => { 1019 port.first.then(msg => {
1013 if (dart.equals(dart.dindex(msg, 0), _SPAWNED_SIGNAL)) { 1020 if (dart.equals(dart.dindex(msg, 0), _SPAWNED_SIGNAL)) {
1014 completer.complete(msg); 1021 completer.complete(msg);
1015 } else { 1022 } else {
1016 dart.assert(dart.equals(dart.dindex(msg, 0), _SPAWN_FAILED_SIGNAL)); 1023 dart.assert(dart.equals(dart.dindex(msg, 0), _SPAWN_FAILED_SIGNAL));
1017 completer.completeError(dart.dindex(msg, 1)); 1024 completer.completeError(dart.dindex(msg, 1));
1018 } 1025 }
1019 }); 1026 });
1020 let signalReply = port.sendPort; 1027 let signalReply = port.sendPort;
1021 if (dart.notNull(exports._globalState.useWorkers) && !dart.notNull(isLight )) { 1028 if (dart.notNull(exports._globalState.useWorkers) && !dart.notNull(isLight )) {
1022 IsolateNatives[_startWorker](functionName, uri, args, message, isSpawnUr i, startPaused, signalReply, (message) => completer.completeError(message)); 1029 IsolateNatives[_startWorker](functionName, uri, args, message, isSpawnUr i, startPaused, signalReply, message => completer.completeError(message));
1023 } else { 1030 } else {
1024 IsolateNatives[_startNonWorker](functionName, uri, args, message, isSpaw nUri, startPaused, signalReply); 1031 IsolateNatives[_startNonWorker](functionName, uri, args, message, isSpaw nUri, startPaused, signalReply);
1025 } 1032 }
1026 return completer.future; 1033 return completer.future;
1027 } 1034 }
1028 static [_startWorker](functionName, uri, args, message, isSpawnUri, startPau sed, replyPort, onError) { 1035 static [_startWorker](functionName, uri, args, message, isSpawnUri, startPau sed, replyPort, onError) {
1029 if (args != null) 1036 if (args != null)
1030 args = new core.List$(core.String).from(args); 1037 args = new core.List$(core.String).from(args);
1031 if (exports._globalState.isWorker) { 1038 if (exports._globalState.isWorker) {
1032 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'spawn-worker', functionName: functionName, args: args, msg: message, uri: uri, isSpawnUri: isSpawnUri, startPaused: startPaused, replyPort: replyPort }))); 1039 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'spawn-worker', functionName: functionName, args: args, msg: message, uri: uri, isSpawnUri: isSpawnUri, startPaused: startPaused, replyPort: replyPort })));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 }; 1091 };
1085 }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives.workerOnError), uri, o nError); 1092 }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives.workerOnError), uri, o nError);
1086 worker.onerror = onerrorTrampoline; 1093 worker.onerror = onerrorTrampoline;
1087 let processWorkerMessageTrampoline = function(f, a) { 1094 let processWorkerMessageTrampoline = function(f, a) {
1088 return function(e) { 1095 return function(e) {
1089 e.onerror = null; 1096 e.onerror = null;
1090 return f(a, e); 1097 return f(a, e);
1091 }; 1098 };
1092 }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives[_processWorkerMessage] ), worker); 1099 }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives[_processWorkerMessage] ), worker);
1093 worker.onmessage = processWorkerMessageTrampoline; 1100 worker.onmessage = processWorkerMessageTrampoline;
1094 let workerId = ((x$) => exports._globalState.nextManagerId = dart.notNull( x$) + 1, x$)(exports._globalState.nextManagerId); 1101 let o$ = exports._globalState;
1102 let workerId = o$.nextManagerId;
1103 o$.nextManagerId = dart.notNull(workerId) + 1;
1095 IsolateNatives.workerIds.set(worker, workerId); 1104 IsolateNatives.workerIds.set(worker, workerId);
1096 exports._globalState.managers.set(workerId, worker); 1105 exports._globalState.managers.set(workerId, worker);
1097 worker.postMessage(_serializeMessage(dart.map({command: 'start', id: worke rId, replyTo: _serializeMessage(replyPort), args: args, msg: _serializeMessage(m essage), isSpawnUri: isSpawnUri, startPaused: startPaused, functionName: functio nName}))); 1106 worker.postMessage(_serializeMessage(dart.map({command: 'start', id: worke rId, replyTo: _serializeMessage(replyPort), args: args, msg: _serializeMessage(m essage), isSpawnUri: isSpawnUri, startPaused: startPaused, functionName: functio nName})));
1098 } 1107 }
1099 static workerOnError(event, uri, onError) { 1108 static workerOnError(event, uri, onError) {
1100 event.preventDefault(); 1109 event.preventDefault();
1101 let message = dart.as(event.message, core.String); 1110 let message = dart.as(event.message, core.String);
1102 if (message == null) { 1111 if (message == null) {
1103 message = `Error spawning worker for ${uri}`; 1112 message = `Error spawning worker for ${uri}`;
1104 } else { 1113 } else {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 get hashCode() { 1194 get hashCode() {
1186 return dart.notNull(this[_workerId]) << 16 ^ dart.notNull(this[_isolateId] ) << 8 ^ dart.notNull(this[_receivePortId]); 1195 return dart.notNull(this[_workerId]) << 16 ^ dart.notNull(this[_isolateId] ) << 8 ^ dart.notNull(this[_receivePortId]);
1187 } 1196 }
1188 } 1197 }
1189 _WorkerSendPort[dart.implements] = () => [isolate.SendPort]; 1198 _WorkerSendPort[dart.implements] = () => [isolate.SendPort];
1190 let _handler = Symbol('_handler'); 1199 let _handler = Symbol('_handler');
1191 let _nextFreeId = Symbol('_nextFreeId'); 1200 let _nextFreeId = Symbol('_nextFreeId');
1192 class RawReceivePortImpl extends core.Object { 1201 class RawReceivePortImpl extends core.Object {
1193 RawReceivePortImpl(handler) { 1202 RawReceivePortImpl(handler) {
1194 this[_handler] = handler; 1203 this[_handler] = handler;
1195 this[_id] = ((x$) => RawReceivePortImpl[_nextFreeId] = dart.notNull(x$) + 1, x$)(RawReceivePortImpl[_nextFreeId]); 1204 this[_id] = (() => {
1205 let x$ = RawReceivePortImpl[_nextFreeId];
1206 RawReceivePortImpl[_nextFreeId] = dart.notNull(x$) + 1;
1207 return x$;
1208 })();
1196 this[_isClosed] = false; 1209 this[_isClosed] = false;
1197 exports._globalState.currentContext.register(this[_id], this); 1210 exports._globalState.currentContext.register(this[_id], this);
1198 } 1211 }
1199 weak(handler) { 1212 weak(handler) {
1200 this[_handler] = handler; 1213 this[_handler] = handler;
1201 this[_id] = ((x$) => RawReceivePortImpl[_nextFreeId] = dart.notNull(x$) + 1, x$)(RawReceivePortImpl[_nextFreeId]); 1214 this[_id] = (() => {
1215 let x$ = RawReceivePortImpl[_nextFreeId];
1216 RawReceivePortImpl[_nextFreeId] = dart.notNull(x$) + 1;
1217 return x$;
1218 })();
1202 this[_isClosed] = false; 1219 this[_isClosed] = false;
1203 exports._globalState.currentContext.registerWeak(this[_id], this); 1220 exports._globalState.currentContext.registerWeak(this[_id], this);
1204 } 1221 }
1205 [_controlPort]() { 1222 [_controlPort]() {
1206 this[_handler] = null; 1223 this[_handler] = null;
1207 this[_id] = 0; 1224 this[_id] = 0;
1208 this[_isClosed] = false; 1225 this[_isClosed] = false;
1209 } 1226 }
1210 set handler(newHandler) { 1227 set handler(newHandler) {
1211 this[_handler] = newHandler; 1228 this[_handler] = newHandler;
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1345 CapabilityImpl() { 1362 CapabilityImpl() {
1346 this[_internal](_js_helper.random64()); 1363 this[_internal](_js_helper.random64());
1347 } 1364 }
1348 [_internal](id) { 1365 [_internal](id) {
1349 this[_id] = id; 1366 this[_id] = id;
1350 } 1367 }
1351 get hashCode() { 1368 get hashCode() {
1352 let hash = this[_id]; 1369 let hash = this[_id];
1353 hash = dart.notNull(hash) >> 0 ^ (dart.notNull(hash) / 4294967296).truncat e(); 1370 hash = dart.notNull(hash) >> 0 ^ (dart.notNull(hash) / 4294967296).truncat e();
1354 hash = ~dart.notNull(hash) + (dart.notNull(hash) << 15) & 4294967295; 1371 hash = ~dart.notNull(hash) + (dart.notNull(hash) << 15) & 4294967295;
1355 hash = dart.notNull(hash) >> 12; 1372 hash = dart.notNull(hash) ^ dart.notNull(hash) >> 12;
1356 hash = dart.notNull(hash) * 5 & 4294967295; 1373 hash = dart.notNull(hash) * 5 & 4294967295;
1357 hash = dart.notNull(hash) >> 4; 1374 hash = dart.notNull(hash) ^ dart.notNull(hash) >> 4;
1358 hash = dart.notNull(hash) * 2057 & 4294967295; 1375 hash = dart.notNull(hash) * 2057 & 4294967295;
1359 hash = dart.notNull(hash) >> 16; 1376 hash = dart.notNull(hash) ^ dart.notNull(hash) >> 16;
1360 return hash; 1377 return hash;
1361 } 1378 }
1362 ['=='](other) { 1379 ['=='](other) {
1363 if (core.identical(other, this)) 1380 if (core.identical(other, this))
1364 return true; 1381 return true;
1365 if (dart.is(other, CapabilityImpl)) { 1382 if (dart.is(other, CapabilityImpl)) {
1366 return core.identical(this[_id], other[_id]); 1383 return core.identical(this[_id], other[_id]);
1367 } 1384 }
1368 return false; 1385 return false;
1369 } 1386 }
1370 } 1387 }
1371 CapabilityImpl[dart.implements] = () => [isolate.Capability]; 1388 CapabilityImpl[dart.implements] = () => [isolate.Capability];
1372 dart.defineNamedConstructor(CapabilityImpl, _internal); 1389 dart.defineNamedConstructor(CapabilityImpl, _internal);
1373 // Exports: 1390 // Exports:
1374 exports.enterJsAsync = enterJsAsync; 1391 exports.enterJsAsync = enterJsAsync;
1375 exports.leaveJsAsync = leaveJsAsync; 1392 exports.leaveJsAsync = leaveJsAsync;
1376 exports.isWorker = isWorker; 1393 exports.isWorker = isWorker;
1377 exports.startRootIsolate = startRootIsolate; 1394 exports.startRootIsolate = startRootIsolate;
1378 exports.IsolateNatives = IsolateNatives; 1395 exports.IsolateNatives = IsolateNatives;
1379 exports.RawReceivePortImpl = RawReceivePortImpl; 1396 exports.RawReceivePortImpl = RawReceivePortImpl;
1380 exports.ReceivePortImpl = ReceivePortImpl; 1397 exports.ReceivePortImpl = ReceivePortImpl;
1381 exports.TimerImpl = TimerImpl; 1398 exports.TimerImpl = TimerImpl;
1382 exports.hasTimer = hasTimer; 1399 exports.hasTimer = hasTimer;
1383 exports.CapabilityImpl = CapabilityImpl; 1400 exports.CapabilityImpl = CapabilityImpl;
1384 })(_isolate_helper || (_isolate_helper = {})); 1401 })(_isolate_helper || (_isolate_helper = {}));
OLDNEW
« no previous file with comments | « lib/runtime/dart/_internal.js ('k') | lib/runtime/dart/_js_helper.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698