You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ar...@apache.org on 2005/12/24 20:44:33 UTC

svn commit: r358950 - in /incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc: Makefile.am interp.c

Author: archie
Date: Sat Dec 24 11:44:30 2005
New Revision: 358950

URL: http://svn.apache.org/viewcvs?rev=358950&view=rev
Log:
Make it easy to inspect the generated code in interp.c

Modified:
    incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am
    incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/interp.c

Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am?rev=358950&r1=358949&r2=358950&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am Sat Dec 24 11:44:30 2005
@@ -57,6 +57,9 @@
 			vm_alloc.c \
 			zip.c
 
+interp.S:	interp.c
+	$(COMPILE) -S -o $@ $<
+
 # Java native method source files
 libjc_la_SOURCES+=	native/gnu_classpath_VMStackWalker.c \
 			native/gnu_classpath_VMSystemProperties.c \

Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/interp.c
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/interp.c?rev=358950&r1=358949&r2=358950&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/interp.c (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/interp.c Sat Dec 24 11:44:30 2005
@@ -109,6 +109,7 @@
 _jc_interp(_jc_env *const env, _jc_method *const method)
 {
 #define ACTION(name)  [_JC_ ## name]= &&do_ ## name
+#define TARGET(name)  do_ ## name:   asm ("/***** " #name " *****/");
 	static const void *const actions[0x100] = {
 		ACTION(aaload),
 		ACTION(aastore),
@@ -365,7 +366,7 @@
 	/* Start */
 	JUMP(0);
 
-do_aaload:
+TARGET(aaload)
     {
 	_jc_object_array *array;
 	jint index;
@@ -379,7 +380,7 @@
 	PUSHL(array->elems[~index]);
 	NEXT();
     }
-do_aastore:
+TARGET(aastore)
     {
 	_jc_object_array *array;
 	_jc_object *obj;
@@ -408,10 +409,10 @@
 	array->elems[~index] = obj;
 	NEXT();
     }
-do_aload:
+TARGET(aload)
 	PUSHL(LOCALL(INFO(local)));
 	NEXT();
-do_anewarray:
+TARGET(anewarray)
     {
 	_jc_array *array;
 	jint length;
@@ -423,11 +424,11 @@
 	PUSHL((_jc_object *)array);
 	NEXT();
     }
-do_areturn:
+TARGET(areturn)
 	POP(1);
 	env->retval.l = STACKL(0);
 	goto done;
-do_arraylength:
+TARGET(arraylength)
     {
 	_jc_array *array;
 
@@ -438,17 +439,17 @@
 	PUSHI(array->length);
 	NEXT();
     }
-do_astore:
+TARGET(astore)
 	POP(1);
 	LOCALL(INFO(local)) = STACKL(0);
 	NEXT();
-do_athrow:
+TARGET(athrow)
 	POP(1);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	_jc_post_exception_object(env, STACKL(0));
 	goto exception;
-do_baload:
+TARGET(baload)
     {
 	_jc_array *array;
 	jint index;
@@ -466,7 +467,7 @@
 		PUSHI(((_jc_byte_array *)array)->elems[index]);
 	NEXT();
     }
-do_bastore:
+TARGET(bastore)
     {
 	_jc_array *array;
 	jint index;
@@ -484,7 +485,7 @@
 		((_jc_byte_array *)array)->elems[index] = STACKI(2) & 0xff;
 	NEXT();
     }
-do_caload:
+TARGET(caload)
     {
 	_jc_char_array *array;
 	jint index;
@@ -496,7 +497,7 @@
 	PUSHI(array->elems[index]);
 	NEXT();
     }
-do_castore:
+TARGET(castore)
     {
 	_jc_char_array *array;
 	jint index;
@@ -508,7 +509,7 @@
 	array->elems[index] = STACKI(2) & 0xffff;
 	NEXT();
     }
-do_checkcast:
+TARGET(checkcast)
     {
 	_jc_object *const obj = STACKL(-1);
 
@@ -531,23 +532,23 @@
 	}
 	NEXT();
     }
-do_d2f:
+TARGET(d2f)
 	POP2(1);
 	PUSHF(STACKD(0));
 	NEXT();
-do_d2i:
+TARGET(d2i)
 	POP2(1);
 	PUSHI(_JC_CAST_FLT2INT(env, jdouble, jint, STACKD(0)));
 	NEXT();
-do_d2l:
+TARGET(d2l)
 	POP2(1);
 	PUSHJ(_JC_CAST_FLT2INT(env, jdouble, jlong, STACKD(0)));
 	NEXT();
-do_dadd:
+TARGET(dadd)
 	POP2(2);
 	PUSHD(STACKD(0) + STACKD(2));
 	NEXT();
-do_daload:
+TARGET(daload)
     {
 	_jc_double_array *array;
 	jint index;
@@ -559,7 +560,7 @@
 	PUSHD(array->elems[index]);
 	NEXT();
     }
-do_dastore:
+TARGET(dastore)
     {
 	_jc_double_array *array;
 	jint index;
@@ -571,68 +572,68 @@
 	array->elems[index] = STACKD(2);
 	NEXT();
     }
-do_dcmpg:
+TARGET(dcmpg)
 	POP2(2);
 	PUSHI(_JC_DCMPG(STACKD(0), STACKD(2)));
 	NEXT();
-do_dcmpl:
+TARGET(dcmpl)
 	POP2(2);
 	PUSHI(_JC_DCMPL(STACKD(0), STACKD(2)));
 	NEXT();
-do_ddiv:
+TARGET(ddiv)
 	POP2(2);
 	PUSHD(STACKD(0) / STACKD(2));
 	NEXT();
-do_dload:
+TARGET(dload)
 	PUSHD(LOCALD(INFO(local)));
 	NEXT();
-do_dmul:
+TARGET(dmul)
 	POP2(2);
 	PUSHD(STACKD(0) * STACKD(2));
 	NEXT();
-do_dneg:
+TARGET(dneg)
 	POP2(1);
 	PUSHD(-STACKD(0));
 	NEXT();
-do_drem:
+TARGET(drem)
 	POP2(2);
 	PUSHD(fmod(STACKD(0), STACKD(2)));
 	NEXT();
-do_dreturn:
+TARGET(dreturn)
 	POP2(1);
 	env->retval.d = STACKD(0);
 	goto done;
-do_dstore:
+TARGET(dstore)
 	POP2(1);
 	LOCALD(INFO(local)) = STACKD(0);
 	NEXT();
-do_dsub:
+TARGET(dsub)
 	POP2(2);
 	PUSHD(STACKD(0) - STACKD(2));
 	NEXT();
-do_dup:
+TARGET(dup)
 	STACKI(0) = STACKI(-1);
 	POP(-1);
 	NEXT();
-do_dup_x1:
+TARGET(dup_x1)
 	STACKI(0) = STACKI(-1);
 	STACKI(-1) = STACKI(-2);
 	STACKI(-2) = STACKI(0);
 	POP(-1);
 	NEXT();
-do_dup_x2:
+TARGET(dup_x2)
 	STACKI(0) = STACKI(-1);
 	STACKI(-1) = STACKI(-2);
 	STACKI(-2) = STACKI(-3);
 	STACKI(-3) = STACKI(0);
 	POP(-1);
 	NEXT();
-do_dup2:
+TARGET(dup2)
 	STACKI(1) = STACKI(-1);
 	STACKI(0) = STACKI(-2);
 	POP(-2);
 	NEXT();
-do_dup2_x1:
+TARGET(dup2_x1)
 	STACKI(1) = STACKI(-1);
 	STACKI(0) = STACKI(-2);
 	STACKI(-1) = STACKI(-3);
@@ -640,7 +641,7 @@
 	STACKI(-3) = STACKI(0);
 	POP(-2);
 	NEXT();
-do_dup2_x2:
+TARGET(dup2_x2)
 	STACKI(1) = STACKI(-1);
 	STACKI(0) = STACKI(-2);
 	STACKI(-1) = STACKI(-3);
@@ -649,23 +650,23 @@
 	STACKI(-4) = STACKI(0);
 	POP(-2);
 	NEXT();
-do_f2d:
+TARGET(f2d)
 	POP(1);
 	PUSHD(STACKF(0));
 	NEXT();
-do_f2i:
+TARGET(f2i)
 	POP(1);
 	PUSHI(_JC_CAST_FLT2INT(env, jfloat, jint, STACKF(0)));
 	NEXT();
-do_f2l:
+TARGET(f2l)
 	POP(1);
 	PUSHJ(_JC_CAST_FLT2INT(env, jfloat, jlong, STACKF(0)));
 	NEXT();
-do_fadd:
+TARGET(fadd)
 	POP(2);
 	PUSHF(STACKF(0) + STACKF(1));
 	NEXT();
-do_faload:
+TARGET(faload)
     {
 	_jc_float_array *array;
 	jint index;
@@ -677,10 +678,10 @@
 	PUSHF(array->elems[index]);
 	NEXT();
     }
-do_failure:
+TARGET(failure)
 	_jc_post_exception_msg(env, _JC_InternalError, "failure opcode");
 	goto exception;
-do_fastore:
+TARGET(fastore)
     {
 	_jc_float_array *array;
 	jint index;
@@ -692,46 +693,46 @@
 	array->elems[index] = STACKF(2);
 	NEXT();
     }
-do_fcmpg:
+TARGET(fcmpg)
 	POP(2);
 	PUSHI(_JC_FCMPG(STACKF(0), STACKF(1)));
 	NEXT();
-do_fcmpl:
+TARGET(fcmpl)
 	POP(2);
 	PUSHI(_JC_FCMPL(STACKF(0), STACKF(1)));
 	NEXT();
-do_fdiv:
+TARGET(fdiv)
 	POP(2);
 	PUSHF(STACKF(0) / STACKF(1));
 	NEXT();
-do_fload:
+TARGET(fload)
 	PUSHF(LOCALF(INFO(local)));
 	NEXT();
-do_fmul:
+TARGET(fmul)
 	POP(2);
 	PUSHF(STACKF(0) * STACKF(1));
 	NEXT();
-do_fneg:
+TARGET(fneg)
 	POP(1);
 	PUSHF(-STACKF(0));
 	NEXT();
-do_frem:
+TARGET(frem)
 	POP(2);
 	PUSHF(fmod(STACKF(0), STACKF(1)));
 	NEXT();
-do_freturn:
+TARGET(freturn)
 	POP(1);
 	env->retval.f = STACKF(0);
 	goto done;
-do_fstore:
+TARGET(fstore)
 	POP(1);
 	LOCALF(INFO(local)) = STACKF(0);
 	NEXT();
-do_fsub:
+TARGET(fsub)
 	POP(2);
 	PUSHF(STACKF(0) - STACKF(1));
 	NEXT();
-do_getfield_z:
+TARGET(getfield_z)
     {
     	_jc_object *obj;
 
@@ -741,7 +742,7 @@
 	PUSHI(*(jboolean *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_b:
+TARGET(getfield_b)
     {
     	_jc_object *obj;
 
@@ -751,7 +752,7 @@
 	PUSHI(*(jbyte *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_c:
+TARGET(getfield_c)
     {
     	_jc_object *obj;
 
@@ -761,7 +762,7 @@
 	PUSHI(*(jchar *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_s:
+TARGET(getfield_s)
     {
     	_jc_object *obj;
 
@@ -771,7 +772,7 @@
 	PUSHI(*(jshort *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_i:
+TARGET(getfield_i)
     {
     	_jc_object *obj;
 
@@ -781,7 +782,7 @@
 	PUSHI(*(jint *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_j:
+TARGET(getfield_j)
     {
     	_jc_object *obj;
 
@@ -791,7 +792,7 @@
 	PUSHJ(*(jlong *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_f:
+TARGET(getfield_f)
     {
     	_jc_object *obj;
 
@@ -801,7 +802,7 @@
 	PUSHF(*(jfloat *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_d:
+TARGET(getfield_d)
     {
     	_jc_object *obj;
 
@@ -811,7 +812,7 @@
 	PUSHD(*(jdouble *)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getfield_l:
+TARGET(getfield_l)
     {
     	_jc_object *obj;
 
@@ -821,7 +822,7 @@
 	PUSHL(*(_jc_object **)((char *)obj + INFO(field).u.offset));
 	NEXT();
     }
-do_getstatic:
+TARGET(getstatic)
     {
 	_jc_field *const field = INFO(field).field;
 
@@ -866,64 +867,64 @@
 	}
 	JUMP(pc);
     }
-do_getstatic_z:
+TARGET(getstatic_z)
 	PUSHI(*(jboolean *)INFO(field).u.data);
 	NEXT();
-do_getstatic_b:
+TARGET(getstatic_b)
 	PUSHI(*(jbyte *)INFO(field).u.data);
 	NEXT();
-do_getstatic_c:
+TARGET(getstatic_c)
 	PUSHI(*(jchar *)INFO(field).u.data);
 	NEXT();
-do_getstatic_s:
+TARGET(getstatic_s)
 	PUSHI(*(jshort *)INFO(field).u.data);
 	NEXT();
-do_getstatic_i:
+TARGET(getstatic_i)
 	PUSHI(*(jint *)INFO(field).u.data);
 	NEXT();
-do_getstatic_j:
+TARGET(getstatic_j)
 	PUSHJ(*(jlong *)INFO(field).u.data);
 	NEXT();
-do_getstatic_f:
+TARGET(getstatic_f)
 	PUSHF(*(jfloat *)INFO(field).u.data);
 	NEXT();
-do_getstatic_d:
+TARGET(getstatic_d)
 	PUSHD(*(jdouble *)INFO(field).u.data);
 	NEXT();
-do_getstatic_l:
+TARGET(getstatic_l)
 	PUSHL(*(_jc_object **)INFO(field).u.data);
 	NEXT();
-do_goto:
+TARGET(goto)
 	JUMP(INFO(target));
-do_i2b:
+TARGET(i2b)
 	POP(1);
 	PUSHI((jbyte)STACKI(0));
 	NEXT();
-do_i2c:
+TARGET(i2c)
 	POP(1);
 	PUSHI((jchar)STACKI(0));
 	NEXT();
-do_i2d:
+TARGET(i2d)
 	POP(1);
 	PUSHD(STACKI(0));
 	NEXT();
-do_i2f:
+TARGET(i2f)
 	POP(1);
 	PUSHF(STACKI(0));
 	NEXT();
-do_i2l:
+TARGET(i2l)
 	POP(1);
 	PUSHJ(STACKI(0));
 	NEXT();
-do_i2s:
+TARGET(i2s)
 	POP(1);
 	PUSHI((jshort)STACKI(0));
 	NEXT();
-do_iadd:
+TARGET(iadd)
 	POP(2);
 	PUSHI(STACKI(0) + STACKI(1));
 	NEXT();
-do_iaload:
+TARGET(iaload)
     {
 	_jc_int_array *array;
 	jint index;
@@ -935,11 +936,11 @@
 	PUSHI(array->elems[index]);
 	NEXT();
     }
-do_iand:
+TARGET(iand)
 	POP(2);
 	PUSHI(STACKI(0) & STACKI(1));
 	NEXT();
-do_iastore:
+TARGET(iastore)
     {
 	_jc_int_array *array;
 	jint index;
@@ -951,75 +952,75 @@
 	array->elems[index] = STACKI(2);
 	NEXT();
     }
-do_idiv:
+TARGET(idiv)
 	POP(2);
 	if (STACKI(1) == 0)
 		goto arithmetic_exception;
 	PUSHI(STACKI(0) / STACKI(1));
 	NEXT();
-do_if_acmpeq:
+TARGET(if_acmpeq)
 	POP(2);
 	JUMP(STACKL(0) == STACKL(1) ? INFO(target) : pc + 1);
-do_if_acmpne:
+TARGET(if_acmpne)
 	POP(2);
 	JUMP(STACKL(0) != STACKL(1) ? INFO(target) : pc + 1);
-do_if_icmpeq:
+TARGET(if_icmpeq)
 	POP(2);
 	JUMP(STACKI(0) == STACKI(1) ? INFO(target) : pc + 1);
-do_if_icmpne:
+TARGET(if_icmpne)
 	POP(2);
 	JUMP(STACKI(0) != STACKI(1) ? INFO(target) : pc + 1);
-do_if_icmplt:
+TARGET(if_icmplt)
 	POP(2);
 	JUMP(STACKI(0) < STACKI(1) ? INFO(target) : pc + 1);
-do_if_icmpge:
+TARGET(if_icmpge)
 	POP(2);
 	JUMP(STACKI(0) >= STACKI(1) ? INFO(target) : pc + 1);
-do_if_icmpgt:
+TARGET(if_icmpgt)
 	POP(2);
 	JUMP(STACKI(0) > STACKI(1) ? INFO(target) : pc + 1);
-do_if_icmple:
+TARGET(if_icmple)
 	POP(2);
 	JUMP(STACKI(0) <= STACKI(1) ? INFO(target) : pc + 1);
-do_ifeq:
+TARGET(ifeq)
 	POP(1);
 	JUMP(STACKI(0) == 0 ? INFO(target) : pc + 1);
-do_ifne:
+TARGET(ifne)
 	POP(1);
 	JUMP(STACKI(0) != 0 ? INFO(target) : pc + 1);
-do_iflt:
+TARGET(iflt)
 	POP(1);
 	JUMP(STACKI(0) < 0 ? INFO(target) : pc + 1);
-do_ifge:
+TARGET(ifge)
 	POP(1);
 	JUMP(STACKI(0) >= 0 ? INFO(target) : pc + 1);
-do_ifgt:
+TARGET(ifgt)
 	POP(1);
 	JUMP(STACKI(0) > 0 ? INFO(target) : pc + 1);
-do_ifle:
+TARGET(ifle)
 	POP(1);
 	JUMP(STACKI(0) <= 0 ? INFO(target) : pc + 1);
-do_ifnonnull:
+TARGET(ifnonnull)
 	POP(1);
 	JUMP(STACKL(0) != NULL ? INFO(target) : pc + 1);
-do_ifnull:
+TARGET(ifnull)
 	POP(1);
 	JUMP(STACKL(0) == NULL ? INFO(target) : pc + 1);
-do_iinc:
+TARGET(iinc)
 	LOCALI(INFO(iinc).local) += INFO(iinc).value;
 	NEXT();
-do_iload:
+TARGET(iload)
 	PUSHI(LOCALI(INFO(local)));
 	NEXT();
-do_imul:
+TARGET(imul)
 	POP(2);
 	PUSHI(STACKI(0) * STACKI(1));
 	NEXT();
-do_ineg:
+TARGET(ineg)
 	POP(1);
 	PUSHI(-STACKI(0));
 	NEXT();
-do_instanceof:
+TARGET(instanceof)
 	POP(1);
 	switch (_jc_instance_of(env, STACKL(0), INFO(type))) {
 	case 1:
@@ -1034,7 +1035,7 @@
 		_JC_ASSERT(JNI_FALSE);
 	}
 	NEXT();
-do_invokestatic:
+TARGET(invokestatic)
     {
 	_jc_method *const imethod = INFO(invoke).method;
 
@@ -1048,10 +1049,10 @@
 	code->opcodes[pc] = _JC_invokestatic2;
 	JUMP(pc);
     }
-do_invokespecial:
-do_invokevirtual:
-do_invokestatic2:
-do_invokeinterface:
+TARGET(invokespecial)
+TARGET(invokevirtual)
+TARGET(invokestatic2)
+TARGET(invokeinterface)
     {
 	const _jc_invoke *const invoke = &INFO(invoke);
 	_jc_method *imethod = invoke->method;
@@ -1214,64 +1215,64 @@
 	}
 	NEXT();
     }
-do_ior:
+TARGET(ior)
 	POP(2);
 	PUSHI(STACKI(0) | STACKI(1));
 	NEXT();
-do_irem:
+TARGET(irem)
 	POP(2);
 	if (STACKI(1) == 0)
 		goto arithmetic_exception;
 	PUSHI(STACKI(0) % STACKI(1));
 	NEXT();
-do_ireturn:
+TARGET(ireturn)
 	POP(1);
 	env->retval.i = STACKI(0);
 	goto done;
-do_ishl:
+TARGET(ishl)
 	POP(2);
 	PUSHI(STACKI(0) << (STACKI(1) & 0x1f));
 	NEXT();
-do_ishr:
+TARGET(ishr)
 	POP(2);
 	PUSHI(_JC_ISHR(STACKI(0), STACKI(1) & 0x1f));
 	NEXT();
-do_istore:
+TARGET(istore)
 	POP(1);
 	LOCALI(INFO(local)) = STACKI(0);
 	NEXT();
-do_isub:
+TARGET(isub)
 	POP(2);
 	PUSHI(STACKI(0) - STACKI(1));
 	NEXT();
-do_iushr:
+TARGET(iushr)
 	POP(2);
 	PUSHI(_JC_IUSHR(STACKI(0), STACKI(1) & 0x1f));
 	NEXT();
-do_ixor:
+TARGET(ixor)
 	POP(2);
 	PUSHI(STACKI(0) ^ STACKI(1));
 	NEXT();
-do_jsr:
+TARGET(jsr)
 	PUSHI(pc + 1);
 	JUMP(INFO(target));
-do_l2d:
+TARGET(l2d)
 	POP2(1);
 	PUSHD(STACKJ(0));
 	NEXT();
-do_l2f:
+TARGET(l2f)
 	POP2(1);
 	PUSHF(STACKJ(0));
 	NEXT();
-do_l2i:
+TARGET(l2i)
 	POP2(1);
 	PUSHI(STACKJ(0));
 	NEXT();
-do_ladd:
+TARGET(ladd)
 	POP2(2);
 	PUSHJ(STACKJ(0) + STACKJ(2));
 	NEXT();
-do_laload:
+TARGET(laload)
     {
 	_jc_long_array *array;
 	jint index;
@@ -1283,11 +1284,11 @@
 	PUSHJ(array->elems[index]);
 	NEXT();
     }
-do_land:
+TARGET(land)
 	POP2(2);
 	PUSHJ(STACKJ(0) & STACKJ(2));
 	NEXT();
-do_lastore:
+TARGET(lastore)
     {
 	_jc_long_array *array;
 	jint index;
@@ -1299,15 +1300,15 @@
 	array->elems[index] = STACKJ(2);
 	NEXT();
     }
-do_lcmp:
+TARGET(lcmp)
 	POP2(2);
 	PUSHI(_JC_LCMP(STACKJ(0), STACKJ(2)));
 	NEXT();
-do_ldc:
+TARGET(ldc)
 	memcpy(sp, &INFO(constant), sizeof(_jc_word));
 	POP(-1);
 	NEXT();
-do_ldc_string:
+TARGET(ldc_string)
     {
 	_jc_resolve_info rinfo;
 	_jc_object *string;
@@ -1336,28 +1337,28 @@
 	/* Now execute it again */
 	JUMP(pc);
     }
-do_ldc2_w:
+TARGET(ldc2_w)
 	memcpy(sp, &INFO(constant), 2 * sizeof(_jc_word));
 	POP(-2);
 	NEXT();
-do_ldiv:
+TARGET(ldiv)
 	POP2(2);
 	if (STACKJ(2) == 0)
 		goto arithmetic_exception;
 	PUSHJ(STACKJ(0) / STACKJ(2));
 	NEXT();
-do_lload:
+TARGET(lload)
 	PUSHJ(LOCALJ(INFO(local)));
 	NEXT();
-do_lmul:
+TARGET(lmul)
 	POP2(2);
 	PUSHJ(STACKJ(0) * STACKJ(2));
 	NEXT();
-do_lneg:
+TARGET(lneg)
 	POP2(1);
 	PUSHJ(-STACKJ(0));
 	NEXT();
-do_lookupswitch:
+TARGET(lookupswitch)
     {
 	_jc_lookupswitch *const lsw = INFO(lookupswitch);
 	_jc_lookup *entry;
@@ -1369,59 +1370,59 @@
 	    sizeof(*lsw->pairs), _jc_lookup_compare);
 	JUMP(entry != NULL ? entry->target : lsw->default_target);
     }
-do_lor:
+TARGET(lor)
 	POP2(2);
 	PUSHJ(STACKJ(0) | STACKJ(2));
 	NEXT();
-do_lrem:
+TARGET(lrem)
 	POP2(2);
 	if (STACKJ(2) == 0)
 		goto arithmetic_exception;
 	PUSHJ(STACKJ(0) % STACKJ(2));
 	NEXT();
-do_lreturn:
+TARGET(lreturn)
 	POP2(1);
 	env->retval.j = STACKJ(0);
 	goto done;
-do_lshl:
+TARGET(lshl)
 	POP(3);
 	PUSHJ(STACKJ(0) << (STACKI(2) & 0x3f));
 	NEXT();
-do_lshr:
+TARGET(lshr)
 	POP(3);
 	PUSHJ(_JC_LSHR(STACKJ(0), STACKI(2)));
 	NEXT();
-do_lstore:
+TARGET(lstore)
 	POP2(1);
 	LOCALJ(INFO(local)) = STACKJ(0);
 	NEXT();
-do_lsub:
+TARGET(lsub)
 	POP2(2);
 	PUSHJ(STACKJ(0) - STACKJ(2));
 	NEXT();
-do_lushr:
+TARGET(lushr)
 	POP(3);
 	PUSHJ(_JC_LUSHR(STACKJ(0), STACKI(2)));
 	NEXT();
-do_lxor:
+TARGET(lxor)
 	POP2(2);
 	PUSHJ(STACKJ(0) ^ STACKJ(2));
 	NEXT();
-do_monitorenter:
+TARGET(monitorenter)
 	POP(1);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	if (_jc_lock_object(env, STACKL(0)) != JNI_OK)
 		goto exception;
 	NEXT();
-do_monitorexit:
+TARGET(monitorexit)
 	POP(1);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	if (_jc_unlock_object(env, STACKL(0)) != JNI_OK)
 		goto exception;
 	NEXT();
-do_multianewarray:
+TARGET(multianewarray)
     {
 	_jc_multianewarray *const info = &INFO(multianewarray);
 	_jc_array *array;
@@ -1438,7 +1439,7 @@
 	PUSHL((_jc_object *)array);
 	NEXT();
     }
-do_new:
+TARGET(new)
     {
 	_jc_object *obj;
 
@@ -1447,7 +1448,7 @@
 	PUSHL(obj);
 	NEXT();
     }
-do_newarray:
+TARGET(newarray)
     {
 	_jc_array *array;
 
@@ -1457,70 +1458,70 @@
 	PUSHL((_jc_object *)array);
 	NEXT();
     }
-do_nop:
+TARGET(nop)
 	NEXT();
-do_pop:
+TARGET(pop)
 	POP(1);
 	NEXT();
-do_pop2:
+TARGET(pop2)
 	POP2(1);
 	NEXT();
-do_putfield_z:
+TARGET(putfield_z)
 	POP(2);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jboolean *)((char *)STACKL(0)
 	    + INFO(field).u.offset) = STACKI(1) & 0x01;
 	NEXT();
-do_putfield_b:
+TARGET(putfield_b)
 	POP(2);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jbyte *)((char *)STACKL(0) + INFO(field).u.offset) = STACKI(1);
 	NEXT();
-do_putfield_c:
+TARGET(putfield_c)
 	POP(2);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jchar *)((char *)STACKL(0) + INFO(field).u.offset) = STACKI(1);
 	NEXT();
-do_putfield_s:
+TARGET(putfield_s)
 	POP(2);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jshort *)((char *)STACKL(0) + INFO(field).u.offset) = STACKI(1);
 	NEXT();
-do_putfield_i:
+TARGET(putfield_i)
 	POP(2);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jint *)((char *)STACKL(0) + INFO(field).u.offset) = STACKI(1);
 	NEXT();
-do_putfield_j:
+TARGET(putfield_j)
 	POP(3);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jlong *)((char *)STACKL(0) + INFO(field).u.offset) = STACKJ(1);
 	NEXT();
-do_putfield_f:
+TARGET(putfield_f)
 	POP(2);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jfloat *)((char *)STACKL(0) + INFO(field).u.offset) = STACKF(1);
 	NEXT();
-do_putfield_d:
+TARGET(putfield_d)
 	POP(3);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(jdouble *)((char *)STACKL(0) + INFO(field).u.offset) = STACKD(1);
 	NEXT();
-do_putfield_l:
+TARGET(putfield_l)
 	POP(2);
 	if (STACKL(0) == NULL)
 		goto null_pointer_exception;
 	*(_jc_object **)((char *)STACKL(0) + INFO(field).u.offset) = STACKL(1);
 	NEXT();
-do_putstatic:
+TARGET(putstatic)
     {
 	_jc_field *const field = INFO(field).field;
 
@@ -1565,47 +1566,47 @@
 	}
 	JUMP(pc);
     }
-do_putstatic_z:
+TARGET(putstatic_z)
 	POP(1);
 	*(jboolean *)INFO(field).u.data = STACKI(0) & 0x01;
 	NEXT();
-do_putstatic_b:
+TARGET(putstatic_b)
 	POP(1);
 	*(jbyte *)INFO(field).u.data = STACKI(0);
 	NEXT();
-do_putstatic_c:
+TARGET(putstatic_c)
 	POP(1);
 	*(jchar *)INFO(field).u.data = STACKI(0);
 	NEXT();
-do_putstatic_s:
+TARGET(putstatic_s)
 	POP(1);
 	*(jshort *)INFO(field).u.data = STACKI(0);
 	NEXT();
-do_putstatic_i:
+TARGET(putstatic_i)
 	POP(1);
 	*(jint *)INFO(field).u.data = STACKI(0);
 	NEXT();
-do_putstatic_j:
+TARGET(putstatic_j)
 	POP2(1);
 	*(jlong *)INFO(field).u.data = STACKJ(0);
 	NEXT();
-do_putstatic_f:
+TARGET(putstatic_f)
 	POP(1);
 	*(jfloat *)INFO(field).u.data = STACKF(0);
 	NEXT();
-do_putstatic_d:
+TARGET(putstatic_d)
 	POP2(1);
 	*(jdouble *)INFO(field).u.data = STACKD(0);
 	NEXT();
-do_putstatic_l:
+TARGET(putstatic_l)
 	POP(1);
 	*(_jc_object **)INFO(field).u.data = STACKL(0);
 	NEXT();
-do_ret:
+TARGET(ret)
 	JUMP(LOCALI(INFO(local)));
-do_return:
+TARGET(return)
 	goto done;
-do_saload:
+TARGET(saload)
     {
 	_jc_short_array *array;
 	jint index;
@@ -1617,7 +1618,7 @@
 	PUSHI(array->elems[index]);
 	NEXT();
     }
-do_sastore:
+TARGET(sastore)
     {
 	_jc_short_array *array;
 	jint index;
@@ -1629,7 +1630,7 @@
 	array->elems[index] = STACKI(2);
 	NEXT();
     }
-do_swap:
+TARGET(swap)
     {
 	jint temp;
 
@@ -1638,7 +1639,7 @@
 	STACKI(-1) = temp;
 	NEXT();
     }
-do_tableswitch:
+TARGET(tableswitch)
     {
 	_jc_tableswitch *const tsw = INFO(tableswitch);
 	jint key;