summaryrefslogtreecommitdiff
path: root/libguile/inline.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2012-05-17 11:21:15 +0200
committerAndy Wingo <wingo@pobox.com>2012-05-17 11:25:58 +0200
commit730af462c387ce9cca30e84b8963edba10399d2e (patch)
treeb6bcf1f6801269dcb1163b77b24a7959128e9dbb /libguile/inline.h
parent688291fe19a620cb46f8286ff088891da1ed8169 (diff)
downloadguile-730af462c387ce9cca30e84b8963edba10399d2e.tar.gz
inline scm_cons, scm_car, scm_cdr
* libguile/pairs.h (scm_cons, scm_car, scm_cdr): Define these as inline functions. (scm_is_pair): Move here from inline.h. * libguile/pairs.c: Remove definitions here, and define gsubrs. * libguile/inline.h: Remove scm_is_pair implementation. * libguile/inline.c: Include pairs.h to residualize inlines from pairs.h.
Diffstat (limited to 'libguile/inline.h')
-rw-r--r--libguile/inline.h29
1 files changed, 0 insertions, 29 deletions
diff --git a/libguile/inline.h b/libguile/inline.h
index 618890d36..89bbf9de7 100644
--- a/libguile/inline.h
+++ b/libguile/inline.h
@@ -29,7 +29,6 @@
#include "libguile/__scm.h"
-#include "libguile/pairs.h"
#include "libguile/gc.h"
#include "libguile/threads.h"
#include "libguile/array-handle.h"
@@ -41,7 +40,6 @@
SCM_INLINE SCM scm_array_handle_ref (scm_t_array_handle *h, ssize_t pos);
SCM_INLINE void scm_array_handle_set (scm_t_array_handle *h, ssize_t pos, SCM val);
-SCM_INLINE int scm_is_pair (SCM x);
SCM_INLINE int scm_is_string (SCM x);
SCM_INLINE SCM scm_cell (scm_t_bits car, scm_t_bits cdr);
@@ -73,33 +71,6 @@ scm_array_handle_set (scm_t_array_handle *h, ssize_t p, SCM v)
}
SCM_INLINE_IMPLEMENTATION int
-scm_is_pair (SCM x)
-{
- /* The following "workaround_for_gcc_295" avoids bad code generated by
- i386 gcc 2.95.4 (the Debian packaged 2.95.4-24 at least).
-
- Under the default -O2 the inlined SCM_I_CONSP test gets "optimized" so
- the fetch of the tag word from x is done before confirming it's a
- non-immediate (SCM_NIMP). Needless to say that bombs badly if x is a
- immediate. This was seen to afflict scm_srfi1_split_at and something
- deep in the bowels of ceval(). In both cases segvs resulted from
- deferencing a random immediate value. srfi-1.test exposes the problem
- through a short list, the immediate being SCM_EOL in that case.
- Something in syntax.test exposed the ceval() problem.
-
- Just "volatile SCM workaround_for_gcc_295 = lst" is enough to avoid the
- problem, without even using that variable. The "w=w" is just to
- prevent a warning about it being unused.
- */
-#if defined (__GNUC__) && __GNUC__ == 2 && __GNUC_MINOR__ == 95
- volatile SCM workaround_for_gcc_295 = x;
- workaround_for_gcc_295 = workaround_for_gcc_295;
-#endif
-
- return SCM_I_CONSP (x);
-}
-
-SCM_INLINE_IMPLEMENTATION int
scm_is_string (SCM x)
{
return SCM_HAS_TYP7 (x, scm_tc7_string);