Search in sources :

Example 6 with DalvInsnList

use of com.android.dx.dex.code.DalvInsnList in project J2ME-Loader by nikita36078.

the class DebugInfoDecoder method validateEncode.

/**
 * Validates an encoded debug info stream against data used to encode it,
 * throwing an exception if they do not match. Used to validate the
 * encoder.
 *
 * @param info encoded debug info
 * @param file {@code non-null;} file to refer to during decoding
 * @param ref {@code non-null;} method whose info is being decoded
 * @param code {@code non-null;} original code object that was encoded
 * @param isStatic whether the method is static
 */
public static void validateEncode(byte[] info, DexFile file, CstMethodRef ref, DalvCode code, boolean isStatic) {
    PositionList pl = code.getPositions();
    LocalList ll = code.getLocals();
    DalvInsnList insns = code.getInsns();
    int codeSize = insns.codeSize();
    int countRegisters = insns.getRegistersSize();
    try {
        validateEncode0(info, codeSize, countRegisters, isStatic, ref, file, pl, ll);
    } catch (RuntimeException ex) {
        System.err.println("instructions:");
        insns.debugPrint(System.err, "  ", true);
        System.err.println("local list:");
        ll.debugPrint(System.err, "  ");
        throw ExceptionWithContext.withContext(ex, "while processing " + ref.toHuman());
    }
}
Also used : LocalList(com.android.dx.dex.code.LocalList) DalvInsnList(com.android.dx.dex.code.DalvInsnList) PositionList(com.android.dx.dex.code.PositionList)

Aggregations

DalvInsnList (com.android.dx.dex.code.DalvInsnList)6 LocalList (com.android.dx.dex.code.LocalList)4 PositionList (com.android.dx.dex.code.PositionList)4