Skip to content

Commit 30ddf6a

Browse files
authored
Fix transforming record types (#10052)
1 parent ad16ba8 commit 30ddf6a

File tree

13 files changed

+55
-24
lines changed

13 files changed

+55
-24
lines changed

instrumentation/internal/internal-lambda/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/lambda/InnerClassLambdaMetafactoryInstrumentation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.opentelemetry.javaagent.bootstrap.DefineClassHelper.Handler.DefineClassContext;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
15+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
1516
import net.bytebuddy.asm.Advice;
1617
import net.bytebuddy.asm.AsmVisitorWrapper;
1718
import net.bytebuddy.description.field.FieldDescription;
@@ -89,7 +90,7 @@ private static class MetaFactoryClassVisitor extends ClassVisitor {
8990
private final String slashClassName;
9091

9192
MetaFactoryClassVisitor(ClassVisitor cv, String slashClassName) {
92-
super(Opcodes.ASM7, cv);
93+
super(AsmApi.VERSION, cv);
9394
this.slashClassName = slashClassName;
9495
}
9596

instrumentation/internal/internal-reflection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/reflection/ClassInstrumentation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1111
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
1314
import net.bytebuddy.asm.AsmVisitorWrapper;
1415
import net.bytebuddy.description.field.FieldDescription;
1516
import net.bytebuddy.description.field.FieldList;
@@ -65,7 +66,7 @@ public ClassVisitor wrap(
6566
private static class ClassClassVisitor extends ClassVisitor {
6667

6768
ClassClassVisitor(ClassVisitor cv) {
68-
super(Opcodes.ASM7, cv);
69+
super(AsmApi.VERSION, cv);
6970
}
7071

7172
@Override

instrumentation/kotlinx-coroutines/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/instrumentationannotations/ExpandFramesClassVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.javaagent.instrumentation.kotlinxcoroutines.instrumentationannotations;
77

8+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
89
import java.lang.reflect.Modifier;
910
import java.util.ArrayList;
1011
import java.util.Iterator;
@@ -22,7 +23,7 @@ class ExpandFramesClassVisitor extends ClassVisitor {
2223
private String className;
2324

2425
ExpandFramesClassVisitor(ClassVisitor classVisitor) {
25-
super(Opcodes.ASM9, classVisitor);
26+
super(AsmApi.VERSION, classVisitor);
2627
}
2728

2829
@Override
@@ -50,7 +51,7 @@ private static class ExpandFramesMethodVisitor extends MethodVisitor {
5051

5152
ExpandFramesMethodVisitor(
5253
MethodVisitor mv, String className, String methodName, int access, String descriptor) {
53-
super(Opcodes.ASM9, mv);
54+
super(AsmApi.VERSION, mv);
5455
if ("<init>".equals(methodName)) {
5556
currentLocals.add(Opcodes.UNINITIALIZED_THIS);
5657
} else if (!Modifier.isStatic(access)) {

instrumentation/kotlinx-coroutines/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/instrumentationannotations/WithSpanInstrumentation.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
2020
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2121
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
22+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
2223
import io.opentelemetry.javaagent.instrumentation.instrumentationannotations.AnnotationExcludedMethods;
2324
import io.opentelemetry.javaagent.instrumentation.kotlinxcoroutines.instrumentationannotations.SpanAttributeUtil.Parameter;
2425
import java.util.Arrays;
@@ -136,7 +137,7 @@ private static class WithSpanClassVisitor extends ClassVisitor {
136137
String className;
137138

138139
WithSpanClassVisitor(ClassVisitor cv) {
139-
super(Opcodes.ASM9, cv);
140+
super(AsmApi.VERSION, cv);
140141
}
141142

142143
@Override
@@ -213,7 +214,8 @@ private static MethodVisitor instrument(
213214
source.signature,
214215
source.exceptions.toArray(new String[0]));
215216
GeneratorAdapter generatorAdapter =
216-
new GeneratorAdapter(Opcodes.ASM9, methodNode, source.access, source.name, source.desc) {
217+
new GeneratorAdapter(
218+
AsmApi.VERSION, methodNode, source.access, source.name, source.desc) {
217219
int requestLocal;
218220
int ourContinuationLocal;
219221
int contextLocal;

instrumentation/payara/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/payara/StandardWrapperInstrumentation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1111
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
1314
import net.bytebuddy.asm.AsmVisitorWrapper;
1415
import net.bytebuddy.description.field.FieldDescription;
1516
import net.bytebuddy.description.field.FieldList;
@@ -64,7 +65,7 @@ public ClassVisitor wrap(
6465
private static class StandardWrapperClassVisitor extends ClassVisitor {
6566

6667
StandardWrapperClassVisitor(ClassVisitor cv) {
67-
super(Opcodes.ASM7, cv);
68+
super(AsmApi.VERSION, cv);
6869
}
6970

7071
@Override
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.extension.instrumentation.internal;
7+
8+
import org.objectweb.asm.Opcodes;
9+
10+
/**
11+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
12+
* any time.
13+
*/
14+
public final class AsmApi {
15+
public static final int VERSION = Opcodes.ASM9;
16+
17+
private AsmApi() {}
18+
}

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentStarterImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.opentelemetry.instrumentation.api.internal.cache.weaklockfree.WeakConcurrentMapCleaner;
1010
import io.opentelemetry.javaagent.bootstrap.AgentInitializer;
1111
import io.opentelemetry.javaagent.bootstrap.AgentStarter;
12+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
1213
import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig;
1314
import java.io.File;
1415
import java.lang.instrument.ClassFileTransformer;
@@ -151,7 +152,7 @@ public byte[] transform(
151152
ClassReader cr = new ClassReader(classfileBuffer);
152153
ClassWriter cw = new ClassWriter(cr, 0);
153154
ClassVisitor cv =
154-
new ClassVisitor(Opcodes.ASM7, cw) {
155+
new ClassVisitor(AsmApi.VERSION, cw) {
155156
@Override
156157
public MethodVisitor visitMethod(
157158
int access, String name, String descriptor, String signature, String[] exceptions) {

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/RealFieldInjector.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1313
import io.opentelemetry.javaagent.bootstrap.VirtualFieldInstalledMarker;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
1415
import io.opentelemetry.javaagent.tooling.Utils;
1516
import java.util.Arrays;
1617
import java.util.LinkedHashSet;
@@ -66,7 +67,7 @@ public ClassVisitor wrap(
6667
int writerFlags,
6768
int readerFlags) {
6869

69-
return new ClassVisitor(Opcodes.ASM7, classVisitor) {
70+
return new ClassVisitor(AsmApi.VERSION, classVisitor) {
7071
// We are using Object class name instead of fieldTypeName here because this gets
7172
// injected onto the bootstrap class loader where context class may be unavailable
7273
private final TypeDescription fieldType = TypeDescription.ForLoadedType.of(Object.class);

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldFindRewriter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1111
import io.opentelemetry.instrumentation.api.util.VirtualField;
12+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
1213
import io.opentelemetry.javaagent.tooling.TransformSafeLogger;
1314
import io.opentelemetry.javaagent.tooling.Utils;
1415
import io.opentelemetry.javaagent.tooling.muzzle.VirtualFieldMappings;
@@ -81,12 +82,12 @@ public ClassVisitor wrap(
8182
int writerFlags,
8283
int readerFlags) {
8384

84-
return new ClassVisitor(Opcodes.ASM7, classVisitor) {
85+
return new ClassVisitor(AsmApi.VERSION, classVisitor) {
8586
@Override
8687
public MethodVisitor visitMethod(
8788
int access, String name, String descriptor, String signature, String[] exceptions) {
8889
MethodVisitor mv = super.visitMethod(access, name, descriptor, signature, exceptions);
89-
return new MethodVisitor(Opcodes.ASM7, mv) {
90+
return new MethodVisitor(api, mv) {
9091
/** The most recent objects pushed to the stack. */
9192
private final Object[] stack = {null, null};
9293

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/VirtualFieldImplementationsGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1313
import io.opentelemetry.instrumentation.api.internal.cache.Cache;
1414
import io.opentelemetry.instrumentation.api.util.VirtualField;
15+
import io.opentelemetry.javaagent.extension.instrumentation.internal.AsmApi;
1516
import io.opentelemetry.javaagent.tooling.Utils;
1617
import io.opentelemetry.javaagent.tooling.muzzle.VirtualFieldMappings;
1718
import java.util.HashMap;
@@ -109,7 +110,7 @@ public ClassVisitor wrap(
109110
MethodList<?> methods,
110111
int writerFlags,
111112
int readerFlags) {
112-
return new ClassVisitor(Opcodes.ASM7, classVisitor) {
113+
return new ClassVisitor(AsmApi.VERSION, classVisitor) {
113114

114115
private final TypeDescription accessorInterface =
115116
fieldAccessorInterfaces.find(typeName, fieldTypeName);

0 commit comments

Comments
 (0)