This article describes JVM ByteCode Interpreter


class templateInterpreter {
    DispatchTable _active_table
    DispatchTable _normal_table
}

class DispatchTable {
address _table[number_of_states][length]
}

class TemplateTable {
    Template _template_table[]
    Template _template_table_wide[]
    InterpreterMacroAssembler* _masm
    void Initialize()
}

class Template {
    int       _flags
    TosState  _tos_in
    TosState  _tos_out
    generator _gen
    int       _arg
}

TemplateTable --> Template : generate
templateInterpreter *-- DispatchTable
DispatchTable -right-> Template: entry

reference

byte code interpreter