JVM
instructions.c File Reference
#include "instructions.h"
#include "utf8.h"
#include "jvm.h"
#include "natives.h"
#include <math.h>
Include dependency graph for instructions.c:

Macros

#define NEXT_BYTE   (*(frame->code + frame->pc++))
 
#define HIWORD(x)   ((int32_t)(x >> 32))
 
#define LOWORD(x)   ((int32_t)(x & 0xFFFFFFFFll))
 
#define DECLR_CONST_CAT_1_FAMILY(instructionprefix, value, type)
 Used to automatically generate instructions "iconst_<n>" and fconst_<n>. More...
 
#define DECLR_CONST_CAT_2_FAMILY(instructionprefix, highvalue, lowvalue, type)
 Used to automatically generate instructions "lconst_<n>" and dconst_<n>. More...
 
#define DECLR_LOAD_CAT_1_FAMILY(instructionprefix, type)
 Used to automatically generate instructions "iload", "fload" and "aload". More...
 
#define DECLR_LOAD_CAT_2_FAMILY(instructionprefix, type)
 Used to automatically generate instructions "lload", and "dload". More...
 
#define DECLR_WIDE_LOAD_CAT_1_FAMILY(instructionprefix, type)
 Used to automatically generate instructions "iload", "fload" and "aload" that are widened. More...
 
#define DECLR_WIDE_LOAD_CAT_2_FAMILY(instructionprefix, type)
 Used to automatically generate instructions "lload", and "dload" that are widened. More...
 
#define DECLR_CAT_1_LOAD_N_FAMILY(instructionprefix, value, type)
 Used to automatically generate instructions "iload_<n>", "fload_<n>" and "aload_<n>". More...
 
#define DECLR_CAT_2_LOAD_N_FAMILY(instructionprefix, value, type)
 Used to automatically generate instructions "dload_<n>" and "lload_<n>". More...
 
#define DECLR_ALOAD_CAT_1_FAMILY(instructionname, type, op_type)
 Used to automatically generate instructions "iaload", "faload", "baload", "saload" and "caload". More...
 
#define DECLR_ALOAD_CAT_2_FAMILY(instructionname, type, op_type)
 Used to automatically generate instructions "laload" and "daload". More...
 
#define DECLR_STORE_CAT_1_FAMILY(instructionprefix)
 Used to automatically generate instructions "istore", "fstore" and "astore". More...
 
#define DECLR_WIDE_STORE_CAT_1_FAMILY(instructionprefix)
 Used to automatically generate instructions "istore", "fstore" and "astore" that are widened. More...
 
#define DECLR_STORE_CAT_2_FAMILY(instructionprefix)
 Used to automatically generate instructions "l" and "dstore". More...
 
#define DECLR_WIDE_STORE_CAT_2_FAMILY(instructionprefix)
 Used to automatically generate instructions "l" and "dstore" that are widened. More...
 
#define DECLR_STORE_N_CAT_1_FAMILY(instructionprefix, N)
 Used to automatically generate instructions "istore_<n>", "fstore_<n>" and "astore_<n>". More...
 
#define DECLR_STORE_N_CAT_2_FAMILY(instructionprefix, N)
 Used to automatically generate instructions "lstore_<n>" and "dstore_<n>". More...
 
#define DECLR_ASTORE_CAT_1_FAMILY(instructionname, type)
 Used to automatically generate instructions "bastore", "castore", "sastore", "iastore" and "fastore". More...
 
#define DECLR_ASTORE_CAT_2_FAMILY(instructionname)
 Used to automatically generate instructions "dastore" and "lastore". More...
 
#define DECLR_INTEGER_MATH_OP(instruction, op)
 Used to automatically generate instructions "iadd", "isub", "imul", "idiv", "irem", "iand", "ior" and "ixor". More...
 
#define DECLR_LONG_MATH_OP(instruction, op)
 Used to automatically generate instructions "ladd", "lsub", "lmul", "ldiv", "lrem", "land", "lor" and "lxor". More...
 
#define DECLR_FLOAT_MATH_OP(instruction, op)
 Used to automatically generate instructions "fadd", "fsub", "fmul" and "fdiv". More...
 
#define DECLR_DOUBLE_MATH_OP(instruction, op)
 Used to automatically generate instructions "dadd", "dsub", "dmul" and "ddiv". More...
 
#define DECLR_IF_FAMILY(inst, op)
 Used to automatically generate instructions "ifeq", "ifne", "iflt", "ifle", "ifgt" and "ifge". More...
 
#define DECLR_IF_ICMP_FAMILY(inst, op)
 Used to automatically generate instructions "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmple", "if_icmpgt", "if_icmpge", "if_acmpeq" and "if_acmpne". More...
 
#define DECLR_RETURN_FAMILY(instname, retcount)
 Used to automatically generate instructions "ireturn", "lreturn", "freturn", "dreturn", "areturn" and "return". More...
 

Functions

uint8_t instfunc_nop (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_aconst_null (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_bipush (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_sipush (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ldc (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ldc_w (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ldc2_w (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_aaload (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_aastore (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_pop (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_pop2 (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dup (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dup_x1 (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dup_x2 (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dup2 (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dup2_x1 (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dup2_x2 (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_swap (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ishl (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ishr (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_iushr (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_lshl (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_lshr (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_lushr (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_frem (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_drem (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ineg (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_lneg (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_fneg (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dneg (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_iinc (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_wide_iinc (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_i2l (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_i2f (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_i2d (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_l2i (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_l2f (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_l2d (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_f2i (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_f2l (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_f2d (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_d2i (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_d2l (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_d2f (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_i2b (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_i2c (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_i2s (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_lcmp (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_fcmpl (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_fcmpg (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dcmpl (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_dcmpg (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_goto (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_jsr (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ret (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_wide_ret (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_tableswitch (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_lookupswitch (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_getstatic (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_putstatic (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_getfield (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_putfield (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_invokevirtual (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_invokespecial (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_invokestatic (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_invokeinterface (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_invokedynamic (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_new (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_newarray (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_anewarray (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_arraylength (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_athrow (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_checkcast (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_instanceof (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_monitorenter (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_monitorexit (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_wide (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_multianewarray (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ifnull (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_ifnonnull (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_goto_w (JavaVirtualMachine *jvm, Frame *frame)
 
uint8_t instfunc_jsr_w (JavaVirtualMachine *jvm, Frame *frame)
 
InstructionFunction fetchOpcodeFunction (uint8_t opcode)
 Retrieves the instruction function for a given instruction opcode. More...
 

Macro Definition Documentation

§ DECLR_ALOAD_CAT_1_FAMILY

#define DECLR_ALOAD_CAT_1_FAMILY (   instructionname,
  type,
  op_type 
)
Value:
uint8_t instfunc_##instructionname(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t index; \
int32_t arrayref; \
Reference* obj; \
popOperand(&frame->operands, &index, NULL); \
popOperand(&frame->operands, &arrayref, NULL); \
obj = (Reference*)arrayref; \
if (obj == NULL) \
{ \
/* TODO: throw NullPointerException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
if (index < 0 || (uint32_t)index >= obj->arr.length) \
{ \
/* TODO: throw ArrayIndexOutOfBoundsException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
type* ptr = (type*)obj->arr.data; \
if (!pushOperand(&frame->operands, ptr[index], op_type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Definition: jvm.h:59
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "iaload", "faload", "baload", "saload" and "caload".

§ DECLR_ALOAD_CAT_2_FAMILY

#define DECLR_ALOAD_CAT_2_FAMILY (   instructionname,
  type,
  op_type 
)
Value:
uint8_t instfunc_##instructionname(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t index; \
int32_t arrayref; \
Reference* obj; \
popOperand(&frame->operands, &index, NULL); \
popOperand(&frame->operands, &arrayref, NULL); \
obj = (Reference*)arrayref; \
if (obj == NULL) \
{ \
/* TODO: throw NullPointerException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
if (index < 0 || (uint32_t)index >= obj->arr.length) \
{ \
/* TODO: throw ArrayIndexOutOfBoundsException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
type* ptr = (type*)obj->arr.data; \
if (!pushOperand(&frame->operands, HIWORD(ptr[index]), op_type) || \
!pushOperand(&frame->operands, LOWORD(ptr[index]), op_type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Definition: jvm.h:59
#define LOWORD(x)
Definition: instructions.c:12
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
#define HIWORD(x)
Definition: instructions.c:11
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "laload" and "daload".

§ DECLR_ASTORE_CAT_1_FAMILY

#define DECLR_ASTORE_CAT_1_FAMILY (   instructionname,
  type 
)
Value:
uint8_t instfunc_##instructionname(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t operand; \
int32_t index; \
int32_t arrayref; \
Reference* obj; \
popOperand(&frame->operands, &operand, NULL); \
popOperand(&frame->operands, &index, NULL); \
popOperand(&frame->operands, &arrayref, NULL); \
obj = (Reference*)arrayref; \
if (obj == NULL) \
{ \
/* TODO: throw NullPointerException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
if (index < 0 || (uint32_t)index >= obj->arr.length) \
{ \
/* TODO: throw ArrayIndexOutOfBoundsException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
type* ptr = (type*)obj->arr.data; \
ptr[index] = (type)operand; \
return 1; \
}
Definition: jvm.h:59
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "bastore", "castore", "sastore", "iastore" and "fastore".

§ DECLR_ASTORE_CAT_2_FAMILY

#define DECLR_ASTORE_CAT_2_FAMILY (   instructionname)
Value:
uint8_t instfunc_##instructionname(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t highoperand; \
int32_t lowoperand; \
int32_t index; \
int32_t arrayref; \
Reference* obj; \
popOperand(&frame->operands, &lowoperand, NULL); \
popOperand(&frame->operands, &highoperand, NULL); \
popOperand(&frame->operands, &index, NULL); \
popOperand(&frame->operands, &arrayref, NULL); \
obj = (Reference*)arrayref; \
if (obj == NULL) \
{ \
/* TODO: throw NullPointerException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
if (index < 0 || (uint32_t)index >= obj->arr.length) \
{ \
/* TODO: throw ArrayIndexOutOfBoundsException*/ \
DEBUG_REPORT_INSTRUCTION_ERROR \
return 0; \
} \
int64_t* ptr = (int64_t*)obj->arr.data; \
ptr[index] = ((int64_t)highoperand << 32) | (uint32_t)lowoperand; \
return 1; \
}
Definition: jvm.h:59
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "dastore" and "lastore".

§ DECLR_CAT_1_LOAD_N_FAMILY

#define DECLR_CAT_1_LOAD_N_FAMILY (   instructionprefix,
  value,
  type 
)
Value:
uint8_t instfunc_##instructionprefix##_##value(JavaVirtualMachine* jvm, Frame* frame) \
{ \
if (!pushOperand(&frame->operands, *(frame->localVariables + value), type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "iload_<n>", "fload_<n>" and "aload_<n>".

§ DECLR_CAT_2_LOAD_N_FAMILY

#define DECLR_CAT_2_LOAD_N_FAMILY (   instructionprefix,
  value,
  type 
)
Value:
uint8_t instfunc_##instructionprefix##_##value(JavaVirtualMachine* jvm, Frame* frame) \
{ \
if (!pushOperand(&frame->operands, *(frame->localVariables + value), type) || \
!pushOperand(&frame->operands, *(frame->localVariables + value + 1), type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "dload_<n>" and "lload_<n>".

§ DECLR_CONST_CAT_1_FAMILY

#define DECLR_CONST_CAT_1_FAMILY (   instructionprefix,
  value,
  type 
)
Value:
uint8_t instfunc_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
if (!pushOperand(&frame->operands, value, type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "iconst_<n>" and fconst_<n>.

§ DECLR_CONST_CAT_2_FAMILY

#define DECLR_CONST_CAT_2_FAMILY (   instructionprefix,
  highvalue,
  lowvalue,
  type 
)
Value:
uint8_t instfunc_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
if (!pushOperand(&frame->operands, highvalue, type) || \
!pushOperand(&frame->operands, lowvalue, type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "lconst_<n>" and dconst_<n>.

§ DECLR_DOUBLE_MATH_OP

#define DECLR_DOUBLE_MATH_OP (   instruction,
  op 
)
Value:
uint8_t instfunc_##instruction(JavaVirtualMachine* jvm, Frame* frame) \
{ \
union { \
double d; \
int64_t i; \
} value1, value2; \
int32_t high, low; \
popOperand(&frame->operands, &low, NULL); \
popOperand(&frame->operands, &high, NULL); \
value2.i = high; \
value2.i = (value2.i << 32) | (uint32_t)low; \
popOperand(&frame->operands, &low, NULL); \
popOperand(&frame->operands, &high, NULL); \
value1.i = high; \
value1.i = (value1.i << 32) | (uint32_t)low; \
value1.d = value1.d op value2.d; \
if (!pushOperand(&frame->operands, HIWORD(value1.i), OP_DOUBLE) || \
!pushOperand(&frame->operands, LOWORD(value1.i), OP_DOUBLE)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
#define LOWORD(x)
Definition: instructions.c:12
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
#define HIWORD(x)
Definition: instructions.c:11
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20
Definition: operandstack.h:9

Used to automatically generate instructions "dadd", "dsub", "dmul" and "ddiv".

§ DECLR_FLOAT_MATH_OP

#define DECLR_FLOAT_MATH_OP (   instruction,
  op 
)
Value:
uint8_t instfunc_##instruction(JavaVirtualMachine* jvm, Frame* frame) \
{ \
union { \
float f; \
int32_t i; \
} value1, value2; \
popOperand(&frame->operands, &value2.i, NULL); \
popOperand(&frame->operands, &value1.i, NULL); \
value1.f = value1.f op value2.f; \
if (!pushOperand(&frame->operands, value1.i, OP_FLOAT)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
Definition: operandstack.h:9
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "fadd", "fsub", "fmul" and "fdiv".

§ DECLR_IF_FAMILY

#define DECLR_IF_FAMILY (   inst,
  op 
)
Value:
uint8_t instfunc_##inst(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t value; \
int16_t offset = NEXT_BYTE; \
offset = (offset << 8) | NEXT_BYTE; \
popOperand(&frame->operands, &value, NULL); \
if (value op 0) \
frame->pc += offset - 3; \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "ifeq", "ifne", "iflt", "ifle", "ifgt" and "ifge".

§ DECLR_IF_ICMP_FAMILY

#define DECLR_IF_ICMP_FAMILY (   inst,
  op 
)
Value:
uint8_t instfunc_##inst(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t value1, value2; \
int16_t offset = NEXT_BYTE; \
offset = (offset << 8) | NEXT_BYTE; \
popOperand(&frame->operands, &value2, NULL); \
popOperand(&frame->operands, &value1, NULL); \
if (value1 op value2) \
frame->pc += offset - 3; \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmple", "if_icmpgt", "if_icmpge", "if_acmpeq" and "if_acmpne".

§ DECLR_INTEGER_MATH_OP

#define DECLR_INTEGER_MATH_OP (   instruction,
  op 
)
Value:
uint8_t instfunc_##instruction(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t value1, value2; \
popOperand(&frame->operands, &value2, NULL); \
popOperand(&frame->operands, &value1, NULL); \
if (!pushOperand(&frame->operands, value1 op value2, OP_INTEGER)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
Definition: operandstack.h:9
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "iadd", "isub", "imul", "idiv", "irem", "iand", "ior" and "ixor".

§ DECLR_LOAD_CAT_1_FAMILY

#define DECLR_LOAD_CAT_1_FAMILY (   instructionprefix,
  type 
)
Value:
uint8_t instfunc_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
if (!pushOperand(&frame->operands, *(frame->localVariables + NEXT_BYTE), type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "iload", "fload" and "aload".

§ DECLR_LOAD_CAT_2_FAMILY

#define DECLR_LOAD_CAT_2_FAMILY (   instructionprefix,
  type 
)
Value:
uint8_t instfunc_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
uint8_t index = NEXT_BYTE; \
if (!pushOperand(&frame->operands, *(frame->localVariables + index), type) || \
!pushOperand(&frame->operands, *(frame->localVariables + index + 1), type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "lload", and "dload".

§ DECLR_LONG_MATH_OP

#define DECLR_LONG_MATH_OP (   instruction,
  op 
)
Value:
uint8_t instfunc_##instruction(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int64_t value1, value2; \
int32_t high, low; \
popOperand(&frame->operands, &low, NULL); \
popOperand(&frame->operands, &high, NULL); \
value2 = high; \
value2 = value2 << 32 | (uint32_t)low; \
popOperand(&frame->operands, &low, NULL); \
popOperand(&frame->operands, &high, NULL); \
value1 = high; \
value1 = value1 << 32 | (uint32_t)low; \
value1 = value1 op value2; \
if (!pushOperand(&frame->operands, HIWORD(value1), OP_LONG) || \
!pushOperand(&frame->operands, LOWORD(value1), OP_LONG)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
#define LOWORD(x)
Definition: instructions.c:12
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
#define HIWORD(x)
Definition: instructions.c:11
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: operandstack.h:9
Definition: jvm.h:20

Used to automatically generate instructions "ladd", "lsub", "lmul", "ldiv", "lrem", "land", "lor" and "lxor".

§ DECLR_RETURN_FAMILY

#define DECLR_RETURN_FAMILY (   instname,
  retcount 
)
Value:
uint8_t instfunc_##instname(JavaVirtualMachine* jvm, Frame* frame) \
{ \
/* This will finish the frame, forcing it to return */ \
frame->pc = frame->code_length; \
/*
Set the returnCount to 1, so the caller frame will know \
that one operand (the top one obviously) must be popped \
from this soon-to-end frame and pushed again to the \
caller frame.
*/ \
frame->returnCount = retcount; \
return 1;\
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "ireturn", "lreturn", "freturn", "dreturn", "areturn" and "return".

§ DECLR_STORE_CAT_1_FAMILY

#define DECLR_STORE_CAT_1_FAMILY (   instructionprefix)
Value:
uint8_t instfunc_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t operand; \
popOperand(&frame->operands, &operand, NULL); \
*(frame->localVariables + NEXT_BYTE) = operand; \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "istore", "fstore" and "astore".

§ DECLR_STORE_CAT_2_FAMILY

#define DECLR_STORE_CAT_2_FAMILY (   instructionprefix)
Value:
uint8_t instfunc_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
uint8_t index = NEXT_BYTE; \
int32_t highoperand; \
int32_t lowoperand; \
popOperand(&frame->operands, &lowoperand, NULL); \
popOperand(&frame->operands, &highoperand, NULL); \
*(frame->localVariables + index) = highoperand; \
*(frame->localVariables + index + 1) = lowoperand; \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "l" and "dstore".

§ DECLR_STORE_N_CAT_1_FAMILY

#define DECLR_STORE_N_CAT_1_FAMILY (   instructionprefix,
 
)
Value:
uint8_t instfunc_##instructionprefix##_##N(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t operand; \
popOperand(&frame->operands, &operand, NULL); \
*(frame->localVariables + N) = operand; \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "istore_<n>", "fstore_<n>" and "astore_<n>".

§ DECLR_STORE_N_CAT_2_FAMILY

#define DECLR_STORE_N_CAT_2_FAMILY (   instructionprefix,
 
)
Value:
uint8_t instfunc_##instructionprefix##_##N(JavaVirtualMachine* jvm, Frame* frame) \
{ \
int32_t highoperand; \
int32_t lowoperand; \
popOperand(&frame->operands, &lowoperand, NULL); \
popOperand(&frame->operands, &highoperand, NULL); \
*(frame->localVariables + N) = highoperand; \
*(frame->localVariables + N + 1) = lowoperand; \
return 1; \
}
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "lstore_<n>" and "dstore_<n>".

§ DECLR_WIDE_LOAD_CAT_1_FAMILY

#define DECLR_WIDE_LOAD_CAT_1_FAMILY (   instructionprefix,
  type 
)
Value:
uint8_t instfunc_wide_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
uint16_t index = NEXT_BYTE; \
index = (index << 8) | NEXT_BYTE; \
if (!pushOperand(&frame->operands, *(frame->localVariables + index), type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "iload", "fload" and "aload" that are widened.

§ DECLR_WIDE_LOAD_CAT_2_FAMILY

#define DECLR_WIDE_LOAD_CAT_2_FAMILY (   instructionprefix,
  type 
)
Value:
uint8_t instfunc_wide_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
uint16_t index = NEXT_BYTE; \
index = (index << 8) | NEXT_BYTE; \
if (!pushOperand(&frame->operands, *(frame->localVariables + index), type) || \
!pushOperand(&frame->operands, *(frame->localVariables + index + 1), type)) \
{ \
jvm->status = JVM_STATUS_OUT_OF_MEMORY; \
return 0; \
} \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
uint8_t pushOperand(OperandStack **os, int32_t value, OperandType type)
Push the operand on the top of OperandStack passed as parameter by reference.
Definition: operandstack.c:11
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104
Definition: jvm.h:20

Used to automatically generate instructions "lload", and "dload" that are widened.

§ DECLR_WIDE_STORE_CAT_1_FAMILY

#define DECLR_WIDE_STORE_CAT_1_FAMILY (   instructionprefix)
Value:
uint8_t instfunc_wide_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
uint16_t index = NEXT_BYTE; \
index = (index << 8) | NEXT_BYTE; \
int32_t operand; \
popOperand(&frame->operands, &operand, NULL); \
*(frame->localVariables + index) = operand; \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "istore", "fstore" and "astore" that are widened.

§ DECLR_WIDE_STORE_CAT_2_FAMILY

#define DECLR_WIDE_STORE_CAT_2_FAMILY (   instructionprefix)
Value:
uint8_t instfunc_wide_##instructionprefix(JavaVirtualMachine* jvm, Frame* frame) \
{ \
uint16_t index = NEXT_BYTE; \
index = (index << 8) | NEXT_BYTE; \
int32_t highoperand; \
int32_t lowoperand; \
popOperand(&frame->operands, &lowoperand, NULL); \
popOperand(&frame->operands, &highoperand, NULL); \
*(frame->localVariables + index) = highoperand; \
*(frame->localVariables + index + 1) = lowoperand; \
return 1; \
}
#define NEXT_BYTE
Definition: instructions.c:10
Structure that will be associated with a method and holds the information necessary to run the method...
Definition: framestack.h:12
A java virtual machine, storing all loaded classes, created objects and frames for methods being exec...
Definition: jvm.h:104

Used to automatically generate instructions "l" and "dstore" that are widened.

§ HIWORD

#define HIWORD (   x)    ((int32_t)(x >> 32))

§ LOWORD

#define LOWORD (   x)    ((int32_t)(x & 0xFFFFFFFFll))

§ NEXT_BYTE

#define NEXT_BYTE   (*(frame->code + frame->pc++))

Function Documentation

§ fetchOpcodeFunction()

InstructionFunction fetchOpcodeFunction ( uint8_t  opcode)

Retrieves the instruction function for a given instruction opcode.

Returns
The function that needs to be called for the instruction to be executed if there is one for the given opcode. Otherwise, returns NULL.
See also
Opcodes, getOpcodeMnemonic()
Here is the caller graph for this function:

§ instfunc_aaload()

uint8_t instfunc_aaload ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_aastore()

uint8_t instfunc_aastore ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_aconst_null()

uint8_t instfunc_aconst_null ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_anewarray()

uint8_t instfunc_anewarray ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_arraylength()

uint8_t instfunc_arraylength ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_athrow()

uint8_t instfunc_athrow ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_bipush()

uint8_t instfunc_bipush ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_checkcast()

uint8_t instfunc_checkcast ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_d2f()

uint8_t instfunc_d2f ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_d2i()

uint8_t instfunc_d2i ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_d2l()

uint8_t instfunc_d2l ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dcmpg()

uint8_t instfunc_dcmpg ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dcmpl()

uint8_t instfunc_dcmpl ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dneg()

uint8_t instfunc_dneg ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_drem()

uint8_t instfunc_drem ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dup()

uint8_t instfunc_dup ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dup2()

uint8_t instfunc_dup2 ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dup2_x1()

uint8_t instfunc_dup2_x1 ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dup2_x2()

uint8_t instfunc_dup2_x2 ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dup_x1()

uint8_t instfunc_dup_x1 ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_dup_x2()

uint8_t instfunc_dup_x2 ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_f2d()

uint8_t instfunc_f2d ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_f2i()

uint8_t instfunc_f2i ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_f2l()

uint8_t instfunc_f2l ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_fcmpg()

uint8_t instfunc_fcmpg ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_fcmpl()

uint8_t instfunc_fcmpl ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_fneg()

uint8_t instfunc_fneg ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_frem()

uint8_t instfunc_frem ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_getfield()

uint8_t instfunc_getfield ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_getstatic()

uint8_t instfunc_getstatic ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_goto()

uint8_t instfunc_goto ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_goto_w()

uint8_t instfunc_goto_w ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_i2b()

uint8_t instfunc_i2b ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_i2c()

uint8_t instfunc_i2c ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_i2d()

uint8_t instfunc_i2d ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_i2f()

uint8_t instfunc_i2f ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_i2l()

uint8_t instfunc_i2l ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_i2s()

uint8_t instfunc_i2s ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ifnonnull()

uint8_t instfunc_ifnonnull ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ifnull()

uint8_t instfunc_ifnull ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_iinc()

uint8_t instfunc_iinc ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_ineg()

uint8_t instfunc_ineg ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_instanceof()

uint8_t instfunc_instanceof ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_invokedynamic()

uint8_t instfunc_invokedynamic ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_invokeinterface()

uint8_t instfunc_invokeinterface ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_invokespecial()

uint8_t instfunc_invokespecial ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_invokestatic()

uint8_t instfunc_invokestatic ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_invokevirtual()

uint8_t instfunc_invokevirtual ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ishl()

uint8_t instfunc_ishl ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ishr()

uint8_t instfunc_ishr ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_iushr()

uint8_t instfunc_iushr ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_jsr()

uint8_t instfunc_jsr ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_jsr_w()

uint8_t instfunc_jsr_w ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_l2d()

uint8_t instfunc_l2d ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_l2f()

uint8_t instfunc_l2f ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_l2i()

uint8_t instfunc_l2i ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_lcmp()

uint8_t instfunc_lcmp ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ldc()

uint8_t instfunc_ldc ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ldc2_w()

uint8_t instfunc_ldc2_w ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ldc_w()

uint8_t instfunc_ldc_w ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_lneg()

uint8_t instfunc_lneg ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_lookupswitch()

uint8_t instfunc_lookupswitch ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_lshl()

uint8_t instfunc_lshl ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_lshr()

uint8_t instfunc_lshr ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_lushr()

uint8_t instfunc_lushr ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_monitorenter()

uint8_t instfunc_monitorenter ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_monitorexit()

uint8_t instfunc_monitorexit ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_multianewarray()

uint8_t instfunc_multianewarray ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_new()

uint8_t instfunc_new ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_newarray()

uint8_t instfunc_newarray ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_nop()

uint8_t instfunc_nop ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_pop()

uint8_t instfunc_pop ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_pop2()

uint8_t instfunc_pop2 ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_putfield()

uint8_t instfunc_putfield ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_putstatic()

uint8_t instfunc_putstatic ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_ret()

uint8_t instfunc_ret ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_sipush()

uint8_t instfunc_sipush ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_swap()

uint8_t instfunc_swap ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_tableswitch()

uint8_t instfunc_tableswitch ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_wide()

uint8_t instfunc_wide ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the call graph for this function:
Here is the caller graph for this function:

§ instfunc_wide_iinc()

uint8_t instfunc_wide_iinc ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function:

§ instfunc_wide_ret()

uint8_t instfunc_wide_ret ( JavaVirtualMachine jvm,
Frame frame 
)
Here is the caller graph for this function: