On Wed, 27 Aug 2025 19:28:33 GMT, Coleen Phillimore <[email protected]> wrote:
>> Evgeny Astigeevich has updated the pull request incrementally with one >> additional commit since the last revision: >> >> Symplify comments; Get JavaThread::current in variable > > https://github.com/openjdk/jdk/pull/26971 > > We do link the class during redefinition, when we load the new classfile > version. For the retransformer, we read the classfile from a potentially > unlinked class, then link the class after when we do the > redefinition/retransformation. To avoid this race, we can link the bytecodes > first, I think then we would not have to redo the linking. This change is > relatively small as well and does not rely on the implementation of what we > lock when we link and initialize the class. I think most of the time, the > class is already linked at this stage anyway so it wouldn't have any effect > on performance. I didn't try this on your test yet. > > This isn't that clear. Now we do: > retransform class -> class reconstitutor to get current classfile version -> > VM_RedefineClasses -> load class version with this set of bytecodes -> link > bytecodes -> etc. > > My change: > retransform class -> link class -> class reconstitutor to get current > classfile version -> etc. Hi @coleenp, Thank you for https://github.com/openjdk/jdk/pull/26971. Don't you mind if we follow the following plan: 1. I pull changes from https://github.com/openjdk/jdk/pull/26971 which fix `RetransformClasses` into this PR. 2. I create a new JBS issues to cover `GetBytecodes`. 3. A separate PR fixing `GetBytecodes` is created. I'd like to have changes for `RetransformClasses` and `GetBytecodes` be in different PRs to simplify backporting processes. IMO fixing `GetBytecodes` is not critical because it is not available for java agents. Only JVMTI agents can use it. We have not seen any bug reports regarding `GetBytecodes`. Regarding `RetransformClasses` we've got reports of crashing 11, 17 and 21 from different customers. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26863#issuecomment-3229563219
