# define GC_MACH_THREAD_STATE_FLAVOR PPC_THREAD_STATE
# elif defined(I386)
# define GC_MACH_THREAD_STATE_FLAVOR i386_THREAD_STATE
+# elif defined(X86_64)
+# define GC_MACH_THREAD_STATE_FLAVOR x86_THREAD_STATE64
# else
# define GC_MACH_THREAD_STATE_FLAVOR MACHINE_THREAD_STATE
# endif
# define ENABLE_SIGNALS()
# else
# define DISABLE_SIGNALS() GC_disable_signals()
- void GC_disable_signals();
+ void GC_disable_signals(void);
# define ENABLE_SIGNALS() GC_enable_signals()
- void GC_enable_signals();
+ void GC_enable_signals(void);
# endif
# endif
# else
# if defined(GC_SOLARIS_THREADS) || defined(GC_WIN32_THREADS) \
|| defined(GC_PTHREADS)
- void GC_stop_world();
- void GC_start_world();
+ void GC_stop_world(void);
+ void GC_start_world(void);
# define STOP_WORLD() GC_stop_world()
# define START_WORLD() GC_start_world()
# else
extern GC_bool GC_world_stopped;
#endif
+extern void (*GC_notify_event) GC_PROTO((GC_EventType));
+
/* Operations */
# ifndef abs
# define abs(x) ((x) < 0? (-(x)) : (x))
void GC_register_dynamic_libraries GC_PROTO((void));
/* Add dynamic library data sections to the root set. */
+void GC_cond_register_dynamic_libraries GC_PROTO((void));
+ /* Remove and reregister dynamic libraries if we're */
+ /* configured to do that at each GC. */
+
GC_bool GC_register_main_static_data GC_PROTO((void));
/* We need to register the main data segment. Returns */
/* TRUE unless this is done implicitly as part of */
/* for processing by GC_invoke_finalizers. */
/* Invoked with lock. */
+void GC_process_togglerefs (void);
+ /*Process the togglerefs before GC starts */
+
void GC_notify_or_invoke_finalizers GC_PROTO((void));
/* If GC_finalize_on_demand is not set, invoke */
/* eligible finalizers. Otherwise: */
# ifdef __DMC__
GC_API void GC_noop(...);
# else
- GC_API void GC_noop();
+ GC_API void GC_noop(void*,...);
# endif
# endif
/* GC_notify_all_builder() is called when GC_fl_builder_count */
/* reaches 0. */
- extern void GC_acquire_mark_lock();
- extern void GC_release_mark_lock();
- extern void GC_notify_all_builder();
+ extern void GC_acquire_mark_lock(void);
+ extern void GC_release_mark_lock(void);
+ extern void GC_notify_all_builder(void);
/* extern void GC_wait_builder(); */
- extern void GC_wait_for_reclaim();
+ extern void GC_wait_for_reclaim(void);
extern word GC_fl_builder_count; /* Protected by mark lock. */
# endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */
# ifdef PARALLEL_MARK
- extern void GC_notify_all_marker();
- extern void GC_wait_marker();
+ extern void GC_notify_all_marker(void);
+ extern void GC_wait_marker(void);
extern word GC_mark_no; /* Protected by mark lock. */
extern void GC_help_marker(word my_mark_no);