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 | 20 |
1 files changed, 12 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..7f2f355 100644 --- a/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java +++ b/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java @@ -17,6 +17,7 @@ import static org.objectweb.asm.Opcodes.ASM6; import static org.objectweb.asm.Opcodes.INVOKESTATIC; import static org.objectweb.asm.Opcodes.LCMP; +import com.google.devtools.build.android.desugar.io.CoreLibraryRewriter; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.MethodVisitor; @@ -26,8 +27,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 +41,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 +49,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); } } } |