Check that SIG_SUSPEND and SIG_THR_RESTART are different (Pthreads)

* pthread_stop_world.c (GC_stop_init): Add a check that GC_sig_suspend
value differs from that of GC_sig_thr_restart (abort otherwise).
Fix missing tabs in SMakefile.amiga

* SMakefile.amiga (clean, test, gctest, setjmp_t, gc*.lib, setjmp_t):
Fix indentation (replace spaces with tabs).
Expand tabs to spaces in rarely used (ancient) files

* extra/AmigaOS.c: Expand tabs to spaces.
* extra/MacOS.c: Likewise.
* extra/Mac_files/dataend.c: Likewise.
* extra/Mac_files/datastart.c: Likewise.
* extra/symbian.cpp: Likewise.
* cord/cordxtra.c: Likewise.
Fix typos in comments

* blacklst.c: Fix typo ("even though").
* cord/cordbscs.c: Fix typo ("exponentially").
* cord/cordxtra.c: Fix typo ("represented").
* dyn_load.c: Fix typos ("uncollectible", "occurred").
* extra/AmigaOS: Fix typos ("specific", "necessary", "always",
"effectiveness").
* finalize.c: Fix typo ("descendants").
* include/cord.h: Fix typo ("idiosyncrasies").
* include/gc.h: Fix typo ("collectible").
* include/gc_allocator.h: Fix typos ("allocator", "[un]collectible").
* mach_dep.c: Fix typo ("erroneously").
* malloc.c: Fix typos ("[un]collectible", "pointer-free",
"initialization").
* mallocx.c: Fix typos ("largely", "pointer-free", "uncollectible").
* mark.c: Fix typos ("[un]collectible", "even though").
* misc.c: Fix typo ("erroneously").
* os_dep.c: Fix typos ("non-addressable", "happening", "pointer-free").
* tests/test.c: Fix typos ("uncollectible", "reversed").
* tests/test_cpp.cc: Fix typos ("[un]collectible").
* typd_mlc.c: Fix typo ("copyright").
* win32_threads.c: Fix typos ("optimization", "uncollectible").
Update AUTHORS file
Fix more typos in comments and documentation

* alloc.c: Fix typo ("overflow").
* configure.ac: Fix typo ("optimization").
* doc/README.amiga: Fix typos ("also", "specific", "unnecessary").
* doc/README.cords: Fix typos ("descendants", "highlighted").
* ChangeLog: Fix typos ("[un]collectible").
* README.md: Likewise.
* dbg_mlc.c: Likewise.
* doc/README.hp: Likewise.
* doc/README.linux: Likewise.
* doc/gcdescr.html: Likewise.
* doc/gcinterface.html: Likewise.
* include/gc_mark.h: Likewise.
* include/gc_pthread_redirects.h: Likewise.
* include/new_gc_alloc.h: Likewise.
* include/private/dbg_mlc.h: Likewise.
* include/private/gc_pmark.h: Likewise.
* include/private/gc_priv.h: Likewise.
* new_hblk.c: Likewise.
* ChangeLog: Fix typo ("multi-threaded").
* cord/cordxtra.c: Likewise.
* doc/debugging.html: Likewise.
* doc/gcinterface.html: Likewise.
* doc/leak.html: Likewise.
* doc/overview.html: Likewise.
* doc/simple_example.html: Likewise.
* include/gc_mark.h: Likewise.
* include/private/gc_priv.h: Likewise.
* os_dep.c: Likewise.
* ptr_chck.c: Likewise.
* README.md: Fix typo ("pointer-free").
* allchblk.c: Likewise.
* doc/debugging.html: Likewise.
* doc/gcdescr.html: Likewise.
Enable thread-local allocation support for Clang on Cygwin

* include/private/thread_local_alloc.h (USE_PTHREAD_SPECIFIC): Use
(instead of USE_COMPILER_TLS) for clang3.1/x86 cygwin to workaround
"thread-local storage is unsupported for the current target" error.
Fix GC_PTHREAD_PTRVAL definition for GC_PTHREADS_PARAMARK (Win32)

* win32_threads.c (GC_PTHREAD_PTRVAL): Define also if
GC_PTHREADS_PARAMARK (even w/o GC_WIN32_PTHREADS).
Add assertion to LOCK definition that lock is not already held

* include/private/gc_locks.h (UNCOND_LOCK): Add assertion that
I_DONT_HOLD_LOCK (lock is not held precondition).
Make GC_mark_lock_holder variable static

* include/private/gc_locks.h (GC_mark_lock_holder): Remove declaration.
* pthread_support.c (GC_mark_lock_holder): Change from GC_INNER to
STATIC (defined only if GC_ASSERTIONS).
* win32_threads.c (GC_mark_lock_holder): Likewise.
Mark GC_started_thread_while_stopped() as GC_INNER

* mark.c (GC_started_thread_while_stopped): Declare as GC_INNER
(declared only if GC_WIN32_THREADS).
* win32_threads.c (GC_started_thread_while_stopped): Define as GC_INNER.
Add double-lock assertion to GC_acquire_mark_lock

* pthread_support.c (GC_acquire_mark_lock): Add assertion that
GC_mark_lock_holder is not set to the current thread on the function
entry (i.e., assertion against double lock).
* win32_threads.c (GC_acquire_mark_lock): Likewise.
Define SET/UNSET_MARK_LOCK_HOLDER macros to set/check GC_acquire_mark_lock
(refactoring)

* pthread_support.c (SET_MARK_LOCK_HOLDER, UNSET_MARK_LOCK_HOLDER):
New macro (defined to no action unless GC_ASSERTIONS).
* win32_threads.c (SET_MARK_LOCK_HOLDER, UNSET_MARK_LOCK_HOLDER):
Likewise.
* pthread_support.c (GC_acquire_mark_lock, GC_release_mark_lock,
GC_wait_builder, GC_wait_marker): Use [UN]SET_MARK_LOCK_HOLDER
(instead of GC_mark_lock_holder setters and checkers).
* win32_threads.c (GC_acquire_mark_lock, GC_release_mark_lock,
GC_wait_builder, GC_wait_marker): Likewise.
* win32_threads.c (GC_mark_lock_holder): Change type to DWORD unless
GC_PTHREADS_PARAMARK defined.
* win32_threads.c (GC_acquire_mark_lock, GC_notify_all_builder):
Remove unnecessary cast of GetCurrentThreadId() result.
Do not set GC_lock_holder by call_with_alloc_lock if assertions disabled

* include/private/gc_locks.h (GC_lock_holder): Do not declare unless
GC_ASSERTIONS (the variable is not longer used to prevent recursive
reentry in the system call wrapper).
* misc.c (GC_call_with_alloc_lock): Remove [UN]SET_LOCK_HOLDER
explicit calls since GC_lock_holder is set properly by [UN]LOCK()
(in case of GC_ASSERTIONS).
* pthread_support.c (GC_lock_holder): Do not define unless
GC_ASSERTIONS; adjust comment.
* win32_threads.c (GC_lock_holder): Likewise.
Define [UN]SET_LOCK_HOLDER and I_[DONT_]HOLD_LOCK macros only if used
(code refactoring)

* include/private/gc_locks.h (SET_LOCK_HOLDER, UNSET_LOCK_HOLDER,
I_HOLD_LOCK, I_DONT_HOLD_LOCK): Do not define unless GC_ASSERTIONS.
* include/private/gc_locks.h (SET_LOCK_HOLDER, UNSET_LOCK_HOLDER):
Do not define unless THREADS.
Test NO_WRAP_MARK_SOME macro to suppress WRAP_MARK_SOME-specific code

* mark.c (WRAP_MARK_SOME): Do not define if NO_WRAP_MARK_SOME defined.
Allow to compile GC_inner_start_routine aside from extra/gc.c
(for proper exceptions support on Linux)

* extra/gc.c: Do not include pthread_start.c if
GC_PTHREAD_START_STANDALONE defined (thus pthread_start.c could go to
a standalone compilation unit).
* include/private/pthread_support.h (GC_INNER_PTHRSTART): New macro
(defined to either empty or GC_INNER depending on
GC_PTHREAD_START_STANDALONE).
* include/private/pthread_support.h (GC_start_rtn_prepare_thread,
GC_thread_exit_proc): Replace GC_INNER to GC_INNER_PTHRSTART.
* pthread_support.c (GC_thread_exit_proc,
GC_start_rtn_prepare_thread): Likewise.
* pthread_start.c (GC_inner_start_routine): Define as
GC_INNER_PTHRSTART; do not call GC_log_printf if
GC_PTHREAD_START_STANDALONE (since the function might be visible only
within extra/gc.c compilation unit).
* pthread_support.c (GC_inner_start_routine): Declare as
GC_INNER_PTHRSTART.
Fix typo in comment of GC_mark_from

* mark.c (GC_mark_from): Fix typo (capitalization) in comment ("ASAP").
Eliminate GC_first_nonempty atomic value reload in GC_mark_local assertion

* mark.c (GC_mark_from, GC_mark_local, GC_do_parallel_mark): Reformat
code partially.
* mark.c (GC_mark_local): Use "my_first_nonempty" in assertion
instead of reloading value of GC_first_nonempty twice.
Fix assertion violation in GC_mark_from prefetch loop

* mark.c (GC_mark_from): If "descr" is less than size of word then
skip prefetching and PUSH_CONTENTS of the current entry (thus,
eliminate assertion violation in the prefetch loop) if SMALL_CONFIG is
not defined.