GetFunctionNode() public method

public GetFunctionNode ( int i ) : FunctionNode
i int
return FunctionNode
Ejemplo n.º 1
0
		public void Transform(ScriptNode tree)
		{
			TransformCompilationUnit(tree);
			for (int i = 0; i != tree.GetFunctionCount(); ++i)
			{
				FunctionNode fn = tree.GetFunctionNode(i);
				Transform(fn);
			}
		}
Ejemplo n.º 2
0
		// 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;
		}
Ejemplo n.º 3
0
		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);
			}
		}
Ejemplo n.º 4
0
		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);
			}
		}
Ejemplo n.º 5
0
		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);
			}
		}
Ejemplo n.º 6
0
		public static Rhino.Optimizer.OptFunctionNode Get(ScriptNode scriptOrFn, int i)
		{
			FunctionNode fnode = scriptOrFn.GetFunctionNode(i);
			return (Rhino.Optimizer.OptFunctionNode)fnode.GetCompilerData();
		}