@Nonnull private BuilderInstruction35c newBuilderInstruction35c(@Nonnull Instruction35c instruction) { return new BuilderInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), convertReference(instruction.getReference())); }
private boolean analyzeInvokeVirtual(@Nonnull AnalyzedInstruction analyzedInstruction, boolean isRange) { MethodReference targetMethod; if (!normalizeVirtualMethods) { return true; } if (isRange) { Instruction3rc instruction = (Instruction3rc)analyzedInstruction.instruction; targetMethod = (MethodReference)instruction.getReference(); } else { Instruction35c instruction = (Instruction35c)analyzedInstruction.instruction; targetMethod = (MethodReference)instruction.getReference(); } MethodReference replacementMethod = normalizeMethodReference(targetMethod); if (replacementMethod == null || replacementMethod.equals(targetMethod)) { return true; } Instruction deodexedInstruction; if (isRange) { Instruction3rc instruction = (Instruction3rc)analyzedInstruction.instruction; deodexedInstruction = new ImmutableInstruction3rc(instruction.getOpcode(), instruction.getStartRegister(), instruction.getRegisterCount(), replacementMethod); } else { Instruction35c instruction = (Instruction35c)analyzedInstruction.instruction; deodexedInstruction = new ImmutableInstruction35c(instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), replacementMethod); } analyzedInstruction.setDeodexedInstruction(deodexedInstruction); return true; }
@Nonnull private BuilderInstruction35c newBuilderInstruction35c(@Nonnull Instruction35c instruction) { return new BuilderInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), instruction.getReference()); }
@Nonnull private BuilderInstruction35c newBuilderInstruction35c(@Nonnull Instruction35c instruction) { return new BuilderInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), instruction.getReference()); }
@Nonnull private BuilderInstruction35c newBuilderInstruction35c(@Nonnull Instruction35c instruction) { return new BuilderInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), instruction.getReference()); }
@Nonnull private BuilderInstruction35c newBuilderInstruction35c(@Nonnull Instruction35c instruction) { return new BuilderInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), convertReference(instruction.getReference())); }
private void annotateInstruction35c(@Nonnull AnnotatedBytes out, @Nonnull Instruction35c instruction) { List<String> args = Lists.newArrayList(); int registerCount = instruction.getRegisterCount(); if (registerCount == 1) { args.add(formatRegister(instruction.getRegisterC())); } else if (registerCount == 2) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); } else if (registerCount == 3) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); } else if (registerCount == 4) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); args.add(formatRegister(instruction.getRegisterF())); } else if (registerCount == 5) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); args.add(formatRegister(instruction.getRegisterF())); args.add(formatRegister(instruction.getRegisterG())); } String reference = ReferenceUtil.getReferenceString(instruction.getReference()); out.annotate(6, String.format("%s {%s}, %s", instruction.getOpcode().name, Joiner.on(", ").join(args), reference)); }
private void annotateInstruction35c(@Nonnull AnnotatedBytes out, @Nonnull Instruction35c instruction) { List<String> args = Lists.newArrayList(); int registerCount = instruction.getRegisterCount(); if (registerCount == 1) { args.add(formatRegister(instruction.getRegisterC())); } else if (registerCount == 2) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); } else if (registerCount == 3) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); } else if (registerCount == 4) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); args.add(formatRegister(instruction.getRegisterF())); } else if (registerCount == 5) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); args.add(formatRegister(instruction.getRegisterF())); args.add(formatRegister(instruction.getRegisterG())); } String reference = ReferenceUtil.getReferenceString(instruction.getReference()); out.annotate(6, String.format("%s {%s}, %s", instruction.getOpcode().name, Joiner.on(", ").join(args), reference)); }
private void annotateInstruction35c(@Nonnull AnnotatedBytes out, @Nonnull Instruction35c instruction) { List<String> args = Lists.newArrayList(); int registerCount = instruction.getRegisterCount(); if (registerCount == 1) { args.add(formatRegister(instruction.getRegisterC())); } else if (registerCount == 2) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); } else if (registerCount == 3) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); } else if (registerCount == 4) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); args.add(formatRegister(instruction.getRegisterF())); } else if (registerCount == 5) { args.add(formatRegister(instruction.getRegisterC())); args.add(formatRegister(instruction.getRegisterD())); args.add(formatRegister(instruction.getRegisterE())); args.add(formatRegister(instruction.getRegisterF())); args.add(formatRegister(instruction.getRegisterG())); } String reference = ReferenceUtil.getReferenceString(instruction.getReference()); out.annotate(6, String.format("%s {%s}, %s", instruction.getOpcode().name, Joiner.on(", ").join(args), reference)); }
public void write(@Nonnull Instruction35c instruction) { try { writer.write(instruction.getOpcode().value); writer.write(packNibbles(instruction.getRegisterG(), instruction.getRegisterCount())); writer.writeUshort(getReferenceIndex(instruction)); writer.write(packNibbles(instruction.getRegisterC(), instruction.getRegisterD())); writer.write(packNibbles(instruction.getRegisterE(), instruction.getRegisterF())); } catch (IOException ex) { throw new RuntimeException(ex); } }
public void write(@Nonnull Instruction35c instruction) { try { writer.write(getOpcodeValue(instruction.getOpcode())); writer.write(packNibbles(instruction.getRegisterG(), instruction.getRegisterCount())); writer.writeUshort(getReferenceIndex(instruction)); writer.write(packNibbles(instruction.getRegisterC(), instruction.getRegisterD())); writer.write(packNibbles(instruction.getRegisterE(), instruction.getRegisterF())); } catch (IOException ex) { throw new RuntimeException(ex); } }
public static ImmutableInstruction35c of(Instruction35c instruction) { if (instruction instanceof ImmutableInstruction35c) { return (ImmutableInstruction35c)instruction; } return new ImmutableInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), instruction.getReference()); }
public static ImmutableInstruction35c of(Instruction35c instruction) { if (instruction instanceof ImmutableInstruction35c) { return (ImmutableInstruction35c)instruction; } return new ImmutableInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), instruction.getReference()); }
public static ImmutableInstruction35c of(Instruction35c instruction) { if (instruction instanceof ImmutableInstruction35c) { return (ImmutableInstruction35c)instruction; } return new ImmutableInstruction35c( instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), instruction.getReference()); }
public void write(@Nonnull Instruction35c instruction) { try { writer.write(getOpcodeValue(instruction.getOpcode())); writer.write(packNibbles(instruction.getRegisterG(), instruction.getRegisterCount())); writer.writeUshort(getReferenceIndex(instruction)); writer.write(packNibbles(instruction.getRegisterC(), instruction.getRegisterD())); writer.write(packNibbles(instruction.getRegisterE(), instruction.getRegisterF())); } catch (IOException ex) { throw new RuntimeException(ex); } }
Assert.assertEquals(Opcode.INVOKE_STATIC, instruction.getOpcode()); MethodReference method = (MethodReference)instruction.getReference(); Assert.assertEquals(classDef.getType(), method.getDefiningClass()); Assert.assertEquals(Opcode.INVOKE_STATIC, instruction.getOpcode()); method = (MethodReference)instruction.getReference(); Assert.assertEquals(classDef.getType(), method.getDefiningClass()); Assert.assertEquals(Opcode.INVOKE_STATIC, instruction.getOpcode()); method = (MethodReference)instruction.getReference(); Assert.assertEquals(classDef.getType(), method.getDefiningClass());
private boolean analyzeInvokeVirtual(@Nonnull AnalyzedInstruction analyzedInstruction, boolean isRange) { MethodReference targetMethod; if (!normalizeVirtualMethods) { return true; } if (isRange) { Instruction3rc instruction = (Instruction3rc)analyzedInstruction.instruction; targetMethod = (MethodReference)instruction.getReference(); } else { Instruction35c instruction = (Instruction35c)analyzedInstruction.instruction; targetMethod = (MethodReference)instruction.getReference(); } MethodReference replacementMethod = normalizeMethodReference(targetMethod); if (replacementMethod == null || replacementMethod.equals(targetMethod)) { return true; } Instruction deodexedInstruction; if (isRange) { Instruction3rc instruction = (Instruction3rc)analyzedInstruction.instruction; deodexedInstruction = new ImmutableInstruction3rc(instruction.getOpcode(), instruction.getStartRegister(), instruction.getRegisterCount(), replacementMethod); } else { Instruction35c instruction = (Instruction35c)analyzedInstruction.instruction; deodexedInstruction = new ImmutableInstruction35c(instruction.getOpcode(), instruction.getRegisterCount(), instruction.getRegisterC(), instruction.getRegisterD(), instruction.getRegisterE(), instruction.getRegisterF(), instruction.getRegisterG(), replacementMethod); } analyzedInstruction.setDeodexedInstruction(deodexedInstruction); return true; }