JDK-8230459: Test failed to resume JVMCI CompilerThread
Doerr, Martin
martin.doerr at sap.com
Tue Oct 29 14:09:43 UTC 2019
Hi Kim,
> src/hotspot/share/compiler/compileBroker.cpp
> 948 assert(compiler2_object(i) = NULL, "Old one must be released!”);
>
> That should be “==“ rather than “=“.
Nice one Fixed.
Alright, thanks again for your input related to the handle usage. I guess we don't need to keep you in the loop for the other stuff.
Best regards,
Martin
> -----Original Message-----
> From: Kim Barrett <kim.barrett at oracle.com>
> Sent: Montag, 28. Oktober 2019 20:40
> To: Doerr, Martin <martin.doerr at sap.com>
> Cc: David Holmes <david.holmes at oracle.com>; Vladimir Kozlov
> (vladimir.kozlov at oracle.com) <vladimir.kozlov at oracle.com>; hotspot-
> compiler-dev at openjdk.java.net
> Subject: Re: JDK-8230459: Test failed to resume JVMCI CompilerThread
>
> > On Oct 28, 2019, at 10:06 AM, Doerr, Martin <martin.doerr at sap.com>
> wrote:
> > @Kim:
> > Thanks for looking at the handle related parts. It's ok if you don't want to
> be a reviewer of the whole change.
>
> I’ll reply to the pending parts, and drop out. I think the handle related parts
> are
> going in the right direction now.
>
> >> I think it's weird that can_remove() is a predicate with optional side
> >> effects. I think it would be simpler to have it be a pure predicate,
> >> and have the one caller with do_it = true perform the updates. That
> >> should include NULLing out the handle pointer (perhaps debug-only, but
> >> it doesn't cost much to cleanly maintain the data structure).
> > Nevertheless, it has the advantage that it enforces the update to be
> consistent.
> > A caller could use it without holding the lock or mess it up otherwise.
> > In addition, I don't what to change that as part of this fix.
>
> Understood, though I think I recall the caller with do_it = true is holding the
> appropriate lock
> around the call.
>
> >> So far as I can tell, THREAD == NULL here.
> > This is a very tricky part (not my invention):
> > EXCEPTION_MARK contains an ExceptionMark constructor call which sets
> __the_thread__ to Thread::current().
> > I don't want to publish my opinion about this
>
> Oh, that’s interesting… I know exceptions.hpp contains some exciting code,
> but I’ve so
> far avoided looking at it closely. That stuff doesn’t come up much in gc code
> :)
>
> > @David:
> > Seems like this option is preferred over option 3
> (possibly_add_compiler_threads part of webrev.02 and leave the
> initialization as is).
> > So when you're ok with it, I'll request a 2nd review from the compiler folks
> (I should change the subject to contain RFR).
>
> Handle usage here looks okay to me now. I think JVMCI global handles could
> be used instead,
> but I’ll leave that up to others.
More information about the hotspot-compiler-dev
mailing list