for (int i = 0; i < arity; ++i) genLoad(ctx, args[i], resType);
if ((prim == Primitive.LSL) || (prim == Primitive.LSR) || (prim == Primitive.ASR)) { genLoad(ctx, args[0], resType); genLoad(ctx, args[1], JType.INT); } else for (int i = 0; i < arity; ++i) genLoad(ctx, args[i], resType);
    protected void genArithPrim(Context ctx,                                Primitive prim,                                Tree[] args,                                JType resType,                                JType expectedType) {        int arity = args.length;        int resTypeIdx = getTypeIndex(resType);        for (int i = 0; i < arity; ++i)            genLoad(ctx, args[i], resType);        if (prim == Primitive.NOT) {            if (resType == JType.LONG) {                ctx.code.emitPUSH(-1L);                ctx.code.emitLXOR();            } else {                assert resType == JType.INT;                ctx.code.emitPUSH(-1);                ctx.code.emitIXOR();            }        } else {            assert arithPrimMap.containsKey(prim);            JOpcode primInst = ((JOpcode[])arithPrimMap.get(prim))[resTypeIdx];            if (primInst != null)                ctx.code.emit(primInst);        }    }