org.mozilla.javascript.optimizer
Class Codegen

java.lang.Object
  extended by org.mozilla.javascript.optimizer.Codegen
All Implemented Interfaces:
Evaluator

public class Codegen
extends java.lang.Object
implements Evaluator

This class generates code for a given IR tree.

Author:
Norris Boyd, Roger Lawrence

Constructor Summary
Codegen()
           
 
Method Summary
 void captureStackInfo(RhinoException ex)
          Capture stack information from the given exception.
 java.lang.Object compile(CompilerEnvirons compilerEnv, ScriptNode tree, java.lang.String encodedSource, boolean returnFunction)
          Compile the script or function from intermediate representation tree into an executable form.
 byte[] compileToClassFile(CompilerEnvirons compilerEnv, java.lang.String mainClassName, ScriptNode scriptOrFn, java.lang.String encodedSource, boolean returnFunction)
           
 Function createFunctionObject(Context cx, Scriptable scope, java.lang.Object bytecode, java.lang.Object staticSecurityDomain)
          Create a function object.
 Script createScriptObject(java.lang.Object bytecode, java.lang.Object staticSecurityDomain)
          Create a script object.
 java.lang.String getPatchedStack(RhinoException ex, java.lang.String nativeStackTrace)
          Given a native stack trace, patch it with script-specific source and line information
 java.util.List<java.lang.String> getScriptStack(RhinoException ex)
          Get the script stack for the given exception
 java.lang.String getSourcePositionFromStack(Context cx, int[] linep)
          Get the source position information by examining the stack.
 void setEvalScriptFlag(Script script)
          Mark the given script to indicate it was created by a call to eval() or to a Function constructor.
 void setMainMethodClass(java.lang.String className)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Codegen

public Codegen()
Method Detail

captureStackInfo

public void captureStackInfo(RhinoException ex)
Description copied from interface: Evaluator
Capture stack information from the given exception.

Specified by:
captureStackInfo in interface Evaluator
Parameters:
ex - an exception thrown during execution

getSourcePositionFromStack

public java.lang.String getSourcePositionFromStack(Context cx,
                                                   int[] linep)
Description copied from interface: Evaluator
Get the source position information by examining the stack.

Specified by:
getSourcePositionFromStack in interface Evaluator
Parameters:
cx - Context
linep - Array object of length >= 1; getSourcePositionFromStack will assign the line number to linep[0].
Returns:
the name of the file or other source container

getPatchedStack

public java.lang.String getPatchedStack(RhinoException ex,
                                        java.lang.String nativeStackTrace)
Description copied from interface: Evaluator
Given a native stack trace, patch it with script-specific source and line information

Specified by:
getPatchedStack in interface Evaluator
Parameters:
ex - exception
nativeStackTrace - the native stack trace
Returns:
patched stack trace

getScriptStack

public java.util.List<java.lang.String> getScriptStack(RhinoException ex)
Description copied from interface: Evaluator
Get the script stack for the given exception

Specified by:
getScriptStack in interface Evaluator
Parameters:
ex - exception from execution
Returns:
list of strings for the stack trace

setEvalScriptFlag

public void setEvalScriptFlag(Script script)
Description copied from interface: Evaluator
Mark the given script to indicate it was created by a call to eval() or to a Function constructor.

Specified by:
setEvalScriptFlag in interface Evaluator
Parameters:
script - script to mark as from eval

compile

public java.lang.Object compile(CompilerEnvirons compilerEnv,
                                ScriptNode tree,
                                java.lang.String encodedSource,
                                boolean returnFunction)
Description copied from interface: Evaluator
Compile the script or function from intermediate representation tree into an executable form.

Specified by:
compile in interface Evaluator
Parameters:
compilerEnv - Compiler environment
tree - parse tree
encodedSource - encoding of the source code for decompilation
returnFunction - if true, compiling a function
Returns:
an opaque object that can be passed to either createFunctionObject or createScriptObject, depending on the value of returnFunction

createScriptObject

public Script createScriptObject(java.lang.Object bytecode,
                                 java.lang.Object staticSecurityDomain)
Description copied from interface: Evaluator
Create a script object.

Specified by:
createScriptObject in interface Evaluator
Parameters:
bytecode - opaque object returned by compile
staticSecurityDomain - security domain
Returns:
Script object that can be evaluated

createFunctionObject

public Function createFunctionObject(Context cx,
                                     Scriptable scope,
                                     java.lang.Object bytecode,
                                     java.lang.Object staticSecurityDomain)
Description copied from interface: Evaluator
Create a function object.

Specified by:
createFunctionObject in interface Evaluator
Parameters:
cx - Current context
scope - scope of the function
bytecode - opaque object returned by compile
staticSecurityDomain - security domain
Returns:
Function object that can be called

compileToClassFile

public byte[] compileToClassFile(CompilerEnvirons compilerEnv,
                                 java.lang.String mainClassName,
                                 ScriptNode scriptOrFn,
                                 java.lang.String encodedSource,
                                 boolean returnFunction)

setMainMethodClass

public void setMainMethodClass(java.lang.String className)