Spaces:
Running
Running
File size: 1,021 Bytes
30c32c8 |
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 |
const IRGenerator = require('./irgen');
const JSGenerator = require('./jsgen');
const compile = thread => {
const irGenerator = new IRGenerator(thread);
const ir = irGenerator.generate();
const procedures = {};
const target = thread.target;
const compileScript = script => {
if (script.cachedCompileResult) {
return script.cachedCompileResult;
}
const compiler = new JSGenerator(script, ir, target);
const result = compiler.compile();
script.cachedCompileResult = result;
return result;
};
const entry = compileScript(ir.entry);
for (const procedureVariant of Object.keys(ir.procedures)) {
const procedureData = ir.procedures[procedureVariant];
const procedureTree = compileScript(procedureData);
procedures[procedureVariant] = procedureTree;
}
return {
startingFunction: entry,
procedures,
executableHat: ir.entry.executableHat
};
};
module.exports = compile;
|