#include "java.h"#include "javaisa.h" enum { XLOAD = 0x1 << 0, XSTORE = 0x1 << 1}; static uchar javatbl[MAXJAVA]; static intopcode(Jinst *j){ return (j->op == Jwide) ? j->u.w.op : j->op;} intisload(Jinst *j){ return javatbl[opcode(j)] & XLOAD;} intisstore(Jinst *j){ return javatbl[opcode(j)] & XSTORE;} static uchar javatbl[MAXJAVA] = { 0, /* Jnop */ XLOAD, /* Jaconst_null */ XLOAD, /* Jiconst_m1 */ XLOAD, /* Jiconst_0 */ XLOAD, /* Jiconst_1 */ XLOAD, /* Jiconst_2 */ XLOAD, /* Jiconst_3 */ XLOAD, /* Jiconst_4 */ XLOAD, /* Jiconst_5 */ XLOAD, /* Jlconst_0 */ XLOAD, /* Jlconst_1 */ XLOAD, /* Jfconst_0 */ XLOAD, /* Jfconst_1 */ XLOAD, /* Jfconst_2 */ XLOAD, /* Jdconst_0 */ XLOAD, /* Jdconst_1 */ XLOAD, /* Jbipush */ XLOAD, /* Jsipush */ XLOAD, /* Jldc */ XLOAD, /* Jldc_w */ XLOAD, /* Jldc2_w */ XLOAD, /* Jiload */ XLOAD, /* Jlload */ XLOAD, /* Jfload */ XLOAD, /* Jdload */ XLOAD, /* Jaload */ XLOAD, /* Jiload_0 */ XLOAD, /* Jiload_1 */ XLOAD, /* Jiload_2 */ XLOAD, /* Jiload_3 */ XLOAD, /* Jlload_0 */ XLOAD, /* Jlload_1 */ XLOAD, /* Jlload_2 */ XLOAD, /* Jlload_3 */ XLOAD, /* Jfload_0 */ XLOAD, /* Jfload_1 */ XLOAD, /* Jfload_2 */ XLOAD, /* Jfload_3 */ XLOAD, /* Jdload_0 */ XLOAD, /* Jdload_1 */ XLOAD, /* Jdload_2 */ XLOAD, /* Jdload_3 */ XLOAD, /* Jaload_0 */ XLOAD, /* Jaload_1 */ XLOAD, /* Jaload_2 */ XLOAD, /* Jaload_3 */ 0, /* Jiaload */ 0, /* Jlaload */ 0, /* Jfaload */ 0, /* Jdaload */ 0, /* Jaaload */ 0, /* Jbaload */ 0, /* Jcaload */ 0, /* Jsaload */ XSTORE, /* Jistore */ XSTORE, /* Jlstore */ XSTORE, /* Jfstore */ XSTORE, /* Jdstore */ XSTORE, /* Jastore */ XSTORE, /* Jistore_0 */ XSTORE, /* Jistore_1 */ XSTORE, /* Jistore_2 */ XSTORE, /* Jistore_3 */ XSTORE, /* Jlstore_0 */ XSTORE, /* Jlstore_1 */ XSTORE, /* Jlstore_2 */ XSTORE, /* Jlstore_3 */ XSTORE, /* Jfstore_0 */ XSTORE, /* Jfstore_1 */ XSTORE, /* Jfstore_2 */ XSTORE, /* Jfstore_3 */ XSTORE, /* Jdstore_0 */ XSTORE, /* Jdstore_1 */ XSTORE, /* Jdstore_2 */ XSTORE, /* Jdstore_3 */ XSTORE, /* Jastore_0 */ XSTORE, /* Jastore_1 */ XSTORE, /* Jastore_2 */ XSTORE, /* Jastore_3 */ 0, /* Jiastore */ 0, /* Jlastore */ 0, /* Jfastore */ 0, /* Jdastore */ 0, /* Jaastore */ 0, /* Jbastore */ 0, /* Jcastore */ 0, /* Jsastore */ 0, /* Jpop */ 0, /* Jpop2 */ 0, /* Jdup */ 0, /* Jdup_x1 */ 0, /* Jdup_x2 */ 0, /* Jdup2 */ 0, /* Jdup2_x1 */ 0, /* Jdup2_x2 */ 0, /* Jswap */ 0, /* Jiadd */ 0, /* Jladd */ 0, /* Jfadd */ 0, /* Jdadd */ 0, /* Jisub */ 0, /* Jlsub */ 0, /* Jfsub */ 0, /* Jdsub */ 0, /* Jimul */ 0, /* Jlmul */ 0, /* Jfmul */ 0, /* Jdmul */ 0, /* Jidiv */ 0, /* Jldiv */ 0, /* Jfdiv */ 0, /* Jddiv */ 0, /* Jirem */ 0, /* Jlrem */ 0, /* Jfrem */ 0, /* Jdrem */ 0, /* Jineg */ 0, /* Jlneg */ 0, /* Jfneg */ 0, /* Jdneg */ 0, /* Jishl */ 0, /* Jlshl */ 0, /* Jishr */ 0, /* Jlshr */ 0, /* Jiushr */ 0, /* Jlushr */ 0, /* Jiand */ 0, /* Jland */ 0, /* Jior */ 0, /* Jlor */ 0, /* Jixor */ 0, /* Jlxor */ 0, /* Jiinc */ 0, /* Ji2l */ 0, /* Ji2f */ 0, /* Ji2d */ 0, /* Jl2i */ 0, /* Jl2f */ 0, /* Jl2d */ 0, /* Jf2i */ 0, /* Jf2l */ 0, /* Jf2d */ 0, /* Jd2i */ 0, /* Jd2l */ 0, /* Jd2f */ 0, /* Ji2b */ 0, /* Ji2c */ 0, /* Ji2s */ 0, /* Jlcmp */ 0, /* Jfcmpl */ 0, /* Jfcmpg */ 0, /* Jdcmpl */ 0, /* Jdcmpg */ 0, /* Jifeq */ 0, /* Jifne */ 0, /* Jiflt */ 0, /* Jifge */ 0, /* Jifgt */ 0, /* Jifle */ 0, /* Jif_icmpeq */ 0, /* Jif_icmpne */ 0, /* Jif_icmplt */ 0, /* Jif_icmpge */ 0, /* Jif_icmpgt */ 0, /* Jif_icmple */ 0, /* Jif_acmpeq */ 0, /* Jif_acmpne */ 0, /* Jgoto */ 0, /* Jjsr */ 0, /* Jret */ 0, /* Jtableswitch */ 0, /* Jlookupswitch */ 0, /* Jireturn */ 0, /* Jlreturn */ 0, /* Jfreturn */ 0, /* Jdreturn */ 0, /* Jareturn */ 0, /* Jreturn */ 0, /* Jgetstatic */ 0, /* Jputstatic */ 0, /* Jgetfield */ 0, /* Jputfield */ 0, /* Jinvokevirtual */ 0, /* Jinvokespecial */ 0, /* Jinvokestatic */ 0, /* Jinvokeinterface*/ 0, /* Jxxxunusedxxx */ 0, /* Jnew */ 0, /* Jnewarray */ 0, /* Janewarray */ 0, /* Jarraylength */ 0, /* Jathrow */ 0, /* Jcheckcast */ 0, /* Jinstanceof */ 0, /* Jmonitorenter */ 0, /* Jmonitorexit */ 0, /* Jwide */ 0, /* Jmultianewarray */ 0, /* Jifnull */ 0, /* Jifnonnull */ 0, /* Jgoto_w */ 0, /* Jjsr_w */};
#include "java.h"
#include "javaisa.h"
enum {
XLOAD = 0x1 << 0,
XSTORE = 0x1 << 1
};
static uchar javatbl[MAXJAVA];
static int
opcode(Jinst *j)
{
return (j->op == Jwide) ? j->u.w.op : j->op;
}
int
isload(Jinst *j)
{
return javatbl[opcode(j)] & XLOAD;
}
int
isstore(Jinst *j)
{
return javatbl[opcode(j)] & XSTORE;
}
static uchar javatbl[MAXJAVA] = {
0, /* Jnop */
XLOAD, /* Jaconst_null */
XLOAD, /* Jiconst_m1 */
XLOAD, /* Jiconst_0 */
XLOAD, /* Jiconst_1 */
XLOAD, /* Jiconst_2 */
XLOAD, /* Jiconst_3 */
XLOAD, /* Jiconst_4 */
XLOAD, /* Jiconst_5 */
XLOAD, /* Jlconst_0 */
XLOAD, /* Jlconst_1 */
XLOAD, /* Jfconst_0 */
XLOAD, /* Jfconst_1 */
XLOAD, /* Jfconst_2 */
XLOAD, /* Jdconst_0 */
XLOAD, /* Jdconst_1 */
XLOAD, /* Jbipush */
XLOAD, /* Jsipush */
XLOAD, /* Jldc */
XLOAD, /* Jldc_w */
XLOAD, /* Jldc2_w */
XLOAD, /* Jiload */
XLOAD, /* Jlload */
XLOAD, /* Jfload */
XLOAD, /* Jdload */
XLOAD, /* Jaload */
XLOAD, /* Jiload_0 */
XLOAD, /* Jiload_1 */
XLOAD, /* Jiload_2 */
XLOAD, /* Jiload_3 */
XLOAD, /* Jlload_0 */
XLOAD, /* Jlload_1 */
XLOAD, /* Jlload_2 */
XLOAD, /* Jlload_3 */
XLOAD, /* Jfload_0 */
XLOAD, /* Jfload_1 */
XLOAD, /* Jfload_2 */
XLOAD, /* Jfload_3 */
XLOAD, /* Jdload_0 */
XLOAD, /* Jdload_1 */
XLOAD, /* Jdload_2 */
XLOAD, /* Jdload_3 */
XLOAD, /* Jaload_0 */
XLOAD, /* Jaload_1 */
XLOAD, /* Jaload_2 */
XLOAD, /* Jaload_3 */
0, /* Jiaload */
0, /* Jlaload */
0, /* Jfaload */
0, /* Jdaload */
0, /* Jaaload */
0, /* Jbaload */
0, /* Jcaload */
0, /* Jsaload */
XSTORE, /* Jistore */
XSTORE, /* Jlstore */
XSTORE, /* Jfstore */
XSTORE, /* Jdstore */
XSTORE, /* Jastore */
XSTORE, /* Jistore_0 */
XSTORE, /* Jistore_1 */
XSTORE, /* Jistore_2 */
XSTORE, /* Jistore_3 */
XSTORE, /* Jlstore_0 */
XSTORE, /* Jlstore_1 */
XSTORE, /* Jlstore_2 */
XSTORE, /* Jlstore_3 */
XSTORE, /* Jfstore_0 */
XSTORE, /* Jfstore_1 */
XSTORE, /* Jfstore_2 */
XSTORE, /* Jfstore_3 */
XSTORE, /* Jdstore_0 */
XSTORE, /* Jdstore_1 */
XSTORE, /* Jdstore_2 */
XSTORE, /* Jdstore_3 */
XSTORE, /* Jastore_0 */
XSTORE, /* Jastore_1 */
XSTORE, /* Jastore_2 */
XSTORE, /* Jastore_3 */
0, /* Jiastore */
0, /* Jlastore */
0, /* Jfastore */
0, /* Jdastore */
0, /* Jaastore */
0, /* Jbastore */
0, /* Jcastore */
0, /* Jsastore */
0, /* Jpop */
0, /* Jpop2 */
0, /* Jdup */
0, /* Jdup_x1 */
0, /* Jdup_x2 */
0, /* Jdup2 */
0, /* Jdup2_x1 */
0, /* Jdup2_x2 */
0, /* Jswap */
0, /* Jiadd */
0, /* Jladd */
0, /* Jfadd */
0, /* Jdadd */
0, /* Jisub */
0, /* Jlsub */
0, /* Jfsub */
0, /* Jdsub */
0, /* Jimul */
0, /* Jlmul */
0, /* Jfmul */
0, /* Jdmul */
0, /* Jidiv */
0, /* Jldiv */
0, /* Jfdiv */
0, /* Jddiv */
0, /* Jirem */
0, /* Jlrem */
0, /* Jfrem */
0, /* Jdrem */
0, /* Jineg */
0, /* Jlneg */
0, /* Jfneg */
0, /* Jdneg */
0, /* Jishl */
0, /* Jlshl */
0, /* Jishr */
0, /* Jlshr */
0, /* Jiushr */
0, /* Jlushr */
0, /* Jiand */
0, /* Jland */
0, /* Jior */
0, /* Jlor */
0, /* Jixor */
0, /* Jlxor */
0, /* Jiinc */
0, /* Ji2l */
0, /* Ji2f */
0, /* Ji2d */
0, /* Jl2i */
0, /* Jl2f */
0, /* Jl2d */
0, /* Jf2i */
0, /* Jf2l */
0, /* Jf2d */
0, /* Jd2i */
0, /* Jd2l */
0, /* Jd2f */
0, /* Ji2b */
0, /* Ji2c */
0, /* Ji2s */
0, /* Jlcmp */
0, /* Jfcmpl */
0, /* Jfcmpg */
0, /* Jdcmpl */
0, /* Jdcmpg */
0, /* Jifeq */
0, /* Jifne */
0, /* Jiflt */
0, /* Jifge */
0, /* Jifgt */
0, /* Jifle */
0, /* Jif_icmpeq */
0, /* Jif_icmpne */
0, /* Jif_icmplt */
0, /* Jif_icmpge */
0, /* Jif_icmpgt */
0, /* Jif_icmple */
0, /* Jif_acmpeq */
0, /* Jif_acmpne */
0, /* Jgoto */
0, /* Jjsr */
0, /* Jret */
0, /* Jtableswitch */
0, /* Jlookupswitch */
0, /* Jireturn */
0, /* Jlreturn */
0, /* Jfreturn */
0, /* Jdreturn */
0, /* Jareturn */
0, /* Jreturn */
0, /* Jgetstatic */
0, /* Jputstatic */
0, /* Jgetfield */
0, /* Jputfield */
0, /* Jinvokevirtual */
0, /* Jinvokespecial */
0, /* Jinvokestatic */
0, /* Jinvokeinterface*/
0, /* Jxxxunusedxxx */
0, /* Jnew */
0, /* Jnewarray */
0, /* Janewarray */
0, /* Jarraylength */
0, /* Jathrow */
0, /* Jcheckcast */
0, /* Jinstanceof */
0, /* Jmonitorenter */
0, /* Jmonitorexit */
0, /* Jwide */
0, /* Jmultianewarray */
0, /* Jifnull */
0, /* Jifnonnull */
0, /* Jgoto_w */
0, /* Jjsr_w */
};