Search in sources :

Example 1 with CstMemberRef

use of com.android.dx.rop.cst.CstMemberRef in project J2ME-Loader by nikita36078.

the class OutputFinisher method assignIndices.

/**
 * Helper for {@link #assignIndices} which does assignment for one
 * instruction.
 *
 * @param insn {@code non-null;} the instruction
 * @param callback {@code non-null;} the callback
 */
private static void assignIndices(MultiCstInsn insn, DalvCode.AssignIndicesCallback callback) {
    for (int i = 0; i < insn.getNumberOfConstants(); ++i) {
        Constant cst = insn.getConstant(i);
        int index = callback.getIndex(cst);
        insn.setIndex(i, index);
        if (cst instanceof CstMemberRef) {
            CstMemberRef member = (CstMemberRef) cst;
            CstType definer = member.getDefiningClass();
            index = callback.getIndex(definer);
            insn.setClassIndex(index);
        }
    }
}
Also used : CstMemberRef(com.android.dx.rop.cst.CstMemberRef) Constant(com.android.dx.rop.cst.Constant) CstType(com.android.dx.rop.cst.CstType)

Example 2 with CstMemberRef

use of com.android.dx.rop.cst.CstMemberRef in project J2ME-Loader by nikita36078.

the class OutputFinisher method assignIndices.

/**
 * Helper for {@link #assignIndices} which does assignment for one
 * instruction.
 *
 * @param insn {@code non-null;} the instruction
 * @param callback {@code non-null;} the callback
 */
private static void assignIndices(CstInsn insn, DalvCode.AssignIndicesCallback callback) {
    Constant cst = insn.getConstant();
    int index = callback.getIndex(cst);
    if (index >= 0) {
        insn.setIndex(index);
    }
    if (cst instanceof CstMemberRef) {
        CstMemberRef member = (CstMemberRef) cst;
        CstType definer = member.getDefiningClass();
        index = callback.getIndex(definer);
        // TODO(oth): what scenarios is this guard valid under? Is it not just an error?
        if (index >= 0) {
            insn.setClassIndex(index);
        }
    }
}
Also used : CstMemberRef(com.android.dx.rop.cst.CstMemberRef) Constant(com.android.dx.rop.cst.Constant) CstType(com.android.dx.rop.cst.CstType)

Example 3 with CstMemberRef

use of com.android.dx.rop.cst.CstMemberRef in project buck by facebook.

the class OutputFinisher method assignIndices.

/**
     * Helper for {@link #assignIndices} which does assignment for one
     * instruction.
     *
     * @param insn {@code non-null;} the instruction
     * @param callback {@code non-null;} the callback
     */
private static void assignIndices(CstInsn insn, DalvCode.AssignIndicesCallback callback) {
    Constant cst = insn.getConstant();
    int index = callback.getIndex(cst);
    if (index >= 0) {
        insn.setIndex(index);
    }
    if (cst instanceof CstMemberRef) {
        CstMemberRef member = (CstMemberRef) cst;
        CstType definer = member.getDefiningClass();
        index = callback.getIndex(definer);
        if (index >= 0) {
            insn.setClassIndex(index);
        }
    }
}
Also used : CstMemberRef(com.android.dx.rop.cst.CstMemberRef) Constant(com.android.dx.rop.cst.Constant) CstType(com.android.dx.rop.cst.CstType)

Aggregations

Constant (com.android.dx.rop.cst.Constant)3 CstMemberRef (com.android.dx.rop.cst.CstMemberRef)3 CstType (com.android.dx.rop.cst.CstType)3