1
1
package com .intellij .rt .debugger .agent ;
2
2
3
- import org .jetbrains .capture .org .objectweb .asm .*;
3
+ import org .jetbrains .capture .org .objectweb .asm .ClassVisitor ;
4
+ import org .jetbrains .capture .org .objectweb .asm .ClassWriter ;
5
+ import org .jetbrains .capture .org .objectweb .asm .MethodVisitor ;
6
+ import org .jetbrains .capture .org .objectweb .asm .Opcodes ;
4
7
5
8
import java .lang .instrument .ClassFileTransformer ;
6
9
import java .security .ProtectionDomain ;
@@ -17,10 +20,9 @@ public byte[] transform(ClassLoader loader,
17
20
byte [] classfileBuffer ) {
18
21
if (THROWABLE_NAME .equals (className )) {
19
22
try {
20
- ClassReader reader = new ClassReader (classfileBuffer );
21
- ClassWriter writer = new ClassWriter (reader , ClassWriter .COMPUTE_FRAMES );
23
+ ClassTransformer transformer = new ClassTransformer (className , classfileBuffer , ClassWriter .COMPUTE_FRAMES , loader );
22
24
23
- reader .accept (new ClassVisitor (Opcodes .API_VERSION , writer ) {
25
+ return transformer .accept (new ClassVisitor (Opcodes .API_VERSION , transformer . writer ) {
24
26
@ Override
25
27
public MethodVisitor visitMethod (final int access , String name , String descriptor , String signature , String [] exceptions ) {
26
28
MethodVisitor superMethodVisitor = super .visitMethod (access , name , descriptor , signature , exceptions );
@@ -58,11 +60,7 @@ public void visitMethodInsn(int opcode, String owner, String name, String descri
58
60
return superMethodVisitor ;
59
61
}
60
62
}
61
- }, 0 );
62
-
63
- byte [] bytes = writer .toByteArray ();
64
- CaptureAgent .storeClassForDebug (className , bytes );
65
- return bytes ;
63
+ }, 0 , true );
66
64
}
67
65
catch (Exception e ) {
68
66
System .out .println ("Capture agent: failed to instrument " + className );
0 commit comments