Cache compile results
This commit is contained in:
2 files changed
+10
-2
No files matched your search
@@ -1166,7 +1166,8 @@ class ScriptTreeGenerator {
|
||||
isProcedure: this.isProcedure,
|
||||
hasArguments: this.procedureArguments.length > 0,
|
||||
isWarp: this.isWarp,
|
||||
dependedProcedures: this.dependedProcedures
|
||||
dependedProcedures: this.dependedProcedures,
|
||||
cachedCompileResult: null
|
||||
};
|
||||
|
||||
const topBlock = this.blocks.getBlock(topBlockId);
|
||||
@@ -1264,6 +1265,7 @@ class ASTGenerator {
|
||||
if (this.blocks._cache.compiledProcedures[procedureCode]) {
|
||||
this.procedures[procedureCode] = this.blocks._cache.compiledProcedures[procedureCode];
|
||||
} else {
|
||||
console.log('parsing AST for', procedureCode);
|
||||
const generator = new ScriptTreeGenerator(this.thread);
|
||||
generator.setProcedureCode(procedureCode);
|
||||
if (isWarp) generator.enableWarp();
|
||||
|
||||
@@ -708,8 +708,14 @@ class JSCompiler {
|
||||
this.compilingProcedures.pop();
|
||||
}
|
||||
|
||||
if (script.cachedCompileResult) {
|
||||
return script.cachedCompileResult;
|
||||
}
|
||||
|
||||
const compiler = new ScriptCompiler(script, this.ast, this.target);
|
||||
return compiler.compile();
|
||||
const result = compiler.compile();
|
||||
script.cachedCompileResult = result;
|
||||
return result;
|
||||
}
|
||||
|
||||
compile () {
|
||||
|
||||
Reference in new issue
Block a user