CACAO
Macros | Functions
engine.c File Reference

Go to the source code of this file.

Macros

#define GCC_PR15242_WORKAROUND
 
#define NEXT_P1_5
 
#define DO_GOTO   goto before_goto
 
#define NEXT_P0
 
#define IP   (ip)
 
#define SET_IP(p)   do {ip=(p); NEXT_P0;} while (0)
 
#define NEXT_INST   (*IP)
 
#define INC_IP(const_inc)   do { ip+=(const_inc);} while (0)
 
#define DEF_CA
 
#define NEXT_P1   (ip++)
 
#define NEXT_P2   do {NEXT_P1_5; DO_GOTO;} while(0)
 
#define NEXT   ({DEF_CA NEXT_P1; NEXT_P2;})
 
#define IPTOS   NEXT_INST
 
#define IF_spTOS(x)
 
#define spTOS   (sp[0])
 
#define SPREG
 
#define TOSREG
 
#define SUPER_END
 
#define vm_uncount_block(_ip)   /* nothing */
 
#define THROW0   goto throw
 
#define THROW(_ball)
 
#define THROWCODE(_ball)
 
#define CHECK_NULL_PTR(ptr)
 
#define THROW_CLASSCASTEXCEPTION(o)
 
#define CHECK_OUT_OF_BOUNDS(_array, _idx)
 
#define CHECK_ZERO_DIVISOR(_divisor)
 
#define length_array(array)   ( ((java_arrayheader*)(array))->size )
 
#define access_array_int(array, index)   ((((java_intarray*)(array))->data)[index])
 
#define access_array_long(array, index)   ((((java_longarray*)(array))->data)[index])
 
#define access_array_char(array, index)   ((((java_chararray*)(array))->data)[index])
 
#define access_array_short(array, index)   ((((java_shortarray*)(array))->data)[index])
 
#define access_array_byte(array, index)   ((((java_bytearray*)(array))->data)[index])
 
#define access_array_addr(array, index)   ((((java_objectarray*)(array))->data)[index])
 
#define access_array_float(array, index)   ((((java_floatarray*)(array))->data)[index])
 
#define FRAMESIZE(stub)   (((Cell *)stub)[1])
 
#define CLEARSTACK(_start, _end)
 
#define NAME(_x)
 
#define LABEL2(name)   J_##name: __asm__("");
 
#define LABEL3(name)   K_##name: __asm__("");
 
#define INST_ADDR(_inst)   (&&I_##_inst)
 
#define INST_ADDR(_inst)   (&&J_##_inst)
 
#define INST_ADDR(_inst)   (&&K_##_inst)
 
#define INST_ADDR(_inst)   (&&H_##_inst)
 
#define INST_ADDR(_inst)   (&&I_##_inst)
 

Functions

java_objectheader * engine (Inst *ip0, Cell *sp0, Cell *fp)
 

Macro Definition Documentation

#define access_array_addr (   array,
  index 
)    ((((java_objectarray*)(array))->data)[index])

Definition at line 188 of file engine.c.

#define access_array_byte (   array,
  index 
)    ((((java_bytearray*)(array))->data)[index])

Definition at line 185 of file engine.c.

#define access_array_char (   array,
  index 
)    ((((java_chararray*)(array))->data)[index])

Definition at line 179 of file engine.c.

#define access_array_float (   array,
  index 
)    ((((java_floatarray*)(array))->data)[index])

Definition at line 191 of file engine.c.

#define access_array_int (   array,
  index 
)    ((((java_intarray*)(array))->data)[index])

Definition at line 173 of file engine.c.

#define access_array_long (   array,
  index 
)    ((((java_longarray*)(array))->data)[index])

Definition at line 176 of file engine.c.

#define access_array_short (   array,
  index 
)    ((((java_shortarray*)(array))->data)[index])

Definition at line 182 of file engine.c.

#define CHECK_NULL_PTR (   ptr)
Value:
{ \
if ((ptr) == NULL) { \
THROW(nullpointerexception); \
} \
}
#define THROW(_ball)
Definition: engine.c:121

Definition at line 138 of file engine.c.

#define CHECK_OUT_OF_BOUNDS (   _array,
  _idx 
)
Value:
{ \
if (length_array(_array) <= (u4) (_idx)) { \
arrayindexoutofbounds_index = (_idx); \
THROW(arrayindexoutofboundsexception); \
} \
}
#define length_array(array)
Definition: engine.c:170
#define THROW(_ball)
Definition: engine.c:121
uint32_t u4
Definition: types.hpp:46

Definition at line 151 of file engine.c.

#define CHECK_ZERO_DIVISOR (   _divisor)
Value:
{ if (_divisor == 0) \
THROW(arithmeticexception); \
}
#define THROW(_ball)
Definition: engine.c:121

Definition at line 159 of file engine.c.

#define CLEARSTACK (   _start,
  _end 
)

Definition at line 201 of file engine.c.

#define DEF_CA

Definition at line 77 of file engine.c.

#define DO_GOTO   goto before_goto

Definition at line 66 of file engine.c.

#define FRAMESIZE (   stub)    (((Cell *)stub)[1])

Definition at line 195 of file engine.c.

#define GCC_PR15242_WORKAROUND

Definition at line 63 of file engine.c.

#define IF_spTOS (   x)

Definition at line 91 of file engine.c.

#define INC_IP (   const_inc)    do { ip+=(const_inc);} while (0)

Definition at line 76 of file engine.c.

#define INST_ADDR (   _inst)    (&&I_##_inst)
#define INST_ADDR (   _inst)    (&&J_##_inst)
#define INST_ADDR (   _inst)    (&&K_##_inst)
#define INST_ADDR (   _inst)    (&&H_##_inst)
#define INST_ADDR (   _inst)    (&&I_##_inst)
#define IP   (ip)

Definition at line 73 of file engine.c.

#define IPTOS   NEXT_INST

Definition at line 82 of file engine.c.

#define LABEL2 (   name)    J_##name: __asm__("");

Definition at line 211 of file engine.c.

#define LABEL3 (   name)    K_##name: __asm__("");

Definition at line 212 of file engine.c.

#define length_array (   array)    ( ((java_arrayheader*)(array))->size )

Definition at line 170 of file engine.c.

#define NAME (   _x)

Definition at line 208 of file engine.c.

#define NEXT   ({DEF_CA NEXT_P1; NEXT_P2;})

Definition at line 81 of file engine.c.

#define NEXT_INST   (*IP)

Definition at line 75 of file engine.c.

#define NEXT_P0

Definition at line 72 of file engine.c.

#define NEXT_P1   (ip++)

Definition at line 78 of file engine.c.

#define NEXT_P1_5

Definition at line 65 of file engine.c.

#define NEXT_P2   do {NEXT_P1_5; DO_GOTO;} while(0)

Definition at line 79 of file engine.c.

#define SET_IP (   p)    do {ip=(p); NEXT_P0;} while (0)

Definition at line 74 of file engine.c.

#define SPREG

Definition at line 104 of file engine.c.

#define spTOS   (sp[0])

Definition at line 92 of file engine.c.

#define SUPER_END

Definition at line 114 of file engine.c.

#define THROW (   _ball)
Value:
do { \
__asm__(""); /* work around gcc PR 25285 */ \
goto *throw_##_ball; \
} while (0)

Definition at line 121 of file engine.c.

#define THROW0   goto throw

Definition at line 119 of file engine.c.

#define THROW_CLASSCASTEXCEPTION (   o)
Value:
{ \
classcastexception_object = o; \
THROW(classcastexception); \
}
#define THROW(_ball)
Definition: engine.c:121

Definition at line 145 of file engine.c.

#define THROWCODE (   _ball)
Value:
throw_##_ball##1: \
*exceptionptr = (stacktrace_inline_##_ball(NULL, (u1 *) fp, (u1 *) IP, (u1 *) IP)); \
#define CLEAR_global_sp
Definition: intrp.h:120
uint8_t u1
Definition: types.hpp:40
#define THROW0
Definition: engine.c:119
#define IP
Definition: engine.c:73
#define global_sp
Definition: intrp.h:108
#define sp
Definition: md-asm.hpp:81
#define fp
Definition: md-asm.hpp:79

Definition at line 131 of file engine.c.

#define TOSREG

Definition at line 105 of file engine.c.

#define vm_uncount_block (   _ip)    /* nothing */

Definition at line 115 of file engine.c.

Function Documentation

java_objectheader* engine ( Inst ip0,
Cell sp0,
Cell fp 
)

Definition at line 216 of file engine.c.