Revert "Delay reading bytes for the archive program resources." This reverts commit 3400607ee935b4e7495618a15185b4b9661c9c62. Reason for revert: did not show performance improvements on trackers. Bug: b/209920471 Change-Id: Id2e28fb733d5b00ab87bd12243bbb899a4d99e1b
diff --git a/src/main/java/com/android/tools/r8/utils/InternalArchiveClassFileProvider.java b/src/main/java/com/android/tools/r8/utils/InternalArchiveClassFileProvider.java index a231b0f..e5557d9 100644 --- a/src/main/java/com/android/tools/r8/utils/InternalArchiveClassFileProvider.java +++ b/src/main/java/com/android/tools/r8/utils/InternalArchiveClassFileProvider.java
@@ -8,10 +8,12 @@ import com.android.tools.r8.ClassFileResourceProvider; import com.android.tools.r8.ProgramResource; -import com.android.tools.r8.ResourceException; +import com.android.tools.r8.ProgramResource.Kind; +import com.android.tools.r8.errors.CompilationError; import com.android.tools.r8.origin.ArchiveEntryOrigin; import com.android.tools.r8.origin.Origin; import com.android.tools.r8.origin.PathOrigin; +import com.google.common.io.ByteStreams; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; @@ -81,36 +83,18 @@ if (!descriptors.contains(descriptor)) { return null; } - return new ProgramResource() { - - private final Origin entryOrigin = - new ArchiveEntryOrigin(getZipEntryNameFromDescriptor(descriptor), origin); - - @Override - public Origin getOrigin() { - return entryOrigin; + try { + ZipEntry zipEntry = getZipEntryFromDescriptor(descriptor); + try (InputStream inputStream = getOpenZipFile().getInputStream(zipEntry)) { + return ProgramResource.fromBytes( + new ArchiveEntryOrigin(zipEntry.getName(), origin), + Kind.CF, + ByteStreams.toByteArray(inputStream), + Collections.singleton(descriptor)); } - - @Override - public Kind getKind() { - return Kind.CF; - } - - @Override - public Set<String> getClassDescriptors() { - return Collections.singleton(descriptor); - } - - @Override - public InputStream getByteStream() throws ResourceException { - try { - ZipEntry zipEntry = getZipEntryFromDescriptor(descriptor); - return getOpenZipFile().getInputStream(zipEntry); - } catch (IOException e) { - throw new ResourceException(getOrigin(), "Failed to read '" + descriptor + "'"); - } - } - }; + } catch (IOException e) { + throw new CompilationError("Failed to read '" + descriptor, origin); + } } private ZipFile getOpenZipFile() throws IOException { @@ -134,11 +118,8 @@ openedZipFile = null; } - private static String getZipEntryNameFromDescriptor(String descriptor) { - return descriptor.substring(1, descriptor.length() - 1) + CLASS_EXTENSION; - } - private ZipEntry getZipEntryFromDescriptor(String descriptor) throws IOException { - return getOpenZipFile().getEntry(getZipEntryNameFromDescriptor(descriptor)); + return getOpenZipFile() + .getEntry(descriptor.substring(1, descriptor.length() - 1) + CLASS_EXTENSION); } }