📄 icode.h
字号:
(((uint8*)(f)->v.taddr)[1] << 16) | \ (((uint8*)(f)->v.taddr)[2] << 8) | \ ((uint8*)(f)->v.taddr)[3])#define load_code_ref load_key#define softcall_breakpoint() KAFFEVM_ABORT()#define move_double(t, f) (t)[0].v.tdouble = (f)[0].v.tdouble#define move_double_const(t, c) (t)[0].v.tdouble = (c)#define move_float(t, f) (t)[0].v.tfloat = (f)[0].v.tfloat#define move_float_const(t, c) (t)[0].v.tfloat = (c)#define move_long(t, f) (t)[0].v.tlong = (f)[0].v.tlong#define move_anylong(t, f) move_long(t, f)#define load_short(t, f) (t)[0].v.tint = *(jshort*)((f)[0].v.taddr)#define load_long(t, f) (t)[0].v.tlong = *(jlong*)((f)[0].v.taddr)#define load_anylong(t, f) load_long(t, f)#define load_float(t, f) (t)[0].v.tfloat = *(jfloat*)((f)[0].v.taddr)#define load_double(t, f) (t)[0].v.tdouble = *(jdouble*)((f)[0].v.taddr)#define store_short(t, f) *(jshort*)((t)[0].v.taddr) = ((f)[0].v.tint)#define store_long(t, f) *(jlong*)((t)[0].v.taddr) = ((f)[0].v.tlong)#define store_anylong(t, f) store_long(t, f)#define store_float(t, f) *(jfloat*)((t)[0].v.taddr) = ((f)[0].v.tfloat)#define store_double(t, f) *(jdouble*)((t)[0].v.taddr) = ((f)[0].v.tdouble)#define load_offset_int(t, f, o) (t)[0].v.tint = *(jint*)((uint8*)(f)[0].v.taddr + (o))#define load_offset_byte(t, f, o) (t)[0].v.tint = *(jbyte*)((uint8*)(f)[0].v.taddr + (o))#define load_offset_char(t, f, o) (t)[0].v.tint = *(jchar*)((uint8*)(f)[0].v.taddr + (o))#define load_offset_short(t, f, o) (t)[0].v.tint = *(jshort*)((uint8*)(f)[0].v.taddr + (o))#define load_offset_ref(t, f, o) (t)[0].v.taddr = *(void**)((uint8*)(f)[0].v.taddr + (o))#define load_offset_long(t, f, o) (t)[0].v.tlong = *(jlong*)((uint8*)(f)[0].v.taddr + (o))#define load_offset_float(t, f, o) (t)[0].v.tfloat = *(jfloat*)((uint8*)(f)[0].v.taddr + (o))#define load_offset_double(t, f, o) (t)[0].v.tdouble = *(jdouble*)((uint8*)(f)[0].v.taddr + (o))#define store_offset_int(t, o, f) *(jint*)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.tint)#define store_offset_byte(t, o, f) *(jbyte*)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.tint)#define store_offset_char(t, o, f) *(jchar*)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.tint)#define store_offset_short(t, o, f) *(jshort*)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.tint)#define store_offset_ref(t, o, f) *(void**)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.taddr)#define store_offset_long(t, o, f) *(jlong*)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.tlong)#define store_offset_float(t, o, f) *(jfloat*)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.tfloat)#define store_offset_double(t, o, f) *(jdouble*)((uint8*)(t)[0].v.taddr + (o)) = ((f)[0].v.tdouble)#define load_offset_scaled_int(t, b, i, o) (t)[0].v.tint = ((jint*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define load_offset_scaled_byte(t, b, i, o) (t)[0].v.tint = ((jbyte*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define load_offset_scaled_char(t, b, i, o) (t)[0].v.tint = ((jchar*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define load_offset_scaled_short(t, b, i, o) (t)[0].v.tint = ((jshort*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define load_offset_scaled_ref(t, b, i, o) (t)[0].v.taddr = ((void**)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define load_offset_scaled_long(t, b, i, o) (t)[0].v.tlong = ((jlong*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define load_offset_scaled_float(t, b, i, o) (t)[0].v.tfloat = ((jfloat*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define load_offset_scaled_double(t, b, i, o) (t)[0].v.tdouble = ((jdouble*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint]#define store_offset_scaled_int(b, i, o, f) ((jint*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.tint)#define store_offset_scaled_byte(b, i, o, f) ((jbyte*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.tint)#define store_offset_scaled_char(b, i, o, f) ((jchar*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.tint)#define store_offset_scaled_short(b, i, o, f) ((jshort*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.tint)#define store_offset_scaled_ref(b, i, o, f) ((void**)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.taddr)#define store_offset_scaled_long(b, i, o, f) ((jlong*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.tlong)#define store_offset_scaled_float(b, i, o, f) ((jfloat*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.tfloat)#define store_offset_scaled_double(b, i, o, f) ((jdouble*)((uint8*)(b)[0].v.taddr + (o)))[(i)[0].v.tint] = ((f)[0].v.tdouble)#define load_addr_int(t, a) (t)[0].v.tint = *(jint*)(a)#define load_addr_byte(t, a) (t)[0].v.tint = *(jbyte*)(a)#define load_addr_char(t, a) (t)[0].v.tint = *(jchar*)(a)#define load_addr_short(t, a) (t)[0].v.tint = *(jshort*)(a)#define load_addr_ref(t, a) (t)[0].v.taddr = *(void**)(a)#define load_addr_long(t, a) (t)[0].v.tlong = *(jlong*)(a)#define load_addr_float(t, a) (t)[0].v.tfloat = *(jfloat*)(a)#define load_addr_double(t, a) (t)[0].v.tdouble = *(jdouble*)(a)#define store_addr_int(a, f) *(jint*)(a) = (f)[0].v.tint#define store_addr_byte(a, f) *(jbyte*)(a) = (f)[0].v.tint#define store_addr_char(a, f) *(jchar*)(a) = (f)[0].v.tint#define store_addr_short(a, f) *(jshort*)(a) = (f)[0].v.tint#define store_addr_ref(a, f) *(void**)(a) = (f)[0].v.taddr#define store_addr_long(a, f) *(jlong*)(a) = (f)[0].v.tlong#define store_addr_float(a, f) *(jfloat*)(a) = (f)[0].v.tfloat#define store_addr_double(a, f) *(jdouble*)(a) = (f)[0].v.tdouble#define add_float(t, f1, f2) (t)[0].v.tfloat = (f1)[0].v.tfloat + (f2)[0].v.tfloat#define add_double(t, f1, f2) (t)[0].v.tdouble = (f1)[0].v.tdouble + (f2)[0].v.tdouble#define sub_float(t, f1, f2) (t)[0].v.tfloat = (f1)[0].v.tfloat - (f2)[0].v.tfloat#define sub_double(t, f1, f2) (t)[0].v.tdouble = (f1)[0].v.tdouble - (f2)[0].v.tdouble#define mul_float(t, f1, f2) (t)[0].v.tfloat = (f1)[0].v.tfloat * (f2)[0].v.tfloat#define mul_double(t, f1, f2) (t)[0].v.tdouble = (f1)[0].v.tdouble * (f2)[0].v.tdouble#define div_float(t, f1, f2) (t)[0].v.tfloat = (f1)[0].v.tfloat / (f2)[0].v.tfloat#define div_double(t, f1, f2) (t)[0].v.tdouble = (f1)[0].v.tdouble / (f2)[0].v.tdouble#define rem_float(t, f1, f2) (t)[0].v.tfloat = javaRemainderf((f1)[0].v.tfloat, (f2)[0].v.tfloat)#define rem_double(t, f1, f2) (t)[0].v.tdouble = javaRemainder((f1)[0].v.tdouble, (f2)[0].v.tdouble)#define neg_float(t, f) (t)[0].v.tfloat = -(f)[0].v.tfloat#define neg_double(t, f) (t)[0].v.tdouble = -(f)[0].v.tdouble#define cmpg_float(t, f1, f2) (t)[0].v.tint = soft_fcmpg((f1)[0].v.tfloat, (f2)[0].v.tfloat)#define cmpg_double(t, f1, f2) (t)[0].v.tint = soft_dcmpg((f1)[0].v.tdouble, (f2)[0].v.tdouble)#define cmpl_float(t, f1, f2) (t)[0].v.tint = soft_fcmpl((f1)[0].v.tfloat, (f2)[0].v.tfloat)#define cmpl_double(t, f1, f2) (t)[0].v.tint = soft_dcmpl((f1)[0].v.tdouble, (f2)[0].v.tdouble)#define cvt_int_float(t, f) (t)[0].v.tfloat = (f)[0].v.tint#define cvt_int_double(t, f) (t)[0].v.tdouble = (f)[0].v.tint#define cvt_float_int(t, f) (t)[0].v.tint = soft_cvtfi((f)[0].v.tfloat)#define cvt_float_double(t, f) (t)[0].v.tdouble = (f)[0].v.tfloat#define cvt_double_int(t, f) (t)[0].v.tint = soft_cvtdi((f)[0].v.tdouble)#define cvt_double_float(t, f) (t)[0].v.tfloat = (f)[0].v.tdouble#define softcall_lookupinterfacemethod(r, n, t) (r)[0].v.taddr = soft_lookupinterfacemethod((t)[0].v.taddr, (n)->class, (n)->idx)#define softcall_new(r, t) (r)->v.taddr = soft_new(t)#define softcall_newarray(r, s, t) (r)->v.taddr = soft_newarray(t, (s)->v.tint)#define softcall_anewarray(r, s, t) (r)->v.taddr = soft_anewarray(t, (s)->v.tint)#define softcall_athrow(s) soft_athrow((s)[0].v.taddr)#define softcall_checkcast(n, o, t) soft_checkcast(t, (o)->v.taddr)#define softcall_initialise_class(cl) soft_initialise_class(cl)#define softcall_instanceof(r, o, t) (r)->v.tint = soft_instanceof(t, (o)->v.taddr)/* Thread.stop() knows how to back out of java frames, so we do not * want to disable stop here */#define softcall_monitorenter(o) lockObject((o)[0].v.taddr)#define softcall_monitorexit(o) unlockObject((o)[0].v.taddr)#define softcall_multianewarray(r, z, s, t) (r)->v.taddr = soft_multianewarray(t, z, s); \ pop((z) - 1)#define softcall_badarrayindex() soft_badarrayindex()#define softcall_nullpointer() soft_nullpointer()#define softcall_nosuchmethod(c,n,s) soft_nosuchmethod(c,n,s)#define softcall_nosuchfield(c,n) soft_nosuchfield(c,n)#define softcall_linkage(c,n) soft_linkage(c,n)#define softcall_illegalaccess(c,n) soft_illegalaccess(c,n)#define softcall_nosuchclass(c) soft_nosuchclass(c)#define softcall_checkarraystore(a, o) soft_checkarraystore((a)[0].v.taddr, (o)[0].v.taddr)#define softcall_addreference(f, t) soft_addreference((f)[0].v.taddr, (t)[0].v.taddr)#define softcall_addreference_static(f, t) soft_addreference((f), (t)[0].v.taddr)#define softcall_incompatibleclasschange(a,b) soft_incompatibleclasschange(a,b)#define softcall_abstractmethod(a,b) soft_abstractmethod(a,b)#define adjustpc(a) /* Not needed for interpreter *//* check if an array index is out of bounds. * * it is out of bounds if the index is less then zero * or if it is larger or equal to the size of the array * to be indexed. */ static inline void check_array_index(const slots* array_slot, const slots* index_slot){ const jint array_index = index_slot->v.tint; const void* array_reference = array_slot->v.taddr;#if defined(KAFFE_VMDEBUG) /* Make sure that array reference is valid. * Check for NULL first. * * The check only works in debug mode, as on most * platforms we rely on the MMU to detect NULL. */ assert(array_reference != NULL); /* Then check if array_reference * comes from an uninitialized stack slot. * * The check only works in debug mode, as then the * stack is filled with 0xc0ffee. */ assert(array_reference != (void *) UNINITIALIZED_STACK_SLOT);#endif if (array_index < 0 || array_index >= ARRAY_SIZE(array_reference)) { soft_badarrayindex(); }}#define build_call_frame(SIG, OBJ, NRARGS) /* Not needed for interpreter */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -