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

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

Issue 1076883003: Initial support for runtime function types and type checking (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Address comments 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);
11 } 11 }
12 // Function _clone: (dynamic) → dynamic 12 // Function _clone: (dynamic) → dynamic
13 function _clone(message) { 13 function _clone(message) {
14 let serializer = new _Serializer({serializeSendPorts: false}); 14 let serializer = new _Serializer({serializeSendPorts: false});
15 let deserializer = new _Deserializer(); 15 let deserializer = new _Deserializer();
16 return deserializer.deserialize(serializer.serialize(message)); 16 return deserializer.deserialize(serializer.serialize(message));
17 } 17 }
18 let _serializeSendPorts = Symbol('_serializeSendPorts'); 18 let _serializeSendPorts = Symbol('_serializeSendPorts');
19 let _workerId = Symbol('_workerId'); 19 let _workerId = Symbol('_workerId');
20 let _isolateId = Symbol('_isolateId'); 20 let _isolateId = Symbol('_isolateId');
21 let _receivePortId = Symbol('_receivePortId'); 21 let _receivePortId = Symbol('_receivePortId');
22 let _receivePort = Symbol('_receivePort'); 22 let _receivePort = Symbol('_receivePort');
23 let _id = Symbol('_id'); 23 let _id = Symbol('_id');
24 let _getJSFunctionName = Symbol('_getJSFunctionName'); 24 let _getJSFunctionName = Symbol('_getJSFunctionName');
25 class _Serializer extends core.Object { 25 class _Serializer extends core.Object {
26 _Serializer(opts) { 26 _Serializer(opts) {
27 let serializeSendPorts = opts && 'serializeSendPorts' in opts ? opts.seria lizeSendPorts : true; 27 let serializeSendPorts = opts && 'serializeSendPorts' in opts ? opts.seria lizeSendPorts : true;
28 this.serializedObjectIds = new core.Map$(dynamic, core.int).identity(); 28 this.serializedObjectIds = new core.Map$(dart.dynamic, core.int).identity( );
29 this[_serializeSendPorts] = dart.as(serializeSendPorts, core.bool); 29 this[_serializeSendPorts] = dart.as(serializeSendPorts, core.bool);
30 } 30 }
31 serialize(x) { 31 serialize(x) {
32 if (this.isPrimitive(x)) 32 if (this.isPrimitive(x))
33 return this.serializePrimitive(x); 33 return this.serializePrimitive(x);
34 let serializationId = this.serializedObjectIds.get(x); 34 let serializationId = this.serializedObjectIds.get(x);
35 if (serializationId != null) 35 if (serializationId != null)
36 return this.makeRef(serializationId); 36 return this.makeRef(serializationId);
37 serializationId = this.serializedObjectIds.length; 37 serializationId = this.serializedObjectIds.length;
38 this.serializedObjectIds.set(x, serializationId); 38 this.serializedObjectIds.set(x, serializationId);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 return serialized; 104 return serialized;
105 } 105 }
106 serializeArrayInPlace(x) { 106 serializeArrayInPlace(x) {
107 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) { 107 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) {
108 x[core.$set](i, this.serialize(x[core.$get](i))); 108 x[core.$set](i, this.serialize(x[core.$get](i)));
109 } 109 }
110 return x; 110 return x;
111 } 111 }
112 serializeMap(x) { 112 serializeMap(x) {
113 let serializeTearOff = this.serialize; 113 let serializeTearOff = this.serialize;
114 return new core.List.from(['map', x.keys[core.$map](dart.as(serializeTearO ff, dart.throw_("Unimplemented type (dynamic) → dynamic")))[core.$toList](), x.v alues[core.$map](dart.as(serializeTearOff, dart.throw_("Unimplemented type (dyna mic) → dynamic")))[core.$toList]()]); 114 return new core.List.from(['map', x.keys[core.$map](dart.as(serializeTearO ff, dart.functionType(dart.dynamic, [dart.dynamic])))[core.$toList](), x.values[ core.$map](dart.as(serializeTearOff, dart.functionType(dart.dynamic, [dart.dynam ic])))[core.$toList]()]);
115 } 115 }
116 serializeJSObject(x) { 116 serializeJSObject(x) {
117 if (!!x.constructor && x.constructor !== Object) { 117 if (!!x.constructor && x.constructor !== Object) {
118 this.unsupported(x, "Only plain JS Objects are supported:"); 118 this.unsupported(x, "Only plain JS Objects are supported:");
119 } 119 }
120 let keys = dart.as(Object.keys(x), core.List); 120 let keys = dart.as(Object.keys(x), core.List);
121 let values = new core.List.from([]); 121 let values = new core.List.from([]);
122 values[core.$length] = keys[core.$length]; 122 values[core.$length] = keys[core.$length];
123 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) { 123 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) {
124 values[core.$set](i, this.serialize(x[keys[core.$get](i)])); 124 values[core.$set](i, this.serialize(x[keys[core.$get](i)]));
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 this.topEventLoop = null; 426 this.topEventLoop = null;
427 this.fromCommandLine = null; 427 this.fromCommandLine = null;
428 this.isWorker = null; 428 this.isWorker = null;
429 this.supportsWorkers = null; 429 this.supportsWorkers = null;
430 this.isolates = null; 430 this.isolates = null;
431 this.mainManager = null; 431 this.mainManager = null;
432 this.managers = null; 432 this.managers = null;
433 this[_nativeDetectEnvironment](); 433 this[_nativeDetectEnvironment]();
434 this.topEventLoop = new _EventLoop(); 434 this.topEventLoop = new _EventLoop();
435 this.isolates = new (core.Map$(core.int, _IsolateContext))(); 435 this.isolates = new (core.Map$(core.int, _IsolateContext))();
436 this.managers = new (core.Map$(core.int, dynamic))(); 436 this.managers = new (core.Map$(core.int, dart.dynamic))();
437 if (this.isWorker) { 437 if (this.isWorker) {
438 this.mainManager = new _MainManagerStub(); 438 this.mainManager = new _MainManagerStub();
439 this[_nativeInitWorkerMessageHandler](); 439 this[_nativeInitWorkerMessageHandler]();
440 } 440 }
441 } 441 }
442 [_nativeDetectEnvironment]() { 442 [_nativeDetectEnvironment]() {
443 let isWindowDefined = exports.globalWindow != null; 443 let isWindowDefined = exports.globalWindow != null;
444 let isWorkerDefined = exports.globalWorker != null; 444 let isWorkerDefined = exports.globalWorker != null;
445 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo balPostMessageDefined); 445 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo balPostMessageDefined);
446 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke rDefined) && dart.notNull(IsolateNatives.thisScript != null); 446 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke rDefined) && dart.notNull(IsolateNatives.thisScript != null);
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 }, 822 },
823 get globalWorker() { 823 get globalWorker() {
824 _js_helper.requiresPreamble(); 824 _js_helper.requiresPreamble();
825 return self.Worker; 825 return self.Worker;
826 }, 826 },
827 get globalPostMessageDefined() { 827 get globalPostMessageDefined() {
828 _js_helper.requiresPreamble(); 828 _js_helper.requiresPreamble();
829 return !!self.postMessage; 829 return !!self.postMessage;
830 } 830 }
831 }); 831 });
832 class _MainFunction extends core.Function {} 832 let _MainFunction = dart.typedef('_MainFunction', () => dart.functionType(dart .dynamic, []));
833 class _MainFunctionArgs extends core.Function {} 833 let _MainFunctionArgs = dart.typedef('_MainFunctionArgs', () => dart.functionT ype(dart.dynamic, [dart.dynamic]));
834 class _MainFunctionArgsMessage extends core.Function {} 834 let _MainFunctionArgsMessage = dart.typedef('_MainFunctionArgsMessage', () => dart.functionType(dart.dynamic, [dart.dynamic, dart.dynamic]));
835 let _getEventData = Symbol('_getEventData'); 835 let _getEventData = Symbol('_getEventData');
836 let _startIsolate = Symbol('_startIsolate'); 836 let _startIsolate = Symbol('_startIsolate');
837 let _log = Symbol('_log'); 837 let _log = Symbol('_log');
838 let _consoleLog = Symbol('_consoleLog'); 838 let _consoleLog = Symbol('_consoleLog');
839 let _allocate = Symbol('_allocate'); 839 let _allocate = Symbol('_allocate');
840 let _startWorker = Symbol('_startWorker'); 840 let _startWorker = Symbol('_startWorker');
841 let _startNonWorker = Symbol('_startNonWorker'); 841 let _startNonWorker = Symbol('_startNonWorker');
842 let _spawnWorker = Symbol('_spawnWorker'); 842 let _spawnWorker = Symbol('_spawnWorker');
843 class IsolateNatives extends core.Object { 843 class IsolateNatives extends core.Object {
844 static computeThisScript() { 844 static computeThisScript() {
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 case 'error': 948 case 'error':
949 { 949 {
950 throw dart.dindex(msg, 'msg'); 950 throw dart.dindex(msg, 'msg');
951 } 951 }
952 } 952 }
953 } 953 }
954 static handleSpawnWorkerRequest(msg) { 954 static handleSpawnWorkerRequest(msg) {
955 let replyPort = dart.dindex(msg, 'replyPort'); 955 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) => { 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) => {
957 dart.dinvoke(replyPort, 'send', msg); 957 dart.dinvoke(replyPort, 'send', msg);
958 }, dart.throw_("Unimplemented type (List<dynamic>) → dynamic")), { 958 }, dart.functionType(dart.dynamic, [core.List])), {
959 onError: (errorMessage) => { 959 onError: (errorMessage) => {
960 dart.dinvoke(replyPort, 'send', new core.List.from([_SPAWN_FAILED_SIGN AL, errorMessage])); 960 dart.dinvoke(replyPort, 'send', new core.List.from([_SPAWN_FAILED_SIGN AL, errorMessage]));
961 } 961 }
962 }); 962 });
963 } 963 }
964 static [_log](msg) { 964 static [_log](msg) {
965 if (exports._globalState.isWorker) { 965 if (exports._globalState.isWorker) {
966 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg}))); 966 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg})));
967 } else { 967 } else {
968 try { 968 try {
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
1375 exports.leaveJsAsync = leaveJsAsync; 1375 exports.leaveJsAsync = leaveJsAsync;
1376 exports.isWorker = isWorker; 1376 exports.isWorker = isWorker;
1377 exports.startRootIsolate = startRootIsolate; 1377 exports.startRootIsolate = startRootIsolate;
1378 exports.IsolateNatives = IsolateNatives; 1378 exports.IsolateNatives = IsolateNatives;
1379 exports.RawReceivePortImpl = RawReceivePortImpl; 1379 exports.RawReceivePortImpl = RawReceivePortImpl;
1380 exports.ReceivePortImpl = ReceivePortImpl; 1380 exports.ReceivePortImpl = ReceivePortImpl;
1381 exports.TimerImpl = TimerImpl; 1381 exports.TimerImpl = TimerImpl;
1382 exports.hasTimer = hasTimer; 1382 exports.hasTimer = hasTimer;
1383 exports.CapabilityImpl = CapabilityImpl; 1383 exports.CapabilityImpl = CapabilityImpl;
1384 })(_isolate_helper || (_isolate_helper = {})); 1384 })(_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