kmy.jint.gen
Class CodeGenerator

java.lang.Object
  |
  +--kmy.jint.gen.CodeGenerator
Direct Known Subclasses:
JVMClassGenerator

public class CodeGenerator
extends java.lang.Object
implements DefinitionConst, TokenConst


Inner Class Summary
(package private) static class CodeGenerator.MyMark
           
 
Field Summary
(package private)  int markCounter
           
(package private)  java.io.PrintWriter out
           
(package private)  boolean reachable
           
 
Fields inherited from interface kmy.jint.constants.DefinitionConst
ABSTRACT_FLAG, ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_MASK, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONST_FLAG, EXPLICIT_FLAG, FINAL_FLAG, INTERFACE_FLAG, METHOD_SCOPE_FLAG, MUST_BE_CLASS_FLAG, NATIVE_FLAG, PACKAGE_PRIVATE_FLAG, PRIVATE_FLAG, PROTECTED_FLAG, PUBLIC_FLAG, SCRIPT_STYLE_FLAG, SELF_USED_FLAG, STATIC_FLAG, STRICT_FLAG, SYNCHRONIZED_FLAG, TRANSIENT_FLAG, VOLATILE_FLAG, WHERE_FLAG, WORLD_FLAG
 
Fields inherited from interface kmy.jint.constants.TokenConst
TOK_OPT_BUFFERONLY, TOK_OPT_DECLARE, TOK_OPT_GLOBAL, TOK_OPT_IGNORE, TOK_OPT_MULTILINE, TOK_OPT_OFFLINE, TOK_OPT_RETAINALL, TOK_OPT_SINGLELINE, TOK_OPT_STANDALONE, TOKEN_ABSTRACT, TOKEN_AE, TOKEN_AND, TOKEN_ANDE, TOKEN_BOOLEAN, TOKEN_BREAK, TOKEN_BYTE, TOKEN_BYVALUE, TOKEN_CASE, TOKEN_CATCH, TOKEN_CHAR, TOKEN_CLASS, TOKEN_CONST, TOKEN_CONTINUE, TOKEN_DEFAULT, TOKEN_DO, TOKEN_DOUBLE, TOKEN_EE, TOKEN_ELSE, TOKEN_EOF, TOKEN_EXTENDS, TOKEN_FALSE, TOKEN_FINAL, TOKEN_FINALLY, TOKEN_FLOAT, TOKEN_FOR, TOKEN_GE, TOKEN_GG, TOKEN_GGE, TOKEN_GGG, TOKEN_GGGE, TOKEN_GOTO, TOKEN_IF, TOKEN_IMPLEMENTS, TOKEN_IMPORT, TOKEN_INSTANCEOF, TOKEN_INT, TOKEN_INTERFACE, TOKEN_LE, TOKEN_LL, TOKEN_LLE, TOKEN_LONG, TOKEN_ME, TOKEN_MM, TOKEN_NATIVE, TOKEN_NE, TOKEN_NEW, TOKEN_NONE, TOKEN_NULL, TOKEN_OR, TOKEN_ORE, TOKEN_PACKAGE, TOKEN_PCE, TOKEN_PE, TOKEN_PP, TOKEN_PRIVATE, TOKEN_PROTECTED, TOKEN_PUBLIC, TOKEN_RETURN, TOKEN_SE, TOKEN_SHORT, TOKEN_SS, TOKEN_STATIC, TOKEN_SUPER, TOKEN_SWITCH, TOKEN_SYNCHRONIZED, TOKEN_TE, TOKEN_THIS, TOKEN_THREADSAFE, TOKEN_THROW, TOKEN_THROWS, TOKEN_TRANSIENT, TOKEN_TRUE, TOKEN_TRY, TOKEN_V_BOUND, TOKEN_V_CHAR, TOKEN_V_DOUBLE, TOKEN_V_FLOAT, TOKEN_V_FORM, TOKEN_V_INT, TOKEN_V_LONG, TOKEN_V_PATT, TOKEN_V_REGEX, TOKEN_V_STRING, TOKEN_V_SUBST, TOKEN_V_TRANS, TOKEN_VOID, TOKEN_VOLATILE, TOKEN_WHERE, TOKEN_WHILE, TOKEN_WORD, TOKEN_XE, UNARY_MINUS
 
Constructor Summary
CodeGenerator()
           
CodeGenerator(int acc, java.lang.String name, java.lang.String ext)
           
 
Method Summary
 void addExceptionHandler(AbstractMark from, AbstractMark to, AbstractMark jump, java.lang.String exceptionClass)
           
 void addField(int accessFlags, java.lang.String name, java.lang.String type, java.lang.Object value)
          Add a field to the class.
 void arraylength()
           
 void athrow()
           
 void cast(java.lang.String fromType, java.lang.String toType)
           
 void close()
           
 void compare(boolean cmpToZero, java.lang.String type, boolean gFlag)
           
 void dup(java.lang.String type)
           
 void endMethod()
           
 void flush()
           
 void getelement(java.lang.String type)
           
 void getfield(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 int getStackDepth()
           
 void getstatic(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 void iinc(int var, int n)
           
 void insert(java.lang.String what, java.lang.String under)
           
 void instnceof(java.lang.String clazz)
           
 void invokeinterface(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 void invokespecial(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 void invokestatic(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 void invokevirtual(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 boolean isReachable()
           
 void jsr(AbstractMark mark, int stackChange)
           
 void jump(AbstractMark m)
           
 void jumpIf(boolean ifTrue, boolean cmpToZero, int op, java.lang.String type, AbstractMark target)
           
 void jumpIf(boolean cmpToZero, int op, java.lang.String type, AbstractMark target)
           
 void jumpIfNot(boolean cmpToZero, int op, java.lang.String type, AbstractMark target)
           
 void linenumber(int line)
           
 void load(int var, java.lang.String type)
           
 void loadConst(java.lang.Object v)
           
 void lookupswitch(int[] items, AbstractMark[] marks, AbstractMark defaultMark)
           
 void mark(AbstractMark m)
           
 void mark(AbstractMark m, boolean mayBeUnreachable)
           
 void mark(AbstractMark m, int stack)
           
 void monitorenter()
           
 void monitorexit()
           
 void newarray(java.lang.String elemType)
           
 AbstractMark newMark()
           
 void newmultiarray(java.lang.String arrType, int depth)
           
 void newobject(java.lang.String clazz)
           
 void op(int op, java.lang.String type)
           
 void pop(java.lang.String type, int nelem)
           
 void putelement(java.lang.String type)
           
 void putfield(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 void putstatic(java.lang.String clazz, java.lang.String name, java.lang.String type)
           
 void ret(int var)
           
 void retrn(java.lang.String type)
           
 void setInterfaces(java.lang.String[] impl)
           
 void setSourceFile(java.lang.String file)
           
 void startMethod(int accessFlags, java.lang.String name, java.lang.String type, java.lang.String[] exceptions)
           
 void store(int var, java.lang.String type)
           
 void swap()
           
 void tableswitch(int low, AbstractMark[] marks, AbstractMark defaultMark)
           
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

markCounter

int markCounter

reachable

boolean reachable

out

java.io.PrintWriter out
Constructor Detail

CodeGenerator

public CodeGenerator()

CodeGenerator

public CodeGenerator(int acc,
                     java.lang.String name,
                     java.lang.String ext)
              throws java.io.IOException
Method Detail

flush

public void flush()
           throws java.io.IOException

addField

public void addField(int accessFlags,
                     java.lang.String name,
                     java.lang.String type,
                     java.lang.Object value)
Add a field to the class.
Parameters:
accessFlags - access flags (ACC_*) for this field, ored together
name - field name
type - type descriptor (not class name)
value - initial value, null for nothing, short numerical types represented by Integer

setInterfaces

public void setInterfaces(java.lang.String[] impl)

startMethod

public void startMethod(int accessFlags,
                        java.lang.String name,
                        java.lang.String type,
                        java.lang.String[] exceptions)

endMethod

public void endMethod()

setSourceFile

public void setSourceFile(java.lang.String file)

addExceptionHandler

public void addExceptionHandler(AbstractMark from,
                                AbstractMark to,
                                AbstractMark jump,
                                java.lang.String exceptionClass)

linenumber

public void linenumber(int line)
                throws java.io.IOException

loadConst

public void loadConst(java.lang.Object v)
               throws java.io.IOException

getfield

public void getfield(java.lang.String clazz,
                     java.lang.String name,
                     java.lang.String type)
              throws java.io.IOException

getstatic

public void getstatic(java.lang.String clazz,
                      java.lang.String name,
                      java.lang.String type)
               throws java.io.IOException

putfield

public void putfield(java.lang.String clazz,
                     java.lang.String name,
                     java.lang.String type)
              throws java.io.IOException

putstatic

public void putstatic(java.lang.String clazz,
                      java.lang.String name,
                      java.lang.String type)
               throws java.io.IOException

store

public void store(int var,
                  java.lang.String type)
           throws java.io.IOException

load

public void load(int var,
                 java.lang.String type)
          throws java.io.IOException

invokevirtual

public void invokevirtual(java.lang.String clazz,
                          java.lang.String name,
                          java.lang.String type)
                   throws java.io.IOException

invokespecial

public void invokespecial(java.lang.String clazz,
                          java.lang.String name,
                          java.lang.String type)
                   throws java.io.IOException

invokeinterface

public void invokeinterface(java.lang.String clazz,
                            java.lang.String name,
                            java.lang.String type)
                     throws java.io.IOException

invokestatic

public void invokestatic(java.lang.String clazz,
                         java.lang.String name,
                         java.lang.String type)
                  throws java.io.IOException

getelement

public void getelement(java.lang.String type)
                throws java.io.IOException

putelement

public void putelement(java.lang.String type)
                throws java.io.IOException

iinc

public void iinc(int var,
                 int n)
          throws java.io.IOException

newobject

public void newobject(java.lang.String clazz)
               throws java.io.IOException

newarray

public void newarray(java.lang.String elemType)
              throws java.io.IOException

newmultiarray

public void newmultiarray(java.lang.String arrType,
                          int depth)
                   throws java.io.IOException

arraylength

public void arraylength()
                 throws java.io.IOException

monitorenter

public void monitorenter()
                  throws java.io.IOException

monitorexit

public void monitorexit()
                 throws java.io.IOException

newMark

public AbstractMark newMark()
                     throws java.io.IOException

mark

public void mark(AbstractMark m)
          throws java.io.IOException

mark

public void mark(AbstractMark m,
                 boolean mayBeUnreachable)
          throws java.io.IOException

mark

public void mark(AbstractMark m,
                 int stack)
          throws java.io.IOException

jump

public void jump(AbstractMark m)
          throws java.io.IOException

jumpIfNot

public void jumpIfNot(boolean cmpToZero,
                      int op,
                      java.lang.String type,
                      AbstractMark target)
               throws java.io.IOException

jumpIf

public void jumpIf(boolean cmpToZero,
                   int op,
                   java.lang.String type,
                   AbstractMark target)
            throws java.io.IOException

jumpIf

public void jumpIf(boolean ifTrue,
                   boolean cmpToZero,
                   int op,
                   java.lang.String type,
                   AbstractMark target)
            throws java.io.IOException

compare

public void compare(boolean cmpToZero,
                    java.lang.String type,
                    boolean gFlag)
             throws java.io.IOException

retrn

public void retrn(java.lang.String type)
           throws java.io.IOException

jsr

public void jsr(AbstractMark mark,
                int stackChange)
         throws java.io.IOException

ret

public void ret(int var)
         throws java.io.IOException

athrow

public void athrow()
            throws java.io.IOException

lookupswitch

public void lookupswitch(int[] items,
                         AbstractMark[] marks,
                         AbstractMark defaultMark)
                  throws java.io.IOException

tableswitch

public void tableswitch(int low,
                        AbstractMark[] marks,
                        AbstractMark defaultMark)
                 throws java.io.IOException

cast

public void cast(java.lang.String fromType,
                 java.lang.String toType)
          throws java.io.IOException

instnceof

public void instnceof(java.lang.String clazz)
               throws java.io.IOException

pop

public void pop(java.lang.String type,
                int nelem)
         throws java.io.IOException

swap

public void swap()
          throws java.io.IOException

dup

public void dup(java.lang.String type)
         throws java.io.IOException

insert

public void insert(java.lang.String what,
                   java.lang.String under)
            throws java.io.IOException

op

public void op(int op,
               java.lang.String type)
        throws java.io.IOException

isReachable

public boolean isReachable()

getStackDepth

public int getStackDepth()

close

public void close()
           throws java.io.IOException