RFR: 8289613: Drop use of Thread.stop in jshell [v2]
Alan Bateman
alanb at openjdk.org
Mon Sep 5 18:05:46 UTC 2022
On Mon, 5 Sep 2022 15:53:32 GMT, Adam Sotona <asotona at openjdk.org> wrote:
>> LocalExecutionControl in jdk.jshell actually uses Thread::stop to cancel execution of (long-running or infinite loops) user code in JShell, however Thread::stop is deprecated and planned for removal.
>>
>> Proposed patch instruments all user code to call LocalExecutionControl::stopCheck method before every branch instruction.
>> Thread::stop call is replaced by setting global field LocalExecutionControl.allStop to true and stopCheck method then throws ThreadDead when called from the instrumented code.
>>
>> Proposed patch requires jdk.jshell access to java.base jdk.internal.org.objectweb.asm package.
>>
>> Please review.
>>
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional commit since the last revision:
>
> alternative implementation where instrumented code is directly checking Thread::interrupted
LocalExecutionControl.stop invoking Thread::interrupt is good as that will cause any interruptible methods to wakeup.
I'm less sure about instrumenting every "if" and "goto" to invoke Thread::interrupted but more recent comment suggests are going back to a stop field that polled by code in a generated class so I'll wait until you are done.
-------------
PR: https://git.openjdk.org/jdk/pull/10166
More information about the core-libs-dev
mailing list