/* Mark from all roots. */
/* Minimize junk left in my registers and on the stack */
GC_clear_a_few_frames();
- GC_noop(0,0,0,0,0,0);
+ GC_noop6(0,0,0,0,0,0);
+
GC_initiate_gc();
for (i = 0;;i++) {
if ((*stop_func)()) {
# endif
ENTER_GC();
/* Minimize junk left in my registers */
- GC_noop(0,0,0,0,0,0);
+ GC_noop6(0,0,0,0,0,0);
result = GC_try_to_collect_inner(stop_func != 0 ? stop_func :
GC_default_stop_func);
EXIT_GC();
#endif
/* Make arguments appear live to compiler */
-#if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__CC_ARM)
- void GC_noop(void*, ...);
-#else
-# ifdef __DMC__
- void GC_noop(...);
-# else
- void GC_noop();
-# endif
-#endif
+void GC_noop6(word, word, word, word, word, word);
GC_API void GC_CALL GC_noop1(word);
# include <excpt.h>
#endif
-/* We put this here to minimize the risk of inlining. */
-/*VARARGS*/
-#if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__CC_ARM)
- void GC_noop(void * p GC_ATTR_UNUSED, ...) {}
-#else
-# ifdef __DMC__
- void GC_noop(...) {}
-# else
- void GC_noop() {}
-# endif
-#endif
+/* Make arguments appear live to compiler. Put here to minimize the */
+/* risk of inlining. Used to minimize junk left in registers. */
+void GC_noop6(word arg1 GC_ATTR_UNUSED, word arg2 GC_ATTR_UNUSED,
+ word arg3 GC_ATTR_UNUSED, word arg4 GC_ATTR_UNUSED,
+ word arg5 GC_ATTR_UNUSED, word arg6 GC_ATTR_UNUSED)
+{
+ /* Empty */
+}
/* Single argument version, robust against whole program analysis. */
volatile word GC_noop_sink;