#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
Go to the source code of this file.
Macros | |
#define | J_CLASS_BEGIN {} |
Readability macro to mark where class generation starts. | |
#define | J_CLASS_END {} |
Readability macro to mark where class generation ends. | |
#define | ACC_PUBLIC 0x0001 |
Class or method is public (accessible from anywhere). | |
#define | ACC_PRIVATE 0x0002 |
Class or method is private (accessible only within the defining class). | |
#define | ACC_PROTECTED 0x0004 |
Class or method is protected (accessible within the same package and subclasses). | |
#define | ACC_STATIC 0x0008 |
Class, method, or field is static (belongs to the class rather than instances). | |
#define | ACC_FINAL 0x0010 |
Class or method is final (cannot be subclassed or overridden). | |
#define | ACC_SUPER 0x0020 |
Class uses the "super" keyword for method calls. | |
#define | ACC_SYNCHRONIZED 0x0020 |
Method is synchronized (can only be executed by one thread at a time). | |
#define | ACC_NATIVE 0x0100 |
Method is native (implemented in a language other than Java, such as C or Assembly). | |
#define | ACC_INTERFACE 0x0200 |
Class is an interface (cannot have instance fields or non-abstract methods). | |
#define | ACC_ABSTRACT 0x0400 |
Class is abstract (cannot be instantiated). | |
#define | ACC_STRICT 0x0800 |
Method is strict (follows strict floating-point calculations). | |
#define | u1(v) (uint8_t)(v) |
Creates a byte from the given value. | |
#define | u2(v) |
Creates 2 bytes from the given value. | |
#define | u4(v) |
Creates 4 bytes from the given value. | |
#define | BUFFER_SIZE 65536 |
The size of the buffer for bytecode, may be overidden if needed. | |
Enumerations | |
enum | { T_BOOLEAN = 4 , T_CHAR = 5 , T_FLOAT = 6 , T_DOUBLE = 7 , T_BYTE = 8 , T_SHORT = 9 , T_INT = 10 , T_LONG = 11 } |
The magic numbers for primitive types in java. More... | |
Functions | |
static void | emit_byte (uint8_t b) |
Helper function. Do not use unless you know what you're doing. | |
static void | emit_u1 (uint8_t v) |
Writes a byte to the buffer. | |
static void | emit_u2 (uint16_t v) |
Takes a uint16_t and splits it into 2 bytes (0x1024 -> { 0x10, 0x24 }), which it then writes into the buffer. | |
static void | emit_u4 (uint32_t v) |
Splits a uint32_t into 4 bytes (0x12345678 -> { 0x12, 0x34, 0x56, 0x78 }) and writes them into the buffer. | |
static size_t | current_offset () |
Returns the current buffer position that will be emitted to. | |
static void | patch_u2 (size_t pos, uint16_t v) |
Places 2 bytes in the given position in the buffer (0x1024 -> (0x10 -> pos) & (0x24 -> pos + 1)) | |
static void | patch_u4 (size_t pos, uint32_t v) |
Places 4 bytes in the given position in the buffer (0x12345678 -> (0x12 -> pos) & (0x34 -> pos + 1) & (0x56 -> pos + 2) & (0x78 -> pos + 3)) | |
void | constant_pool_start () |
Begins the constant pool. | |
static void | increment_cp_counter () |
Helper function. Do not use unless you know what you are doing. | |
void | constant_utf8 (const char *string) |
Converts a char* to a constant UTF-8 string. | |
void | constant_integer (uint32_t value) |
Creates a constant integer. | |
void | constant_float (uint32_t value) |
Creates a constant float. | |
void | constant_long (uint64_t value) |
Creates a constant long. | |
void | constant_double (uint64_t value) |
Creates a constant double. | |
void | constant_class (uint16_t name_index) |
Creates a constant class reference. | |
void | constant_string (uint16_t string_index) |
Creates a constant string from a constant UTF-8. | |
void | constant_fieldref (uint16_t class_index, uint16_t name_and_type_index) |
Builds a reference to a field. | |
void | constant_methodref (uint16_t class_index, uint16_t name_and_type_index) |
Builds a reference to a method. | |
void | constant_interfacemethodref (uint16_t class_index, uint16_t name_and_type_index) |
Builds a reference to a method from an interface. | |
void | constant_nameandtype (uint16_t name_index, uint16_t descriptor_index) |
Builds a name and type. | |
void | constant_pool_end () |
Marks the end of the constant pool. | |
void | interfaces_start () |
Marks the start of the list of interfaces the class is using. | |
void | interface_entry (uint16_t interface_val) |
Adds a new interface to the list. | |
void | interfaces_end () |
Marks the end of the list of interfaces. | |
void | attributes_start () |
Marks the start of the list of attributes the class has. | |
void | attribute_start (uint16_t attribute_name_index) |
Marks the start of a new attribute. | |
void | attribute_end () |
Marks the end of an attribute. | |
void | attributes_end () |
Marks the start of the attributes section. | |
void | fields_start () |
Marks the start of the fields section. | |
void | field_info (uint16_t access_flags, uint16_t name_index, uint16_t descriptor_index) |
Creates a new field and begins it's attributes section. | |
void | end_field_info () |
Ends the current fields attributes section and the field itself. | |
void | fields_end () |
Marks the end of the fields section. | |
void | methods_start () |
Marks the start of the methods section. | |
void | method_info (uint16_t access_flags, uint16_t name_index, uint16_t descriptor_index) |
Creates a new method and begins it's attributes section. | |
void | end_method_info () |
Ends the current methods attributes section and the method itself. | |
void | methods_end () |
Marks the end of the methods section. | |
void | bytecode_start () |
Marks the start of a bytecode section. | |
void | bytecode_end () |
Marks the end of a bytecode section. | |
void | exceptions_start () |
Marks the start of an exceptions section. | |
void | exception_entry (uint16_t start_pc, uint16_t end_pc, uint16_t handler_pc, uint16_t catch_type) |
void | exceptions_end () |
Marks the end of a bytecode section. | |
void | aaload () |
void | aastore () |
void | aconst_null () |
void | aload (uint16_t index) |
void | anewarray (uint16_t class_index) |
void | areturn () |
void | arraylength () |
void | astore (uint16_t index) |
void | athrow () |
void | baload () |
void | bastore () |
void | bipush (int8_t byte_val) |
void | caload () |
void | castore () |
void | checkcast (uint16_t class_index) |
void | d2f () |
void | d2i () |
void | d2l () |
void | dadd () |
void | daload () |
void | dastore () |
void | dcmpg () |
void | dcmpl () |
void | dconst_0 () |
void | dconst_1 () |
void | ddiv () |
void | dload (uint16_t index) |
void | dmul () |
void | dneg () |
void | j_drem () |
void | dreturn () |
void | dstore (uint16_t index) |
void | dsub () |
void | dup () |
void | dup_x1 () |
void | dup_x2 () |
void | dup2 () |
void | dup2_x1 () |
void | dup2_x2 () |
void | f2d () |
void | f2i () |
void | f2l () |
void | fadd () |
void | faload () |
void | fastore () |
void | fcmpg () |
void | fcmpl () |
void | fconst_0 () |
void | fconst_1 () |
void | fconst_2 () |
void | fdiv () |
void | fload (uint16_t index) |
void | fmul () |
void | fneg () |
void | frem () |
void | freturn () |
void | fstore (uint16_t index) |
void | fsub () |
void | getfield (uint16_t index) |
void | getstatic (uint16_t index) |
void | goto_inst (size_t branch_target) |
void | goto_w_inst (size_t branch_target) |
void | i2b () |
void | i2c () |
void | i2d () |
void | i2f () |
void | i2l () |
void | i2s () |
void | iadd () |
void | iaload () |
void | iand () |
void | iastore () |
void | iconst_m1 () |
void | iconst_0 () |
void | iconst_1 () |
void | iconst_2 () |
void | iconst_3 () |
void | iconst_4 () |
void | iconst_5 () |
void | idiv () |
void | if_acmpeq (size_t branch_target) |
void | if_acmpne (size_t branch_target) |
void | if_icmpeq (size_t branch_target) |
void | if_icmpne (size_t branch_target) |
void | if_icmplt (size_t branch_target) |
void | if_icmpge (size_t branch_target) |
void | if_icmpgt (size_t branch_target) |
void | if_icmple (size_t branch_target) |
void | ifeq (size_t branch_target) |
void | ifne (size_t branch_target) |
void | iflt (size_t branch_target) |
void | ifge (size_t branch_target) |
void | ifgt (size_t branch_target) |
void | ifle (size_t branch_target) |
void | ifnonnull (size_t branch_target) |
void | ifnull (size_t branch_target) |
void | iinc (uint16_t index, int16_t constant_val) |
void | iload (uint16_t index) |
void | imul () |
void | ineg () |
void | instanceof (uint16_t index) |
void | invokedynamic (uint16_t index) |
void | invokeinterface (uint16_t index, uint8_t count) |
void | invokespecial (uint16_t index) |
void | invokestatic (uint16_t index) |
void | invokevirtual (uint16_t index) |
void | ior () |
void | irem () |
void | ireturn () |
void | ishl () |
void | ishr () |
void | istore (uint16_t index) |
void | isub () |
void | iushr () |
void | ixor () |
void | jsr_inst (size_t branch_target) |
void | jsr_w_inst (size_t branch_target) |
void | l2d () |
void | l2f () |
void | l2i () |
void | ladd () |
void | laload () |
void | land () |
void | lastore () |
void | lcmp () |
void | lconst_0 () |
void | lconst_1 () |
void | ldc (uint16_t index) |
void | ldc_w (uint16_t index) |
void | ldc2_w (uint16_t index) |
void | j_ldiv () |
void | lload (uint16_t index) |
void | lmul () |
void | lneg () |
void | lor () |
void | lrem () |
void | lreturn () |
void | lshl () |
void | lshr () |
void | lstore (uint16_t index) |
void | lsub () |
void | lushr () |
void | lxor () |
void | monitorenter () |
void | monitorexit () |
void | multianewarray (uint16_t index, uint8_t dimensions) |
void | new_inst (uint16_t index) |
void | newarray (uint8_t atype) |
void | nop () |
void | pop_inst () |
void | pop2 () |
void | putfield (uint16_t index) |
void | putstatic (uint16_t index) |
void | ret_inst (uint16_t index) |
void | return_inst () |
void | saload () |
void | sastore () |
void | sipush (uint16_t value) |
void | swap () |
void | breakpoint () |
void | impdep1 () |
void | impdep2 () |
void | impdep2_dup () |
static void | emit_class_header () |
static void | emit_class_footer (uint16_t this_class, uint8_t this_class_flags, uint16_t super_class) |
void | code_attribute_start (uint16_t name_index, uint16_t max_stack, uint16_t max_locals) |
void | code_attribute_end () |
Variables | |
static uint8_t | outputBuffer [BUFFER_SIZE] |
Output buffer where the JVM bytecode is stored. | |
static size_t | outputIndex = 0 |
Current index of the output buffer. | |
static size_t | cp_count_offset = 0 |
Do not modify. | |
static uint16_t | constant_pool_counter = 0 |
Keeps track of the size of the constant pool. | |
static size_t | interfaces_count_offset = 0 |
Do not modify. | |
static uint16_t | interfaces_counter = 0 |
Keeps track of how many interfaces there are. | |
static size_t | attributes_count_offset = 0 |
Do not modify. | |
static uint16_t | attributes_counter = 0 |
Tracks how many attributes there are. | |
size_t | attribute_start_offset = 0 |
static size_t | fields_count_offset = 0 |
static uint16_t | fields_counter = 0 |
Counts the amount of fields in the class. | |
static size_t | methods_count_offset = 0 |
static uint16_t | methods_counter = 0 |
Counts the amount of methods in the class. | |
static size_t | bytecode_length_offset = 0 |
static size_t | bytecode_offset = 0 |
static size_t | exception_table_length_offset = 0 |
static uint16_t | exception_counter = 0 |
#define ACC_ABSTRACT 0x0400 |
Class is abstract (cannot be instantiated).
#define ACC_FINAL 0x0010 |
Class or method is final (cannot be subclassed or overridden).
#define ACC_INTERFACE 0x0200 |
Class is an interface (cannot have instance fields or non-abstract methods).
#define ACC_NATIVE 0x0100 |
Method is native (implemented in a language other than Java, such as C or Assembly).
#define ACC_PRIVATE 0x0002 |
Class or method is private (accessible only within the defining class).
#define ACC_PROTECTED 0x0004 |
Class or method is protected (accessible within the same package and subclasses).
#define ACC_PUBLIC 0x0001 |
Class or method is public (accessible from anywhere).
#define ACC_STATIC 0x0008 |
Class, method, or field is static (belongs to the class rather than instances).
#define ACC_STRICT 0x0800 |
Method is strict (follows strict floating-point calculations).
#define ACC_SUPER 0x0020 |
Class uses the "super" keyword for method calls.
#define ACC_SYNCHRONIZED 0x0020 |
Method is synchronized (can only be executed by one thread at a time).
#define BUFFER_SIZE 65536 |
The size of the buffer for bytecode, may be overidden if needed.
#define J_CLASS_BEGIN {} |
Readability macro to mark where class generation starts.
#define J_CLASS_END {} |
Readability macro to mark where class generation ends.
#define u1 | ( | v | ) | (uint8_t)(v) |
Creates a byte from the given value.
v | The value to make the byte out of |
#define u2 | ( | v | ) |
Creates 2 bytes from the given value.
v | The value to make the bytes out of |
#define u4 | ( | v | ) |
Creates 4 bytes from the given value.
v | The value to make the bytes out of |
anonymous enum |
void aaload | ( | ) |
void aastore | ( | ) |
void aconst_null | ( | ) |
void aload | ( | uint16_t | index | ) |
void anewarray | ( | uint16_t | class_index | ) |
void areturn | ( | ) |
void arraylength | ( | ) |
void astore | ( | uint16_t | index | ) |
void athrow | ( | ) |
void attribute_end | ( | ) |
Marks the end of an attribute.
void attribute_start | ( | uint16_t | attribute_name_index | ) |
Marks the start of a new attribute.
attribute_name_index | Constant pool index of the name of the attribute |
void attributes_end | ( | ) |
Marks the start of the attributes section.
void attributes_start | ( | ) |
Marks the start of the list of attributes the class has.
void baload | ( | ) |
void bastore | ( | ) |
void bipush | ( | int8_t | byte_val | ) |
void breakpoint | ( | ) |
void bytecode_end | ( | ) |
Marks the end of a bytecode section.
void bytecode_start | ( | ) |
Marks the start of a bytecode section.
void caload | ( | ) |
void castore | ( | ) |
void checkcast | ( | uint16_t | class_index | ) |
void code_attribute_end | ( | ) |
void code_attribute_start | ( | uint16_t | name_index, |
uint16_t | max_stack, | ||
uint16_t | max_locals | ||
) |
void constant_class | ( | uint16_t | name_index | ) |
Creates a constant class reference.
name_index | The index of the UTF-8 which is the class name (java/lang/Object) |
void constant_double | ( | uint64_t | value | ) |
Creates a constant double.
value | The 64 bit value to add to the constant pool |
void constant_fieldref | ( | uint16_t | class_index, |
uint16_t | name_and_type_index | ||
) |
Builds a reference to a field.
class_index | Constant pool index of the class from which the field is from |
name_and_type_index | Constant pool index of the name and type of the field |
void constant_float | ( | uint32_t | value | ) |
Creates a constant float.
value | The float to add to the constant pool |
void constant_integer | ( | uint32_t | value | ) |
Creates a constant integer.
value | The integer to add to the constant pool |
void constant_interfacemethodref | ( | uint16_t | class_index, |
uint16_t | name_and_type_index | ||
) |
Builds a reference to a method from an interface.
class_index | Constant pool index of the class from which the field is from |
name_and_type_index | Constant pool index of the name and type of the field |
void constant_long | ( | uint64_t | value | ) |
Creates a constant long.
value | The 64 bit value to add to the constant pool |
void constant_methodref | ( | uint16_t | class_index, |
uint16_t | name_and_type_index | ||
) |
Builds a reference to a method.
class_index | Constant pool index of the class from which the field is from |
name_and_type_index | Constant pool index of the name and type of the field |
void constant_nameandtype | ( | uint16_t | name_index, |
uint16_t | descriptor_index | ||
) |
Builds a name and type.
name_index | Constant pool index of the name |
descriptor_index | Constant pool index of the descriptor, a return type and params |
void constant_pool_end | ( | ) |
Marks the end of the constant pool.
void constant_pool_start | ( | ) |
Begins the constant pool.
void constant_string | ( | uint16_t | string_index | ) |
Creates a constant string from a constant UTF-8.
string_index | Constant pool index of the UTF-8 |
void constant_utf8 | ( | const char * | string | ) |
Converts a char* to a constant UTF-8 string.
string | The string to convert |
|
static |
Returns the current buffer position that will be emitted to.
void d2f | ( | ) |
void d2i | ( | ) |
void d2l | ( | ) |
void dadd | ( | ) |
void daload | ( | ) |
void dastore | ( | ) |
void dcmpg | ( | ) |
void dcmpl | ( | ) |
void dconst_0 | ( | ) |
void dconst_1 | ( | ) |
void ddiv | ( | ) |
void dload | ( | uint16_t | index | ) |
void dmul | ( | ) |
void dneg | ( | ) |
void dreturn | ( | ) |
void dstore | ( | uint16_t | index | ) |
void dsub | ( | ) |
void dup | ( | ) |
void dup2 | ( | ) |
void dup2_x1 | ( | ) |
void dup2_x2 | ( | ) |
void dup_x1 | ( | ) |
void dup_x2 | ( | ) |
|
static |
Helper function. Do not use unless you know what you're doing.
|
static |
|
static |
|
static |
Writes a byte to the buffer.
v | The value to place in the buffer |
|
static |
Takes a uint16_t and splits it into 2 bytes (0x1024 -> { 0x10, 0x24 }), which it then writes into the buffer.
v | The two values to place in the buffer |
|
static |
Splits a uint32_t into 4 bytes (0x12345678 -> { 0x12, 0x34, 0x56, 0x78 }) and writes them into the buffer.
v | The values to place into the buffer |
void end_field_info | ( | ) |
Ends the current fields attributes section and the field itself.
void end_method_info | ( | ) |
Ends the current methods attributes section and the method itself.
void exception_entry | ( | uint16_t | start_pc, |
uint16_t | end_pc, | ||
uint16_t | handler_pc, | ||
uint16_t | catch_type | ||
) |
void exceptions_end | ( | ) |
Marks the end of a bytecode section.
void exceptions_start | ( | ) |
Marks the start of an exceptions section.
void f2d | ( | ) |
void f2i | ( | ) |
void f2l | ( | ) |
void fadd | ( | ) |
void faload | ( | ) |
void fastore | ( | ) |
void fcmpg | ( | ) |
void fcmpl | ( | ) |
void fconst_0 | ( | ) |
void fconst_1 | ( | ) |
void fconst_2 | ( | ) |
void fdiv | ( | ) |
void field_info | ( | uint16_t | access_flags, |
uint16_t | name_index, | ||
uint16_t | descriptor_index | ||
) |
Creates a new field and begins it's attributes section.
access_flags | The JVM flags for the field |
name_index | Constant pool index of the name of the field |
descriptor_index | The constant pool index of the decriptor for the field |
void fields_end | ( | ) |
Marks the end of the fields section.
void fields_start | ( | ) |
Marks the start of the fields section.
void fload | ( | uint16_t | index | ) |
void fmul | ( | ) |
void fneg | ( | ) |
void frem | ( | ) |
void freturn | ( | ) |
void fstore | ( | uint16_t | index | ) |
void fsub | ( | ) |
void getfield | ( | uint16_t | index | ) |
void getstatic | ( | uint16_t | index | ) |
void goto_inst | ( | size_t | branch_target | ) |
void goto_w_inst | ( | size_t | branch_target | ) |
void i2b | ( | ) |
void i2c | ( | ) |
void i2d | ( | ) |
void i2f | ( | ) |
void i2l | ( | ) |
void i2s | ( | ) |
void iadd | ( | ) |
void iaload | ( | ) |
void iand | ( | ) |
void iastore | ( | ) |
void iconst_0 | ( | ) |
void iconst_1 | ( | ) |
void iconst_2 | ( | ) |
void iconst_3 | ( | ) |
void iconst_4 | ( | ) |
void iconst_5 | ( | ) |
void iconst_m1 | ( | ) |
void idiv | ( | ) |
void if_acmpeq | ( | size_t | branch_target | ) |
void if_acmpne | ( | size_t | branch_target | ) |
void if_icmpeq | ( | size_t | branch_target | ) |
void if_icmpge | ( | size_t | branch_target | ) |
void if_icmpgt | ( | size_t | branch_target | ) |
void if_icmple | ( | size_t | branch_target | ) |
void if_icmplt | ( | size_t | branch_target | ) |
void if_icmpne | ( | size_t | branch_target | ) |
void ifeq | ( | size_t | branch_target | ) |
void ifge | ( | size_t | branch_target | ) |
void ifgt | ( | size_t | branch_target | ) |
void ifle | ( | size_t | branch_target | ) |
void iflt | ( | size_t | branch_target | ) |
void ifne | ( | size_t | branch_target | ) |
void ifnonnull | ( | size_t | branch_target | ) |
void ifnull | ( | size_t | branch_target | ) |
void iinc | ( | uint16_t | index, |
int16_t | constant_val | ||
) |
void iload | ( | uint16_t | index | ) |
void impdep1 | ( | ) |
void impdep2 | ( | ) |
void impdep2_dup | ( | ) |
void imul | ( | ) |
|
static |
Helper function. Do not use unless you know what you are doing.
void ineg | ( | ) |
void instanceof | ( | uint16_t | index | ) |
void interface_entry | ( | uint16_t | interface_val | ) |
Adds a new interface to the list.
interface_val | No idea |
void interfaces_end | ( | ) |
Marks the end of the list of interfaces.
void interfaces_start | ( | ) |
Marks the start of the list of interfaces the class is using.
void invokedynamic | ( | uint16_t | index | ) |
void invokeinterface | ( | uint16_t | index, |
uint8_t | count | ||
) |
void invokespecial | ( | uint16_t | index | ) |
void invokestatic | ( | uint16_t | index | ) |
void invokevirtual | ( | uint16_t | index | ) |
void ior | ( | ) |
void irem | ( | ) |
void ireturn | ( | ) |
void ishl | ( | ) |
void ishr | ( | ) |
void istore | ( | uint16_t | index | ) |
void isub | ( | ) |
void iushr | ( | ) |
void ixor | ( | ) |
void j_drem | ( | ) |
void j_ldiv | ( | ) |
void jsr_inst | ( | size_t | branch_target | ) |
void jsr_w_inst | ( | size_t | branch_target | ) |
void l2d | ( | ) |
void l2f | ( | ) |
void l2i | ( | ) |
void ladd | ( | ) |
void laload | ( | ) |
void land | ( | ) |
void lastore | ( | ) |
void lcmp | ( | ) |
void lconst_0 | ( | ) |
void lconst_1 | ( | ) |
void ldc | ( | uint16_t | index | ) |
void ldc2_w | ( | uint16_t | index | ) |
void ldc_w | ( | uint16_t | index | ) |
void lload | ( | uint16_t | index | ) |
void lmul | ( | ) |
void lneg | ( | ) |
void lor | ( | ) |
void lrem | ( | ) |
void lreturn | ( | ) |
void lshl | ( | ) |
void lshr | ( | ) |
void lstore | ( | uint16_t | index | ) |
void lsub | ( | ) |
void lushr | ( | ) |
void lxor | ( | ) |
void method_info | ( | uint16_t | access_flags, |
uint16_t | name_index, | ||
uint16_t | descriptor_index | ||
) |
Creates a new method and begins it's attributes section.
access_flags | The JVM flags for the method |
name_index | Constant pool index of the name of the method |
descriptor_index | The constant pool index of the decriptor for the method |
void methods_end | ( | ) |
Marks the end of the methods section.
void methods_start | ( | ) |
Marks the start of the methods section.
void monitorenter | ( | ) |
void monitorexit | ( | ) |
void multianewarray | ( | uint16_t | index, |
uint8_t | dimensions | ||
) |
void new_inst | ( | uint16_t | index | ) |
void newarray | ( | uint8_t | atype | ) |
void nop | ( | ) |
|
static |
Places 2 bytes in the given position in the buffer (0x1024 -> (0x10 -> pos) & (0x24 -> pos + 1))
pos | Where in the buffer to place the bytes |
v | The two bytes to place |
|
static |
Places 4 bytes in the given position in the buffer (0x12345678 -> (0x12 -> pos) & (0x34 -> pos + 1) & (0x56 -> pos + 2) & (0x78 -> pos + 3))
pos | The 4 bytes to place in the buffer |
void pop2 | ( | ) |
void pop_inst | ( | ) |
void putfield | ( | uint16_t | index | ) |
void putstatic | ( | uint16_t | index | ) |
void ret_inst | ( | uint16_t | index | ) |
void return_inst | ( | ) |
void saload | ( | ) |
void sastore | ( | ) |
void sipush | ( | uint16_t | value | ) |
void swap | ( | ) |
size_t attribute_start_offset = 0 |
|
static |
Do not modify.
|
static |
Tracks how many attributes there are.
|
static |
|
static |
|
static |
Keeps track of the size of the constant pool.
|
static |
Do not modify.
|
static |
|
static |
|
static |
|
static |
Counts the amount of fields in the class.
|
static |
Do not modify.
|
static |
Keeps track of how many interfaces there are.
|
static |
|
static |
Counts the amount of methods in the class.
|
static |
Output buffer where the JVM bytecode is stored.
|
static |
Current index of the output buffer.