Fix race condition when reading and adding methods.
Change-Id: I2853269ac779d8dd6519dfc754033b74880703cf
diff --git a/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java b/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java
index 17072ef..7e67c3b 100644
--- a/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java
+++ b/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.graph;
+import com.android.tools.r8.utils.ArrayUtils;
import com.android.tools.r8.utils.PredicateUtils;
import com.android.tools.r8.utils.TraversalContinuation;
import com.google.common.base.MoreObjects;
@@ -265,15 +266,13 @@
@Override
void addVirtualMethod(DexEncodedMethod virtualMethod) {
assert belongsToVirtualPool(virtualMethod);
- virtualMethods = Arrays.copyOf(virtualMethods, virtualMethods.length + 1);
- virtualMethods[virtualMethods.length - 1] = virtualMethod;
+ virtualMethods = ArrayUtils.appendSingleElement(virtualMethods, virtualMethod);
}
@Override
void addDirectMethod(DexEncodedMethod directMethod) {
assert belongsToDirectPool(directMethod);
- directMethods = Arrays.copyOf(directMethods, directMethods.length + 1);
- directMethods[directMethods.length - 1] = directMethod;
+ directMethods = ArrayUtils.appendSingleElement(directMethods, directMethod);
}
@Override