Skip to content

Commit 2bbdce2

Browse files
committed
cleanup
1 parent 95c49cd commit 2bbdce2

4 files changed

Lines changed: 39 additions & 15 deletions

File tree

dd-java-agent/instrumentation/java/java-lang/java-lang-22.0/src/main/java/datadog/trace/instrumentation/java/lang/jdk22/FFMApiModule.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ public boolean isEnabled() {
3232

3333
@Override
3434
public List<Instrumenter> typeInstrumentations() {
35-
return asList(new LinkerInstrumentation(), new SymbolLookupInstrumentation());
35+
return asList(
36+
new LinkerInstrumentation(),
37+
new SymbolLookupInstrumentation(),
38+
new SymbolLookupStaticInstrumentation());
3639
}
3740
}

dd-java-agent/instrumentation/java/java-lang/java-lang-22.0/src/main/java/datadog/trace/instrumentation/java/lang/jdk22/SymbolLookupInstrumentation.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface;
44
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
55
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
6-
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
76
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
87

98
import datadog.trace.agent.tooling.Instrumenter;
@@ -14,8 +13,6 @@ public class SymbolLookupInstrumentation
1413
implements Instrumenter.ForTypeHierarchy,
1514
Instrumenter.ForBootstrap,
1615
Instrumenter.HasMethodAdvice {
17-
private static final String SYMBOL_LOOKUP = "java.lang.foreign.SymbolLookup";
18-
1916
@Override
2017
public String hierarchyMarkerType() {
2118
return null; // bootstrap type
@@ -24,21 +21,11 @@ public String hierarchyMarkerType() {
2421
@Override
2522
public ElementMatcher<TypeDescription> hierarchyMatcher() {
2623
// instrument both interface and sub-implementations
27-
return implementsInterface(named(SYMBOL_LOOKUP)).or(named(SYMBOL_LOOKUP));
24+
return implementsInterface(named("java.lang.foreign.SymbolLookup"));
2825
}
2926

3027
@Override
3128
public void methodAdvice(MethodTransformer transformer) {
32-
transformer.applyAdvice(
33-
isMethod()
34-
.and(isStatic())
35-
.and(named("libraryLookup").and(takesArgument(0, named("java.lang.String")))),
36-
"datadog.trace.instrumentation.java.lang.jdk22.SymbolLookupAdvices$CaptureLibraryName");
37-
transformer.applyAdvice(
38-
isMethod()
39-
.and(isStatic())
40-
.and(named("libraryLookup").and(takesArgument(0, named("java.nio.Path")))),
41-
"datadog.trace.instrumentation.java.lang.jdk22.SymbolLookupAdvices$CaptureLibraryPath");
4229
transformer.applyAdvice(
4330
isMethod().and(named("find").and(takesArgument(0, named("java.lang.String")))),
4431
"datadog.trace.instrumentation.java.lang.jdk22.SymbolLookupAdvices$CaptureMemorySegment");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package datadog.trace.instrumentation.java.lang.jdk22;
2+
3+
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
4+
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
5+
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
6+
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
7+
8+
import datadog.trace.agent.tooling.Instrumenter;
9+
10+
public class SymbolLookupStaticInstrumentation
11+
implements Instrumenter.ForSingleType, Instrumenter.ForBootstrap, Instrumenter.HasMethodAdvice {
12+
13+
@Override
14+
public String instrumentedType() {
15+
return "java.lang.foreign.SymbolLookup";
16+
}
17+
18+
@Override
19+
public void methodAdvice(MethodTransformer transformer) {
20+
transformer.applyAdvice(
21+
isMethod()
22+
.and(isStatic())
23+
.and(named("libraryLookup").and(takesArgument(0, named("java.lang.String")))),
24+
"datadog.trace.instrumentation.java.lang.jdk22.SymbolLookupAdvices$CaptureLibraryName");
25+
transformer.applyAdvice(
26+
isMethod()
27+
.and(isStatic())
28+
.and(named("libraryLookup").and(takesArgument(0, named("java.nio.Path")))),
29+
"datadog.trace.instrumentation.java.lang.jdk22.SymbolLookupAdvices$CaptureLibraryPath");
30+
}
31+
}

dd-java-agent/instrumentation/java/java-lang/java-lang-22.0/src/test/java/util/NativeLibraryResolver.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ public class NativeLibraryResolver {
4949
/**
5050
* Returns the full native library path that defines the given symbol. Returns null if the symbol
5151
* cannot be resolved.
52+
*
53+
* @param symbolAddress the address of the symbol to resolve.
54+
* @return the library path or null if cannot be found.
5255
*/
5356
public static String findLibraryPath(MemorySegment symbolAddress) {
5457
try (Arena arena = Arena.ofConfined()) {

0 commit comments

Comments
 (0)