org.jruby.compiler.impl
Class StandardASMCompiler

java.lang.Object
  extended by org.jruby.compiler.impl.StandardASMCompiler
All Implemented Interfaces:
ScriptCompiler, org.objectweb.asm.Opcodes

public class StandardASMCompiler
extends java.lang.Object
implements ScriptCompiler, org.objectweb.asm.Opcodes

Author:
headius

Nested Class Summary
 class StandardASMCompiler.AbstractMethodCompiler
           
 class StandardASMCompiler.ASMClosureCompiler
           
 class StandardASMCompiler.ASMMethodCompiler
           
 
Field Summary
static int ARGS_INDEX
           
static int CLOSURE_INDEX
           
static int DYNAMIC_SCOPE_INDEX
           
static int EXCEPTION_INDEX
           
static int FIRST_TEMP_INDEX
           
static int NIL_INDEX
           
static int PREVIOUS_EXCEPTION_INDEX
           
static int RUNTIME_INDEX
           
static int SELF_INDEX
           
static int THIS
           
static int THREADCONTEXT_INDEX
           
static int VARS_ARRAY_INDEX
           
 
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6
 
Constructor Summary
StandardASMCompiler(java.lang.String classname, java.lang.String sourcename)
          Creates a new instance of StandardCompilerContext
 
Method Summary
 void buildStaticScopeNames(SkinnyMethodAdapter method, StaticScope scope)
           
 void endScript(boolean generateRun, boolean generateLoad, boolean generateMain)
          End compilation for the current script, closing all context and structures used for the compilation.
 CacheCompiler getCacheCompiler()
           
 byte[] getClassByteArray()
           
 SkinnyMethodAdapter getClassInitMethod()
           
 java.lang.String getClassname()
           
 org.objectweb.asm.ClassVisitor getClassVisitor()
           
 SkinnyMethodAdapter getInitMethod()
           
 java.lang.String getNewConstant(java.lang.String type, java.lang.String name_prefix)
           
 java.lang.String getNewConstant(java.lang.String type, java.lang.String name_prefix, java.lang.Object init)
           
 java.lang.String getNewField(java.lang.String type, java.lang.String name, java.lang.Object init)
           
 java.lang.String getNewStaticConstant(java.lang.String type, java.lang.String name_prefix)
           
 java.lang.String getSourcename()
           
 java.lang.Class<?> loadClass(JRubyClassLoader classLoader)
           
 MethodCompiler startMethod(java.lang.String friendlyName, CompilerCallback args, StaticScope scope, ASTInspector inspector)
          Begin compilation for a method that has the specified number of local variables.
 void startScript(StaticScope scope)
          Begin compilation for a script, preparing all necessary context and code to support this script's compiled representation.
 void writeClass(java.io.File destination)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

THIS

public static final int THIS
See Also:
Constant Field Values

THREADCONTEXT_INDEX

public static final int THREADCONTEXT_INDEX
See Also:
Constant Field Values

SELF_INDEX

public static final int SELF_INDEX
See Also:
Constant Field Values

ARGS_INDEX

public static final int ARGS_INDEX
See Also:
Constant Field Values

CLOSURE_INDEX

public static final int CLOSURE_INDEX
See Also:
Constant Field Values

DYNAMIC_SCOPE_INDEX

public static final int DYNAMIC_SCOPE_INDEX
See Also:
Constant Field Values

RUNTIME_INDEX

public static final int RUNTIME_INDEX
See Also:
Constant Field Values

VARS_ARRAY_INDEX

public static final int VARS_ARRAY_INDEX
See Also:
Constant Field Values

NIL_INDEX

public static final int NIL_INDEX
See Also:
Constant Field Values

EXCEPTION_INDEX

public static final int EXCEPTION_INDEX
See Also:
Constant Field Values

PREVIOUS_EXCEPTION_INDEX

public static final int PREVIOUS_EXCEPTION_INDEX
See Also:
Constant Field Values

FIRST_TEMP_INDEX

public static final int FIRST_TEMP_INDEX
See Also:
Constant Field Values
Constructor Detail

StandardASMCompiler

public StandardASMCompiler(java.lang.String classname,
                           java.lang.String sourcename)
Creates a new instance of StandardCompilerContext

Method Detail

getClassByteArray

public byte[] getClassByteArray()

loadClass

public java.lang.Class<?> loadClass(JRubyClassLoader classLoader)
                             throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

writeClass

public void writeClass(java.io.File destination)
                throws java.io.IOException
Throws:
java.io.IOException

getClassname

public java.lang.String getClassname()

getSourcename

public java.lang.String getSourcename()

getClassVisitor

public org.objectweb.asm.ClassVisitor getClassVisitor()

startScript

public void startScript(StaticScope scope)
Description copied from interface: ScriptCompiler
Begin compilation for a script, preparing all necessary context and code to support this script's compiled representation.

Specified by:
startScript in interface ScriptCompiler

endScript

public void endScript(boolean generateRun,
                      boolean generateLoad,
                      boolean generateMain)
Description copied from interface: ScriptCompiler
End compilation for the current script, closing all context and structures used for the compilation.

Specified by:
endScript in interface ScriptCompiler

buildStaticScopeNames

public void buildStaticScopeNames(SkinnyMethodAdapter method,
                                  StaticScope scope)

getInitMethod

public SkinnyMethodAdapter getInitMethod()

getClassInitMethod

public SkinnyMethodAdapter getClassInitMethod()

getCacheCompiler

public CacheCompiler getCacheCompiler()

startMethod

public MethodCompiler startMethod(java.lang.String friendlyName,
                                  CompilerCallback args,
                                  StaticScope scope,
                                  ASTInspector inspector)
Description copied from interface: ScriptCompiler
Begin compilation for a method that has the specified number of local variables. The returned value is a token that can be used to end the method later.

Specified by:
startMethod in interface ScriptCompiler
Parameters:
friendlyName - The outward user-readable name of the method. A unique name will be generated based on this.
Returns:
An Object that represents the method within this compiler. Used in calls to endMethod once compilation for this method is completed.

getNewConstant

public java.lang.String getNewConstant(java.lang.String type,
                                       java.lang.String name_prefix)

getNewConstant

public java.lang.String getNewConstant(java.lang.String type,
                                       java.lang.String name_prefix,
                                       java.lang.Object init)

getNewField

public java.lang.String getNewField(java.lang.String type,
                                    java.lang.String name,
                                    java.lang.Object init)

getNewStaticConstant

public java.lang.String getNewStaticConstant(java.lang.String type,
                                             java.lang.String name_prefix)


Copyright © 2002-2007 JRuby Team. All Rights Reserved.