aboutsummaryrefslogtreecommitdiff
path: root/ports/javascript/wrapper.js
diff options
context:
space:
mode:
authorWolf Vollprecht2019-02-10 16:29:25 +0100
committerDamien George2019-03-13 23:52:15 +1100
commitea2fcdd338b9a9a545c119a7d86de1b8caf77314 (patch)
tree7ba7f08ab092478987f223c524e148c942f0c4d2 /ports/javascript/wrapper.js
parent7d675f3a17b435c4dc7880ff597ab81274721ae9 (diff)
javascript: Fix Emscripten async load, and to compile with modern clang.
Diffstat (limited to 'ports/javascript/wrapper.js')
-rw-r--r--ports/javascript/wrapper.js85
1 files changed, 46 insertions, 39 deletions
diff --git a/ports/javascript/wrapper.js b/ports/javascript/wrapper.js
index 6109de902..84ad2ae3a 100644
--- a/ports/javascript/wrapper.js
+++ b/ports/javascript/wrapper.js
@@ -24,47 +24,54 @@
* THE SOFTWARE.
*/
-mp_js_init = Module.cwrap('mp_js_init', 'null', ['number']);
-mp_js_do_str = Module.cwrap('mp_js_do_str', 'null', ['string']);
-mp_js_init_repl = Module.cwrap('mp_js_init_repl', 'null', ['null']);
-mp_js_process_char = Module.cwrap('mp_js_process_char', 'number', ['number']);
+var Module = {};
-var MP_JS_EPOCH = (new Date()).getTime();
+var mainProgram = function()
+{
+ mp_js_init = Module.cwrap('mp_js_init', 'null', ['number']);
+ mp_js_do_str = Module.cwrap('mp_js_do_str', 'null', ['string']);
+ mp_js_init_repl = Module.cwrap('mp_js_init_repl', 'null', ['null']);
+ mp_js_process_char = Module.cwrap('mp_js_process_char', 'number', ['number']);
-if (typeof window === 'undefined' && require.main === module) {
- var fs = require('fs');
- var stack_size = 64 * 1024;
- var contents = '';
- var repl = true;
+ MP_JS_EPOCH = (new Date()).getTime();
- for (var i = 0; i < process.argv.length; i++) {
- if (process.argv[i] === '-X' && i < process.argv.length - 1) {
- if (process.argv[i + 1].includes('stack=')) {
- stack_size = parseInt(process.argv[i + 1].split('stack=')[1]);
- if (process.argv[i + 1].substr(-1).toLowerCase() === 'k') {
- stack_size *= 1024;
- } else if (process.argv[i + 1].substr(-1).toLowerCase() === 'm') {
- stack_size *= 1024 * 1024;
- }
- }
- } else if (process.argv[i].includes('.py')) {
- contents += fs.readFileSync(process.argv[i], 'utf8');
- repl = false;;
- }
- }
- mp_js_init(stack_size);
+ if (typeof window === 'undefined' && require.main === module) {
+ var fs = require('fs');
+ var stack_size = 64 * 1024;
+ var contents = '';
+ var repl = true;
- if (repl) {
- mp_js_init_repl();
- process.stdin.setRawMode(true);
- process.stdin.on('data', function (data) {
- for (var i = 0; i < data.length; i++) {
- if (mp_js_process_char(data[i])) {
- process.exit()
- }
- }
- });
- } else {
- mp_js_do_str(contents);
- }
+ for (var i = 0; i < process.argv.length; i++) {
+ if (process.argv[i] === '-X' && i < process.argv.length - 1) {
+ if (process.argv[i + 1].includes('stack=')) {
+ stack_size = parseInt(process.argv[i + 1].split('stack=')[1]);
+ if (process.argv[i + 1].substr(-1).toLowerCase() === 'k') {
+ stack_size *= 1024;
+ } else if (process.argv[i + 1].substr(-1).toLowerCase() === 'm') {
+ stack_size *= 1024 * 1024;
+ }
+ }
+ } else if (process.argv[i].includes('.py')) {
+ contents += fs.readFileSync(process.argv[i], 'utf8');
+ repl = false;;
+ }
+ }
+ mp_js_init(stack_size);
+
+ if (repl) {
+ mp_js_init_repl();
+ process.stdin.setRawMode(true);
+ process.stdin.on('data', function (data) {
+ for (var i = 0; i < data.length; i++) {
+ if (mp_js_process_char(data[i])) {
+ process.exit()
+ }
+ }
+ });
+ } else {
+ mp_js_do_str(contents);
+ }
+ }
}
+
+Module["onRuntimeInitialized"] = mainProgram; \ No newline at end of file