📄 icode.c
字号:
slot_slot_slot(dst, src, src2, HAVE_ashr_int, Tcomplex);}#endifvoidashr_long(SlotInfo* dst, SlotInfo* src, SlotInfo* src2){#if defined(HAVE_ashr_long) lslot_lslot_slot(dst, src, src2, HAVE_ashr_long, Tcomplex);#else end_sub_block(); pusharg_int(src2, pusharg_long_idx_inc); pusharg_long(src, 0); call_soft(soft_ashrl); popargs(); start_sub_block(); return_long(dst);#endif}voidlshr_int_const(SlotInfo* dst, SlotInfo* src, jint val){#if defined(HAVE_lshr_int_const) if (HAVE_lshr_int_const_rangecheck(val)) { slot_slot_const(dst, src, val, HAVE_lshr_int_const, Tcomplex); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); move_int_const(tmp, val); lshr_int(dst, src, tmp); slot_freetmp(tmp); }}#if defined(HAVE_lshr_int)voidlshr_int(SlotInfo* dst, SlotInfo* src, SlotInfo* src2){ slot_slot_slot(dst, src, src2, HAVE_lshr_int, Tcomplex);}#endifvoidlshr_long(SlotInfo* dst, SlotInfo* src, SlotInfo* src2){#if defined(HAVE_lshr_long) lslot_lslot_slot(dst, src, src2, HAVE_lshr_long, Tcomplex);#else end_sub_block(); pusharg_int(src2, pusharg_long_idx_inc); pusharg_long(src, 0); call_soft(soft_lshrl); popargs(); start_sub_block(); return_long(dst);#endif}/* ----------------------------------------------------------------------- *//* Load and store. *//* */#if defined(HAVE_load_int)voidload_int(SlotInfo* dst, SlotInfo* src){ slot_slot_slot(dst, NULL, src, HAVE_load_int, Tload);}#endifvoidload_offset_int(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_int(dst, src); } else#if defined(HAVE_load_offset_int) if (HAVE_load_offset_int_rangecheck(offset)) { slot_slot_const(dst, src, offset, HAVE_load_offset_int, Tload); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, offset); load_int(dst, tmp); slot_freetmp(tmp); }}voidload_addr_int(SlotInfo* dst, void* addr){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); load_int(dst, tmp); slot_freetmp(tmp);}#if defined(HAVE_load_ref)voidload_ref(SlotInfo* dst, SlotInfo* src){ slot_slot_slot(dst, NULL, src, HAVE_load_ref, Tload);}#endifvoidload_offset_ref(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_ref(dst, src); } else#if defined(HAVE_load_offset_ref) if (HAVE_load_offset_ref_rangecheck(offset)) { slot_slot_const(dst, src, offset, HAVE_load_offset_ref, Tload); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, offset); load_ref(dst, tmp); slot_freetmp(tmp); }}voidload_addr_ref(SlotInfo* dst, void* addr){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); load_ref(dst, tmp); slot_freetmp(tmp);}voidload_long(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_load_long) lslot_lslot_lslot(dst, 0, src, HAVE_load_long, Tload);#else SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, 4); /* Don't use LSLOT & HSLOT here */ load_int(dst, src); load_int(dst+1, tmp); slot_freetmp(tmp);#endif}voidload_addr_long(SlotInfo* dst, void* addr){ load_addr_int(dst, addr); load_addr_int(dst+1, (char*)addr+4);}#if defined(HAVE_load_float)voidload_float(SlotInfo* dst, SlotInfo* src){ slot_slot_slot(dst, NULL, src, HAVE_load_float, Tload);}#endifvoidload_addr_float(SlotInfo* dst, void* addr){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); load_float(dst, tmp); slot_freetmp(tmp);}#if defined(HAVE_load_double)voidload_double(SlotInfo* dst, SlotInfo* src){ lslot_lslot_slot(dst, NULL, src, HAVE_load_double, Tload);}#endifvoidload_addr_double(SlotInfo* dst, void* addr){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); load_double(dst, tmp); slot_freetmp(tmp);}voidload_byte(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_load_byte) slot_slot_slot(dst, NULL, src, HAVE_load_byte, Tload);#else load_int(dst, src); lshl_int_const(dst, dst, 8 * (sizeof(jint) - sizeof(jbyte))); ashr_int_const(dst, dst, 8 * (sizeof(jint) - sizeof(jbyte)));#endif}voidload_char(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_load_char) slot_slot_slot(dst, NULL, src, HAVE_load_char, Tload);#else load_int(dst, src); and_int_const(dst, dst, (1 << (8 * sizeof(jchar))) - 1);#endif}voidload_short(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_load_short) slot_slot_slot(dst, NULL, src, HAVE_load_short, Tload);#else load_int(dst, src); lshl_int_const(dst, dst, 8 * (sizeof(jint) - sizeof(jshort))); ashr_int_const(dst, dst, 8 * (sizeof(jint) - sizeof(jshort)));#endif}voidload_addr_char(SlotInfo* dst, void* addr){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); load_char(dst, tmp); slot_freetmp(tmp);}voidload_addr_byte(SlotInfo* dst, void* addr){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); load_byte(dst, tmp); slot_freetmp(tmp);}voidload_addr_short(SlotInfo* dst, void* addr){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); load_short(dst, tmp); slot_freetmp(tmp);}voidload_offset_long(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_long(dst, src); } else#if defined(HAVE_load_offset_long) if (HAVE_load_offset_long_rangecheck(offset)) { lslot_lslot_const(dst, src, offset, HAVE_load_offset_long, Tload); } else#endif { load_offset_int(dst, src, offset); load_offset_int(dst+1, src, offset+4); }}voidload_offset_byte(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_byte(dst, src); } else#if defined(HAVE_load_offset_byte) if (HAVE_load_offset_byte_rangecheck(offset)) { lslot_lslot_const(dst, src, offset, HAVE_load_offset_byte, Tload); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, offset); load_byte(dst, tmp); slot_freetmp(tmp); }}voidload_offset_char(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_char(dst, src); } else#if defined(HAVE_load_offset_char) if (HAVE_load_offset_char_rangecheck(offset)) { lslot_lslot_const(dst, src, offset, HAVE_load_offset_char, Tload); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, offset); load_char(dst, tmp); slot_freetmp(tmp); }}voidload_offset_short(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_short(dst, src); } else#if defined(HAVE_load_offset_short) if (HAVE_load_offset_short_rangecheck(offset)) { lslot_lslot_const(dst, src, offset, HAVE_load_offset_short, Tload); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, offset); load_short(dst, tmp); slot_freetmp(tmp); }}voidload_offset_float(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_float(dst, src); } else#if defined(HAVE_load_offset_float) if (HAVE_load_offset_float_rangecheck(offset)) { lslot_lslot_const(dst, src, offset, HAVE_load_offset_float, Tload); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, offset); load_float(dst, tmp); slot_freetmp(tmp); }}voidload_offset_double(SlotInfo* dst, SlotInfo* src, jint offset){ if (offset == 0) { load_double(dst, src); } else#if defined(HAVE_load_offset_double) if (HAVE_load_offset_double_rangecheck(offset)) { lslot_lslot_const(dst, src, offset, HAVE_load_offset_double, Tload); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, src, offset); load_double(dst, tmp); slot_freetmp(tmp); }}voidload_offset_scaled_int(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); lshl_int_const(tmp, idx, SHIFT_jint); add_ref(tmp, src, tmp); load_offset_int(dst, tmp, offset); slot_freetmp(tmp);}voidload_offset_scaled_ref(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); lshl_int_const(tmp, idx, SHIFT_jref); add_ref(tmp, src, tmp); load_offset_ref(dst, tmp, offset); slot_freetmp(tmp);}voidload_offset_scaled_long(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); lshl_int_const(tmp, idx, SHIFT_jlong); add_ref(tmp, src, tmp); load_offset_long(dst, tmp, offset); slot_freetmp(tmp);}voidload_offset_scaled_float(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); lshl_int_const(tmp, idx, SHIFT_jfloat); add_ref(tmp, src, tmp); load_offset_float(dst, tmp, offset); slot_freetmp(tmp);}voidload_offset_scaled_double(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); lshl_int_const(tmp, idx, SHIFT_jdouble); add_ref(tmp, src, tmp); load_offset_double(dst, tmp, offset); slot_freetmp(tmp);}voidload_offset_scaled_byte(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); add_ref(tmp, src, idx); load_offset_byte(dst, tmp, offset); slot_freetmp(tmp);}voidload_offset_scaled_char(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); lshl_int_const(tmp, idx, SHIFT_jchar); add_ref(tmp, src, tmp); load_offset_char(dst, tmp, offset); slot_freetmp(tmp);}voidload_offset_scaled_short(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){ SlotInfo* tmp; slot_alloctmp(tmp); lshl_int_const(tmp, idx, SHIFT_jshort); add_ref(tmp, src, tmp); load_offset_short(dst, tmp, offset); slot_freetmp(tmp);}voidload_code_ref(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_load_code_ref) slot_slot_slot(dst, 0, src, HAVE_load_code_ref, Tload);#else load_ref(dst, src);#endif}voidload_key(SlotInfo* dst, SlotInfo* src){ load_int(dst, src);}#if defined(HAVE_store_int)voidstore_int(SlotInfo* dst, SlotInfo* src){ slot_slot_slot(NULL, dst, src, HAVE_store_int, Tstore);}#endifvoidstore_offset_int(SlotInfo* dst, jint offset, SlotInfo* src){ if (offset == 0) { store_int(dst, src); } else#if defined(HAVE_store_offset_int) if (HAVE_store_offset_int_rangecheck(offset)) { slot_slot_const(src, dst, offset, HAVE_store_offset_int, Tstore); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, dst, offset); store_int(tmp, src); slot_freetmp(tmp); }}voidstore_addr_int(void* addr, SlotInfo* src){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); store_int(tmp, src); slot_freetmp(tmp);}#if defined(HAVE_store_ref)voidstore_ref(SlotInfo* dst, SlotInfo* src){ slot_slot_slot(NULL, dst, src, HAVE_store_ref, Tstore);}#endifvoidstore_offset_ref(SlotInfo* dst, jint offset, SlotInfo* src){ if (offset == 0) { store_ref(dst, src); } else#if defined(HAVE_store_offset_ref) if (HAVE_store_offset_ref_rangecheck(offset)) { slot_slot_const(src, dst, offset, HAVE_store_offset_ref, Tstore); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, dst, offset); store_ref(tmp, src); slot_freetmp(tmp); }}voidstore_addr_ref(void* addr, SlotInfo* src){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); store_ref(tmp, src); slot_freetmp(tmp);}voidstore_long(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_store_long) lslot_lslot_lslot(NULL, dst, src, HAVE_store_long, Tstore);#else SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, dst, 4); /* Don't use LSLOT & HSLOT here */ store_int(dst, src); store_int(tmp, src+1); slot_freetmp(tmp);#endif}voidstore_offset_long(SlotInfo* dst, jint offset, SlotInfo* src){ if (offset == 0) { store_long(dst, src); } else#if defined(HAVE_store_offset_long) if (HAVE_store_offset_long_rangecheck(offset)) { lslot_lslot_const(src, dst, offset, HAVE_store_offset_long, Tstore); } else#endif { store_offset_int(dst, offset, src); store_offset_int(dst, offset+4, src+1); }}voidstore_addr_long(void* addr, SlotInfo* src){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); store_long(tmp, src); slot_freetmp(tmp);}#if defined(HAVE_store_float)voidstore_float(SlotInfo* dst, SlotInfo* src){ slot_slot_slot(NULL, dst, src, HAVE_store_float, Tstore);}#endifvoidstore_offset_float(SlotInfo* dst, jint offset, SlotInfo* src){ if (offset == 0) { store_float(dst, src); } else#if defined(HAVE_store_offset_float) if (HAVE_store_offset_float_rangecheck(offset)) { slot_slot_const(src, dst, offset, HAVE_store_offset_float, Tstore); } else#endif { SlotInfo* tmp; slot_alloctmp(tmp); add_ref_const(tmp, dst, offset); store_float(tmp, src); slot_freetmp(tmp); }}voidstore_addr_float(void* addr, SlotInfo* src){ SlotInfo* tmp; slot_alloctmp(tmp); move_ref_const(tmp, addr); store_float(tmp, src); slot_freetmp(tmp);}#if defined(HAVE_store_double)voidstore_double(SlotInfo* dst, SlotInfo* src){ slot_slot_lslot(NULL, dst, src, HAVE_store_double, Tstore);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -