@Nonnull public Opcode getAndCheckDeodexedOpcode(@Nonnull String fieldType, @Nonnull Opcode odexedOpcode) { FieldOpcode fieldOpcode = opcodeMap[isGet(odexedOpcode)?GET:PUT] [isStatic(odexedOpcode)?STATIC:INSTANCE] [getTypeIndex(fieldType.charAt(0))]; if (!isCompatible(odexedOpcode, fieldOpcode.type)) { throw new AnalysisException(String.format("Incorrect field type \"%s\" for %s", fieldType, odexedOpcode.name)); } return fieldOpcode.normalOpcode; }
public OdexedFieldInstructionMapper(boolean isArt) { FieldOpcode[] opcodes; if (isArt) { opcodes = artFieldOpcodes; } else { opcodes = dalvikFieldOpcodes; } for (FieldOpcode fieldOpcode: opcodes) { opcodeMap[isGet(fieldOpcode.normalOpcode)?GET:PUT] [isStatic(fieldOpcode.normalOpcode)?STATIC:INSTANCE] [getTypeIndex(fieldOpcode.type)] = fieldOpcode; if (fieldOpcode.quickOpcode != null) { opcodeValueTypeMap.put(fieldOpcode.quickOpcode, getValueType(fieldOpcode.type)); } if (fieldOpcode.volatileOpcode != null) { opcodeValueTypeMap.put(fieldOpcode.volatileOpcode, getValueType(fieldOpcode.type)); } } }
@Nonnull public Opcode getAndCheckDeodexedOpcode(@Nonnull String fieldType, @Nonnull Opcode odexedOpcode) { FieldOpcode fieldOpcode = opcodeMap[isGet(odexedOpcode)?GET:PUT] [isStatic(odexedOpcode)?STATIC:INSTANCE] [getTypeIndex(fieldType.charAt(0))]; if (!isCompatible(odexedOpcode, fieldOpcode.type)) { throw new AnalysisException(String.format("Incorrect field type \"%s\" for %s", fieldType, odexedOpcode.name)); } return fieldOpcode.normalOpcode; }
public OdexedFieldInstructionMapper(boolean isArt) { FieldOpcode[] opcodes; if (isArt) { opcodes = artFieldOpcodes; } else { opcodes = dalvikFieldOpcodes; } for (FieldOpcode fieldOpcode: opcodes) { opcodeMap[isGet(fieldOpcode.normalOpcode)?GET:PUT] [isStatic(fieldOpcode.normalOpcode)?STATIC:INSTANCE] [getTypeIndex(fieldOpcode.type)] = fieldOpcode; if (fieldOpcode.quickOpcode != null) { opcodeValueTypeMap.put(fieldOpcode.quickOpcode, getValueType(fieldOpcode.type)); } if (fieldOpcode.volatileOpcode != null) { opcodeValueTypeMap.put(fieldOpcode.volatileOpcode, getValueType(fieldOpcode.type)); } } }