/** * Decodes the debug info sequence. */ public void decode() { try { decode0(); } catch (Exception ex) { throw ExceptionWithContext.withContext(ex, "...while decoding debug info"); } }
line = readUnsignedLeb128(bs); int szParams = readUnsignedLeb128(bs); StdTypeList params = desc.getParameterTypes(); int curReg = getParamBase(); int nameIdx = readStringIndex(bs); int reg = readUnsignedLeb128(bs); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, 0); int reg = readUnsignedLeb128(bs); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); int sigIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, sigIdx); int reg = readUnsignedLeb128(bs); LocalEntry prevle; LocalEntry le; int reg = readUnsignedLeb128(bs); LocalEntry prevle; LocalEntry le; address += readUnsignedLeb128(bs);
DexFile file, PositionList pl, LocalList ll) { DebugInfoDecoder decoder = new DebugInfoDecoder(info, codeSize, countRegisters, isStatic, ref, file); decoder.decode(); List<PositionEntry> decodedEntries = decoder.getPositionList(); List<LocalEntry> decodedLocals = decoder.getLocals(); int thisStringIdx = decoder.thisStringIdx; int decodedSz = decodedLocals.size(); int paramBase = decoder.getParamBase();
int szParams = Leb128.readUnsignedLeb128(bs); StdTypeList params = desc.getParameterTypes(); int curReg = getParamBase(); LocalEntry le; int nameIdx = readStringIndex(bs); case DBG_START_LOCAL: { int reg = Leb128.readUnsignedLeb128(bs); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, 0); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); int sigIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, sigIdx);
/** * 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()); } }
DexFile file, PositionList pl, LocalList ll) { DebugInfoDecoder decoder = new DebugInfoDecoder(info, codeSize, countRegisters, isStatic, ref, file); decoder.decode(); List<PositionEntry> decodedEntries = decoder.getPositionList(); List<LocalEntry> decodedLocals = decoder.getLocals(); int thisStringIdx = decoder.thisStringIdx; int decodedSz = decodedLocals.size(); int paramBase = decoder.getParamBase();
int szParams = Leb128Utils.readUnsignedLeb128(bs); StdTypeList params = desc.getParameterTypes(); int curReg = getParamBase(); LocalEntry le; int nameIdx = readStringIndex(bs); case DBG_START_LOCAL: { int reg = Leb128Utils.readUnsignedLeb128(bs); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, 0); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); int sigIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, sigIdx);
/** * 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()); } }
DexFile file, PositionList pl, LocalList ll) { DebugInfoDecoder decoder = new DebugInfoDecoder(info, codeSize, countRegisters, isStatic, ref, file); decoder.decode(); List<PositionEntry> decodedEntries = decoder.getPositionList(); List<LocalEntry> decodedLocals = decoder.getLocals(); int thisStringIdx = decoder.thisStringIdx; int decodedSz = decodedLocals.size(); int paramBase = decoder.getParamBase();
int szParams = Leb128.readUnsignedLeb128(bs); StdTypeList params = desc.getParameterTypes(); int curReg = getParamBase(); LocalEntry le; int nameIdx = readStringIndex(bs); case DBG_START_LOCAL: { int reg = Leb128.readUnsignedLeb128(bs); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, 0); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); int sigIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, sigIdx);
/** * Decodes the debug info sequence. */ public void decode() { try { decode0(); } catch (Exception ex) { throw ExceptionWithContext.withContext(ex, "...while decoding debug info"); } }
/** * 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()); } }
DexFile file, PositionList pl, LocalList ll) { DebugInfoDecoder decoder = new DebugInfoDecoder(info, codeSize, countRegisters, isStatic, ref, file); decoder.decode(); List<PositionEntry> decodedEntries = decoder.getPositionList(); List<LocalEntry> decodedLocals = decoder.getLocals(); int thisStringIdx = decoder.thisStringIdx; int decodedSz = decodedLocals.size(); int paramBase = decoder.getParamBase();
int szParams = Leb128.readUnsignedLeb128(bs); StdTypeList params = desc.getParameterTypes(); int curReg = getParamBase(); LocalEntry le; int nameIdx = readStringIndex(bs); case DBG_START_LOCAL: { int reg = Leb128.readUnsignedLeb128(bs); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, 0); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); int sigIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, sigIdx);
/** * Decodes the debug info sequence. */ public void decode() { try { decode0(); } catch (Exception ex) { throw ExceptionWithContext.withContext(ex, "...while decoding debug info"); } }
/** * 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()); } }
DexFile file, PositionList pl, LocalList ll) { DebugInfoDecoder decoder = new DebugInfoDecoder(info, codeSize, countRegisters, isStatic, ref, file); decoder.decode(); List<PositionEntry> decodedEntries = decoder.getPositionList(); List<LocalEntry> decodedLocals = decoder.getLocals(); int thisStringIdx = decoder.thisStringIdx; int decodedSz = decodedLocals.size(); int paramBase = decoder.getParamBase();
int szParams = Leb128Utils.readUnsignedLeb128(bs); StdTypeList params = desc.getParameterTypes(); int curReg = getParamBase(); LocalEntry le; int nameIdx = readStringIndex(bs); case DBG_START_LOCAL: { int reg = Leb128Utils.readUnsignedLeb128(bs); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, 0); int nameIdx = readStringIndex(bs); int typeIdx = readStringIndex(bs); int sigIdx = readStringIndex(bs); LocalEntry le = new LocalEntry( address, true, reg, nameIdx, typeIdx, sigIdx);
/** * Decodes the debug info sequence. */ public void decode() { try { decode0(); } catch (Exception ex) { throw ExceptionWithContext.withContext(ex, "...while decoding debug info"); } }
/** * 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()); } }