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

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

Issue 1093353004: fix list initializers (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: baselines 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 return this.serializeDartObject(x); 60 return this.serializeDartObject(x);
61 } 61 }
62 unsupported(x, message) { 62 unsupported(x, message) {
63 if (message === void 0) 63 if (message === void 0)
64 message = null; 64 message = null;
65 if (message == null) 65 if (message == null)
66 message = "Can't transmit:"; 66 message = "Can't transmit:";
67 throw new core.UnsupportedError(`${message} ${x}`); 67 throw new core.UnsupportedError(`${message} ${x}`);
68 } 68 }
69 makeRef(serializationId) { 69 makeRef(serializationId) {
70 return new core.List.from(["ref", serializationId]); 70 return ["ref", serializationId];
71 } 71 }
72 isPrimitive(x) { 72 isPrimitive(x) {
73 return dart.notNull(x == null) || typeof x == 'string' || dart.is(x, core. num) || typeof x == 'boolean'; 73 return dart.notNull(x == null) || typeof x == 'string' || dart.is(x, core. num) || typeof x == 'boolean';
74 } 74 }
75 serializePrimitive(primitive) { 75 serializePrimitive(primitive) {
76 return primitive; 76 return primitive;
77 } 77 }
78 serializeByteBuffer(buffer) { 78 serializeByteBuffer(buffer) {
79 return new core.List.from(["buffer", buffer]); 79 return ["buffer", buffer];
80 } 80 }
81 serializeTypedData(data) { 81 serializeTypedData(data) {
82 return new core.List.from(["typed", data]); 82 return ["typed", data];
83 } 83 }
84 serializeJSIndexable(indexable) { 84 serializeJSIndexable(indexable) {
85 dart.assert(!(typeof indexable == 'string')); 85 dart.assert(!(typeof indexable == 'string'));
86 let serialized = dart.as(this.serializeArray(dart.as(indexable, _intercept ors.JSArray)), core.List); 86 let serialized = dart.as(this.serializeArray(dart.as(indexable, _intercept ors.JSArray)), core.List);
87 if (dart.is(indexable, _interceptors.JSFixedArray)) 87 if (dart.is(indexable, _interceptors.JSFixedArray))
88 return new core.List.from(["fixed", serialized]); 88 return ["fixed", serialized];
89 if (dart.is(indexable, _interceptors.JSExtendableArray)) 89 if (dart.is(indexable, _interceptors.JSExtendableArray))
90 return new core.List.from(["extendable", serialized]); 90 return ["extendable", serialized];
91 if (dart.is(indexable, _interceptors.JSMutableArray)) 91 if (dart.is(indexable, _interceptors.JSMutableArray))
92 return new core.List.from(["mutable", serialized]); 92 return ["mutable", serialized];
93 if (dart.is(indexable, _interceptors.JSArray)) 93 if (dart.is(indexable, _interceptors.JSArray))
94 return new core.List.from(["const", serialized]); 94 return ["const", serialized];
95 this.unsupported(indexable, "Can't serialize indexable: "); 95 this.unsupported(indexable, "Can't serialize indexable: ");
96 return null; 96 return null;
97 } 97 }
98 serializeArray(x) { 98 serializeArray(x) {
99 let serialized = new core.List.from([]); 99 let serialized = [];
100 serialized[core.$length] = x[core.$length]; 100 serialized[core.$length] = x[core.$length];
101 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) { 101 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) {
102 serialized[core.$set](i, this.serialize(x[core.$get](i))); 102 serialized[core.$set](i, this.serialize(x[core.$get](i)));
103 } 103 }
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, __CastType0))[core.$toList](), x.values[core.$map](dart.as(serializeTearOff, dart.functionType(dart.dynamic, [dart.dynamic])))[core.$toList]()]); 114 return ['map', x.keys[core.$map](dart.as(serializeTearOff, __CastType0))[c ore.$toList](), x.values[core.$map](dart.as(serializeTearOff, dart.functionType( dart.dynamic, [dart.dynamic])))[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 = [];
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)]));
125 } 125 }
126 return new core.List.from(['js-object', keys, values]); 126 return ['js-object', keys, values];
127 } 127 }
128 serializeWorkerSendPort(x) { 128 serializeWorkerSendPort(x) {
129 if (this[_serializeSendPorts]) { 129 if (this[_serializeSendPorts]) {
130 return new core.List.from(['sendport', x[_workerId], x[_isolateId], x[_r eceivePortId]]); 130 return ['sendport', x[_workerId], x[_isolateId], x[_receivePortId]];
131 } 131 }
132 return new core.List.from(['raw sendport', x]); 132 return ['raw sendport', x];
133 } 133 }
134 serializeJsSendPort(x) { 134 serializeJsSendPort(x) {
135 if (this[_serializeSendPorts]) { 135 if (this[_serializeSendPorts]) {
136 let workerId = exports._globalState.currentManagerId; 136 let workerId = exports._globalState.currentManagerId;
137 return new core.List.from(['sendport', workerId, x[_isolateId], x[_recei vePort][_id]]); 137 return ['sendport', workerId, x[_isolateId], x[_receivePort][_id]];
138 } 138 }
139 return new core.List.from(['raw sendport', x]); 139 return ['raw sendport', x];
140 } 140 }
141 serializeCapability(x) { 141 serializeCapability(x) {
142 return new core.List.from(['capability', x[_id]]); 142 return ['capability', x[_id]];
143 } 143 }
144 serializeClosure(x) { 144 serializeClosure(x) {
145 let name = IsolateNatives[_getJSFunctionName](x); 145 let name = IsolateNatives[_getJSFunctionName](x);
146 if (name == null) { 146 if (name == null) {
147 this.unsupported(x, "Closures can't be transmitted:"); 147 this.unsupported(x, "Closures can't be transmitted:");
148 } 148 }
149 return new core.List.from(['function', name]); 149 return ['function', name];
150 } 150 }
151 serializeDartObject(x) { 151 serializeDartObject(x) {
152 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR); 152 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR);
153 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR); 153 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR);
154 let classId = classExtractor(x); 154 let classId = classExtractor(x);
155 let fields = dart.as(fieldsExtractor(x), core.List); 155 let fields = dart.as(fieldsExtractor(x), core.List);
156 return new core.List.from(['dart', classId, this.serializeArrayInPlace(dar t.as(fields, _interceptors.JSArray))]); 156 return ['dart', classId, this.serializeArrayInPlace(dart.as(fields, _inter ceptors.JSArray))];
157 } 157 }
158 } 158 }
159 let _adjustSendPorts = Symbol('_adjustSendPorts'); 159 let _adjustSendPorts = Symbol('_adjustSendPorts');
160 let _getJSFunctionFromName = Symbol('_getJSFunctionFromName'); 160 let _getJSFunctionFromName = Symbol('_getJSFunctionFromName');
161 class _Deserializer extends core.Object { 161 class _Deserializer extends core.Object {
162 _Deserializer(opts) { 162 _Deserializer(opts) {
163 let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendP orts : true; 163 let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendP orts : true;
164 this.deserializedObjects = new core.List(); 164 this.deserializedObjects = new core.List();
165 this[_adjustSendPorts] = dart.as(adjustSendPorts, core.bool); 165 this[_adjustSendPorts] = dart.as(adjustSendPorts, core.bool);
166 } 166 }
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 return exports._globalState.isWorker; 373 return exports._globalState.isWorker;
374 } 374 }
375 // Function _currentIsolate: () → _IsolateContext 375 // Function _currentIsolate: () → _IsolateContext
376 function _currentIsolate() { 376 function _currentIsolate() {
377 return exports._globalState.currentContext; 377 return exports._globalState.currentContext;
378 } 378 }
379 // Function startRootIsolate: (dynamic, dynamic) → void 379 // Function startRootIsolate: (dynamic, dynamic) → void
380 function startRootIsolate(entry, args) { 380 function startRootIsolate(entry, args) {
381 args = args; 381 args = args;
382 if (args == null) 382 if (args == null)
383 args = new core.List.from([]); 383 args = [];
384 if (!dart.is(args, core.List)) { 384 if (!dart.is(args, core.List)) {
385 throw new core.ArgumentError(`Arguments to main must be a List: ${args}`); 385 throw new core.ArgumentError(`Arguments to main must be a List: ${args}`);
386 } 386 }
387 exports._globalState = new _Manager(dart.as(entry, core.Function)); 387 exports._globalState = new _Manager(dart.as(entry, core.Function));
388 if (exports._globalState.isWorker) 388 if (exports._globalState.isWorker)
389 return; 389 return;
390 let rootContext = new _IsolateContext(); 390 let rootContext = new _IsolateContext();
391 exports._globalState.rootContext = rootContext; 391 exports._globalState.rootContext = rootContext;
392 exports._globalState.currentContext = rootContext; 392 exports._globalState.currentContext = rootContext;
393 if (dart.is(entry, _MainFunctionArgs)) { 393 if (dart.is(entry, _MainFunctionArgs)) {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 let o = exports._globalState, x = o.nextIsolateId; 488 let o = exports._globalState, x = o.nextIsolateId;
489 o.nextIsolateId = dart.notNull(x) + 1; 489 o.nextIsolateId = dart.notNull(x) + 1;
490 return x; 490 return x;
491 })(); 491 })();
492 this.ports = new (core.Map$(core.int, RawReceivePortImpl))(); 492 this.ports = new (core.Map$(core.int, RawReceivePortImpl))();
493 this.weakPorts = new (core.Set$(core.int))(); 493 this.weakPorts = new (core.Set$(core.int))();
494 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE(); 494 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE();
495 this.controlPort = new RawReceivePortImpl[_controlPort](); 495 this.controlPort = new RawReceivePortImpl[_controlPort]();
496 this.pauseCapability = new isolate.Capability(); 496 this.pauseCapability = new isolate.Capability();
497 this.terminateCapability = new isolate.Capability(); 497 this.terminateCapability = new isolate.Capability();
498 this.delayedEvents = new core.List$(_IsolateEvent).from([]); 498 this.delayedEvents = dart.setType([], core.List$(_IsolateEvent));
499 this.pauseTokens = new (core.Set$(isolate.Capability))(); 499 this.pauseTokens = new (core.Set$(isolate.Capability))();
500 this.errorPorts = new (core.Set$(isolate.SendPort))(); 500 this.errorPorts = new (core.Set$(isolate.SendPort))();
501 this.initialized = false; 501 this.initialized = false;
502 this.isPaused = false; 502 this.isPaused = false;
503 this.doneHandlers = null; 503 this.doneHandlers = null;
504 this[_scheduledControlEvents] = null; 504 this[_scheduledControlEvents] = null;
505 this[_isExecutingEvent] = false; 505 this[_isExecutingEvent] = false;
506 this.errorsAreFatal = true; 506 this.errorsAreFatal = true;
507 this.registerWeak(this.controlPort[_id], this.controlPort); 507 this.registerWeak(this.controlPort[_id], this.controlPort);
508 } 508 }
(...skipping 13 matching lines...) Expand all
522 while (this.delayedEvents[core.$isNotEmpty]) { 522 while (this.delayedEvents[core.$isNotEmpty]) {
523 let event = this.delayedEvents[core.$removeLast](); 523 let event = this.delayedEvents[core.$removeLast]();
524 exports._globalState.topEventLoop.prequeue(event); 524 exports._globalState.topEventLoop.prequeue(event);
525 } 525 }
526 this.isPaused = false; 526 this.isPaused = false;
527 } 527 }
528 this[_updateGlobalState](); 528 this[_updateGlobalState]();
529 } 529 }
530 addDoneListener(responsePort) { 530 addDoneListener(responsePort) {
531 if (this.doneHandlers == null) { 531 if (this.doneHandlers == null) {
532 this.doneHandlers = new core.List.from([]); 532 this.doneHandlers = [];
533 } 533 }
534 if (dart.dsend(this.doneHandlers, 'contains', responsePort)) 534 if (dart.dsend(this.doneHandlers, 'contains', responsePort))
535 return; 535 return;
536 dart.dsend(this.doneHandlers, 'add', responsePort); 536 dart.dsend(this.doneHandlers, 'add', responsePort);
537 } 537 }
538 removeDoneListener(responsePort) { 538 removeDoneListener(responsePort) {
539 if (this.doneHandlers == null) 539 if (this.doneHandlers == null)
540 return; 540 return;
541 dart.dsend(this.doneHandlers, 'remove', responsePort); 541 dart.dsend(this.doneHandlers, 'remove', responsePort);
542 } 542 }
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 throw dart.dindex(msg, 'msg'); 957 throw dart.dindex(msg, 'msg');
958 } 958 }
959 } 959 }
960 } 960 }
961 static handleSpawnWorkerRequest(msg) { 961 static handleSpawnWorkerRequest(msg) {
962 let replyPort = dart.dindex(msg, 'replyPort'); 962 let replyPort = dart.dindex(msg, 'replyPort');
963 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(msg => { 963 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(msg => {
964 dart.dsend(replyPort, 'send', msg); 964 dart.dsend(replyPort, 'send', msg);
965 }, { 965 }, {
966 onError: errorMessage => { 966 onError: errorMessage => {
967 dart.dsend(replyPort, 'send', new core.List.from([_SPAWN_FAILED_SIGNAL , errorMessage])); 967 dart.dsend(replyPort, 'send', [_SPAWN_FAILED_SIGNAL, errorMessage]);
968 } 968 }
969 }); 969 });
970 } 970 }
971 static [_log](msg) { 971 static [_log](msg) {
972 if (exports._globalState.isWorker) { 972 if (exports._globalState.isWorker) {
973 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg}))); 973 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg})));
974 } else { 974 } else {
975 try { 975 try {
976 IsolateNatives[_consoleLog](msg); 976 IsolateNatives[_consoleLog](msg);
977 } catch (e) { 977 } catch (e) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 IsolateNatives[_startIsolate](dart.as(func, core.Function), args, messag e, isSpawnUri, startPaused, replyPort); 1054 IsolateNatives[_startIsolate](dart.as(func, core.Function), args, messag e, isSpawnUri, startPaused, replyPort);
1055 }, 'nonworker start'); 1055 }, 'nonworker start');
1056 } 1056 }
1057 static get currentIsolate() { 1057 static get currentIsolate() {
1058 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext); 1058 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext);
1059 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability: context.pauseCapability, terminateCapability: context.terminateCapability}); 1059 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability: context.pauseCapability, terminateCapability: context.terminateCapability});
1060 } 1060 }
1061 static [_startIsolate](topLevel, args, message, isSpawnUri, startPaused, rep lyTo) { 1061 static [_startIsolate](topLevel, args, message, isSpawnUri, startPaused, rep lyTo) {
1062 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext); 1062 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext);
1063 _js_helper.Primitives.initializeStatics(context.id); 1063 _js_helper.Primitives.initializeStatics(context.id);
1064 replyTo.send(new core.List.from([_SPAWNED_SIGNAL, context.controlPort.send Port, context.pauseCapability, context.terminateCapability])); 1064 replyTo.send([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pause Capability, context.terminateCapability]);
1065 // Function runStartFunction: () → void 1065 // Function runStartFunction: () → void
1066 function runStartFunction() { 1066 function runStartFunction() {
1067 context.initialized = true; 1067 context.initialized = true;
1068 if (!dart.notNull(isSpawnUri)) { 1068 if (!dart.notNull(isSpawnUri)) {
1069 dart.dcall(topLevel, message); 1069 dart.dcall(topLevel, message);
1070 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) { 1070 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) {
1071 dart.dcall(topLevel, args, message); 1071 dart.dcall(topLevel, args, message);
1072 } else if (dart.is(topLevel, _MainFunctionArgs)) { 1072 } else if (dart.is(topLevel, _MainFunctionArgs)) {
1073 dart.dcall(topLevel, args); 1073 dart.dcall(topLevel, args);
1074 } else { 1074 } else {
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 exports.leaveJsAsync = leaveJsAsync; 1393 exports.leaveJsAsync = leaveJsAsync;
1394 exports.isWorker = isWorker; 1394 exports.isWorker = isWorker;
1395 exports.startRootIsolate = startRootIsolate; 1395 exports.startRootIsolate = startRootIsolate;
1396 exports.IsolateNatives = IsolateNatives; 1396 exports.IsolateNatives = IsolateNatives;
1397 exports.RawReceivePortImpl = RawReceivePortImpl; 1397 exports.RawReceivePortImpl = RawReceivePortImpl;
1398 exports.ReceivePortImpl = ReceivePortImpl; 1398 exports.ReceivePortImpl = ReceivePortImpl;
1399 exports.TimerImpl = TimerImpl; 1399 exports.TimerImpl = TimerImpl;
1400 exports.hasTimer = hasTimer; 1400 exports.hasTimer = hasTimer;
1401 exports.CapabilityImpl = CapabilityImpl; 1401 exports.CapabilityImpl = CapabilityImpl;
1402 })(_isolate_helper || (_isolate_helper = {})); 1402 })(_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