Go to the source code of this file.
|
#define | CHECK_STACK_DEPTH(d) |
|
#define | CHECK_STACK_SPACE(d) |
|
#define | CHECK_STACK_TYPE(s, t) |
|
#define | CHECK_LOCAL_TYPE(index, t) |
|
#define | STORE_LOCAL(t, index) |
|
#define | STORE_LOCAL_2_WORD(t, index) |
|
#define | VERIFY_ERROR_ret(msg, ret) |
|
#define | VERIFY_ERROR(msg) VERIFY_ERROR_ret(msg,false) |
|
#define | IS_CAT1(slot) ((slot).type != TYPE_VOID && !IS_2_WORD_TYPE((slot).type)) |
|
#define | IS_CAT2(slot) ((slot).type != TYPE_VOID && IS_2_WORD_TYPE((slot).type)) |
|
#define | CHECK_CAT1(slot) |
|
#define | CHECK_CAT2(slot) |
|
#define | COPY_SLOT(s, d) do { (d) = (s); } while (0) |
|
#define | REACH_BLOCK(target) |
|
#define | REACH(target) |
|
#define | TYPECHECK_STACKBASED |
|
#define | EXCEPTION do { return NULL; } while (0) |
|
#define | STATE state |
|
#define | VERIFY_ERROR(msg) VERIFY_ERROR_ret(msg,NULL) |
|
#define | VERIFY_ERROR(msg) VERIFY_ERROR_ret(msg,false) |
|
#define | TYPECHECK_STACKBASED |
|
#define | OP1 dv |
|
#define | TYPECHECK_STACKBASED |
|
#define | OP1 dv |
|
#define | TYPECHECK_INT(s) CHECK_STACK_TYPE(*(s), TYPE_INT) |
|
#define | TYPECHECK_ADR(s) CHECK_STACK_TYPE(*(s), TYPE_ADR) |
|
#define | TYPECHECK_LNG(s) CHECK_STACK_TYPE(*(s), TYPE_LNG) |
|
#define | TYPECHECK_FLT(s) CHECK_STACK_TYPE(*(s), TYPE_FLT) |
|
#define | TYPECHECK_DBL(s) CHECK_STACK_TYPE(*(s), TYPE_DBL) |
|
#define | STATE (&state) |
|
#define | TYPECHECK_STACKBASED 1 |
|
#define | STATE (&state) |
|
#define | IPTR state.iptr |
|
#define | BPTR state.bptr |
|
#define | METHOD state.m |
|
#define | LOCAL_SLOT(index) (state.locals + (index)) |
|
#define | EXCEPTION |
|
|
static typecheck_result | typecheck_stackbased_merge_locals (methodinfo *m, typedescriptor_t *dst, typedescriptor_t *y, int size) |
|
static typecheck_result | typecheck_stackbased_merge (verifier_state *state, basicblock *destblock, typedescriptor_t *stack, s4 stackdepth) |
|
static bool | typecheck_stackbased_reach (verifier_state *state, basicblock *destblock, typedescriptor_t *stack, s4 stackdepth) |
|
static typedescriptor_t * | typecheck_stackbased_verify_fieldaccess (verifier_state *state, typedescriptor_t *instance, typedescriptor_t *value, typedescriptor_t *stack) |
|
static bool | typecheck_stackbased_verify_invocation (verifier_state *state, typedescriptor_t *stack, typedescriptor_t *stackfloor) |
|
static bool | typecheck_stackbased_verify_builtin (verifier_state *state, typedescriptor_t *stack, typedescriptor_t *stackfloor) |
|
static bool | typecheck_stackbased_multianewarray (verifier_state *state, typedescriptor_t *stack, typedescriptor_t *stackfloor) |
|
static void | typecheck_stackbased_add_jsr_caller (typecheck_jsr_t *jsr, basicblock *bptr) |
|
static typedescriptor_t * | typecheck_stackbased_jsr (verifier_state *state, typedescriptor_t *stack, typedescriptor_t *stackfloor) |
|
static bool | typecheck_stackbased_ret (verifier_state *state, typedescriptor_t *stack, typedescriptor_t *stackfloor) |
|
bool | typecheck_stackbased (jitdata *jd) |
|
#define CHECK_CAT1 |
( |
|
slot | ) |
|
Value:do { \
goto throw_stack_category_error; \
} while (0)
jlong jlong jlong jlong jint jmethodID jint slot
Definition at line 127 of file typecheck-stackbased.cpp.
#define CHECK_CAT2 |
( |
|
slot | ) |
|
Value:do { \
goto throw_stack_category_error; \
} while (0)
jlong jlong jlong jlong jint jmethodID jint slot
Definition at line 133 of file typecheck-stackbased.cpp.
#define CHECK_LOCAL_TYPE |
( |
|
index, |
|
|
|
t |
|
) |
| |
Value:do { \
if (state.locals[(
index)].type != (t)) \
goto throw_local_type_error; \
} while(0)
#define IS_2_WORD_TYPE(a)
Definition at line 83 of file typecheck-stackbased.cpp.
#define CHECK_STACK_DEPTH |
( |
|
d | ) |
|
Value:
goto throw_stack_underflow;
alloc::list< PassInfo::IDTy >::type & stack
Definition at line 65 of file typecheck-stackbased.cpp.
#define CHECK_STACK_SPACE |
( |
|
d | ) |
|
Value:
goto throw_stack_overflow;
alloc::list< PassInfo::IDTy >::type & stack
#define INSTRUCTION_MUST_CHECK(iptr)
Definition at line 71 of file typecheck-stackbased.cpp.
#define CHECK_STACK_TYPE |
( |
|
s, |
|
|
|
t |
|
) |
| |
#define COPY_SLOT |
( |
|
s, |
|
|
|
d |
|
) |
| do { (d) = (s); } while (0) |
#define EXCEPTION do { return NULL; } while (0) |
#define LOCAL_SLOT |
( |
|
index | ) |
(state.locals + (index)) |
Value:do { \
} while (0)
static bool typecheck_stackbased_reach(verifier_state *state, basicblock *destblock, typedescriptor_t *stack, s4 stackdepth)
alloc::list< PassInfo::IDTy >::type & stack
Definition at line 142 of file typecheck-stackbased.cpp.
#define STORE_LOCAL |
( |
|
t, |
|
|
|
index |
|
) |
| |
#define STORE_LOCAL_2_WORD |
( |
|
t, |
|
|
|
index |
|
) |
| |
#define TYPECHECK_STACKBASED |
#define TYPECHECK_STACKBASED |
#define TYPECHECK_STACKBASED |
#define TYPECHECK_STACKBASED 1 |
#define VERIFY_ERROR_ret |
( |
|
msg, |
|
|
|
ret |
|
) |
| |
Value:
} while (0)
void exceptions_throw_verifyerror(methodinfo *m, const char *message,...)
Definition at line 112 of file typecheck-stackbased.cpp.
bool typecheck_stackbased |
( |
jitdata * |
jd | ) |
|