I am a noob at JVM internals.
Can someone explain what happens at Java interpreter level when IncompatibleClassChangeError is thrown?
I am facing an issue similar to the one described here: https://bugs.openjdk.java.net/browse/JDK-4171827 but having a hard time understanding this comment(quoted from the same page):
This is actually a bug in the interpreter's handling of IncompatibleClassChangeError. The bug is that the logic that checks for invoking a method on a null object, which results in a NullPointerException, is executed before the logic that checks for IncompatibleClassChangeError. In the case of a non-static method becoming static this will cause the interpreter to read a value of the stack which isn't guaranteed to be valid. In this test case it reads a value one above the top of stack which may or may not have a valid value in it. If you modify the test slightly to push a couple nulls and then pop them off before doing the invocation, the test will fail on every vm JavaSoft has shipped. Here's the modified test...