soiz1's picture
Upload 811 files
30c32c8 verified
raw
history blame
1.02 kB
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;