Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
executable file
·
128 lines (104 loc) · 3.6 KB

File metadata and controls

executable file
·
128 lines (104 loc) · 3.6 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env node
/**
* @license
* Copyright 2010 The Emscripten Authors
* SPDX-License-Identifier: MIT
*/
// LLVM => JavaScript compiler, main entry point
const fs = require('fs');
global.vm = require('vm');
global.assert = require('assert');
global.nodePath = require('path');
global.print = (x) => {
process.stdout.write(x + '\n');
};
global.printErr = (x) => {
process.stderr.write(x + '\n');
};
function find(filename) {
assert(filename);
const prefixes = [__dirname, process.cwd()];
for (let i = 0; i < prefixes.length; ++i) {
const combined = nodePath.join(prefixes[i], filename);
if (fs.existsSync(combined)) {
return combined;
}
}
return filename;
}
global.read = (filename) => {
assert(filename);
const absolute = find(filename);
return fs.readFileSync(absolute).toString();
};
function load(f) {
(0, eval)(read(f) + '//# sourceURL=' + find(f));
};
// Basic utilities
load('utility.js');
// Load default settings
load('./settings.js');
load('./settings_internal.js');
const argv = process.argv.slice(2);
const symbolsOnlyArg = argv.indexOf('--symbols-only');
if (symbolsOnlyArg != -1) {
argv.splice(symbolsOnlyArg, 1);
}
// Load settings from JSON passed on the command line
const settingsFile = argv[0];
assert(settingsFile);
const settings = JSON.parse(read(settingsFile));
Object.assign(global, settings);
global.symbolsOnly = symbolsOnlyArg != -1;
EXPORTED_FUNCTIONS = new Set(EXPORTED_FUNCTIONS);
WASM_EXPORTS = new Set(WASM_EXPORTS);
SIDE_MODULE_EXPORTS = new Set(SIDE_MODULE_EXPORTS);
INCOMING_MODULE_JS_API = new Set(INCOMING_MODULE_JS_API);
WEAK_IMPORTS = new Set(WEAK_IMPORTS);
if (symbolsOnly) {
INCLUDE_FULL_LIBRARY = 1;
}
// Side modules are pure wasm and have no JS
assert(!SIDE_MODULE || (ASYNCIFY && global.symbolsOnly), 'JS compiler should only run on side modules if asyncify is used.');
// Output some info and warnings based on settings
if (VERBOSE) {
printErr('VERBOSE is on, this generates a lot of output and can slow down compilation');
}
// Load compiler code
load('modules.js');
load('parseTools.js');
load('jsifier.js');
load('runtime.js');
if (!STRICT) {
load('parseTools_legacy.js');
}
// ===============================
// Main
// ===============================
B = new Benchmarker();
try {
runJSify();
B.print('glue');
} catch (err) {
if (err.toString().includes('Aborting compilation due to previous errors')) {
// Compiler failed on user error, don't print the stacktrace in this case.
printErr(err);
} else {
// Compiler failed on internal compiler error!
printErr('Internal compiler error in src/compiler.js!');
printErr('Please create a bug report at https://github.com/emscripten-core/emscripten/issues/');
printErr('with a log of the build and the input files used to run. Exception message: "' + (err.stack || err));
}
// Work around a node.js bug where stdout buffer is not flushed at process exit:
// Instead of process.exit() directly, wait for stdout flush event.
// See https://github.com/joyent/node/issues/1669 and https://github.com/emscripten-core/emscripten/issues/2582
// Workaround is based on https://github.com/RReverser/acorn/commit/50ab143cecc9ed71a2d66f78b4aec3bb2e9844f6
process.stdout.once('drain', () => process.exit(1));
// Make sure to print something to force the drain event to occur, in case the
// stdout buffer was empty.
console.log(' ');
// Work around another node bug where sometimes 'drain' is never fired - make
// another effort to emit the exit status, after a significant delay (if node
// hasn't fired drain by then, give up)
setTimeout(() => process.exit(1), 500);
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.