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,
  N 
)
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,
  N 
)
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: