[Gc] Patches resubmission 6
hans.boehm at hp.com
Fri Jun 12 15:54:57 PDT 2009
On general principles, I added a GC_ASSERT(FALSE) after the "Can't happen" comment.
I don't understand the "FIXME: Should we just ignore this?" comment. I left it for now.
> -----Original Message-----
> From: gc-bounces at napali.hpl.hp.com
> [mailto:gc-bounces at napali.hpl.hp.com] On Behalf Of Ivan Maidanski
> Sent: Friday, June 12, 2009 8:16 AM
> To: gc at napali.hpl.hp.com
> Subject: [Gc] Patches resubmission 6
> This cumulative patch (resembling diff43, diff51, diff67,
> diff76, diff83 partly) deals with misc fixes for unnecessary
> locking and markers' stacks processing on Win32. Only
> pthread_support.c and win32_threads.c are affected. The patch
> doesn't depend on my previous pending cumulative patches
> (diff88_cvs, diff95_cvs, diff96_cvs).
> ChangeLog entries:
> * pthread_support.c (GC_inner_start_routine): Don't
> release the
> GC lock between GC_register_my_thread_inner() and
> GC_init_thread_local() calls (post the "registered" even after
> calling GC_init_thread_local()).
> * win32_threads.c (GC_register_my_thread,
> Use GC_lookup_thread_inner() instead of GC_lookup_thread() and
> acquire the GC lock only once.
> * win32_threads.c (GC_thr_init): Call
> directly instead of GC_register_my_thread() since I_HOLD_LOCK
> and our (main) thread is not registered yet (add
> assertion for it).
> * win32_threads.c (GC_init_parallel): Call
> directly instead of GC_lookup_thread() (since I_HOLD_LOCK).
> * win32_threads.c (GC_lookup_thread): Remove unused function.
> * win32_threads.c: Remove "#error GC_DLL untested
> with Cygwin".
> * win32_threads.c (GC_win32_dll_threads): Define as
> FALSE macro
> also if THREAD_LOCAL_ALLOC or GC_PTHREADS.
> * win32_threads.c (GC_use_DllMain): Call ABORT also
> if GC_PTHREADS
> (for Cygwin).
> * win32_threads.c (GC_push_stack_for): Add
> parentheses around "&&"
> (inside GC_ASSERT) to prevent compiler warning.
> * win32_threads.c (GC_push_all_stacks): Remove FIXME for
> * win32_threads.c (MAX_MARKERS, GC_markers): Move the
> to a place before GC_get_next_stack().
> * win32_threads.c (marker_sp, marker_bsp): New static
> arrays (same
> as in pthread_support.c).
> * win32_threads.c (marker_last_stack_min): New static
> arrays (the
> same semantics as for last_stack_min of GC_Thread_Rep).
> * win32_threads.c (GC_get_next_stack): Handle marker threads.
> * win32_threads.c (GC_mark_thread): Save the current
> stack pointer
> to marker_[b]sp.
> * win32_threads.c (start_mark_threads): Initialize
> marker_last_stack_min elements (to "unset" value).
More information about the Gc