public void Transform(ScriptNode tree) { TransformCompilationUnit(tree); for (int i = 0; i != tree.GetFunctionCount(); ++i) { FunctionNode fn = tree.GetFunctionNode(i); Transform(fn); } }
// fixupTable[i] = (label_index << 32) | fixup_site // ECF_ or Expression Context Flags constants: for now only TAIL public virtual InterpreterData Compile(CompilerEnvirons compilerEnv, ScriptNode tree, string encodedSource, bool returnFunction) { this.compilerEnv = compilerEnv; new NodeTransformer().Transform(tree); if (returnFunction) { scriptOrFn = tree.GetFunctionNode(0); } else { scriptOrFn = tree; } itsData = new InterpreterData(compilerEnv.GetLanguageVersion(), scriptOrFn.GetSourceName(), encodedSource, ((AstRoot)tree).IsInStrictMode()); itsData.topLevel = true; if (returnFunction) { GenerateFunctionICode(); } else { GenerateICodeFromTree(scriptOrFn); } return itsData; }
private static void CollectScriptNodes_r(ScriptNode n, ObjArray x) { x.Add(n); int nestedCount = n.GetFunctionCount(); for (int i = 0; i != nestedCount; ++i) { CollectScriptNodes_r(n.GetFunctionNode(i), x); } }
private static void InitOptFunctions_r(ScriptNode scriptOrFn) { for (int i = 0, N = scriptOrFn.GetFunctionCount(); i != N; ++i) { FunctionNode fn = scriptOrFn.GetFunctionNode(i); new OptFunctionNode(fn); InitOptFunctions_r(fn); } }
public virtual byte[] CompileToClassFile(CompilerEnvirons compilerEnv, string mainClassName, ScriptNode scriptOrFn, string encodedSource, bool returnFunction) { this.compilerEnv = compilerEnv; Transform(scriptOrFn); if (returnFunction) { scriptOrFn = scriptOrFn.GetFunctionNode(0); } InitScriptNodesData(scriptOrFn); this.mainClassName = mainClassName; this.mainClassSignature = ClassFileWriter.ClassNameToSignature(mainClassName); try { return GenerateCode(encodedSource); } catch (ClassFileWriter.ClassFileFormatException e) { throw ReportClassFileFormatException(scriptOrFn, e.Message); } }
public static Rhino.Optimizer.OptFunctionNode Get(ScriptNode scriptOrFn, int i) { FunctionNode fnode = scriptOrFn.GetFunctionNode(i); return (Rhino.Optimizer.OptFunctionNode)fnode.GetCompilerData(); }