Skip to content

Commit 3ec12a3

Browse files
committed
Generate forwarder class only when needed
1 parent b7038a8 commit 3ec12a3

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/indy/ForwardIndyAdviceTransformer.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,9 @@ public DynamicType.Builder<?> transform(
6262
JavaModule javaModule,
6363
ProtectionDomain protectionDomain) {
6464

65-
// temporarily disable version check for testing
66-
if (false) {
67-
// java 7+ class files already support invokedynamic
68-
if (isAtLeastJava7(typeDescription)) {
69-
return builder;
70-
}
65+
// java 7+ class files already support invokedynamic
66+
if (isAtLeastJava7(typeDescription)) {
67+
return builder;
7168
}
7269

7370
return builder.visit(
@@ -90,6 +87,7 @@ public ClassVisitor wrap(
9087
public void visitEnd() {
9188
super.visitEnd();
9289

90+
// inject helper classes that forward to the advice using invokedynamic
9391
if (!injectedClasses.isEmpty()) {
9492
helperInjector.injectHelperClasses(classLoader, injectedClasses);
9593
}
@@ -130,6 +128,8 @@ public void visitInvokeDynamicInsn(
130128
bootstrapMethodArguments);
131129
injectedClasses.put(forwardClassDotName, forwardClassBytes);
132130

131+
// replace invokedynamic with invokestatic to the generated forwarder class
132+
// the forwarder class will contain the original invokedynamic instruction
133133
super.visitMethodInsn(
134134
Opcodes.INVOKESTATIC, forwardClassSlasName, name, descriptor, false);
135135
return;

0 commit comments

Comments
 (0)