~ chicken-core (chicken-5) d095c9c20d68e3f85a78155113c8278a0711eac6
commit d095c9c20d68e3f85a78155113c8278a0711eac6
Author: Peter Bex <peter.bex@xs4all.nl>
AuthorDate: Thu Oct 3 20:05:03 2013 +0200
Commit: Peter Bex <peter.bex@xs4all.nl>
CommitDate: Thu Oct 3 20:05:03 2013 +0200
Use HAVE_STATEMENT_EXPRESSIONS for determining how to define C_a_i() as well.
Also move it to chicken.h so that we can decide to use a different
compiler at any time without running into trouble that the C_a_i function
does not exist in libchicken. Also, inline is faster if it's available.
diff --git a/chicken.h b/chicken.h
index e02fba66..dc0af17c 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1879,11 +1879,6 @@ C_fctexport void C_ccall C_copy_closure(C_word c, C_word closure, C_word k, C_wo
C_fctexport void C_ccall C_dump_heap_state(C_word x, C_word closure, C_word k) C_noret;
C_fctexport void C_ccall C_filter_heap_objects(C_word x, C_word closure, C_word k, C_word func,
C_word vector, C_word userarg) C_noret;
-
-#ifndef HAVE_STATEMENT_EXPRESSIONS
-C_fctexport C_word *C_a_i(C_word **a, int n);
-#endif
-
C_fctexport time_t C_fcall C_seconds(C_long *ms) C_regparm;
C_fctexport C_word C_a_i_list(C_word **a, int c, ...);
C_fctexport C_word C_a_i_string(C_word **a, int c, ...);
@@ -2049,6 +2044,18 @@ C_fctexport void C_default_5fstub_toplevel(C_word c,C_word d,C_word k) C_noret;
/* Inline functions: */
+#ifndef HAVE_STATEMENT_EXPRESSIONS
+
+C_inline C_word *C_a_i(C_word **a, int n)
+{
+ C_word *p = *a;
+
+ *a += n;
+ return p;
+}
+
+#endif
+
C_inline C_word
C_mutate2(C_word *slot, C_word val)
{
diff --git a/runtime.c b/runtime.c
index 9bef9400..ab61a0de 100644
--- a/runtime.c
+++ b/runtime.c
@@ -4613,19 +4613,6 @@ C_regparm C_word C_fcall C_i_string_ci_equal_p(C_word x, C_word y)
}
-#if !defined(__GNUC__) && !defined(__INTEL_COMPILER)
-
-C_word *C_a_i(C_word **a, int n)
-{
- C_word *p = *a;
-
- *a += n;
- return p;
-}
-
-#endif
-
-
C_word C_a_i_list(C_word **a, int c, ...)
{
va_list v;
Trap