Search in sources :

Example 1 with BytecodeVerifyTestClassVisitor

use of bug_regression_jdk7.javassist.asm.BytecodeVerifyTestClassVisitor in project pinpoint by naver.

the class JavassistVerifyErrorTest method asm_stackmapframe_check.

@Test
public void asm_stackmapframe_check() throws Exception {
    CustomURLClassLoader classLoader = new CustomURLClassLoader(new URL[] {}, Thread.currentThread().getContextClassLoader());
    final InputStream stream = classLoader.getResourceAsStream(JavaAssistUtils.javaNameToJvmName(INVALID_STACK_MAP_FRAME) + ".class");
    ClassReader cr = new ClassReader(stream);
    ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
    ClassVisitor cv = new BytecodeVerifyTestClassVisitor(cw);
    cr.accept(cv, ClassReader.EXPAND_FRAMES | ClassReader.SKIP_DEBUG);
    byte[] bytecode = cw.toByteArray();
    classLoader.defineClass0(INVALID_STACK_MAP_FRAME, bytecode);
    final Class<?> aClass = Class.forName(INVALID_STACK_MAP_FRAME, true, classLoader);
    Assert.assertSame(aClass.getClassLoader(), classLoader);
    final ASMBytecodeDisassembler bytecodeDisassembler = new ASMBytecodeDisassembler();
    final String dumpBytecode = bytecodeDisassembler.dumpBytecode(bytecode);
    logger.debug("dumpBytecode:{}", dumpBytecode);
    final String verify = bytecodeDisassembler.dumpVerify(bytecode, classLoader);
    logger.debug("dumpVerify:{}", verify);
//        final String dumpAsm = bytecodeDisassembler.dumpASM(bytecode);
//        logger.debug("dumpAsm :{}", dumpAsm);
}
Also used : BytecodeVerifyTestClassVisitor(bug_regression_jdk7.javassist.asm.BytecodeVerifyTestClassVisitor) InputStream(java.io.InputStream) ASMBytecodeDisassembler(com.navercorp.pinpoint.profiler.instrument.ASMBytecodeDisassembler) ClassReader(org.objectweb.asm.ClassReader) BytecodeVerifyTestClassVisitor(bug_regression_jdk7.javassist.asm.BytecodeVerifyTestClassVisitor) ClassVisitor(org.objectweb.asm.ClassVisitor) ClassWriter(org.objectweb.asm.ClassWriter) Test(org.junit.Test)

Aggregations

BytecodeVerifyTestClassVisitor (bug_regression_jdk7.javassist.asm.BytecodeVerifyTestClassVisitor)1 ASMBytecodeDisassembler (com.navercorp.pinpoint.profiler.instrument.ASMBytecodeDisassembler)1 InputStream (java.io.InputStream)1 Test (org.junit.Test)1 ClassReader (org.objectweb.asm.ClassReader)1 ClassVisitor (org.objectweb.asm.ClassVisitor)1 ClassWriter (org.objectweb.asm.ClassWriter)1