org.jikesrvm.compilers.baseline
Class TemplateCompilerFramework

java.lang.Object
  extended by org.jikesrvm.compilers.baseline.TemplateCompilerFramework
All Implemented Interfaces:
ArchitectureSpecific.StackframeLayoutConstants, BytecodeConstants, ClassLoaderConstants, StackframeLayoutConstants, SizeConstants
Direct Known Subclasses:
BaselineCompiler

public abstract class TemplateCompilerFramework
extends Object
implements BytecodeConstants, ClassLoaderConstants, SizeConstants, ArchitectureSpecific.StackframeLayoutConstants

Framework compiler - platform independent code. This compiler provides the structure for a very simple compiler -- one that generates code as each bytecode in the class file is seen. It is the common base class of the base compiler.


Field Summary
 ArchitectureSpecific.Assembler asm
          The Assembler being used for this compilation
protected  BytecodeStream bcodes
          The bytecodes of the method being compiled
protected  int biStart
          bi at the start of a bytecode
protected  int[] bytecodeMap
          Mapping from bytecodes to machine code offsets
protected  CompiledMethod compiledMethod
          The compiledMethod assigned to this compilation of method
protected  boolean doesCheckStore
          Does this method do checkstore?
protected static boolean fullyBootedVM
          has fullyBootedVM been called by VM.boot?
protected  boolean isInterruptible
          Is the method currently being compiled interruptible?
protected  boolean isUninterruptible
          Is the method currently being compiled uninterruptible?
protected  boolean isUnpreemptible
          Is the method currently being compiled unpreemptible?
protected  RVMClass klass
          The declaring class of the method being compiled
protected  int lockOffset
          machine code offset at which the lock is acquired in the prologue of a synchronized method.
protected  NormalMethod method
          The method being compiled
private  int pendingCMID
           
private  int pendingIdx
           
private  ForwardReference pendingRef
           
protected  boolean shouldPrint
          Should we print the machine code we generate?
protected  int[] stackHeights
          The height of the expression stack at the start of each bytecode.
 
Fields inherited from interface org.jikesrvm.classloader.BytecodeConstants
JBC_aaload, JBC_aastore, JBC_aconst_null, JBC_aload, JBC_aload_0, JBC_aload_1, JBC_aload_2, JBC_aload_3, JBC_anewarray, JBC_areturn, JBC_arraylength, JBC_astore, JBC_astore_0, JBC_astore_1, JBC_astore_2, JBC_astore_3, JBC_athrow, JBC_baload, JBC_bastore, JBC_bipush, JBC_caload, JBC_castore, JBC_checkcast, JBC_d2f, JBC_d2i, JBC_d2l, JBC_dadd, JBC_daload, JBC_dastore, JBC_dcmpg, JBC_dcmpl, JBC_dconst_0, JBC_dconst_1, JBC_ddiv, JBC_dload, JBC_dload_0, JBC_dload_1, JBC_dload_2, JBC_dload_3, JBC_dmul, JBC_dneg, JBC_drem, JBC_dreturn, JBC_dstore, JBC_dstore_0, JBC_dstore_1, JBC_dstore_2, JBC_dstore_3, JBC_dsub, JBC_dup, JBC_dup_x1, JBC_dup_x2, JBC_dup2, JBC_dup2_x1, JBC_dup2_x2, JBC_f2d, JBC_f2i, JBC_f2l, JBC_fadd, JBC_faload, JBC_fastore, JBC_fcmpg, JBC_fcmpl, JBC_fconst_0, JBC_fconst_1, JBC_fconst_2, JBC_fdiv, JBC_fload, JBC_fload_0, JBC_fload_1, JBC_fload_2, JBC_fload_3, JBC_fmul, JBC_fneg, JBC_frem, JBC_freturn, JBC_fstore, JBC_fstore_0, JBC_fstore_1, JBC_fstore_2, JBC_fstore_3, JBC_fsub, JBC_getfield, JBC_getstatic, JBC_goto, JBC_goto_w, JBC_i2d, JBC_i2f, JBC_i2l, JBC_iadd, JBC_iaload, JBC_iand, JBC_iastore, JBC_iconst_0, JBC_iconst_1, JBC_iconst_2, JBC_iconst_3, JBC_iconst_4, JBC_iconst_5, JBC_iconst_m1, JBC_idiv, JBC_if_acmpeq, JBC_if_acmpne, JBC_if_icmpeq, JBC_if_icmpge, JBC_if_icmpgt, JBC_if_icmple, JBC_if_icmplt, JBC_if_icmpne, JBC_ifeq, JBC_ifge, JBC_ifgt, JBC_ifle, JBC_iflt, JBC_ifne, JBC_ifnonnull, JBC_ifnull, JBC_iinc, JBC_iload, JBC_iload_0, JBC_iload_1, JBC_iload_2, JBC_iload_3, JBC_impdep1, JBC_impdep2, JBC_imul, JBC_ineg, JBC_instanceof, JBC_int2byte, JBC_int2char, JBC_int2short, JBC_invokeinterface, JBC_invokespecial, JBC_invokestatic, JBC_invokevirtual, JBC_ior, JBC_irem, JBC_ireturn, JBC_ishl, JBC_ishr, JBC_istore, JBC_istore_0, JBC_istore_1, JBC_istore_2, JBC_istore_3, JBC_isub, JBC_iushr, JBC_ixor, JBC_jsr, JBC_jsr_w, JBC_l2d, JBC_l2f, JBC_l2i, JBC_ladd, JBC_laload, JBC_land, JBC_lastore, JBC_lcmp, JBC_lconst_0, JBC_lconst_1, JBC_ldc, JBC_ldc_w, JBC_ldc2_w, JBC_ldiv, JBC_length, JBC_lload, JBC_lload_0, JBC_lload_1, JBC_lload_2, JBC_lload_3, JBC_lmul, JBC_lneg, JBC_lookupswitch, JBC_lor, JBC_lrem, JBC_lreturn, JBC_lshl, JBC_lshr, JBC_lstore, JBC_lstore_0, JBC_lstore_1, JBC_lstore_2, JBC_lstore_3, JBC_lsub, JBC_lushr, JBC_lxor, JBC_monitorenter, JBC_monitorexit, JBC_multianewarray, JBC_name, JBC_new, JBC_newarray, JBC_nop, JBC_pop, JBC_pop2, JBC_putfield, JBC_putstatic, JBC_ret, JBC_return, JBC_saload, JBC_sastore, JBC_sipush, JBC_swap, JBC_tableswitch, JBC_wide, JBC_xxxunusedxxx
 
Fields inherited from interface org.jikesrvm.classloader.ClassLoaderConstants
ACC_ABSTRACT, ACC_ANNOTATION, 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_VOLATILE, APPLICABLE_TO_CLASSES, APPLICABLE_TO_FIELDS, APPLICABLE_TO_METHODS, ArrayTypeCode, BooleanTypeCode, BRIDGE, ByteTypeCode, CharTypeCode, CLASS_INITIALIZED, CLASS_INITIALIZER_FAILED, CLASS_INITIALIZING, CLASS_INSTANTIATED, CLASS_LOADED, CLASS_RESOLVED, CLASS_VACANT, ClassTypeCode, CP_CLASS, CP_DOUBLE, CP_FLOAT, CP_INT, CP_LONG, CP_MEMBER, CP_STRING, CP_UTF, DoubleTypeCode, FloatTypeCode, IntTypeCode, LongTypeCode, ShortTypeCode, TAG_DOUBLE, TAG_FIELDREF, TAG_FLOAT, TAG_INT, TAG_INTERFACE_METHODREF, TAG_LONG, TAG_MEMBERNAME_AND_DESCRIPTOR, TAG_METHODREF, TAG_STRING, TAG_TYPEREF, TAG_UNUSED, TAG_UTF, VARARGS, VoidTypeCode
 
Fields inherited from interface org.jikesrvm.SizeConstants
BITS_IN_ADDRESS, BITS_IN_BOOLEAN, BITS_IN_BYTE, BITS_IN_CHAR, BITS_IN_DOUBLE, BITS_IN_EXTENT, BITS_IN_FLOAT, BITS_IN_INT, BITS_IN_LONG, BITS_IN_OFFSET, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BOOLEAN, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_DOUBLE, BYTES_IN_EXTENT, BYTES_IN_FLOAT, BYTES_IN_INT, BYTES_IN_LONG, BYTES_IN_OFFSET, BYTES_IN_PAGE, BYTES_IN_SHORT, BYTES_IN_WORD, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BOOLEAN, LOG_BITS_IN_BYTE, LOG_BITS_IN_CHAR, LOG_BITS_IN_DOUBLE, LOG_BITS_IN_EXTENT, LOG_BITS_IN_FLOAT, LOG_BITS_IN_INT, LOG_BITS_IN_LONG, LOG_BITS_IN_OFFSET, LOG_BITS_IN_PAGE, LOG_BITS_IN_SHORT, LOG_BITS_IN_WORD, LOG_BYTES_IN_ADDRESS, LOG_BYTES_IN_BOOLEAN, LOG_BYTES_IN_BYTE, LOG_BYTES_IN_CHAR, LOG_BYTES_IN_DOUBLE, LOG_BYTES_IN_EXTENT, LOG_BYTES_IN_FLOAT, LOG_BYTES_IN_INT, LOG_BYTES_IN_LONG, LOG_BYTES_IN_OFFSET, LOG_BYTES_IN_PAGE, LOG_BYTES_IN_SHORT, LOG_BYTES_IN_WORD
 
Fields inherited from interface org.jikesrvm.ia32.StackframeLayoutConstants
BYTES_IN_STACKSLOT, FPU_STATE_SIZE, INVISIBLE_METHOD_ID, LOG_BYTES_IN_STACKSLOT, STACK_SIZE_BOOT, STACK_SIZE_COLLECTOR, STACK_SIZE_DLOPEN, STACK_SIZE_GCDISABLED, STACK_SIZE_GROW, STACK_SIZE_GUARD, STACK_SIZE_JNINATIVE_GROW, STACK_SIZE_MAX, STACK_SIZE_NORMAL, STACK_SIZE_SYSCALL, STACKFRAME_ALIGNMENT, STACKFRAME_BODY_OFFSET, STACKFRAME_FRAME_POINTER_OFFSET, STACKFRAME_HEADER_SIZE, STACKFRAME_METHOD_ID_OFFSET, STACKFRAME_RETURN_ADDRESS_OFFSET, STACKFRAME_SENTINEL_FP, XMM_STATE_SIZE
 
Constructor Summary
protected TemplateCompilerFramework(CompiledMethod cm)
          Construct a BaselineCompilerImpl
 
Method Summary
protected  void checkTarget(RVMMethod target, int bci)
          Ensure that the callee method is safe to invoke from uninterruptible code
protected abstract  void emit_aaload()
          Emit code to load from a reference array
protected abstract  void emit_aastore()
          Emit code to store to a reference array
protected abstract  void emit_aconst_null()
          Emit code to load the null constant.
protected abstract  void emit_aload(int index)
          Emit code to load a reference local variable
protected abstract  void emit_areturn()
          Emit code to implement the areturn bytecode
protected abstract  void emit_arraylength()
          Emit code to implement the arraylength bytecode
protected abstract  void emit_astore(int index)
          Emit code to store a reference to a local variable
protected abstract  void emit_athrow()
          Emit code to implement the athrow bytecode
protected abstract  void emit_baload()
          Emit code to load from a byte/boolean array
protected abstract  void emit_bastore()
          Emit code to store to a byte/boolean array
protected abstract  void emit_caload()
          Emit code to load from a char array
protected abstract  void emit_castore()
          Emit code to store to a char array
protected abstract  void emit_checkcast_final(RVMType type)
          Emit code to implement the checkcast bytecode
protected abstract  void emit_checkcast_resolvedClass(RVMClass type)
          Emit code to implement the checkcast bytecode
protected abstract  void emit_checkcast_resolvedInterface(RVMClass type)
          Emit code to implement the checkcast bytecode
protected abstract  void emit_checkcast(TypeReference typeRef)
          Emit code to implement the checkcast bytecode
protected abstract  void emit_d2f()
          Emit code to implement the d2f bytecode
protected abstract  void emit_d2i()
          Emit code to implement the d2i bytecode
protected abstract  void emit_d2l()
          Emit code to implement the d2l bytecode
protected abstract  void emit_dadd()
          Emit code to implement the dadd bytecode
protected abstract  void emit_daload()
          Emit code to load from a double array
protected abstract  void emit_dastore()
          Emit code to store to a double array
protected abstract  void emit_dcmpg()
          Emit code to implement the dcmpg bytecode
protected abstract  void emit_dcmpl()
          Emit code to implement the dcmpl bytecode
protected abstract  void emit_dconst_0()
          Emit code to load 0.0d
protected abstract  void emit_dconst_1()
          Emit code to load 1.0d
protected abstract  void emit_ddiv()
          Emit code to implement the ddiv bytecode
protected abstract  void emit_deferred_prologue()
           
protected abstract  void emit_dload(int index)
          Emit code to load a double local variable
protected abstract  void emit_dmul()
          Emit code to implement the dmul bytecode
protected abstract  void emit_dneg()
          Emit code to implement the dneg bytecode
protected abstract  void emit_drem()
          Emit code to implement the drem bytecode
protected abstract  void emit_dreturn()
          Emit code to implement the dreturn bytecode
protected abstract  void emit_dstore(int index)
          Emit code to store an double to a local variable
protected abstract  void emit_dsub()
          Emit code to implement the dsub bytecode
protected abstract  void emit_dup_x1()
          Emit code to implement the dup_x1 bytecode
protected abstract  void emit_dup_x2()
          Emit code to implement the dup_x2 bytecode
protected abstract  void emit_dup()
          Emit code to implement the dup bytecode
protected abstract  void emit_dup2_x1()
          Emit code to implement the dup2_x1 bytecode
protected abstract  void emit_dup2_x2()
          Emit code to implement the dup2_x2 bytecode
protected abstract  void emit_dup2()
          Emit code to implement the dup2 bytecode
protected abstract  void emit_f2d()
          Emit code to implement the f2d bytecode
protected abstract  void emit_f2i()
          Emit code to implement the f2i bytecode
protected abstract  void emit_f2l()
          Emit code to implement the f2l bytecode
protected abstract  void emit_fadd()
          Emit code to implement the fadd bytecode
protected abstract  void emit_faload()
          Emit code to load from a float array
protected abstract  void emit_fastore()
          Emit code to store to a float array
protected abstract  void emit_fcmpg()
          Emit code to implement the fcmpg bytecode
protected abstract  void emit_fcmpl()
          Emit code to implement the fcmpl bytecode
protected abstract  void emit_fconst_0()
          Emit code to load 0.0f
protected abstract  void emit_fconst_1()
          Emit code to load 1.0f
protected abstract  void emit_fconst_2()
          Emit code to load 2.0f
protected abstract  void emit_fdiv()
          Emit code to implement the fdiv bytecode
protected abstract  void emit_fload(int index)
          Emit code to local a float local variable
protected abstract  void emit_fmul()
          Emit code to implement the fmul bytecode
protected abstract  void emit_fneg()
          Emit code to implement the fneg bytecode
protected abstract  void emit_frem()
          Emit code to implement the frem bytecode
protected abstract  void emit_freturn()
          Emit code to implement the freturn bytecode
protected abstract  void emit_fstore(int index)
          Emit code to store a float to a local variable
protected abstract  void emit_fsub()
          Emit code to implement the fsub bytecode
protected abstract  void emit_goto(int bTarget)
          Emit code to implement the goto and gotow bytecodes
protected abstract  void emit_i2b()
          Emit code to implement the i2b bytecode
protected abstract  void emit_i2c()
          Emit code to implement the i2c bytecode
protected abstract  void emit_i2d()
          Emit code to implement the i2d bytecode
protected abstract  void emit_i2f()
          Emit code to implement the i2f bytecode
protected abstract  void emit_i2l()
          Emit code to implement the i2l bytecode
protected abstract  void emit_i2s()
          Emit code to implement the i2s bytecode
protected abstract  void emit_iadd()
          Emit code to implement the iadd bytecode
protected abstract  void emit_iaload()
          Emit code to load from an int array
protected abstract  void emit_iand()
          Emit code to implement the iand bytecode
protected abstract  void emit_iastore()
          Emit code to store to an int array
protected abstract  void emit_iconst(int val)
          Emit code to load an int constant.
protected abstract  void emit_idiv()
          Emit code to implement the idiv bytecode
protected abstract  void emit_if_acmpeq(int bTarget)
          Emit code to implement the if_acmpeq bytecode
protected abstract  void emit_if_acmpne(int bTarget)
          Emit code to implement the if_acmpne bytecode
protected abstract  void emit_if_icmpeq(int bTarget)
          Emit code to implement the if_icmpeq bytecode
protected abstract  void emit_if_icmpge(int bTarget)
          Emit code to implement the if_icmpge bytecode
protected abstract  void emit_if_icmpgt(int bTarget)
          Emit code to implement the if_icmpgt bytecode
protected abstract  void emit_if_icmple(int bTarget)
          Emit code to implement the if_icmple bytecode
protected abstract  void emit_if_icmplt(int bTarget)
          Emit code to implement the if_icmplt bytecode
protected abstract  void emit_if_icmpne(int bTarget)
          Emit code to implement the if_icmpne bytecode
protected abstract  void emit_ifeq(int bTarget)
          Emit code to implement the ifeg bytecode
protected abstract  void emit_ifge(int bTarget)
          Emit code to implement the ifge bytecode
protected abstract  void emit_ifgt(int bTarget)
          Emit code to implement the ifgt bytecode
protected abstract  void emit_ifle(int bTarget)
          Emit code to implement the ifle bytecode
protected abstract  void emit_iflt(int bTarget)
          Emit code to implement the iflt bytecode
protected abstract  void emit_ifne(int bTarget)
          Emit code to implement the ifne bytecode
protected abstract  void emit_ifnonnull(int bTarget)
          Emit code to implement the ifnonnull bytecode
protected abstract  void emit_ifnull(int bTarget)
          Emit code to implement the ifnull bytecode
protected abstract  void emit_iinc(int index, int val)
          Emit code to implement the iinc bytecode
protected abstract  void emit_iload(int index)
          Emit code to load an int local variable
protected abstract  void emit_imul()
          Emit code to implement the imul bytecode
protected abstract  void emit_ineg()
          Emit code to implement the ineg bytecode
protected abstract  void emit_instanceof_final(RVMType type)
          Emit code to implement the instanceof bytecode
protected abstract  void emit_instanceof_resolvedClass(RVMClass type)
          Emit code to implement the instanceof bytecode
protected abstract  void emit_instanceof_resolvedInterface(RVMClass type)
          Emit code to implement the instanceof bytecode
protected abstract  void emit_instanceof(TypeReference typeRef)
          Emit code to implement the instanceof bytecode
protected abstract  void emit_invoke_compiledmethod(CompiledMethod cm)
           
protected abstract  void emit_invokeinterface(MethodReference methodRef)
          Emit code to implement the invokeinterface bytecode
protected abstract  void emit_ior()
          Emit code to implement the ior bytecode
protected abstract  void emit_irem()
          Emit code to implement the irem bytecode
protected abstract  void emit_ireturn()
          Emit code to implement the ireturn bytecode
protected abstract  void emit_ishl()
          Emit code to implement the ishl bytecode
protected abstract  void emit_ishr()
          Emit code to implement the ishr bytecode
protected abstract  void emit_istore(int index)
          Emit code to store an int to a local variable
protected abstract  void emit_isub()
          Emit code to implement the isub bytecode
protected abstract  void emit_iushr()
          Emit code to implement the iushr bytecode
protected abstract  void emit_ixor()
          Emit code to implement the ixor bytecode
protected abstract  void emit_jsr(int bTarget)
          Emit code to implement the jsr and jsrw bytecode
protected abstract  void emit_l2d()
          Emit code to implement the l2d bytecode
protected abstract  void emit_l2f()
          Emit code to implement the l2f bytecode
protected abstract  void emit_l2i()
          Emit code to implement the l2i bytecode
protected abstract  void emit_ladd()
          Emit code to implement the ladd bytecode
protected abstract  void emit_laload()
          Emit code to load from a long array
protected abstract  void emit_land()
          Emit code to implement the land bytecode
protected abstract  void emit_lastore()
          Emit code to store to a long array
protected abstract  void emit_lcmp()
          Emit code to implement the lcmp bytecode
protected abstract  void emit_lconst(int val)
          Emit code to load a long constant
protected abstract  void emit_ldc(Offset offset, byte type)
          Emit code to load a 32 bit constant
protected abstract  void emit_ldc2(Offset offset, byte type)
          Emit code to load a 64 bit constant
protected abstract  void emit_ldiv()
          Emit code to implement the ldiv bytecode
protected abstract  void emit_lload(int index)
          Emit code to load a long local variable
protected abstract  void emit_lmul()
          Emit code to implement the lmul bytecode
protected abstract  void emit_lneg()
          Emit code to implement the lneg bytecode
protected abstract  void emit_loadretaddrconst(int bcIndex)
           
protected abstract  void emit_lookupswitch(int defaultval, int npairs)
          Emit code to implement the lookupswitch bytecode
protected abstract  void emit_lor()
          Emit code to implement the lor bytecode
protected abstract  void emit_lrem()
          Emit code to implement the lrem bytecode
protected abstract  void emit_lreturn()
          Emit code to implement the lreturn bytecode
protected abstract  void emit_lshl()
          Emit code to implement the lshsl bytecode
protected abstract  void emit_lshr()
          Emit code to implement the lshr bytecode
protected abstract  void emit_lstore(int index)
          Emit code to store a long to a local variable
protected abstract  void emit_lsub()
          Emit code to implement the lsub bytecode
protected abstract  void emit_lushr()
          Emit code to implement the lushr bytecode
protected abstract  void emit_lxor()
          Emit code to implement the lxor bytecode
protected abstract  boolean emit_Magic(MethodReference magicMethod)
          Emit the code to implement the spcified magic.
protected abstract  void emit_monitorenter()
          Emit code to implement the monitorenter bytecode
protected abstract  void emit_monitorexit()
          Emit code to implement the monitorexit bytecode
protected abstract  void emit_multianewarray(TypeReference typeRef, int dimensions)
          Emit code to allocate a multi-dimensional array
protected abstract  ForwardReference emit_pending_goto(int origidx)
           
protected abstract  void emit_pop()
          Emit code to implement the pop bytecode
protected abstract  void emit_pop2()
          Emit code to implement the pop2 bytecode
protected abstract  void emit_prologue()
          Emit the prologue for the method
protected abstract  void emit_resolved_getfield(FieldReference fieldRef)
          Emit code to implement a getfield
protected abstract  void emit_resolved_getstatic(FieldReference fieldRef)
          Emit code to implement a getstatic
protected abstract  void emit_resolved_invokespecial(MethodReference methodRef, RVMMethod target)
          Emit code to implement a dynamically linked invokespecial
protected abstract  void emit_resolved_invokestatic(MethodReference methodRef)
          Emit code to implement invokestatic
protected abstract  void emit_resolved_invokevirtual(MethodReference methodRef)
          Emit code to implement invokevirtual
protected abstract  void emit_resolved_new(RVMClass typeRef)
          Emit code to allocate a scalar object
protected abstract  void emit_resolved_newarray(RVMArray array)
          Emit code to allocate an array
protected abstract  void emit_resolved_putfield(FieldReference fieldRef)
          Emit code to implement a putfield
protected abstract  void emit_resolved_putstatic(FieldReference fieldRef)
          Emit code to implement a putstatic
protected abstract  void emit_ret(int index)
          Emit code to implement the ret bytecode
protected abstract  void emit_return()
          Emit code to implement the return bytecode
protected abstract  void emit_saload()
          Emit code to load from a short array
protected abstract  void emit_sastore()
          Emit code to store to a short array
protected abstract  void emit_swap()
          Emit code to implement the swap bytecode
protected abstract  void emit_tableswitch(int defaultval, int low, int high)
          Emit code to implement the tableswitch bytecode
protected abstract  void emit_threadSwitchTest(int whereFrom)
          Emit the code for a threadswitch tests (aka a yieldpoint).
protected abstract  void emit_unresolved_getfield(FieldReference fieldRef)
          Emit code to implement a dynamically linked getfield
protected abstract  void emit_unresolved_getstatic(FieldReference fieldRef)
          Emit code to implement a dynamically linked getstatic
protected abstract  void emit_unresolved_invokespecial(MethodReference methodRef)
          Emit code to implement invokespecial
protected abstract  void emit_unresolved_invokestatic(MethodReference methodRef)
          Emit code to implement a dynamically linked invokestatic
protected abstract  void emit_unresolved_invokevirtual(MethodReference methodRef)
          Emit code to implement a dynamically linked invokevirtual
protected abstract  void emit_unresolved_new(TypeReference typeRef)
          Emit code to dynamically link and allocate a scalar object
protected abstract  void emit_unresolved_newarray(TypeReference typeRef)
          Emit code to dynamically link the element class and allocate an array
protected abstract  void emit_unresolved_putfield(FieldReference fieldRef)
          Emit code to implement a dynamically linked putfield
protected abstract  void emit_unresolved_putstatic(FieldReference fieldRef)
          Emit code to implement a dynamically linked putstatic
protected  void ending_bytecode()
          Notify BaselineCompilerImpl that we are ending code gen for the bytecode biStart
protected  void forbiddenBytecode(String msg, int bci)
          Print a warning message whan we compile a bytecode that is forbidden in Uninterruptible code.
protected  void forbiddenBytecode(String msg, Object obj, int bci)
          Print a warning message whan we compile a bytecode that is forbidden in Uninterruptible code.
protected  ArchitectureSpecific.MachineCode genCode()
          Main code generation loop.
(package private)  int[] getBytecodeMap()
           
protected abstract  String getCompilerName()
           
protected  void printEndHeader(RVMMethod method)
          Print a message to mark the end of machine code printing for a method
protected  void printMethodMessage()
          Print a message of a method name
protected  void printStartHeader(RVMMethod method)
          Print a message to mark the start of machine code printing for a method
protected abstract  void starting_bytecode()
          Notify BaselineCompilerImpl that we are starting code gen for the bytecode biStart
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fullyBootedVM

protected static boolean fullyBootedVM
has fullyBootedVM been called by VM.boot?


method

protected final NormalMethod method
The method being compiled


klass

protected final RVMClass klass
The declaring class of the method being compiled


bcodes

protected final BytecodeStream bcodes
The bytecodes of the method being compiled


bytecodeMap

protected final int[] bytecodeMap
Mapping from bytecodes to machine code offsets


biStart

protected int biStart
bi at the start of a bytecode


asm

public ArchitectureSpecific.Assembler asm
The Assembler being used for this compilation


compiledMethod

protected final CompiledMethod compiledMethod
The compiledMethod assigned to this compilation of method


stackHeights

protected int[] stackHeights
The height of the expression stack at the start of each bytecode. Only saved for some architectures, on others this field will be null. See the BaselineCompilerImpl constructor.


lockOffset

protected int lockOffset
machine code offset at which the lock is acquired in the prologue of a synchronized method.


shouldPrint

protected boolean shouldPrint
Should we print the machine code we generate?


isInterruptible

protected final boolean isInterruptible
Is the method currently being compiled interruptible?


doesCheckStore

protected final boolean doesCheckStore
Does this method do checkstore?


isUninterruptible

protected final boolean isUninterruptible
Is the method currently being compiled uninterruptible?


isUnpreemptible

protected final boolean isUnpreemptible
Is the method currently being compiled unpreemptible?


pendingCMID

private int pendingCMID

pendingIdx

private int pendingIdx

pendingRef

private ForwardReference pendingRef
Constructor Detail

TemplateCompilerFramework

protected TemplateCompilerFramework(CompiledMethod cm)
Construct a BaselineCompilerImpl

Method Detail

getBytecodeMap

final int[] getBytecodeMap()

printStartHeader

protected final void printStartHeader(RVMMethod method)
Print a message to mark the start of machine code printing for a method

Parameters:
method -

printEndHeader

protected final void printEndHeader(RVMMethod method)
Print a message to mark the end of machine code printing for a method

Parameters:
method -

printMethodMessage

protected final void printMethodMessage()
Print a message of a method name


genCode

protected final ArchitectureSpecific.MachineCode genCode()
Main code generation loop.


forbiddenBytecode

protected final void forbiddenBytecode(String msg,
                                       Object obj,
                                       int bci)
Print a warning message whan we compile a bytecode that is forbidden in Uninterruptible code.

Parameters:
msg - description of bytecode that is violating the invariant
obj - object that provides further information
bci - the index of the current bytecode

forbiddenBytecode

protected final void forbiddenBytecode(String msg,
                                       int bci)
Print a warning message whan we compile a bytecode that is forbidden in Uninterruptible code.

Parameters:
msg - description of bytecode that is violating the invariant
bci - the index of the current bytecode

checkTarget

protected final void checkTarget(RVMMethod target,
                                 int bci)
Ensure that the callee method is safe to invoke from uninterruptible code

Parameters:
target - the target methodRef
bci - the index of the current bytecode

starting_bytecode

protected abstract void starting_bytecode()
Notify BaselineCompilerImpl that we are starting code gen for the bytecode biStart


ending_bytecode

protected void ending_bytecode()
Notify BaselineCompilerImpl that we are ending code gen for the bytecode biStart


emit_prologue

protected abstract void emit_prologue()
Emit the prologue for the method


emit_threadSwitchTest

protected abstract void emit_threadSwitchTest(int whereFrom)
Emit the code for a threadswitch tests (aka a yieldpoint).

Parameters:
whereFrom - is this thread switch from a PROLOGUE, BACKEDGE, or EPILOGUE?

emit_deferred_prologue

protected abstract void emit_deferred_prologue()

emit_Magic

protected abstract boolean emit_Magic(MethodReference magicMethod)
Emit the code to implement the spcified magic.

Parameters:
magicMethod - desired magic

emit_aconst_null

protected abstract void emit_aconst_null()
Emit code to load the null constant.


emit_iconst

protected abstract void emit_iconst(int val)
Emit code to load an int constant.

Parameters:
val - the int constant to load

emit_lconst

protected abstract void emit_lconst(int val)
Emit code to load a long constant

Parameters:
val - the lower 32 bits of long constant (upper32 are 0).

emit_fconst_0

protected abstract void emit_fconst_0()
Emit code to load 0.0f


emit_fconst_1

protected abstract void emit_fconst_1()
Emit code to load 1.0f


emit_fconst_2

protected abstract void emit_fconst_2()
Emit code to load 2.0f


emit_dconst_0

protected abstract void emit_dconst_0()
Emit code to load 0.0d


emit_dconst_1

protected abstract void emit_dconst_1()
Emit code to load 1.0d


emit_ldc

protected abstract void emit_ldc(Offset offset,
                                 byte type)
Emit code to load a 32 bit constant

Parameters:
offset - JTOC offset of the constant
type - the type of the constant

emit_ldc2

protected abstract void emit_ldc2(Offset offset,
                                  byte type)
Emit code to load a 64 bit constant

Parameters:
offset - JTOC offset of the constant
type - the type of the constant

emit_iload

protected abstract void emit_iload(int index)
Emit code to load an int local variable

Parameters:
index - the local index to load

emit_lload

protected abstract void emit_lload(int index)
Emit code to load a long local variable

Parameters:
index - the local index to load

emit_fload

protected abstract void emit_fload(int index)
Emit code to local a float local variable

Parameters:
index - the local index to load

emit_dload

protected abstract void emit_dload(int index)
Emit code to load a double local variable

Parameters:
index - the local index to load

emit_aload

protected abstract void emit_aload(int index)
Emit code to load a reference local variable

Parameters:
index - the local index to load

emit_istore

protected abstract void emit_istore(int index)
Emit code to store an int to a local variable

Parameters:
index - the local index to load

emit_lstore

protected abstract void emit_lstore(int index)
Emit code to store a long to a local variable

Parameters:
index - the local index to load

emit_fstore

protected abstract void emit_fstore(int index)
Emit code to store a float to a local variable

Parameters:
index - the local index to load

emit_dstore

protected abstract void emit_dstore(int index)
Emit code to store an double to a local variable

Parameters:
index - the local index to load

emit_astore

protected abstract void emit_astore(int index)
Emit code to store a reference to a local variable

Parameters:
index - the local index to load

emit_iaload

protected abstract void emit_iaload()
Emit code to load from an int array


emit_laload

protected abstract void emit_laload()
Emit code to load from a long array


emit_faload

protected abstract void emit_faload()
Emit code to load from a float array


emit_daload

protected abstract void emit_daload()
Emit code to load from a double array


emit_aaload

protected abstract void emit_aaload()
Emit code to load from a reference array


emit_baload

protected abstract void emit_baload()
Emit code to load from a byte/boolean array


emit_caload

protected abstract void emit_caload()
Emit code to load from a char array


emit_saload

protected abstract void emit_saload()
Emit code to load from a short array


emit_iastore

protected abstract void emit_iastore()
Emit code to store to an int array


emit_lastore

protected abstract void emit_lastore()
Emit code to store to a long array


emit_fastore

protected abstract void emit_fastore()
Emit code to store to a float array


emit_dastore

protected abstract void emit_dastore()
Emit code to store to a double array


emit_aastore

protected abstract void emit_aastore()
Emit code to store to a reference array


emit_bastore

protected abstract void emit_bastore()
Emit code to store to a byte/boolean array


emit_castore

protected abstract void emit_castore()
Emit code to store to a char array


emit_sastore

protected abstract void emit_sastore()
Emit code to store to a short array


emit_pop

protected abstract void emit_pop()
Emit code to implement the pop bytecode


emit_pop2

protected abstract void emit_pop2()
Emit code to implement the pop2 bytecode


emit_dup

protected abstract void emit_dup()
Emit code to implement the dup bytecode


emit_dup_x1

protected abstract void emit_dup_x1()
Emit code to implement the dup_x1 bytecode


emit_dup_x2

protected abstract void emit_dup_x2()
Emit code to implement the dup_x2 bytecode


emit_dup2

protected abstract void emit_dup2()
Emit code to implement the dup2 bytecode


emit_dup2_x1

protected abstract void emit_dup2_x1()
Emit code to implement the dup2_x1 bytecode


emit_dup2_x2

protected abstract void emit_dup2_x2()
Emit code to implement the dup2_x2 bytecode


emit_swap

protected abstract void emit_swap()
Emit code to implement the swap bytecode


emit_iadd

protected abstract void emit_iadd()
Emit code to implement the iadd bytecode


emit_isub

protected abstract void emit_isub()
Emit code to implement the isub bytecode


emit_imul

protected abstract void emit_imul()
Emit code to implement the imul bytecode


emit_idiv

protected abstract void emit_idiv()
Emit code to implement the idiv bytecode


emit_irem

protected abstract void emit_irem()
Emit code to implement the irem bytecode


emit_ineg

protected abstract void emit_ineg()
Emit code to implement the ineg bytecode


emit_ishl

protected abstract void emit_ishl()
Emit code to implement the ishl bytecode


emit_ishr

protected abstract void emit_ishr()
Emit code to implement the ishr bytecode


emit_iushr

protected abstract void emit_iushr()
Emit code to implement the iushr bytecode


emit_iand

protected abstract void emit_iand()
Emit code to implement the iand bytecode


emit_ior

protected abstract void emit_ior()
Emit code to implement the ior bytecode


emit_ixor

protected abstract void emit_ixor()
Emit code to implement the ixor bytecode


emit_iinc

protected abstract void emit_iinc(int index,
                                  int val)
Emit code to implement the iinc bytecode

Parameters:
index - index of local
val - value to increment it by

emit_ladd

protected abstract void emit_ladd()
Emit code to implement the ladd bytecode


emit_lsub

protected abstract void emit_lsub()
Emit code to implement the lsub bytecode


emit_lmul

protected abstract void emit_lmul()
Emit code to implement the lmul bytecode


emit_ldiv

protected abstract void emit_ldiv()
Emit code to implement the ldiv bytecode


emit_lrem

protected abstract void emit_lrem()
Emit code to implement the lrem bytecode


emit_lneg

protected abstract void emit_lneg()
Emit code to implement the lneg bytecode


emit_lshl

protected abstract void emit_lshl()
Emit code to implement the lshsl bytecode


emit_lshr

protected abstract void emit_lshr()
Emit code to implement the lshr bytecode


emit_lushr

protected abstract void emit_lushr()
Emit code to implement the lushr bytecode


emit_land

protected abstract void emit_land()
Emit code to implement the land bytecode


emit_lor

protected abstract void emit_lor()
Emit code to implement the lor bytecode


emit_lxor

protected abstract void emit_lxor()
Emit code to implement the lxor bytecode


emit_fadd

protected abstract void emit_fadd()
Emit code to implement the fadd bytecode


emit_fsub

protected abstract void emit_fsub()
Emit code to implement the fsub bytecode


emit_fmul

protected abstract void emit_fmul()
Emit code to implement the fmul bytecode


emit_fdiv

protected abstract void emit_fdiv()
Emit code to implement the fdiv bytecode


emit_frem

protected abstract void emit_frem()
Emit code to implement the frem bytecode


emit_fneg

protected abstract void emit_fneg()
Emit code to implement the fneg bytecode


emit_dadd

protected abstract void emit_dadd()
Emit code to implement the dadd bytecode


emit_dsub

protected abstract void emit_dsub()
Emit code to implement the dsub bytecode


emit_dmul

protected abstract void emit_dmul()
Emit code to implement the dmul bytecode


emit_ddiv

protected abstract void emit_ddiv()
Emit code to implement the ddiv bytecode


emit_drem

protected abstract void emit_drem()
Emit code to implement the drem bytecode


emit_dneg

protected abstract void emit_dneg()
Emit code to implement the dneg bytecode


emit_i2l

protected abstract void emit_i2l()
Emit code to implement the i2l bytecode


emit_i2f

protected abstract void emit_i2f()
Emit code to implement the i2f bytecode


emit_i2d

protected abstract void emit_i2d()
Emit code to implement the i2d bytecode


emit_l2i

protected abstract void emit_l2i()
Emit code to implement the l2i bytecode


emit_l2f

protected abstract void emit_l2f()
Emit code to implement the l2f bytecode


emit_l2d

protected abstract void emit_l2d()
Emit code to implement the l2d bytecode


emit_f2i

protected abstract void emit_f2i()
Emit code to implement the f2i bytecode


emit_f2l

protected abstract void emit_f2l()
Emit code to implement the f2l bytecode


emit_f2d

protected abstract void emit_f2d()
Emit code to implement the f2d bytecode


emit_d2i

protected abstract void emit_d2i()
Emit code to implement the d2i bytecode


emit_d2l

protected abstract void emit_d2l()
Emit code to implement the d2l bytecode


emit_d2f

protected abstract void emit_d2f()
Emit code to implement the d2f bytecode


emit_i2b

protected abstract void emit_i2b()
Emit code to implement the i2b bytecode


emit_i2c

protected abstract void emit_i2c()
Emit code to implement the i2c bytecode


emit_i2s

protected abstract void emit_i2s()
Emit code to implement the i2s bytecode


emit_lcmp

protected abstract void emit_lcmp()
Emit code to implement the lcmp bytecode


emit_fcmpl

protected abstract void emit_fcmpl()
Emit code to implement the fcmpl bytecode


emit_fcmpg

protected abstract void emit_fcmpg()
Emit code to implement the fcmpg bytecode


emit_dcmpl

protected abstract void emit_dcmpl()
Emit code to implement the dcmpl bytecode


emit_dcmpg

protected abstract void emit_dcmpg()
Emit code to implement the dcmpg bytecode


emit_ifeq

protected abstract void emit_ifeq(int bTarget)
Emit code to implement the ifeg bytecode

Parameters:
bTarget - target bytecode of the branch

emit_ifne

protected abstract void emit_ifne(int bTarget)
Emit code to implement the ifne bytecode

Parameters:
bTarget - target bytecode of the branch

emit_iflt

protected abstract void emit_iflt(int bTarget)
Emit code to implement the iflt bytecode

Parameters:
bTarget - target bytecode of the branch

emit_ifge

protected abstract void emit_ifge(int bTarget)
Emit code to implement the ifge bytecode

Parameters:
bTarget - target bytecode of the branch

emit_ifgt

protected abstract void emit_ifgt(int bTarget)
Emit code to implement the ifgt bytecode

Parameters:
bTarget - target bytecode of the branch

emit_ifle

protected abstract void emit_ifle(int bTarget)
Emit code to implement the ifle bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_icmpeq

protected abstract void emit_if_icmpeq(int bTarget)
Emit code to implement the if_icmpeq bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_icmpne

protected abstract void emit_if_icmpne(int bTarget)
Emit code to implement the if_icmpne bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_icmplt

protected abstract void emit_if_icmplt(int bTarget)
Emit code to implement the if_icmplt bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_icmpge

protected abstract void emit_if_icmpge(int bTarget)
Emit code to implement the if_icmpge bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_icmpgt

protected abstract void emit_if_icmpgt(int bTarget)
Emit code to implement the if_icmpgt bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_icmple

protected abstract void emit_if_icmple(int bTarget)
Emit code to implement the if_icmple bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_acmpeq

protected abstract void emit_if_acmpeq(int bTarget)
Emit code to implement the if_acmpeq bytecode

Parameters:
bTarget - target bytecode of the branch

emit_if_acmpne

protected abstract void emit_if_acmpne(int bTarget)
Emit code to implement the if_acmpne bytecode

Parameters:
bTarget - target bytecode of the branch

emit_ifnull

protected abstract void emit_ifnull(int bTarget)
Emit code to implement the ifnull bytecode

Parameters:
bTarget - target bytecode of the branch

emit_ifnonnull

protected abstract void emit_ifnonnull(int bTarget)
Emit code to implement the ifnonnull bytecode

Parameters:
bTarget - target bytecode of the branch

emit_goto

protected abstract void emit_goto(int bTarget)
Emit code to implement the goto and gotow bytecodes

Parameters:
bTarget - target bytecode of the branch

emit_jsr

protected abstract void emit_jsr(int bTarget)
Emit code to implement the jsr and jsrw bytecode

Parameters:
bTarget - target bytecode of the jsr

emit_ret

protected abstract void emit_ret(int index)
Emit code to implement the ret bytecode

Parameters:
index - local variable containing the return address

emit_tableswitch

protected abstract void emit_tableswitch(int defaultval,
                                         int low,
                                         int high)
Emit code to implement the tableswitch bytecode

Parameters:
defaultval - bcIndex of the default target
low - low value of switch
high - high value of switch

emit_lookupswitch

protected abstract void emit_lookupswitch(int defaultval,
                                          int npairs)
Emit code to implement the lookupswitch bytecode

Parameters:
defaultval - bcIndex of the default target
npairs - number of pairs in the lookup switch

emit_ireturn

protected abstract void emit_ireturn()
Emit code to implement the ireturn bytecode


emit_lreturn

protected abstract void emit_lreturn()
Emit code to implement the lreturn bytecode


emit_freturn

protected abstract void emit_freturn()
Emit code to implement the freturn bytecode


emit_dreturn

protected abstract void emit_dreturn()
Emit code to implement the dreturn bytecode


emit_areturn

protected abstract void emit_areturn()
Emit code to implement the areturn bytecode


emit_return

protected abstract void emit_return()
Emit code to implement the return bytecode


emit_unresolved_getstatic

protected abstract void emit_unresolved_getstatic(FieldReference fieldRef)
Emit code to implement a dynamically linked getstatic

Parameters:
fieldRef - the referenced field

emit_resolved_getstatic

protected abstract void emit_resolved_getstatic(FieldReference fieldRef)
Emit code to implement a getstatic

Parameters:
fieldRef - the referenced field

emit_unresolved_putstatic

protected abstract void emit_unresolved_putstatic(FieldReference fieldRef)
Emit code to implement a dynamically linked putstatic

Parameters:
fieldRef - the referenced field

emit_resolved_putstatic

protected abstract void emit_resolved_putstatic(FieldReference fieldRef)
Emit code to implement a putstatic

Parameters:
fieldRef - the referenced field

emit_unresolved_getfield

protected abstract void emit_unresolved_getfield(FieldReference fieldRef)
Emit code to implement a dynamically linked getfield

Parameters:
fieldRef - the referenced field

emit_resolved_getfield

protected abstract void emit_resolved_getfield(FieldReference fieldRef)
Emit code to implement a getfield

Parameters:
fieldRef - the referenced field

emit_unresolved_putfield

protected abstract void emit_unresolved_putfield(FieldReference fieldRef)
Emit code to implement a dynamically linked putfield

Parameters:
fieldRef - the referenced field

emit_resolved_putfield

protected abstract void emit_resolved_putfield(FieldReference fieldRef)
Emit code to implement a putfield

Parameters:
fieldRef - the referenced field

emit_unresolved_invokevirtual

protected abstract void emit_unresolved_invokevirtual(MethodReference methodRef)
Emit code to implement a dynamically linked invokevirtual

Parameters:
methodRef - the referenced method

emit_resolved_invokevirtual

protected abstract void emit_resolved_invokevirtual(MethodReference methodRef)
Emit code to implement invokevirtual

Parameters:
methodRef - the referenced method

emit_resolved_invokespecial

protected abstract void emit_resolved_invokespecial(MethodReference methodRef,
                                                    RVMMethod target)
Emit code to implement a dynamically linked invokespecial

Parameters:
methodRef - the referenced method
target - the method to invoke

emit_unresolved_invokespecial

protected abstract void emit_unresolved_invokespecial(MethodReference methodRef)
Emit code to implement invokespecial

Parameters:
methodRef - the referenced method

emit_unresolved_invokestatic

protected abstract void emit_unresolved_invokestatic(MethodReference methodRef)
Emit code to implement a dynamically linked invokestatic

Parameters:
methodRef - the referenced method

emit_resolved_invokestatic

protected abstract void emit_resolved_invokestatic(MethodReference methodRef)
Emit code to implement invokestatic

Parameters:
methodRef - the referenced method

emit_invoke_compiledmethod

protected abstract void emit_invoke_compiledmethod(CompiledMethod cm)

emit_pending_goto

protected abstract ForwardReference emit_pending_goto(int origidx)

emit_invokeinterface

protected abstract void emit_invokeinterface(MethodReference methodRef)
Emit code to implement the invokeinterface bytecode

Parameters:
methodRef - the referenced method

emit_resolved_new

protected abstract void emit_resolved_new(RVMClass typeRef)
Emit code to allocate a scalar object

Parameters:
typeRef - The RVMClass to instantiate

emit_unresolved_new

protected abstract void emit_unresolved_new(TypeReference typeRef)
Emit code to dynamically link and allocate a scalar object

Parameters:
typeRef - TypeReference to dynamically link & instantiate

emit_resolved_newarray

protected abstract void emit_resolved_newarray(RVMArray array)
Emit code to allocate an array

Parameters:
array - the RVMArray to instantiate

emit_unresolved_newarray

protected abstract void emit_unresolved_newarray(TypeReference typeRef)
Emit code to dynamically link the element class and allocate an array

Parameters:
typeRef - typeReference to dynamically link & instantiate

emit_multianewarray

protected abstract void emit_multianewarray(TypeReference typeRef,
                                            int dimensions)
Emit code to allocate a multi-dimensional array

Parameters:
typeRef - typeReference to dynamically link & instantiate
dimensions - the number of dimensions

emit_arraylength

protected abstract void emit_arraylength()
Emit code to implement the arraylength bytecode


emit_athrow

protected abstract void emit_athrow()
Emit code to implement the athrow bytecode


emit_checkcast

protected abstract void emit_checkcast(TypeReference typeRef)
Emit code to implement the checkcast bytecode

Parameters:
typeRef - the LHS type

emit_checkcast_resolvedInterface

protected abstract void emit_checkcast_resolvedInterface(RVMClass type)
Emit code to implement the checkcast bytecode

Parameters:
type - the LHS type

emit_checkcast_resolvedClass

protected abstract void emit_checkcast_resolvedClass(RVMClass type)
Emit code to implement the checkcast bytecode

Parameters:
type - the LHS type

emit_checkcast_final

protected abstract void emit_checkcast_final(RVMType type)
Emit code to implement the checkcast bytecode

Parameters:
type - the LHS type

emit_instanceof

protected abstract void emit_instanceof(TypeReference typeRef)
Emit code to implement the instanceof bytecode

Parameters:
typeRef - the LHS type

emit_instanceof_resolvedInterface

protected abstract void emit_instanceof_resolvedInterface(RVMClass type)
Emit code to implement the instanceof bytecode

Parameters:
type - the LHS type

emit_instanceof_resolvedClass

protected abstract void emit_instanceof_resolvedClass(RVMClass type)
Emit code to implement the instanceof bytecode

Parameters:
type - the LHS type

emit_instanceof_final

protected abstract void emit_instanceof_final(RVMType type)
Emit code to implement the instanceof bytecode

Parameters:
type - the LHS type

emit_monitorenter

protected abstract void emit_monitorenter()
Emit code to implement the monitorenter bytecode


emit_monitorexit

protected abstract void emit_monitorexit()
Emit code to implement the monitorexit bytecode


emit_loadretaddrconst

protected abstract void emit_loadretaddrconst(int bcIndex)

getCompilerName

protected abstract String getCompilerName()