case TC_INTERFACE:
wrapperClassName = null;
wrapperSignature = null;
break;
default:
throw new InternalError("Unexpected return type");//NOI18N
}
// fetch this object's field
insn = insn.append(Insn.create(opc_aload_0));
insn = insn.append(
Insn.create(
opc_getfield,
pool.addFieldRef(
theClass.asString(),
act.fieldName(),
act.typeDescriptor())));
// wrap the field value if primitive
switch(act.getMethodReturn()) {
case T_DOUBLE:
case T_LONG:
case T_FLOAT:
case T_BOOLEAN:
case T_CHAR:
case T_BYTE:
case T_SHORT:
case T_INT:
insn = insn.append(
Insn.create(
opc_invokespecial,
pool.addMethodRef(
wrapperClassName,
"<init>",//NOI18N
wrapperSignature)));
break;
case TC_STRING:
case TC_OBJECT:
case TC_INTERFACE:
break;
default:
throw new InternalError("Unexpected return type");//NOI18N
}
// return the object (break)
insn = insn.append(Insn.create(opc_areturn));
}