On Thu, 20 May 2021 07:07:20 GMT, Robbin Ehn <r...@openjdk.org> wrote:
>> src/hotspot/share/prims/jvmtiRawMonitor.cpp line 382: >> >>> 380: >>> 381: _recursions = 0; >>> 382: ret = simple_wait(self, millis); >> >> IMHO the guarantee at L379 is redundant with the newly added identical >> guarantee in `JvmtiRawMonitor::simple_wait()` at L240. >> >> In case you agree to remove the guarantee, I don't see why the following >> statements cannot be pulled out of the if-statement. >> >> _recursions = 0; >> ret = simple_wait(self, millis); >> _recursions = save; > > Yes, it can be re-written as something below, but is this more readable? > > > _recursions = 0; > > ret = simple_wait(self, millis); > > > if (self->is_Java_thread()) { // JavaThread re-enter > > JavaThread* jt = self->as_Java_thread(); > > { > > ThreadInVMfromNative tivmfn(jt); > > for (;;) { > > ExitOnSuspend eos(this); > > { > > ThreadBlockInVMPreprocess<ExitOnSuspend> tbivmp(jt, eos); > > simple_enter(jt); > > } > > if (!eos.monitor_exited()) { > > break; > > } > > } > > if (jt->is_interrupted(true)) { > > ret = M_INTERRUPTED; > > } > > } > > } else { // Non-JavaThread re-enter > > assert(ret != M_INTERRUPTED, "Only JavaThreads can be interrupted"); > > simple_enter(self); > > } > _recursions = save; Fixed ------------- PR: https://git.openjdk.java.net/jdk/pull/3875