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

📄 icode.c

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 C
📖 第 1 页 / 共 5 页
字号:
	}	else#if defined(HAVE_load_offset_scaled_ref)	slot_slot_slot_const_const(dst, src, idx, offset, 0, HAVE_load_offset_scaled_ref, Tload);#else	{		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);	}#endif}voidload_offset_scaled_long(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){	if (slot_type(idx) == Tconst) {		load_offset_long(dst, src, (jint)(slot_value(idx)->i * sizeof(jlong) + offset));	}	else#if defined(HAVE_load_offset_scaled_long)	slot_slot_slot_const_const(dst, src, idx, offset, 0, HAVE_load_offset_scaled_long, Tload);#else	{		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);	}#endif}voidload_offset_scaled_float(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){	if (slot_type(idx) == Tconst) {		load_offset_float(dst, src, (jint)(slot_value(idx)->i * sizeof(jfloat) + offset));	}	else#if defined(HAVE_load_offset_scaled_float)	slot_slot_slot_const_const(dst, src, idx, offset, 0, HAVE_load_offset_scaled_float, Tload);#else	{		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);	}#endif}voidload_offset_scaled_double(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){	if (slot_type(idx) == Tconst) {		load_offset_double(dst, src, (jint)(slot_value(idx)->i * sizeof(jdouble) + offset));	}	else#if defined(HAVE_load_offset_scaled_double)	lslot_slot_slot_const_const(dst, src, idx, offset, 0, HAVE_load_offset_scaled_double, Tload);#else	{		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);	}#endif}voidload_offset_scaled_byte(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){	if (slot_type(idx) == Tconst) {		load_offset_byte(dst, src, (jint)(slot_value(idx)->i * sizeof(jbyte) + offset));	}	else#if defined(HAVE_load_offset_scaled_byte)	slot_slot_slot_const_const(dst, src, idx, offset, 0, HAVE_load_offset_scaled_byte, Tload);#else	{		SlotInfo* tmp;		slot_alloctmp(tmp);		add_ref(tmp, src, idx);		load_offset_byte(dst, tmp, offset);		slot_freetmp(tmp);	}#endif}voidload_offset_scaled_char(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){	if (slot_type(idx) == Tconst) {		load_offset_char(dst, src, (jint)(slot_value(idx)->i * sizeof(jchar) + offset));	}	else#if defined(HAVE_load_offset_scaled_char)	slot_slot_slot_const_const(dst, src, idx, offset, 0, HAVE_load_offset_scaled_char, Tload);#else	{		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);	}#endif}voidload_offset_scaled_short(SlotInfo* dst, SlotInfo* src, SlotInfo* idx, int offset){	if (slot_type(idx) == Tconst) {		load_offset_short(dst, src, (jint)(slot_value(idx)->i * sizeof(jshort) + offset));	}	else#if defined(HAVE_load_offset_scaled_short)	slot_slot_slot_const_const(dst, src, idx, offset, 0, HAVE_load_offset_scaled_short, Tload);#else	{		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);	}#endif}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_const_offset_int)	if (slot_type(src) == Tconst) {		store_const_offset_int(dst, offset, slot_value(src)->i);	}	else#endif#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){#if defined(HAVE_store_addr_int)	slot_slot_const(NULL, src, (uintp)addr, HAVE_store_addr_int, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_int(tmp, src);	slot_freetmp(tmp);#endif}#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){#if defined(HAVE_store_addr_ref)	slot_slot_const(NULL, src, (uintp)addr, HAVE_store_addr_ref, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_ref(tmp, src);	slot_freetmp(tmp);#endif}voidstore_long(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_store_long)	lslot_slot_lslot(0, 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_slot_const(src, dst, offset, HAVE_store_offset_long, Tstore);	}	else#endif	{                /* Don't use LSLOT & HSLOT here */		store_offset_int(dst, offset, src);		store_offset_int(dst, offset+4, src+1);	}}voidstore_addr_long(void* addr, SlotInfo* src){#if defined(HAVE_store_addr_long)	slot_slot_const(0, src, (uintp)addr, HAVE_store_addr_long, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_long(tmp, src);	slot_freetmp(tmp);#endif}voidstore_float(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_store_float)	slot_slot_slot(NULL, dst, src, HAVE_store_float, Tstore);#elif defined(HAVE_NO_FLOATING_POINT)	store_int(dst, src);#else	KAFFEVM_ABORT();#endif}voidstore_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){#if defined(HAVE_store_addr_float)	slot_slot_const(0, src, (uintp)addr, HAVE_store_addr_float, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_float(tmp, src);	slot_freetmp(tmp);#endif}voidstore_double(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_store_double)	slot_slot_lslot(NULL, dst, src, HAVE_store_double, Tstore);#elif defined(HAVE_NO_FLOATING_POINT) || defined(PS2LINUX)	store_long(dst, src);#else	KAFFEVM_ABORT();#endif}voidstore_offset_double(SlotInfo* dst, jint offset, SlotInfo* src){	if (offset == 0) {		store_double(dst, src);	}	else#if defined(HAVE_store_offset_double)	if (HAVE_store_offset_double_rangecheck(offset)) {		lslot_slot_const(src, dst, offset, HAVE_store_offset_double, Tstore);	}	else#endif	{		SlotInfo* tmp;		slot_alloctmp(tmp);		add_ref_const(tmp, dst, offset);		store_double(tmp, src);		slot_freetmp(tmp);	}}voidstore_addr_double(void* addr, SlotInfo* src){#if defined(HAVE_store_addr_double)	lslot_lslot_const(0, src, (uintp)addr, HAVE_store_addr_double, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_double(tmp, src);	slot_freetmp(tmp);#endif}voidstore_byte(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_store_byte)	slot_slot_slot(NULL, dst, src, HAVE_store_byte, Tstore);#else	/* FIXME -- this is unlikely to work as-is as it doesn't	   allow for alignment requirements on the integer load.  */	SlotInfo* tmp;	SlotInfo* tmp2;	slot_alloctmp(tmp);	slot_alloctmp(tmp2);	and_int_const(tmp, src, (1 << (8 * sizeof(jbyte))) - 1);	load_int(tmp2, dst);	and_int_const(tmp2, tmp2, -(1 << (8 * sizeof(jbyte))));	or_int(tmp2, tmp2, tmp);	store_int(dst, tmp2);	slot_freetmp(tmp);	slot_freetmp(tmp2);#endif}voidstore_offset_byte(SlotInfo* dst, jint offset, SlotInfo* src){	if (offset == 0) {		store_byte(dst, src);	}	else#if defined(HAVE_store_const_offset_byte)	if (slot_type(src) == Tconst) {		store_const_offset_byte(dst, offset, slot_value(src)->i);	}	else#endif#if defined(HAVE_store_offset_byte)	if (HAVE_store_offset_byte_rangecheck(offset)) {		slot_slot_const(src, dst, offset, HAVE_store_offset_byte, Tstore);	}	else#endif	{		SlotInfo* tmp;		slot_alloctmp(tmp);		add_ref_const(tmp, dst, offset);		store_byte(tmp, src);		slot_freetmp(tmp);	}}voidstore_addr_byte(void* addr, SlotInfo* src){#if defined(HAVE_store_addr_byte)	slot_slot_const(0, src, (uintp)addr, HAVE_store_addr_byte, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_byte(tmp, src);	slot_freetmp(tmp);#endif}voidstore_char(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_store_char)	slot_slot_slot(NULL, dst, src, HAVE_store_char, Tstore);#else	/* FIXME -- this is unlikely to work as-is as it doesn't	   allow for alignment requirements on the integer load.  */	SlotInfo* tmp;	SlotInfo* tmp2;	slot_alloctmp(tmp);	slot_alloctmp(tmp2);	and_int_const(tmp, src, (1 << (8 * sizeof(jchar))) - 1);	load_int(tmp2, dst);	and_int_const(tmp2, tmp2, -(1 << (8 * sizeof(jchar))));	or_int(tmp2, tmp2, tmp);	store_int(dst, tmp2);	slot_freetmp(tmp);	slot_freetmp(tmp2);#endif}voidstore_offset_char(SlotInfo* dst, jint offset, SlotInfo* src){	if (offset == 0) {		store_char(dst, src);	}	else#if defined(HAVE_store_offset_char)	if (HAVE_store_offset_char_rangecheck(offset)) {		slot_slot_const(src, dst, offset, HAVE_store_offset_char, Tstore);	}	else#endif	{		SlotInfo* tmp;		slot_alloctmp(tmp);		add_ref_const(tmp, dst, offset);		store_char(tmp, src);		slot_freetmp(tmp);	}}voidstore_addr_char(void* addr, SlotInfo* src){#if defined(HAVE_store_addr_char)	slot_slot_const(0, src, (uintp)addr, HAVE_store_addr_char, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_char(tmp, src);	slot_freetmp(tmp);#endif}voidstore_short(SlotInfo* dst, SlotInfo* src){#if defined(HAVE_store_short)	slot_slot_slot(NULL, dst, src, HAVE_store_short, Tstore);#else	/* FIXME -- this is unlikely to work as-is as it doesn't	   allow for alignment requirements on the integer load.  */	SlotInfo* tmp;	SlotInfo* tmp2;	slot_alloctmp(tmp);	slot_alloctmp(tmp2);	and_int_const(tmp, src, (1 << (8 * sizeof(jshort))) - 1);	load_int(tmp2, dst);	and_int_const(tmp2, tmp2, -(1 << (8 * sizeof(jshort))));	or_int(tmp2, tmp2, tmp);	store_int(dst, tmp2);	slot_freetmp(tmp);	slot_freetmp(tmp2);#endif}voidstore_offset_short(SlotInfo* dst, jint offset, SlotInfo* src){	if (offset == 0) {		store_short(dst, src);	}	else#if defined(HAVE_store_offset_short)	if (HAVE_store_offset_short_rangecheck(offset)) {		slot_slot_const(src, dst, offset, HAVE_store_offset_short, Tstore);	}	else#endif	{		SlotInfo* tmp;		slot_alloctmp(tmp);		add_ref_const(tmp, dst, offset);		store_short(tmp, src);		slot_freetmp(tmp);	}}voidstore_addr_short(void* addr, SlotInfo* src){#if defined(HAVE_store_addr_short)	slot_slot_const(0, src, (uintp)addr, HAVE_store_addr_short, Tstore);#else	SlotInfo* tmp;	slot_alloctmp(tmp);	move_ref_const(tmp, addr);	store_short(tmp, src);	slot_freetmp(tmp);#endif}voidstore_offset_scaled_int(SlotInfo* dst, SlotInfo* idx, int offset, SlotInfo* src){	if (slot_type(idx) == Tconst) {		store_offset_int(dst, (jint)(slot_value(idx)->i * sizeof(jint) + offset), src);	}	else#if defined(HAVE_store_offset_scaled_int)	slot_slot_slot_const_const(dst, idx, src, offset, 0, HAVE_store_offset_scaled_int, Tstore);#else	{		SlotInfo* tmp;		slot_alloctmp(tmp);		lshl_int_const(tmp, idx, SHIFT_jint);		add_ref(tmp, dst, tmp);		store_offset_int(tmp, offset, src);		slot_freetmp(tmp);	}#endif}voidstore_offset_scaled_ref(SlotInfo* dst, SlotInfo* idx, int offset, SlotInfo* src){	if (slot_type(idx) == Tconst) {		store_offset_ref(dst, (jint)(slot_value(idx)->i * sizeof(jref) + offset), src);	}	else#if defined(HAVE_store_offset_scaled_ref)	slot_slot_slot_const_const(dst, idx, src, offset, 0, HAVE_store_offset_scaled_ref, Tstore);#else	{		SlotInfo* tmp;		slot_alloctmp(tmp);		lshl_int_const(tmp, idx, SHIFT_jref);		add_ref(tmp, dst, tmp);		store_offset_ref(tmp, offset, src);		slot_freetmp(tmp);	}#endif}voidstore_offset_scaled_long(SlotInfo* dst, SlotInfo* idx, int offset, SlotInfo* src){	if (slot_type(idx) == Tconst) {		store_offset_long(dst, (jint)(slot_value(idx)->i * sizeof(jlong) + offset), src);	}	else#if defined(HAVE_store_offset_scaled_long)	slot_slot_slot_const_const(dst, idx, src, offset, 0, HAVE_store_offset_scaled_long, Tstore);#else	{		SlotInfo* tmp;		slot_alloctmp(tmp);		lshl_int_const(tmp, idx, SHIFT_jlong);		add_ref(tmp, dst, tmp);		store_offset_long(tmp, offset, src);		slot_freetmp(tmp);	}#endif}voidstore_offset_scaled_float(SlotInfo* dst, SlotInfo* idx, int offset, SlotInfo* src){	if (slot_type(idx) == Tconst) {		store_offset_float(dst, (jint)(slot_value(idx)->i * sizeof(jfloat) + offset), src);	}	else#if defined(HAV

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -