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

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

Issue 1649583002: allow JS builtin to be typed as needed (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 11 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_helper', null, /* Imports */[ 1 dart_library.library('dart/_isolate_helper', null, /* Imports */[
2 'dart/_runtime', 2 'dart/_runtime',
3 'dart/core', 3 'dart/core',
4 'dart/_interceptors', 4 'dart/_interceptors',
5 'dart/_js_helper', 5 'dart/_js_helper',
6 'dart/isolate', 6 'dart/isolate',
7 'dart/_foreign_helper', 7 'dart/_foreign_helper',
8 'dart/collection', 8 'dart/collection',
9 'dart/async' 9 'dart/async'
10 ], /* Lazy imports */[ 10 ], /* Lazy imports */[
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 return x; 104 return x;
105 } 105 }
106 serializeMap(x) { 106 serializeMap(x) {
107 let serializeTearOff = dart.bind(this, 'serialize'); 107 let serializeTearOff = dart.bind(this, 'serialize');
108 return ['map', x.keys[dartx.map](dart.as(serializeTearOff, __CastType0))[d artx.toList](), x.values[dartx.map](dart.as(serializeTearOff, dart.functionType( dart.dynamic, [dart.dynamic])))[dartx.toList]()]; 108 return ['map', x.keys[dartx.map](dart.as(serializeTearOff, __CastType0))[d artx.toList](), x.values[dartx.map](dart.as(serializeTearOff, dart.functionType( dart.dynamic, [dart.dynamic])))[dartx.toList]()];
109 } 109 }
110 serializeJSObject(x) { 110 serializeJSObject(x) {
111 if (!!x.constructor && x.constructor !== Object) { 111 if (!!x.constructor && x.constructor !== Object) {
112 this.unsupported(x, "Only plain JS Objects are supported:"); 112 this.unsupported(x, "Only plain JS Objects are supported:");
113 } 113 }
114 let keys = dart.as(Object.keys(x), core.List); 114 let keys = Object.keys(x);
115 let values = []; 115 let values = [];
116 values[dartx.length] = keys[dartx.length]; 116 values[dartx.length] = keys[dartx.length];
117 for (let i = 0; dart.notNull(i) < dart.notNull(keys[dartx.length]); i = da rt.notNull(i) + 1) { 117 for (let i = 0; dart.notNull(i) < dart.notNull(keys[dartx.length]); i = da rt.notNull(i) + 1) {
118 values[dartx.set](i, this.serialize(x[keys[dartx.get](i)])); 118 values[dartx.set](i, this.serialize(x[keys[dartx.get](i)]));
119 } 119 }
120 return ['js-object', keys, values]; 120 return ['js-object', keys, values];
121 } 121 }
122 serializeWorkerSendPort(x) { 122 serializeWorkerSendPort(x) {
123 if (dart.notNull(this[_serializeSendPorts])) { 123 if (dart.notNull(this[_serializeSendPorts])) {
124 return ['sendport', x[_workerId], x[_isolateId], x[_receivePortId]]; 124 return ['sendport', x[_workerId], x[_isolateId], x[_receivePortId]];
(...skipping 14 matching lines...) Expand all
139 let name = IsolateNatives._getJSFunctionName(x); 139 let name = IsolateNatives._getJSFunctionName(x);
140 if (name == null) { 140 if (name == null) {
141 this.unsupported(x, "Closures can't be transmitted:"); 141 this.unsupported(x, "Closures can't be transmitted:");
142 } 142 }
143 return ['function', name]; 143 return ['function', name];
144 } 144 }
145 serializeDartObject(x) { 145 serializeDartObject(x) {
146 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR); 146 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR);
147 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR); 147 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR);
148 let classId = classExtractor(x); 148 let classId = classExtractor(x);
149 let fields = dart.as(fieldsExtractor(x), core.List); 149 let fields = fieldsExtractor(x);
150 return ['dart', classId, this.serializeArrayInPlace(dart.as(fields, _inter ceptors.JSArray))]; 150 return ['dart', classId, this.serializeArrayInPlace(dart.as(fields, _inter ceptors.JSArray))];
151 } 151 }
152 } 152 }
153 dart.setSignature(_Serializer, { 153 dart.setSignature(_Serializer, {
154 constructors: () => ({_Serializer: [_Serializer, [], {serializeSendPorts: da rt.dynamic}]}), 154 constructors: () => ({_Serializer: [_Serializer, [], {serializeSendPorts: da rt.dynamic}]}),
155 methods: () => ({ 155 methods: () => ({
156 serialize: [dart.dynamic, [dart.dynamic]], 156 serialize: [dart.dynamic, [dart.dynamic]],
157 unsupported: [dart.void, [dart.dynamic], [core.String]], 157 unsupported: [dart.void, [dart.dynamic], [core.String]],
158 makeRef: [dart.dynamic, [core.int]], 158 makeRef: [dart.dynamic, [core.int]],
159 isPrimitive: [core.bool, [dart.dynamic]], 159 isPrimitive: [core.bool, [dart.dynamic]],
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 dart.dcall(entry, args, null); 429 dart.dcall(entry, args, null);
430 })); 430 }));
431 } else { 431 } else {
432 rootContext.eval(dart.as(entry, core.Function)); 432 rootContext.eval(dart.as(entry, core.Function));
433 } 433 }
434 exports._globalState.topEventLoop.run(); 434 exports._globalState.topEventLoop.run();
435 } 435 }
436 dart.fn(startRootIsolate, dart.void, [dart.dynamic, dart.dynamic]); 436 dart.fn(startRootIsolate, dart.void, [dart.dynamic, dart.dynamic]);
437 dart.copyProperties(exports, { 437 dart.copyProperties(exports, {
438 get _globalState() { 438 get _globalState() {
439 return dart.as(dart.globalState, _Manager); 439 return dart.globalState;
440 }, 440 },
441 set _globalState(val) { 441 set _globalState(val) {
442 dart.globalState = val; 442 dart.globalState = val;
443 } 443 }
444 }); 444 });
445 const _nativeDetectEnvironment = Symbol('_nativeDetectEnvironment'); 445 const _nativeDetectEnvironment = Symbol('_nativeDetectEnvironment');
446 const _nativeInitWorkerMessageHandler = Symbol('_nativeInitWorkerMessageHandle r'); 446 const _nativeInitWorkerMessageHandler = Symbol('_nativeInitWorkerMessageHandle r');
447 class _Manager extends core.Object { 447 class _Manager extends core.Object {
448 get useWorkers() { 448 get useWorkers() {
449 return this.supportsWorkers; 449 return this.supportsWorkers;
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 return String(currentScript.src); 915 return String(currentScript.src);
916 } 916 }
917 if (dart.notNull(_js_helper.Primitives.isD8)) return IsolateNatives.comput eThisScriptD8(); 917 if (dart.notNull(_js_helper.Primitives.isD8)) return IsolateNatives.comput eThisScriptD8();
918 if (dart.notNull(_js_helper.Primitives.isJsshell)) return IsolateNatives.c omputeThisScriptJsshell(); 918 if (dart.notNull(_js_helper.Primitives.isJsshell)) return IsolateNatives.c omputeThisScriptJsshell();
919 if (exports._globalState != null && dart.notNull(exports._globalState.isWo rker)) { 919 if (exports._globalState != null && dart.notNull(exports._globalState.isWo rker)) {
920 return IsolateNatives.computeThisScriptFromTrace(); 920 return IsolateNatives.computeThisScriptFromTrace();
921 } 921 }
922 return null; 922 return null;
923 } 923 }
924 static computeThisScriptJsshell() { 924 static computeThisScriptJsshell() {
925 return dart.as(thisFilename(), core.String); 925 return thisFilename();
926 } 926 }
927 static computeThisScriptD8() { 927 static computeThisScriptD8() {
928 return IsolateNatives.computeThisScriptFromTrace(); 928 return IsolateNatives.computeThisScriptFromTrace();
929 } 929 }
930 static computeThisScriptFromTrace() { 930 static computeThisScriptFromTrace() {
931 let stack = new Error().stack; 931 let stack = new Error().stack;
932 if (stack == null) { 932 if (stack == null) {
933 stack = (function() { 933 stack = (function() {
934 try { 934 try {
935 throw new Error(); 935 throw new Error();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 } 1036 }
1037 } 1037 }
1038 static _consoleLog(msg) { 1038 static _consoleLog(msg) {
1039 self.console.log(msg); 1039 self.console.log(msg);
1040 } 1040 }
1041 static _getJSFunctionFromName(functionName) { 1041 static _getJSFunctionFromName(functionName) {
1042 let globalFunctionsContainer = _foreign_helper.JS_EMBEDDED_GLOBAL("", _js_ embedded_names.GLOBAL_FUNCTIONS); 1042 let globalFunctionsContainer = _foreign_helper.JS_EMBEDDED_GLOBAL("", _js_ embedded_names.GLOBAL_FUNCTIONS);
1043 return globalFunctionsContainer[functionName](); 1043 return globalFunctionsContainer[functionName]();
1044 } 1044 }
1045 static _getJSFunctionName(f) { 1045 static _getJSFunctionName(f) {
1046 return dart.as(f.$name, core.String); 1046 return f.$name;
1047 } 1047 }
1048 static _allocate(ctor) { 1048 static _allocate(ctor) {
1049 return new ctor(); 1049 return new ctor();
1050 } 1050 }
1051 static spawnFunction(topLevelFunction, message, startPaused) { 1051 static spawnFunction(topLevelFunction, message, startPaused) {
1052 IsolateNatives.enableSpawnWorker = true; 1052 IsolateNatives.enableSpawnWorker = true;
1053 let name = IsolateNatives._getJSFunctionName(topLevelFunction); 1053 let name = IsolateNatives._getJSFunctionName(topLevelFunction);
1054 if (name == null) { 1054 if (name == null) {
1055 dart.throw(new core.UnsupportedError("only top-level functions can be sp awned.")); 1055 dart.throw(new core.UnsupportedError("only top-level functions can be sp awned."));
1056 } 1056 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 worker.onmessage = processWorkerMessageTrampoline; 1151 worker.onmessage = processWorkerMessageTrampoline;
1152 let o = exports._globalState; 1152 let o = exports._globalState;
1153 let workerId = o.nextManagerId; 1153 let workerId = o.nextManagerId;
1154 o.nextManagerId = dart.notNull(workerId) + 1; 1154 o.nextManagerId = dart.notNull(workerId) + 1;
1155 IsolateNatives.workerIds.set(worker, workerId); 1155 IsolateNatives.workerIds.set(worker, workerId);
1156 exports._globalState.managers.set(workerId, worker); 1156 exports._globalState.managers.set(workerId, worker);
1157 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}))); 1157 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})));
1158 } 1158 }
1159 static workerOnError(event, uri, onError) { 1159 static workerOnError(event, uri, onError) {
1160 event.preventDefault(); 1160 event.preventDefault();
1161 let message = dart.as(event.message, core.String); 1161 let message = event.message;
1162 if (message == null) { 1162 if (message == null) {
1163 message = `Error spawning worker for ${uri}`; 1163 message = `Error spawning worker for ${uri}`;
1164 } else { 1164 } else {
1165 message = `Error spawning worker for ${uri} (${message})`; 1165 message = `Error spawning worker for ${uri} (${message})`;
1166 } 1166 }
1167 onError(message); 1167 onError(message);
1168 return true; 1168 return true;
1169 } 1169 }
1170 } 1170 }
1171 dart.setSignature(IsolateNatives, { 1171 dart.setSignature(IsolateNatives, {
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 exports.leaveJsAsync = leaveJsAsync; 1508 exports.leaveJsAsync = leaveJsAsync;
1509 exports.isWorker = isWorker; 1509 exports.isWorker = isWorker;
1510 exports.startRootIsolate = startRootIsolate; 1510 exports.startRootIsolate = startRootIsolate;
1511 exports.IsolateNatives = IsolateNatives; 1511 exports.IsolateNatives = IsolateNatives;
1512 exports.RawReceivePortImpl = RawReceivePortImpl; 1512 exports.RawReceivePortImpl = RawReceivePortImpl;
1513 exports.ReceivePortImpl = ReceivePortImpl; 1513 exports.ReceivePortImpl = ReceivePortImpl;
1514 exports.TimerImpl = TimerImpl; 1514 exports.TimerImpl = TimerImpl;
1515 exports.hasTimer = hasTimer; 1515 exports.hasTimer = hasTimer;
1516 exports.CapabilityImpl = CapabilityImpl; 1516 exports.CapabilityImpl = CapabilityImpl;
1517 }); 1517 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698