The .h file contains function prototypes, structure definitions, and a class initializer macro. The .c file contains structure initializations and executable method code. Each Java method produces a C function with corresponding parameters. Instance methods also include a parameter corresponding to the instance object. Stack operations of the JVM code become assignments in the generated C code.
Control flow is handled using conditional and unconditional goto statements.
Generated labels correspond to each point of the JVM code that is a jump target. The C code looks much like assembly code in this respect. Exceptions are handled using setjmp and longjmp . Caught exceptions are dispatched by a switch statement at the head of the method. Methods that do not catch exceptions incur no setjmp overhead.