diff options
Diffstat (limited to 'java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java')
-rw-r--r-- | java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java b/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java index f66d862..6ac415d 100644 --- a/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java +++ b/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java @@ -26,8 +26,11 @@ import org.objectweb.asm.MethodVisitor; */ public class LongCompareMethodRewriter extends ClassVisitor { - public LongCompareMethodRewriter(ClassVisitor cv) { + private final CoreLibraryRewriter rewriter; + + public LongCompareMethodRewriter(ClassVisitor cv, CoreLibraryRewriter rewriter) { super(ASM6, cv); + this.rewriter = rewriter; } @Override @@ -37,7 +40,7 @@ public class LongCompareMethodRewriter extends ClassVisitor { return visitor == null ? visitor : new LongCompareMethodVisitor(visitor); } - private static class LongCompareMethodVisitor extends MethodVisitor { + private class LongCompareMethodVisitor extends MethodVisitor { public LongCompareMethodVisitor(MethodVisitor visitor) { super(ASM6, visitor); @@ -45,14 +48,14 @@ public class LongCompareMethodRewriter extends ClassVisitor { @Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { - if (opcode != INVOKESTATIC - || !owner.equals("java/lang/Long") - || !name.equals("compare") - || !desc.equals("(JJ)I")) { + if (opcode == INVOKESTATIC + && rewriter.unprefix(owner).equals("java/lang/Long") + && name.equals("compare") + && desc.equals("(JJ)I")) { + super.visitInsn(LCMP); + } else { super.visitMethodInsn(opcode, owner, name, desc, itf); - return; } - super.visitInsn(LCMP); } } } |