Remove redundant origin from IR building

Change-Id: I1448c667ce65fe619e848b0c403707e7965c9798
diff --git a/src/main/java/com/android/tools/r8/graph/CfCode.java b/src/main/java/com/android/tools/r8/graph/CfCode.java
index b4552e4..33b02b2 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCode.java
@@ -39,7 +39,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.naming.NamingLens;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 import com.android.tools.r8.utils.structural.CompareToVisitor;
@@ -584,11 +583,10 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     verifyFramesOrRemove(method, appView, getCodeLens(appView));
     return internalBuildPossiblyWithLocals(
-        method, method, appView, appView.codeLens(), null, null, origin, null, conversionOptions);
+        method, method, appView, appView.codeLens(), null, null, null, conversionOptions);
   }
 
   @Override
@@ -599,7 +597,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     assert valueNumberGenerator != null;
     assert callerPosition != null;
@@ -612,7 +609,6 @@
         codeLens,
         valueNumberGenerator,
         callerPosition,
-        origin,
         protoChanges,
         MethodConversionOptions.nonConverting());
   }
@@ -634,7 +630,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges,
       MutableMethodConversionOptions conversionOptions) {
     if (!method.keepLocals(appView)) {
@@ -646,7 +641,6 @@
           codeLens,
           valueNumberGenerator,
           callerPosition,
-          origin,
           protoChanges,
           conversionOptions);
     } else {
@@ -657,7 +651,6 @@
           codeLens,
           valueNumberGenerator,
           callerPosition,
-          origin,
           protoChanges,
           conversionOptions);
     }
@@ -671,7 +664,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges,
       MutableMethodConversionOptions conversionOptions) {
     try {
@@ -683,11 +675,10 @@
           codeLens,
           valueNumberGenerator,
           callerPosition,
-          origin,
           protoChanges,
           conversionOptions);
     } catch (InvalidDebugInfoException e) {
-      appView.options().warningInvalidDebugInfo(method, origin, e);
+      appView.options().warningInvalidDebugInfo(method, e);
       return internalBuild(
           Collections.emptyList(),
           context,
@@ -696,7 +687,6 @@
           codeLens,
           valueNumberGenerator,
           callerPosition,
-          origin,
           protoChanges,
           conversionOptions);
     }
@@ -711,7 +701,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges,
       MutableMethodConversionOptions conversionOptions) {
     CfSourceCode source =
@@ -720,16 +709,15 @@
             localVariables,
             method,
             callerPosition,
-            origin,
             appView);
     IRBuilder builder;
     if (valueNumberGenerator == null) {
       assert protoChanges == null;
-      builder = IRBuilder.create(method, appView, source, origin);
+      builder = IRBuilder.create(method, appView, source);
     } else {
       builder =
           IRBuilder.createForInlining(
-              method, appView, codeLens, source, origin, valueNumberGenerator, protoChanges);
+              method, appView, codeLens, source, valueNumberGenerator, protoChanges);
     }
     return builder.build(context, conversionOptions);
   }
diff --git a/src/main/java/com/android/tools/r8/graph/CfCodeDiagnostics.java b/src/main/java/com/android/tools/r8/graph/CfCodeDiagnostics.java
index 8a664ec..1f0f01c 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCodeDiagnostics.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCodeDiagnostics.java
@@ -30,9 +30,9 @@
   private final MethodPosition methodPosition;
   private final String diagnosticMessage;
 
-  public CfCodeDiagnostics(Origin origin, DexMethod method, String diagnosticMessage) {
-    this.origin = origin;
-    this.methodPosition = new MethodPosition(method.asMethodReference());
+  public CfCodeDiagnostics(ProgramMethod method, String diagnosticMessage) {
+    this.origin = method.getOrigin();
+    this.methodPosition = new MethodPosition(method.getMethodReference());
     this.diagnosticMessage = diagnosticMessage;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/graph/CfCodeStackMapValidatingException.java b/src/main/java/com/android/tools/r8/graph/CfCodeStackMapValidatingException.java
index 0670aeb..f37bced 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCodeStackMapValidatingException.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCodeStackMapValidatingException.java
@@ -16,7 +16,7 @@
     if (appView.enableWholeProgramOptimizations()) {
       sb.append(" In later version of R8, the method may be assumed not reachable.");
     }
-    return new CfCodeDiagnostics(method.getOrigin(), method.getReference(), sb.toString());
+    return new CfCodeDiagnostics(method, sb.toString());
   }
 
   public static CfCodeDiagnostics multipleFramesForLabel(ProgramMethod method, AppView<?> appView) {
@@ -24,7 +24,7 @@
     if (appView.enableWholeProgramOptimizations()) {
       sb.append(" In later version of R8, the method may be assumed not reachable.");
     }
-    return new CfCodeDiagnostics(method.getOrigin(), method.getReference(), sb.toString());
+    return new CfCodeDiagnostics(method, sb.toString());
   }
 
   public static CfCodeDiagnostics noFramesForMethodWithJumps(
@@ -34,7 +34,7 @@
     if (appView.enableWholeProgramOptimizations()) {
       sb.append(" In later version of R8, the method may be assumed not reachable.");
     }
-    return new CfCodeDiagnostics(method.getOrigin(), method.getReference(), sb.toString());
+    return new CfCodeDiagnostics(method, sb.toString());
   }
 
   public static CfCodeDiagnostics invalidTryCatchRange(
@@ -48,7 +48,7 @@
     if (appView.enableWholeProgramOptimizations()) {
       sb.append(" In later version of R8, the method may be assumed not reachable.");
     }
-    return new CfCodeDiagnostics(method.getOrigin(), method.getReference(), sb.toString());
+    return new CfCodeDiagnostics(method, sb.toString());
   }
 
   public static CfCodeDiagnostics invalidStackMapForInstruction(
@@ -68,6 +68,6 @@
     if (appView.enableWholeProgramOptimizations()) {
       sb.append(" In later version of R8, the method may be assumed not reachable.");
     }
-    return new CfCodeDiagnostics(method.getOrigin(), method.getReference(), sb.toString());
+    return new CfCodeDiagnostics(method, sb.toString());
   }
 }
diff --git a/src/main/java/com/android/tools/r8/graph/Code.java b/src/main/java/com/android/tools/r8/graph/Code.java
index dfc2117..ee87e8a 100644
--- a/src/main/java/com/android/tools/r8/graph/Code.java
+++ b/src/main/java/com/android/tools/r8/graph/Code.java
@@ -17,21 +17,19 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.lightir.LirCode;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
 import java.util.function.Consumer;
 
 public abstract class Code extends CachedHashValueDexItem {
 
-  public final IRCode buildIR(ProgramMethod method, AppView<?> appView, Origin origin) {
-    return buildIR(method, appView, origin, MethodConversionOptions.forLirPhase(appView));
+  public final IRCode buildIR(ProgramMethod method, AppView<?> appView) {
+    return buildIR(method, appView, MethodConversionOptions.forLirPhase(appView));
   }
 
   public abstract IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions);
 
   public IRCode buildInliningIR(
@@ -41,7 +39,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     throw new Unreachable("Unexpected attempt to build IR graph for inlining from: "
         + getClass().getCanonicalName());
diff --git a/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java b/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
index f43f02e..9b11e7e 100644
--- a/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
+++ b/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
@@ -38,7 +38,6 @@
 import com.android.tools.r8.lightir.LirEncodingStrategy;
 import com.android.tools.r8.lightir.LirStrategy;
 import com.android.tools.r8.naming.NamingLens;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.IteratorUtils;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 import com.android.tools.r8.utils.structural.HashingVisitor;
@@ -167,12 +166,11 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     DefaultInstanceInitializerSourceCode source =
         new DefaultInstanceInitializerSourceCode(
             method.getReference(), method.getDefinition().isD8R8Synthesized());
-    return IRBuilder.create(method, appView, source, origin).build(method, conversionOptions);
+    return IRBuilder.create(method, appView, source).build(method, conversionOptions);
   }
 
   @Override
@@ -183,13 +181,12 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     DefaultInstanceInitializerSourceCode source =
         new DefaultInstanceInitializerSourceCode(
             method.getReference(), method.getDefinition().isD8R8Synthesized(), callerPosition);
     return IRBuilder.createForInlining(
-            method, appView, codeLens, source, origin, valueNumberGenerator, protoChanges)
+            method, appView, codeLens, source, valueNumberGenerator, protoChanges)
         .build(context, MethodConversionOptions.nonConverting());
   }
 
diff --git a/src/main/java/com/android/tools/r8/graph/DexCode.java b/src/main/java/com/android/tools/r8/graph/DexCode.java
index 95d19ee..8232d93 100644
--- a/src/main/java/com/android/tools/r8/graph/DexCode.java
+++ b/src/main/java/com/android/tools/r8/graph/DexCode.java
@@ -39,7 +39,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.lightir.ByteUtils;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.ArrayUtils;
 import com.android.tools.r8.utils.DexDebugUtils.PositionInfo;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
@@ -531,7 +530,6 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     DexSourceCode source =
         new DexSourceCode(
@@ -539,7 +537,7 @@
             method,
             null,
             appView.dexItemFactory());
-    return IRBuilder.create(method, appView, source, origin).build(method, conversionOptions);
+    return IRBuilder.create(method, appView, source).build(method, conversionOptions);
   }
 
   @Override
@@ -551,7 +549,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     DexSourceCode source =
         new DexSourceCode(
@@ -560,7 +557,7 @@
             callerPosition,
             appView.dexItemFactory());
     return IRBuilder.createForInlining(
-            method, appView, codeLens, source, origin, valueNumberGenerator, protoChanges)
+            method, appView, codeLens, source, valueNumberGenerator, protoChanges)
         .build(context, MethodConversionOptions.nonConverting());
   }
 
diff --git a/src/main/java/com/android/tools/r8/graph/InvalidCode.java b/src/main/java/com/android/tools/r8/graph/InvalidCode.java
index ff2dc3d..2ce267b 100644
--- a/src/main/java/com/android/tools/r8/graph/InvalidCode.java
+++ b/src/main/java/com/android/tools/r8/graph/InvalidCode.java
@@ -6,7 +6,6 @@
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.ir.code.IRCode;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 
 public class InvalidCode extends Code {
@@ -28,7 +27,6 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     throw new Unreachable();
   }
diff --git a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
index 0257cfd..2ad9817 100644
--- a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
@@ -260,9 +260,8 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
-    return asCfCode().buildIR(method, appView, origin, conversionOptions);
+    return asCfCode().buildIR(method, appView, conversionOptions);
   }
 
   @Override
@@ -273,7 +272,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     return asCfCode()
         .buildInliningIR(
@@ -283,7 +281,6 @@
             codeLens,
             valueNumberGenerator,
             callerPosition,
-            origin,
             protoChanges);
   }
 
diff --git a/src/main/java/com/android/tools/r8/graph/ProgramMethod.java b/src/main/java/com/android/tools/r8/graph/ProgramMethod.java
index a86dbc8..0c85af8 100644
--- a/src/main/java/com/android/tools/r8/graph/ProgramMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/ProgramMethod.java
@@ -17,7 +17,6 @@
 import com.android.tools.r8.ir.conversion.MethodProcessor;
 import com.android.tools.r8.ir.optimize.Inliner.ConstraintWithTarget;
 import com.android.tools.r8.kotlin.KotlinMethodLevelInfo;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
 
@@ -35,9 +34,7 @@
 
   public IRCode buildIR(AppView<?> appView, MutableMethodConversionOptions conversionOptions) {
     DexEncodedMethod method = getDefinition();
-    return method.hasCode()
-        ? method.getCode().buildIR(this, appView, getOrigin(), conversionOptions)
-        : null;
+    return method.hasCode() ? method.getCode().buildIR(this, appView, conversionOptions) : null;
   }
 
   public IRCode buildInliningIR(
@@ -45,7 +42,6 @@
       AppView<?> appView,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       MethodProcessor methodProcessor) {
     Code code = getDefinition().getCode();
     GraphLens codeLens = appView.graphLens();
@@ -61,7 +57,6 @@
         codeLens,
         valueNumberGenerator,
         callerPosition,
-        origin,
         protoChanges);
   }
 
diff --git a/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java b/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
index 7e359ec..63f24c2 100644
--- a/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
+++ b/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
@@ -20,7 +20,6 @@
 import com.android.tools.r8.ir.code.Position;
 import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 import com.android.tools.r8.utils.structural.HashingVisitor;
 import java.nio.ShortBuffer;
@@ -53,7 +52,6 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     throw new Unreachable("Should not be called");
   }
@@ -66,7 +64,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     throw new Unreachable("Should not be called");
   }
diff --git a/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java b/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
index 48fe289..af96367 100644
--- a/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
+++ b/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
@@ -24,7 +24,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.ir.conversion.SyntheticStraightLineSourceCode;
 import com.android.tools.r8.naming.NamingLens;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 import com.android.tools.r8.utils.structural.HashingVisitor;
 import com.google.common.collect.ImmutableList;
@@ -70,10 +69,9 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     ThrowNullSourceCode source = new ThrowNullSourceCode(method);
-    return IRBuilder.create(method, appView, source, origin).build(method, conversionOptions);
+    return IRBuilder.create(method, appView, source).build(method, conversionOptions);
   }
 
   @Override
@@ -84,11 +82,10 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     ThrowNullSourceCode source = new ThrowNullSourceCode(method, callerPosition);
     return IRBuilder.createForInlining(
-            method, appView, codeLens, source, origin, valueNumberGenerator, protoChanges)
+            method, appView, codeLens, source, valueNumberGenerator, protoChanges)
         .build(context, MethodConversionOptions.nonConverting());
   }
 
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/IRCodeProvider.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/IRCodeProvider.java
index 6a35c88..95c4020 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/IRCodeProvider.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/IRCodeProvider.java
@@ -66,7 +66,7 @@
       return method
           .getDefinition()
           .getCode()
-          .buildIR(method, appViewForConversion, method.getOrigin(), getConversionOptions.get());
+          .buildIR(method, appViewForConversion, getConversionOptions.get());
     }
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/IncompleteHorizontalClassMergerCode.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/IncompleteHorizontalClassMergerCode.java
index 7e37921..7ca989f 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/IncompleteHorizontalClassMergerCode.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/IncompleteHorizontalClassMergerCode.java
@@ -17,7 +17,6 @@
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.ir.code.IRCode;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 
 public abstract class IncompleteHorizontalClassMergerCode extends Code {
@@ -55,7 +54,6 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     throw new Unreachable();
   }
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ClassInitializerMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ClassInitializerMerger.java
index 19efa91..d54026f 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ClassInitializerMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ClassInitializerMerger.java
@@ -35,7 +35,6 @@
 import com.android.tools.r8.ir.code.Position.SyntheticPosition;
 import com.android.tools.r8.ir.code.Return;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.CfVersionUtils;
 import com.android.tools.r8.utils.IterableUtils;
 import com.android.tools.r8.utils.ListUtils;
@@ -208,7 +207,6 @@
     public IRCode buildIR(
         ProgramMethod method,
         AppView<?> appView,
-        Origin origin,
         MutableMethodConversionOptions conversionOptions) {
       assert !classInitializers.isEmpty();
 
@@ -249,7 +247,6 @@
               valueNumberGenerator,
               blockNumberGenerator,
               metadata,
-              origin,
               conversionOptions);
 
       ListIterator<BasicBlock> blockIterator = code.listIterator();
@@ -275,7 +272,6 @@
                     appView.codeLens(),
                     valueNumberGenerator,
                     preamblePosition,
-                    classInitializer.getOrigin(),
                     RewrittenPrototypeDescription.none());
         classInitializer.getDefinition().setObsolete();
 
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ConstructorEntryPointSynthesizedCode.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ConstructorEntryPointSynthesizedCode.java
index 75b76b6..fda1515 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ConstructorEntryPointSynthesizedCode.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/code/ConstructorEntryPointSynthesizedCode.java
@@ -27,7 +27,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.ir.conversion.SourceCode;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceSortedMap;
@@ -93,7 +92,6 @@
   public final IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     SyntheticPosition position =
         SyntheticPosition.builder()
@@ -104,7 +102,7 @@
     SourceCode sourceCode =
         new ConstructorEntryPoint(
             typeConstructors, newConstructor, classIdField, extraNulls, position);
-    return IRBuilder.create(method, appView, sourceCode, origin).build(method, conversionOptions);
+    return IRBuilder.create(method, appView, sourceCode).build(method, conversionOptions);
   }
 
   @Override
@@ -115,13 +113,12 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     SourceCode sourceCode =
         new ConstructorEntryPoint(
             typeConstructors, newConstructor, classIdField, extraNulls, callerPosition);
     return IRBuilder.createForInlining(
-            method, appView, codeLens, sourceCode, origin, valueNumberGenerator, protoChanges)
+            method, appView, codeLens, sourceCode, valueNumberGenerator, protoChanges)
         .build(context, MethodConversionOptions.nonConverting());
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index 453d999..d5e82ff 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -30,7 +30,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.ir.optimize.AffectedValues;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.DequeUtils;
 import com.android.tools.r8.utils.InternalOptions;
@@ -138,8 +137,6 @@
   private final IRMetadata metadata;
   private final InternalOptions options;
 
-  public final Origin origin;
-
   public IRCode(
       InternalOptions options,
       ProgramMethod method,
@@ -148,7 +145,6 @@
       NumberGenerator valueNumberGenerator,
       NumberGenerator basicBlockNumberGenerator,
       IRMetadata metadata,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     assert metadata != null;
     assert options != null;
@@ -162,7 +158,6 @@
     this.valueNumberGenerator = valueNumberGenerator;
     this.basicBlockNumberGenerator = basicBlockNumberGenerator;
     this.metadata = metadata;
-    this.origin = origin;
   }
 
   public IRMetadata metadata() {
diff --git a/src/main/java/com/android/tools/r8/ir/code/Phi.java b/src/main/java/com/android/tools/r8/ir/code/Phi.java
index 6197751..341ca0b 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Phi.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Phi.java
@@ -12,15 +12,14 @@
 import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DebugLocalInfo;
-import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.analysis.type.Nullability;
 import com.android.tools.r8.ir.analysis.type.TypeElement;
 import com.android.tools.r8.ir.code.BasicBlock.EdgeType;
 import com.android.tools.r8.ir.conversion.IRBuilder;
 import com.android.tools.r8.ir.conversion.TypeConstraintResolver;
 import com.android.tools.r8.ir.optimize.AffectedValues;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.DequeUtils;
 import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.Reporter;
@@ -102,11 +101,11 @@
 
   @Override
   public void constrainType(
-      ValueTypeConstraint constraint, DexMethod method, Origin origin, Reporter reporter) {
+      ValueTypeConstraint constraint, ProgramMethod method, Reporter reporter) {
     if (readType == RegisterReadType.DEBUG) {
       abortOnInvalidDebugInfo(constraint);
     }
-    super.constrainType(constraint, method, origin, reporter);
+    super.constrainType(constraint, method, reporter);
   }
 
   private void abortOnInvalidDebugInfo(ValueTypeConstraint constraint) {
diff --git a/src/main/java/com/android/tools/r8/ir/code/Value.java b/src/main/java/com/android/tools/r8/ir/code/Value.java
index f7d98af..fb150fb 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Value.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Value.java
@@ -18,7 +18,6 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DebugLocalInfo;
 import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.analysis.type.ClassTypeElement;
@@ -31,12 +30,12 @@
 import com.android.tools.r8.ir.analysis.value.UnknownValue;
 import com.android.tools.r8.ir.optimize.AffectedValues;
 import com.android.tools.r8.ir.regalloc.LiveIntervals;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.position.MethodPosition;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.IterableUtils;
 import com.android.tools.r8.utils.LongInterval;
+import com.android.tools.r8.utils.ObjectUtils;
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.StringDiagnostic;
 import com.google.common.base.Predicates;
@@ -53,9 +52,8 @@
 
 public class Value implements Comparable<Value> {
 
-  @SuppressWarnings("ReferenceEquality")
   public void constrainType(
-      ValueTypeConstraint constraint, DexMethod method, Origin origin, Reporter reporter) {
+      ValueTypeConstraint constraint, ProgramMethod method, Reporter reporter) {
     TypeElement constrainedType = constrainedType(constraint);
     if (constrainedType == null) {
       throw reporter.fatalError(
@@ -66,9 +64,9 @@
                   + this
                   + " by constraint: "
                   + constraint,
-              origin,
-              new MethodPosition(method.asMethodReference())));
-    } else if (constrainedType != type) {
+              method.getOrigin(),
+              new MethodPosition(method.getMethodReference())));
+    } else if (ObjectUtils.notIdentical(constrainedType, type)) {
       setType(constrainedType);
     }
   }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java
index de8a584..48241f6 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java
@@ -40,7 +40,6 @@
 import com.android.tools.r8.ir.conversion.CfState.Slot;
 import com.android.tools.r8.ir.conversion.CfState.Snapshot;
 import com.android.tools.r8.ir.conversion.IRBuilder.BlockInfo;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.InternalOutputMode;
 import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
@@ -190,7 +189,6 @@
   private final List<CfCode.LocalVariableInfo> localVariables;
   private final CfCode code;
   private final ProgramMethod method;
-  private final Origin origin;
   private final AppView<?> appView;
 
   private final Reference2IntMap<CfLabel> labelOffsets = new Reference2IntOpenHashMap<>();
@@ -207,15 +205,13 @@
 
   public CfSourceCode(
       CfCode code,
-      List<CfCode.LocalVariableInfo> localVariables,
+      List<LocalVariableInfo> localVariables,
       ProgramMethod method,
       Position callerPosition,
-      Origin origin,
       AppView<?> appView) {
     this.code = code;
     this.localVariables = localVariables;
     this.method = method;
-    this.origin = origin;
     this.appView = appView;
     int cfPositionCount = 0;
     for (int i = 0; i < code.getInstructions().size(); i++) {
@@ -227,7 +223,7 @@
         ++cfPositionCount;
       }
     }
-    this.state = new CfState(origin);
+    this.state = new CfState(method);
     canonicalPositions =
         new CanonicalPositions(
             callerPosition,
@@ -247,14 +243,6 @@
     return method.getDefinition();
   }
 
-  public Origin getOrigin() {
-    return origin;
-  }
-
-  public DexType getOriginalHolder() {
-    return code.getOriginalHolder();
-  }
-
   @Override
   public int instructionCount() {
     return code.getInstructions().size();
@@ -573,7 +561,7 @@
 
   private void recordStateForTarget(int target, Snapshot snapshot) {
     Snapshot existing = incomingState.get(target);
-    Snapshot merged = CfState.merge(existing, snapshot, origin);
+    Snapshot merged = CfState.merge(existing, snapshot, method);
     if (merged != existing) {
       incomingState.put(target, merged);
     }
@@ -689,8 +677,7 @@
           .reporter
           .warning(
               new CfCodeDiagnostics(
-                  origin,
-                  method.getReference(),
+                  method,
                   "Could not find stack map for block at offset "
                       + blockOffset
                       + ". This is most likely due to invalid"
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/CfState.java b/src/main/java/com/android/tools/r8/ir/conversion/CfState.java
index 353faac..d7d39f8 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/CfState.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/CfState.java
@@ -5,9 +5,9 @@
 
 import com.android.tools.r8.errors.CompilationError;
 import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.code.Position;
 import com.android.tools.r8.ir.code.ValueType;
-import com.android.tools.r8.origin.Origin;
 
 public class CfState {
 
@@ -74,12 +74,12 @@
     }
   }
 
-  private final Origin origin;
+  private final ProgramMethod method;
   private Snapshot current;
   private Position position;
 
-  public CfState(Origin origin) {
-    this.origin = origin;
+  public CfState(ProgramMethod method) {
+    this.method = method;
   }
 
   private static final int MAX_UPDATES = 4;
@@ -110,7 +110,7 @@
     if (current == null) {
       current = snapshot == null ? new BaseSnapshot() : snapshot;
     } else {
-      current = merge(current, snapshot, origin);
+      current = merge(current, snapshot, method);
     }
   }
 
@@ -118,22 +118,22 @@
     return current;
   }
 
-  public static Snapshot merge(Snapshot current, Snapshot update, Origin origin) {
+  public static Snapshot merge(Snapshot current, Snapshot update, ProgramMethod method) {
     assert update != null;
     if (current == null) {
       return update;
     }
-    return merge(current.asBase(), update.asBase(), origin);
+    return merge(current.asBase(), update.asBase(), method);
   }
 
-  private static Snapshot merge(BaseSnapshot current, BaseSnapshot update, Origin origin) {
+  private static Snapshot merge(BaseSnapshot current, BaseSnapshot update, ProgramMethod method) {
     if (current.stack.length != update.stack.length) {
       throw new CompilationError(
           "Different stack heights at jump target: "
               + current.stack.length
               + " != "
               + update.stack.length,
-          origin);
+          method.getOrigin());
     }
     // At this point, JarState checks if `current` has special "NULL" or "BYTE/BOOL" types
     // that `update` does not have, and if so it computes a refinement.
@@ -149,7 +149,7 @@
                 + current.stack[i]
                 + " and "
                 + update.stack[i],
-            origin);
+            method.getOrigin());
       }
     }
     // We could check that locals are compatible, but that doesn't make sense since locals can be
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index 9cb7612..994ef53 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -121,7 +121,6 @@
 import com.android.tools.r8.ir.code.Xor;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.naming.dexitembasedstring.NameComputationInfo;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.Pair;
 import com.google.common.collect.Sets;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceAVLTreeMap;
@@ -405,7 +404,6 @@
   private ProgramMethod context;
   public final AppView<?> appView;
   private final GraphLens codeLens;
-  private final Origin origin;
   private final RewrittenPrototypeDescription prototypeChanges;
   private Value receiverValue;
   private List<Value> argumentValues;
@@ -437,15 +435,13 @@
   // then the IR does not necessarily contain a const-string instruction).
   private final IRMetadata metadata = new IRMetadata();
 
-  public static IRBuilder create(
-      ProgramMethod method, AppView<?> appView, SourceCode source, Origin origin) {
+  public static IRBuilder create(ProgramMethod method, AppView<?> appView, SourceCode source) {
     GraphLens codeLens = method.getDefinition().getCode().getCodeLens(appView);
     return new IRBuilder(
         method,
         appView,
         codeLens,
         source,
-        origin,
         lookupPrototypeChanges(appView, method, codeLens),
         new NumberGenerator());
   }
@@ -455,11 +451,9 @@
       AppView<?> appView,
       GraphLens codeLens,
       SourceCode source,
-      Origin origin,
       NumberGenerator valueNumberGenerator,
       RewrittenPrototypeDescription protoChanges) {
-    return new IRBuilder(
-        method, appView, codeLens, source, origin, protoChanges, valueNumberGenerator);
+    return new IRBuilder(method, appView, codeLens, source, protoChanges, valueNumberGenerator);
   }
 
   public static RewrittenPrototypeDescription lookupPrototypeChanges(
@@ -474,7 +468,6 @@
       AppView<?> appView,
       GraphLens codeLens,
       SourceCode source,
-      Origin origin,
       RewrittenPrototypeDescription prototypeChanges,
       NumberGenerator valueNumberGenerator) {
     assert source != null;
@@ -482,7 +475,6 @@
     this.method = method;
     this.appView = appView;
     this.source = source;
-    this.origin = origin;
     this.codeLens = codeLens;
     this.prototypeChanges = prototypeChanges;
     this.valueNumberGenerator = valueNumberGenerator;
@@ -723,7 +715,6 @@
             valueNumberGenerator,
             basicBlockNumberGenerator,
             metadata,
-            origin,
             conversionOptions);
 
     // Verify critical edges are split so we have a place to insert phi moves if necessary.
@@ -779,7 +770,7 @@
   }
 
   public void constrainType(Value value, ValueTypeConstraint constraint) {
-    value.constrainType(constraint, method.getReference(), origin, appView.options().reporter);
+    value.constrainType(constraint, method, appView.reporter());
   }
 
   private void addImpreciseInstruction(ImpreciseMemberTypeInstruction instruction) {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java
index 419205f..f4bc5e2 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java
@@ -142,7 +142,6 @@
           rewrittenLirCode.buildIR(
               method,
               appView,
-              method.getOrigin(),
               MethodConversionOptions.forLirPhase(appView).disableStringSwitchConversion());
       AffectedValues affectedValues = code.removeUnreachableBlocks();
       affectedValues.narrowingWithAssumeRemoval(appView, code);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/TypeConstraintResolver.java b/src/main/java/com/android/tools/r8/ir/conversion/TypeConstraintResolver.java
index 925f84c..edd3db2 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/TypeConstraintResolver.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/TypeConstraintResolver.java
@@ -144,16 +144,15 @@
     ArrayList<Value> stillImprecise = constrainValues(true, remainingImpreciseValues);
     if (!stillImprecise.isEmpty()) {
       throw appView
-          .options()
-          .reporter
+          .reporter()
           .fatalError(
               new StringDiagnostic(
                   "Cannot determine precise type for value: "
                       + stillImprecise.get(0)
                       + ", its imprecise type is: "
                       + stillImprecise.get(0).getType(),
-                  code.origin,
-                  new MethodPosition(code.method().getReference().asMethodReference())));
+                  code.context().getOrigin(),
+                  new MethodPosition(code.context().getMethodReference())));
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/records/RecordFieldValuesRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/records/RecordFieldValuesRewriter.java
index 40b217e..71e0780 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/records/RecordFieldValuesRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/records/RecordFieldValuesRewriter.java
@@ -69,7 +69,6 @@
             .buildIR(
                 programMethod,
                 appView,
-                programMethod.getOrigin(),
                 MethodConversionOptions.forLirPhase(appView));
     boolean done = false;
     ListIterator<BasicBlock> blockIterator = irCode.listIterator();
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
index e39ebf6..9e7e988 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
@@ -26,7 +26,6 @@
 import com.android.tools.r8.ir.conversion.MethodProcessor;
 import com.android.tools.r8.ir.conversion.PostMethodProcessor;
 import com.android.tools.r8.ir.desugar.ServiceLoaderSourceCode;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.BooleanBox;
 import com.android.tools.r8.utils.ListUtils;
@@ -114,7 +113,7 @@
       // Check that the first argument is a const class.
       Value argument = serviceLoaderLoad.inValues().get(0).getAliasedValue();
       if (argument.isPhi() || !argument.definition.isConstClass()) {
-        report(code.origin, null, "The service loader type could not be determined");
+        report(code.context(), null, "The service loader type could not be determined");
         continue;
       }
 
@@ -122,7 +121,7 @@
 
       if (invokedMethod != serviceLoaderMethods.loadWithClassLoader) {
         report(
-            code.origin,
+            code.context(),
             constClass.getType(),
             "Inlining is only support for `java.util.ServiceLoader.load(java.lang.Class,"
                 + " java.lang.ClassLoader)`");
@@ -134,7 +133,7 @@
               + " java.lang.ServiceLoader.iterator()`";
       Value serviceLoaderLoadOut = serviceLoaderLoad.outValue();
       if (serviceLoaderLoadOut.numberOfAllUsers() != 1 || serviceLoaderLoadOut.hasPhiUsers()) {
-        report(code.origin, constClass.getType(), invalidUserMessage);
+        report(code.context(), constClass.getType(), invalidUserMessage);
         continue;
       }
 
@@ -142,13 +141,14 @@
       if (!serviceLoaderLoadOut.singleUniqueUser().isInvokeVirtual()
           || serviceLoaderLoadOut.singleUniqueUser().asInvokeVirtual().getInvokedMethod()
               != serviceLoaderMethods.iterator) {
-        report(code.origin, constClass.getType(), invalidUserMessage + ", but found other usages");
+        report(
+            code.context(), constClass.getType(), invalidUserMessage + ", but found other usages");
         continue;
       }
 
       // Check that the service is not kept.
       if (appView.appInfo().isPinnedWithDefinitionLookup(constClass.getValue())) {
-        report(code.origin, constClass.getType(), "The service loader type is kept");
+        report(code.context(), constClass.getType(), "The service loader type is kept");
         continue;
       }
 
@@ -162,7 +162,7 @@
       // Check that we are not service loading anything from a feature into base.
       if (appServices.hasServiceImplementationsInFeature(appView, constClass.getValue())) {
         report(
-            code.origin,
+            code.context(),
             constClass.getType(),
             "The service loader type has implementations in a feature split");
         continue;
@@ -172,7 +172,7 @@
       // that we are instantiating or NULL.
       if (serviceLoaderLoad.inValues().get(1).isPhi()) {
         report(
-            code.origin,
+            code.context(),
             constClass.getType(),
             "The java.lang.ClassLoader argument must be defined locally as null or "
                 + constClass.getType()
@@ -195,7 +195,7 @@
                       == constClass.getValue());
       if (!isGetClassLoaderOnConstClassOrNull) {
         report(
-            code.origin,
+            code.context(),
             constClass.getType(),
             "The java.lang.ClassLoader argument must be defined locally as null or "
                 + constClass.getType()
@@ -210,7 +210,7 @@
         DexClass serviceImplementation = appView.definitionFor(serviceImpl);
         if (serviceImplementation == null) {
           report(
-              code.origin,
+              code.context(),
               constClass.getType(),
               "Unable to find definition for service implementation " + serviceImpl.getTypeName());
           seenNull = true;
@@ -247,11 +247,11 @@
     postMethodProcessorBuilder.addAll(synthesizedServiceLoadMethods, appView.graphLens());
   }
 
-  private void report(Origin origin, DexType serviceLoaderType, String message) {
+  private void report(ProgramMethod method, DexType serviceLoaderType, String message) {
     if (reporter != null) {
       reporter.info(
           new ServiceLoaderRewriterDiagnostic(
-              origin,
+              method.getOrigin(),
               "Could not inline ServiceLoader.load"
                   + (serviceLoaderType == null
                       ? ""
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/code/CheckNotZeroCode.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/code/CheckNotZeroCode.java
index b17f4b6..5c37f51 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/code/CheckNotZeroCode.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/code/CheckNotZeroCode.java
@@ -22,7 +22,6 @@
 import com.android.tools.r8.ir.code.Return;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.ir.optimize.enums.EnumUnboxerImpl;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.IteratorUtils;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 
@@ -48,7 +47,6 @@
   public IRCode buildIR(
       ProgramMethod checkNotZeroMethod,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     // Build IR from the checkNotNull() method.
     Position callerPosition =
@@ -69,7 +67,6 @@
                 appView.graphLens(),
                 valueNumberGenerator,
                 callerPosition,
-                checkNotZeroMethod.getOrigin(),
                 appView
                     .graphLens()
                     .lookupPrototypeChangesForMethodDefinition(checkNotNullMethod.getReference()));
@@ -112,7 +109,6 @@
         code.valueNumberGenerator,
         code.basicBlockNumberGenerator,
         code.metadata(),
-        checkNotZeroMethod.getOrigin(),
         conversionOptions);
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/inliner/InliningIRProvider.java b/src/main/java/com/android/tools/r8/ir/optimize/inliner/InliningIRProvider.java
index c62a014..e63c416 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/inliner/InliningIRProvider.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/inliner/InliningIRProvider.java
@@ -13,7 +13,6 @@
 import com.android.tools.r8.ir.code.Position;
 import com.android.tools.r8.ir.conversion.LensCodeRewriter;
 import com.android.tools.r8.ir.conversion.MethodProcessor;
-import com.android.tools.r8.origin.Origin;
 import java.util.IdentityHashMap;
 import java.util.Map;
 
@@ -82,14 +81,12 @@
     if (cached != null) {
       return cached;
     }
-    Origin origin = method.getOrigin();
     IRCode code =
         method.buildInliningIR(
             context,
             appView,
             valueNumberGenerator,
             Position.getPositionForInlining(invoke, context),
-            origin,
             methodProcessor);
     if (lensCodeRewriter != null && methodProcessor.shouldApplyCodeRewritings(method)) {
       lensCodeRewriter.rewrite(code, method, methodProcessor);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
index c672ed4..20f7598 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/outliner/OutlinerImpl.java
@@ -71,7 +71,6 @@
 import com.android.tools.r8.ir.optimize.InliningConstraints;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackDelayed;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackIgnore;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.InternalOptions.OutlineOptions;
@@ -1855,10 +1854,9 @@
     public IRCode buildIR(
         ProgramMethod method,
         AppView<?> appView,
-        Origin origin,
         MutableMethodConversionOptions conversionOptions) {
       OutlineSourceCode source = new OutlineSourceCode(outline, method.getReference());
-      return IRBuilder.create(method, appView, source, origin).build(method, conversionOptions);
+      return IRBuilder.create(method, appView, source).build(method, conversionOptions);
     }
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/typechecks/CheckCastAndInstanceOfMethodSpecialization.java b/src/main/java/com/android/tools/r8/ir/optimize/typechecks/CheckCastAndInstanceOfMethodSpecialization.java
index a6b6c18..7c5240b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/typechecks/CheckCastAndInstanceOfMethodSpecialization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/typechecks/CheckCastAndInstanceOfMethodSpecialization.java
@@ -140,8 +140,7 @@
               method.getHolderType(), abstractParentReturnValue.isTrue()),
           appView);
       // Rebuild inlining constraints.
-      IRCode code =
-          parentMethodDefinition.getCode().buildIR(parentMethod, appView, parentMethod.getOrigin());
+      IRCode code = parentMethodDefinition.getCode().buildIR(parentMethod, appView);
       converter.markProcessed(code, feedback);
       // Fixup method optimization info (the method no longer returns a constant).
       feedback.fixupUnusedArguments(parentMethod, unusedArguments -> unusedArguments.clear(0));
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
index 9307108..2acd209 100644
--- a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
+++ b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
@@ -621,9 +621,9 @@
     if (intervals == null) {
       throw new CompilationError(
           "Unexpected attempt to get register for a value without a register in method `"
-              + code.method().getReference().toSourceString()
+              + code.context().toSourceString()
               + "`.",
-          code.origin);
+          code.context().getOrigin());
     }
     if (intervals.hasSplits()) {
       intervals = intervals.getSplitCovering(instructionNumber);
diff --git a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
index 1bd59ff..46e73aa 100644
--- a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
+++ b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
@@ -352,7 +352,6 @@
           strategy.getValueNumberGenerator(),
           basicBlockNumberGenerator,
           code.getMetadataForIR(),
-          method.getOrigin(),
           conversionOptions);
     }
 
diff --git a/src/main/java/com/android/tools/r8/lightir/LirCode.java b/src/main/java/com/android/tools/r8/lightir/LirCode.java
index 01e1195..a571e49 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirCode.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirCode.java
@@ -34,7 +34,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.lightir.LirConstant.LirConstantStructuralAcceptor;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.ArrayUtils;
 import com.android.tools.r8.utils.ComparatorUtils;
 import com.android.tools.r8.utils.FastMapUtils;
@@ -545,7 +544,6 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     RewrittenPrototypeDescription protoChanges =
         appView.graphLens().lookupPrototypeChangesForMethodDefinition(method.getReference());
@@ -561,7 +559,6 @@
       GraphLens codeLens,
       NumberGenerator valueNumberGenerator,
       Position callerPosition,
-      Origin origin,
       RewrittenPrototypeDescription protoChanges) {
     assert valueNumberGenerator != null;
     assert callerPosition != null;
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 009ba19..afc71ff 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1399,14 +1399,14 @@
     }
   }
 
-  public void warningInvalidDebugInfo(
-      ProgramMethod method, Origin origin, InvalidDebugInfoException e) {
+  public void warningInvalidDebugInfo(ProgramMethod method, InvalidDebugInfoException e) {
     if (invalidDebugInfoFatal) {
       throw new CompilationError("Fatal warning: Invalid debug info", e);
     }
     synchronized (warningInvalidDebugInfo) {
-      warningInvalidDebugInfo.computeIfAbsent(
-          origin, k -> new ArrayList<>()).add(new Pair<>(method, e.getMessage()));
+      warningInvalidDebugInfo
+          .computeIfAbsent(method.getOrigin(), k -> new ArrayList<>())
+          .add(new Pair<>(method, e.getMessage()));
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/IncompleteVerticalClassMergerBridgeCode.java b/src/main/java/com/android/tools/r8/verticalclassmerging/IncompleteVerticalClassMergerBridgeCode.java
index f13c3c6..ffe892f 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/IncompleteVerticalClassMergerBridgeCode.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/IncompleteVerticalClassMergerBridgeCode.java
@@ -28,7 +28,6 @@
 import com.android.tools.r8.lightir.LirCode;
 import com.android.tools.r8.lightir.LirEncodingStrategy;
 import com.android.tools.r8.lightir.LirStrategy;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.RetracerForCodePrinting;
 import java.util.ArrayList;
@@ -148,7 +147,6 @@
   public IRCode buildIR(
       ProgramMethod method,
       AppView<?> appView,
-      Origin origin,
       MutableMethodConversionOptions conversionOptions) {
     throw new Unreachable();
   }
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/ConstantRemovalTest.java b/src/test/java/com/android/tools/r8/ir/optimize/ConstantRemovalTest.java
index 93ad7a7..eff9d7a 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/ConstantRemovalTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/ConstantRemovalTest.java
@@ -27,7 +27,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.regalloc.LinearScanRegisterAllocator;
 import com.android.tools.r8.ir.regalloc.LiveIntervals;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.synthesis.SyntheticItems.GlobalSyntheticsStrategy;
 import com.android.tools.r8.utils.InternalOptions;
 import java.util.LinkedList;
@@ -166,7 +165,6 @@
             new NumberGenerator(),
             basicBlockNumberGenerator,
             IRMetadata.unknown(),
-            Origin.unknown(),
             MethodConversionOptions.nonConverting());
     PeepholeOptimizer.optimize(appView, code, new MockLinearScanRegisterAllocator(appView, code));
 
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java
index 18c5121..997f0e0 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/TrivialGotoEliminationTest.java
@@ -30,7 +30,6 @@
 import com.android.tools.r8.ir.code.Value;
 import com.android.tools.r8.ir.conversion.MethodConversionOptions;
 import com.android.tools.r8.ir.conversion.passes.TrivialGotosCollapser;
-import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.Timing;
@@ -107,7 +106,6 @@
             new NumberGenerator(),
             basicBlockNumberGenerator,
             IRMetadata.unknown(),
-            Origin.unknown(),
             MethodConversionOptions.forD8(appView));
     new TrivialGotosCollapser(appView).run(code, Timing.empty());
     assertTrue(code.entryBlock().isTrivialGoto());
@@ -196,7 +194,6 @@
             new NumberGenerator(),
             basicBlockNumberGenerator,
             IRMetadata.unknown(),
-            Origin.unknown(),
             MethodConversionOptions.forD8(appView));
     new TrivialGotosCollapser(appView).run(code, Timing.empty());
     assertTrue(block0.getInstructions().get(1).isIf());