Write an instrumentation agent in java that can modify JCL code in [1] and redirect it to [2]. You use either ASM[3] or javassist[4] to achieve that.
Aim of this work item is to get familiar with such Instrumentation API and prepare a foundation for our tool that will be attached to JVM and when sees the failure in the test, starts limiting down to the failing method and optimization.
For this issue, currently we can use the same demo code that we tried out in the code-sprint and produced a failure that throws Null Pointer Exception and debug the issue without need to recompile the JCL code.
[1]. https://github.com/ibmruntimes/openj9-openjdk-jdk11/blob/ddc29ca76069082bf6b57e52628e3c2ae05d7694/src/java.base/share/classes/java/lang/reflect/Method.java#L566
[2].
|
public static Object invoke(MethodAccessor ma, Object obj, Object[] args) throws InvocationTargetException { |
[3].
https://asm.ow2.io
[4].
https://www.javassist.org/
Write an instrumentation agent in java that can modify JCL code in [1] and redirect it to [2]. You use either ASM[3] or javassist[4] to achieve that.
Aim of this work item is to get familiar with such Instrumentation API and prepare a foundation for our tool that will be attached to JVM and when sees the failure in the test, starts limiting down to the failing method and optimization.
For this issue, currently we can use the same demo code that we tried out in the code-sprint and produced a failure that throws Null Pointer Exception and debug the issue without need to recompile the JCL code.
[1]. https://github.com/ibmruntimes/openj9-openjdk-jdk11/blob/ddc29ca76069082bf6b57e52628e3c2ae05d7694/src/java.base/share/classes/java/lang/reflect/Method.java#L566
[2].
openj9-jit-debug-agent/jcl/src/java.base/share/classes/com/ibm/jit/JITHelpers.java
Line 1183 in 994ce53
[3]. https://asm.ow2.io
[4]. https://www.javassist.org/