mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8294971: jdk.jlink jdk.tools.jimage.JImageTask is using ASM to verify classes
Reviewed-by: mchung
This commit is contained in:
parent
0f26d09da8
commit
b1d89f3066
2 changed files with 13 additions and 5 deletions
|
@ -190,6 +190,8 @@ module java.base {
|
||||||
jdk.jlink;
|
jdk.jlink;
|
||||||
exports jdk.internal.logger to
|
exports jdk.internal.logger to
|
||||||
java.logging;
|
java.logging;
|
||||||
|
exports jdk.internal.classfile to
|
||||||
|
jdk.jlink;
|
||||||
exports jdk.internal.org.objectweb.asm to
|
exports jdk.internal.org.objectweb.asm to
|
||||||
jdk.jartool,
|
jdk.jartool,
|
||||||
jdk.jfr,
|
jdk.jfr,
|
||||||
|
|
|
@ -39,12 +39,14 @@ import java.util.MissingResourceException;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import jdk.internal.classfile.ClassModel;
|
||||||
|
import jdk.internal.classfile.Classfile;
|
||||||
|
import jdk.internal.classfile.CodeModel;
|
||||||
|
import jdk.internal.classfile.MethodModel;
|
||||||
|
|
||||||
import jdk.internal.jimage.BasicImageReader;
|
import jdk.internal.jimage.BasicImageReader;
|
||||||
import jdk.internal.jimage.ImageHeader;
|
import jdk.internal.jimage.ImageHeader;
|
||||||
import jdk.internal.jimage.ImageLocation;
|
import jdk.internal.jimage.ImageLocation;
|
||||||
import jdk.internal.org.objectweb.asm.ClassReader;
|
|
||||||
import jdk.internal.org.objectweb.asm.tree.ClassNode;
|
|
||||||
import jdk.tools.jlink.internal.ImageResourcesTree;
|
import jdk.tools.jlink.internal.ImageResourcesTree;
|
||||||
import jdk.tools.jlink.internal.TaskHelper;
|
import jdk.tools.jlink.internal.TaskHelper;
|
||||||
import jdk.tools.jlink.internal.TaskHelper.BadArgs;
|
import jdk.tools.jlink.internal.TaskHelper.BadArgs;
|
||||||
|
@ -366,9 +368,13 @@ class JImageTask {
|
||||||
if (name.endsWith(".class") && !name.endsWith("module-info.class")) {
|
if (name.endsWith(".class") && !name.endsWith("module-info.class")) {
|
||||||
try {
|
try {
|
||||||
byte[] bytes = reader.getResource(location);
|
byte[] bytes = reader.getResource(location);
|
||||||
ClassReader cr = new ClassReader(bytes);
|
Classfile.parse(bytes).forEachElement(cle -> {
|
||||||
ClassNode cn = new ClassNode();
|
if (cle instanceof MethodModel mm) mm.forEachElement(me -> {
|
||||||
cr.accept(cn, 0);
|
if (me instanceof CodeModel com) com.forEachElement(coe -> {
|
||||||
|
//do nothing here, just visit each model element
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.println("Error(s) in Class: " + name);
|
log.println("Error(s) in Class: " + name);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue