This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: External thread suspension (again)


Bryce McKinlay wrote:
Keith Seitz wrote:
Hans Boehm wrote:

Some comments/questions:

1) I don't see where the SUSPENDED flag gets set in response to
GC_suspend_thread.  It gets set in GC_suspend_self(), but I don't
think you get there unless it has already been set?

That gets set in GC_suspend_self. When GC_stop_world is called, GC_suspend_all will not signal the externally suspended thread (because GC_start_blocking will set thread_blocked).

This works in the GC_suspend_self() case, but how does GC_start_blocking get called in the GC_suspend_thread() case? Doesn't GC_suspend_thread() need to set SUSPENDED before it sends the suspend signal?

Doh! I'm an idiot. Talk about not seeing the forest!


I've added that to the latest revision of the patch (which is attached for completeness).

[Hmm. Now that I see it, I wonder if it would be prudent to add some sanity checks to GC_suspend_thread, GC_suspend_self, and GC_resume_thread to make sure the thread is known to the GC, otherwise lookup_thread could return null...]

Keith


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]