⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icode.c

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -