From 43b24570891d05e7c28a937ad8ce738536f90592 Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Mon, 5 Aug 2024 15:18:03 +0200 Subject: [PATCH] Internal change PiperOrigin-RevId: 659531569 --- .../share/classes/java/lang/VersionProps.java | 5 +- ...ew.java => JarFileClassEntrySelector.java} | 4 +- .../apianalyzer/DesugarJdkLibsApis.java | 141 ------------------ 3 files changed, 5 insertions(+), 145 deletions(-) rename tools/java/com/google/devtools/build/android/{JarFileClassEntrySelectorNew.java => JarFileClassEntrySelector.java} (99%) delete mode 100644 tools/java/com/google/testing/apianalyzer/DesugarJdkLibsApis.java diff --git a/jdk11/src/java.base/share/classes/java/lang/VersionProps.java b/jdk11/src/java.base/share/classes/java/lang/VersionProps.java index 3aa7c9c0..0ee88a7b 100644 --- a/jdk11/src/java.base/share/classes/java/lang/VersionProps.java +++ b/jdk11/src/java.base/share/classes/java/lang/VersionProps.java @@ -78,11 +78,12 @@ class VersionProps { ""; private static String VENDOR_URL_BUG = - "http://b.corp.google.com/createIssue?component=32554"; + "https://issuetracker.google.com/issues/new?component=317603"; + // This field is read by HotSpot private static String VENDOR_URL_VM_BUG = - "http://b.corp.google.com/createIssue?component=32554"; + "https://issuetracker.google.com/issues/new?component=317603"; static { init(); diff --git a/tools/java/com/google/devtools/build/android/JarFileClassEntrySelectorNew.java b/tools/java/com/google/devtools/build/android/JarFileClassEntrySelector.java similarity index 99% rename from tools/java/com/google/devtools/build/android/JarFileClassEntrySelectorNew.java rename to tools/java/com/google/devtools/build/android/JarFileClassEntrySelector.java index 1f12cb2f..152c4b67 100644 --- a/tools/java/com/google/devtools/build/android/JarFileClassEntrySelectorNew.java +++ b/tools/java/com/google/devtools/build/android/JarFileClassEntrySelector.java @@ -24,7 +24,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.devtools.java.asm.GoogleOpcodes; +import org.objectweb.asm.Opcodes; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; @@ -306,7 +306,7 @@ private void transferClassFileJarEntry(JarEntry inEntry, InputStream in, JarOutp if (isGeneratedOutputEntryUnderSelection(outputEntryName)) { ClassWriter cw = new ClassWriter(0); ClassVisitor cv = - new AnnotationFilterClassVisitor(OMITTED_ANNOTATIONS, cw, GoogleOpcodes.LATEST); + new AnnotationFilterClassVisitor(OMITTED_ANNOTATIONS, cw, Opcodes.ASM9); outputClassNode.accept(cv); byte[] outBytes = cw.toByteArray(); JarEntry outJarEntry = createJarEntry(outputEntryName, outBytes); diff --git a/tools/java/com/google/testing/apianalyzer/DesugarJdkLibsApis.java b/tools/java/com/google/testing/apianalyzer/DesugarJdkLibsApis.java deleted file mode 100644 index 868562a3..00000000 --- a/tools/java/com/google/testing/apianalyzer/DesugarJdkLibsApis.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2022 Google LLC - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Google designates this - * particular file as subject to the "Classpath" exception as provided - * by Google in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -package com.google.testing.apianalyzer; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.jar.JarEntry; -import java.util.jar.JarInputStream; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -/** Utility class that extracts public APIs from desugar_jdk_libs.jar. */ -public final class DesugarJdkLibsApis { - - private final Path inputJarPath; - - public DesugarJdkLibsApis(Path inputJarPath) { - this.inputJarPath = inputJarPath; - } - - void scan() throws IOException { - try (JarInputStream in = new JarInputStream(Files.newInputStream(inputJarPath))) { - for (JarEntry inEntry; (inEntry = in.getNextJarEntry()) != null; ) { - final String inEntryName = inEntry.getName(); - if (inEntryName.endsWith(".class")) { - ClassReader cr = new ClassReader(in); - ClassVisitor cv = - new DesugarJdkLibsJarClassVisitor(Opcodes.ASM9, /* classVisitor= */ null); - cr.accept(cv, 0); - } - } - } - } - - static class DesugarJdkLibsJarClassVisitor extends ClassVisitor { - - private int classAccess; - private String className; - - public DesugarJdkLibsJarClassVisitor(int api, ClassVisitor classVisitor) { - super(api, classVisitor); - } - - @Override - public void visit( - int version, - int access, - String name, - String signature, - String superName, - String[] interfaces) { - classAccess = access; - className = name; - super.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod( - int access, String name, String descriptor, String signature, String[] exceptions) { - if ((classAccess & Opcodes.ACC_PUBLIC) != 0 && (access & Opcodes.ACC_PUBLIC) != 0) { - StringBuilder sb = new StringBuilder(); - - if (className.contains("/Desugar")) { - String originalClassName = className.replace("/Desugar", "/"); - - String originalDescriptor = - descriptor - .replace("(L" + originalClassName + ";", "(") - .replace("(L" + originalClassName, "("); - - sb.append(undoDesugarMirroredType(originalClassName)).append(','); - sb.append(name).append(','); - sb.append(undoDesugarMirroredType(originalDescriptor)); - } else if (className.endsWith("$-CC")) { - String originalClassName = className.replace("$-CC", ""); - - String originalMethodName = name.replace("$default$", ""); - - final String originalDescriptor; - if (name.startsWith("$default$")) { - originalDescriptor = - descriptor - .replace("(L" + originalClassName + ";", "(") - .replace("(L" + originalClassName, "("); - } else { - originalDescriptor = descriptor; - } - - sb.append(undoDesugarMirroredType(originalClassName)).append(','); - sb.append(originalMethodName).append(','); - sb.append(undoDesugarMirroredType(originalDescriptor)); - } else { - sb.append(undoDesugarMirroredType(className)).append(','); - sb.append(name).append(','); - sb.append(undoDesugarMirroredType(descriptor)); - } - - System.out.println(sb); - } - return super.visitMethod(access, name, descriptor, signature, exceptions); - } - } - - public static String undoDesugarMirroredType(String inType) { - return inType - .replace("j$/desugar/", "desugar/") - .replace("j$/libcore/", "libcore/") - .replace("j$/jdk/", "jdk/") - .replace("j$/", "java/") - .replace("/Desugar", "/") - .replace("$-CC", ""); - } - - public static void main(String[] args) throws IOException { - DesugarJdkLibsApis apiExtractor = new DesugarJdkLibsApis(Paths.get(args[0])); - apiExtractor.scan(); - } -}