diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/memoize/PreloadHierarchy.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/memoize/PreloadHierarchy.java index b1610b7e805..134eb0e156f 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/memoize/PreloadHierarchy.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/memoize/PreloadHierarchy.java @@ -1,7 +1,8 @@ package datadog.trace.agent.tooling.bytebuddy.memoize; +import datadog.instrument.classmatch.ClassFile; +import datadog.instrument.classmatch.ClassHeader; import datadog.trace.bootstrap.instrumentation.classloading.ClassDefining; -import net.bytebuddy.jar.asm.ClassReader; /** Ensures superclasses and interfaces are loaded before classes that extend/implement them. */ final class PreloadHierarchy implements ClassDefining.Observer { @@ -22,12 +23,12 @@ public void beforeDefineClass(ClassLoader loader, byte[] bytecode, int offset, i return; // ignore non-standard formats like J9 ROMs } // minimal parsing of bytecode to get name of superclass and any interfaces - ClassReader cr = new ClassReader(bytecode, offset, length); - String superName = cr.getSuperName(); + ClassHeader header = ClassFile.header(bytecode, offset); + String superName = header.superName; if (null != superName && !"java/lang/Object".equals(superName)) { preload(loader, superName); } - for (String interfaceName : cr.getInterfaces()) { + for (String interfaceName : header.interfaces) { preload(loader, interfaceName); } } catch (Throwable ignore) {