> 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 two additional commits since the last revision: - allStop field and stopCheck method moved to synthetic REPL.$Cancel$ - Revert "alternative implementation where instrumented code is directly checking Thread::interrupted" This reverts commit 0f0e0dd17c121955e7806073bb8cc78da1f133ea. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/10166/files - new: https://git.openjdk.org/jdk/pull/10166/files/0f0e0dd1..30c34b6a Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=10166&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=10166&range=01-02 Stats: 43 lines in 1 file changed: 33 ins; 7 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/10166.diff Fetch: git fetch https://git.openjdk.org/jdk pull/10166/head:pull/10166 PR: https://git.openjdk.org/jdk/pull/10166