GC_INNER void GC_push_finalizer_structures(void)
{
+ GC_ASSERT((word)&dl_head % sizeof(word) == 0);
+ GC_ASSERT((word)&fo_head % sizeof(word) == 0);
+ GC_ASSERT((word)&GC_finalize_now % sizeof(word) == 0);
+
GC_push_all((ptr_t)(&dl_head), (ptr_t)(&dl_head) + sizeof(word));
GC_push_all((ptr_t)(&fo_head), (ptr_t)(&fo_head) + sizeof(word));
GC_push_all((ptr_t)(&GC_finalize_now),
if (GC_thr_initialized) return;
GC_thr_initialized = TRUE;
+ GC_ASSERT((word)&GC_threads % sizeof(word) == 0);
# ifdef HANDLE_FORK
/* Prepare for a possible fork. */
pthread_atfork(GC_fork_prepare_proc, GC_fork_parent_proc,
GC_ASSERT(I_HOLD_LOCK());
if (!EXPECT(keys_initialized, TRUE)) {
+ GC_ASSERT((word)&GC_thread_key % sizeof(word) == 0);
if (0 != GC_key_create(&GC_thread_key, 0)) {
ABORT("Failed to create key for local allocator");
}
word ed_size = GC_ed_size;
if (ed_size == 0) {
+ GC_ASSERT((word)&GC_ext_descriptors % sizeof(word) == 0);
GC_push_typed_structures = GC_push_typed_structures_proc;
UNLOCK();
new_size = ED_INITIAL_SIZE;
GC_ASSERT(I_HOLD_LOCK());
if (GC_thr_initialized) return;
+
+ GC_ASSERT((word)&GC_threads % sizeof(word) == 0);
GC_main_thread = GetCurrentThreadId();
GC_thr_initialized = TRUE;