1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 20:00:19 +02:00

* configure.in: New check for uca lib (needed for IA64 on HP-UX).

* threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
scm_ia64_register_backing_store_base() instead of Linux-specific
implementations.

* gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
New declarations.

* gc.c (__libc_ia64_register_backing_store_base): Declaration
removed.
(scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
implementations for Linux and HP-UX.

* coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
and scm_ia64_register_backing_store_base() instead of
Linux-specific implementations.

* continuations.h (__libc_ia64_register_backing_store_base):
Declaration removed.
(scm_t_contregs): New "fresh" field.

* continuations.c (ia64_getcontext): Removed.
(scm_make_continuation): Use continuation fresh field instead of
interpreting getcontext return values (which isn't portable).  Use
scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
instead of Linux-specific implementations.
(copy_stack_and_call): Use scm_ia64_register_backing_store_base()
instead of Linux-specific implementation.

* _scm.h (__ia64__): Also detect __ia64.
This commit is contained in:
Neil Jerram 2006-10-25 22:37:24 +00:00
parent ba6984d09b
commit 9a5fa6e98a
10 changed files with 147 additions and 79 deletions

View file

@ -1,3 +1,9 @@
2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
IA64 HP-UX patch from Hrvoje Nikšić. (Thanks!)
* configure.in: New check for uca lib (needed for IA64 on HP-UX).
2006-10-06 Rob Browning <rlb@defaultvalue.org> 2006-10-06 Rob Browning <rlb@defaultvalue.org>
Guile 1.8.1 released. Guile 1.8.1 released.
@ -23,7 +29,7 @@
* configure.in (complex.h, complex double, csqrt): New tests. * configure.in (complex.h, complex double, csqrt): New tests.
2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr> 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
* configure.in: Check for `isblank ()'. * configure.in: Check for `isblank ()'.
@ -57,7 +63,7 @@
* configure.in (AC_CHECK_MEMBERS): Test struct tm.tm_gmtoff. * configure.in (AC_CHECK_MEMBERS): Test struct tm.tm_gmtoff.
2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr> 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
* NEWS: Mentioned the new behavior of `equal?' for structures. * NEWS: Mentioned the new behavior of `equal?' for structures.
@ -260,7 +266,7 @@
* acinclude.m4 (ACX_PTHREAD): New. * acinclude.m4 (ACX_PTHREAD): New.
* configure.in: Use it instead of simply looking for -lpthread. * configure.in: Use it instead of simply looking for -lpthread.
Thanks to Andreas Vögele! Thanks to Andreas Vögele!
2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de> 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
@ -313,7 +319,7 @@
2004-07-09 Marius Vollmer <mvo@zagadka.de> 2004-07-09 Marius Vollmer <mvo@zagadka.de>
* configure.in: Bugfix: set SCM_I_GSC_T_UINTMAX, not * configure.in: Bugfix: set SCM_I_GSC_T_UINTMAX, not
SCM_I_GSC_T_INTMAX in two places. Thanks to Andreas Vögele! SCM_I_GSC_T_INTMAX in two places. Thanks to Andreas Vögele!
2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de> 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
@ -2032,7 +2038,7 @@ Tue Dec 14 09:12:22 1999 Greg J. Badros <gjb@cs.washington.edu>
1999-07-19 Jim Blandy <jimb@savonarola.red-bean.com> 1999-07-19 Jim Blandy <jimb@savonarola.red-bean.com>
Fixes for EMX from Mikael Ståldal. Fixes for EMX from Mikael Ståldal.
* configure.in: Check for <io.h>. * configure.in: Check for <io.h>.
* configure: Regenerated. * configure: Regenerated.

View file

@ -212,6 +212,7 @@ if test "$enable_elisp" = yes; then
else else
SCM_I_GSC_ENABLE_ELISP=0 SCM_I_GSC_ENABLE_ELISP=0
fi fi
AC_CHECK_LIB(uca, __uc_get_ar_bsp)
AC_C_CONST AC_C_CONST
@ -221,6 +222,7 @@ if test "$ac_cv_c_inline" != no; then
else else
SCM_I_GSC_C_INLINE=NULL SCM_I_GSC_C_INLINE=NULL
fi fi
AC_CHECK_LIB(uca, __uc_get_ar_bsp)
AC_C_BIGENDIAN AC_C_BIGENDIAN

View file

@ -1,3 +1,37 @@
2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
* threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
scm_ia64_register_backing_store_base() instead of Linux-specific
implementations.
* gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
New declarations.
* gc.c (__libc_ia64_register_backing_store_base): Declaration
removed.
(scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
implementations for Linux and HP-UX.
* coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
and scm_ia64_register_backing_store_base() instead of
Linux-specific implementations.
* continuations.h (__libc_ia64_register_backing_store_base):
Declaration removed.
(scm_t_contregs): New "fresh" field.
* continuations.c (ia64_getcontext): Removed.
(scm_make_continuation): Use continuation fresh field instead of
interpreting getcontext return values (which isn't portable). Use
scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
instead of Linux-specific implementations.
(copy_stack_and_call): Use scm_ia64_register_backing_store_base()
instead of Linux-specific implementation.
* _scm.h (__ia64__): Also detect __ia64.
2006-10-03 Kevin Ryde <user42@zip.com.au> 2006-10-03 Kevin Ryde <user42@zip.com.au>
* eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
@ -45,7 +79,7 @@
* numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
functions. functions.
2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr> 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
* srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'. * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
(make_predset, define_predset, make_strset, define_strset, false, (make_predset, define_predset, make_strset, define_strset, false,
@ -132,7 +166,7 @@
arrangements and avoid an illegal instruction during arrangements and avoid an illegal instruction during
call-with-current-continuation. call-with-current-continuation.
2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr> 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
* numbers.c (guile_ieee_init): Use regular ANSI C casts rather * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
than C++-style `X_CAST ()'. Patch posted by by Mike Gran. than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
@ -156,7 +190,7 @@
(scm_strptime): Use tm_gmtoff from the strptime result when that field (scm_strptime): Use tm_gmtoff from the strptime result when that field
exists, it's set by glibc strptime "%s". exists, it's set by glibc strptime "%s".
2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr> 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
* eq.c: Include "struct.h", "goops.h" and "objects.h". * eq.c: Include "struct.h", "goops.h" and "objects.h".
(scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
@ -294,7 +328,7 @@
2006-04-06 Kevin Ryde <user42@zip.com.au> 2006-04-06 Kevin Ryde <user42@zip.com.au>
* fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
instead of toggling it. Reported by Ludovic Courtès. instead of toggling it. Reported by Ludovic Courtès.
2006-03-26 Marius Vollmer <mvo@zagadka.de> 2006-03-26 Marius Vollmer <mvo@zagadka.de>
@ -306,7 +340,7 @@
* gc_os_dep.c (scm_get_stack_base): Abort when the machine type is * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
unknown instead of returning NULL. unknown instead of returning NULL.
2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr> 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
* numbers.c (scm_i_mem2number): Renamed to * numbers.c (scm_i_mem2number): Renamed to
scm_c_locale_stringn_to_number. scm_c_locale_stringn_to_number.
@ -398,7 +432,7 @@
(scm_i_sweep_statistics_init): New macro. (scm_i_sweep_statistics_init): New macro.
(scm_i_sweep_statistics_sum): New macro (scm_i_sweep_statistics_sum): New macro
2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr> 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
* strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
LEN. Without this, too much collectable memory gets unregistered, LEN. Without this, too much collectable memory gets unregistered,
@ -516,7 +550,7 @@
* inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
to inline.h to make it inline. to inline.h to make it inline.
2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr> 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
* strings.c (scm_i_take_stringbufn): New. * strings.c (scm_i_take_stringbufn): New.
(scm_i_c_take_symbol): New. (scm_i_c_take_symbol): New.
@ -549,7 +583,7 @@
2005-12-29 Neil Jerram <neil@ossau.uklinux.net> 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
* fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
the GC when allocated_fluids_len is zero. the GC when allocated_fluids_len is zero.
2005-12-14 Neil Jerram <neil@ossau.uklinux.net> 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
@ -581,7 +615,7 @@
* srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
non-const. non-const.
(scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès! (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
* threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile, * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
scm_enter_guile): Removed from public API. See comment at scm_enter_guile): Removed from public API. See comment at
@ -596,7 +630,7 @@
* eval.c (scm_m_cond): Recognize SRFI 61 cond syntax. * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
(CEVAL): Evaluate SRFI 61 cond clauses. (CEVAL): Evaluate SRFI 61 cond clauses.
2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr> 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
* gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL. * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
This was typically hit when running `gc-live-object-stats' right This was typically hit when running `gc-live-object-stats' right
@ -610,7 +644,7 @@
2005-11-26 Kevin Ryde <user42@zip.com.au> 2005-11-26 Kevin Ryde <user42@zip.com.au>
* gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
by Ludovic Courtès. by Ludovic Courtès.
* list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
"register". "register".
@ -622,7 +656,7 @@
* socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
much too big to want to inline. much too big to want to inline.
2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr> 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
* print.c (EXIT_NESTED_DATA): Before popping from the stack, reset * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
the value at its top. This fixes a reference leak. the value at its top. This fixes a reference leak.
@ -630,14 +664,14 @@
`PSTATE_STACK_SET ()' in order to avoid undesired potential side `PSTATE_STACK_SET ()' in order to avoid undesired potential side
effects. effects.
2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr> 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
* gc.c (scm_weak_vectors): Removed. * gc.c (scm_weak_vectors): Removed.
2005-11-12 Kevin Ryde <user42@zip.com.au> 2005-11-12 Kevin Ryde <user42@zip.com.au>
* socket.c (scm_setsockopt): Missing @defvar in docstring. Reported * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
by Ludovic Courtès. by Ludovic Courtès.
2005-11-07 Marius Vollmer <mvo@zagadka.de> 2005-11-07 Marius Vollmer <mvo@zagadka.de>
@ -659,7 +693,7 @@
* debug.h (SCM_CHEAPTRAPS_P): Removed. * debug.h (SCM_CHEAPTRAPS_P): Removed.
2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr> 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
* socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc. * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
(scm_connect, scm_bind, scm_sendto): Accept sockaddr object. (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
@ -967,7 +1001,7 @@
2005-05-11 Neil Jerram <neil@ossau.uklinux.net> 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
Fix C99isms reported by Ludovic Courtès: Fix C99isms reported by Ludovic Courtès:
* threads.c (s_scm_lock_mutex): Don't declare msg in middle of * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
code. code.
@ -1082,7 +1116,7 @@
2005-03-18 Kevin Ryde <user42@zip.com.au> 2005-03-18 Kevin Ryde <user42@zip.com.au>
* arbiters.c (FETCH_STORE) [generic C]: Should be * arbiters.c (FETCH_STORE) [generic C]: Should be
scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès. scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
2005-03-13 Kevin Ryde <user42@zip.com.au> 2005-03-13 Kevin Ryde <user42@zip.com.au>
@ -2228,7 +2262,7 @@
2004-11-02 Marius Vollmer <mvo@zagadka.de> 2004-11-02 Marius Vollmer <mvo@zagadka.de>
Mac OS X and OpenBSD compatibility patches from Andreas Vögele. Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
Thanks! Thanks!
* backtrace.c (scm_display_backtrace_with_highlights): Join the * backtrace.c (scm_display_backtrace_with_highlights): Join the
@ -2672,7 +2706,7 @@
* numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
numbers.c. numbers.c.
(scm_to_mpz, scm_from_mpz): New. (scm_to_mpz, scm_from_mpz): New.
Thanks to Andreas Vögele! Thanks to Andreas Vögele!
* read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
just on a line of its own. just on a line of its own.
@ -2681,7 +2715,7 @@
scm_string_tabulate, string_upcase_x, string_down_case_x, scm_string_tabulate, string_upcase_x, string_down_case_x,
string_titlecase_x, string_reverse_x, scm_string_tokenize): Use string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
size_t instead of int for indices into strings. Make sure that no size_t instead of int for indices into strings. Make sure that no
over- or underflow occurs. Thanks to Andreas Vögele! over- or underflow occurs. Thanks to Andreas Vögele!
(scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended' (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
indices, which can also be negative. indices, which can also be negative.
@ -2703,7 +2737,7 @@
* filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
causes too many problems elsewhere (glibc, freebsd, mingw). Reported causes too many problems elsewhere (glibc, freebsd, mingw). Reported
by Andreas Vögele. by Andreas Vögele.
2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de> 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
@ -3538,7 +3572,7 @@
* gc_os_dep.c: update ifdefery for macosx. * gc_os_dep.c: update ifdefery for macosx.
(scm_get_stack_base): separate result initialization from (scm_get_stack_base): separate result initialization from
declaration to slience warnings with macosx and hp-ux using gcc declaration to slience warnings with macosx and hp-ux using gcc
3.3. Thanks to Andreas Vögele. 3.3. Thanks to Andreas Vögele.
2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl> 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
@ -3748,10 +3782,10 @@
2004-05-02 Kevin Ryde <user42@zip.com.au> 2004-05-02 Kevin Ryde <user42@zip.com.au>
* eval.c (scm_macroexp): Add prototype, since it's not in eval.h under * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
--disable-deprecated. Reported by Andreas Vögele. --disable-deprecated. Reported by Andreas Vögele.
* filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
particular on HP-UX). Reported by Andreas Vögele. particular on HP-UX). Reported by Andreas Vögele.
* list.c (varargs.h): Remove, leave just stdarg.h which is all the * list.c (varargs.h): Remove, leave just stdarg.h which is all the
code has support for. Fixes building with AIX cc, which is ansi but code has support for. Fixes building with AIX cc, which is ansi but
@ -3762,14 +3796,14 @@
2004-05-01 Kevin Ryde <user42@zip.com.au> 2004-05-01 Kevin Ryde <user42@zip.com.au>
* continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
is now gone. Reported by Andreas Vögele. is now gone. Reported by Andreas Vögele.
2004-04-28 Kevin Ryde <user42@zip.com.au> 2004-04-28 Kevin Ryde <user42@zip.com.au>
* backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT, * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
ctype.h tests, to avoid warnings from gcc on HP-UX about char as array ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
subscript. Reported by Andreas Vögele. subscript. Reported by Andreas Vögele.
Also cast through unsigned char to avoid passing negatives to those Also cast through unsigned char to avoid passing negatives to those
macros if input contains 8-bit values. macros if input contains 8-bit values.
@ -3783,17 +3817,17 @@
* numbers.c (scm_bit_extract): Use min instead of MIN. * numbers.c (scm_bit_extract): Use min instead of MIN.
(MIN): Remove, this conflicts with similar macro defined by limits.h (MIN): Remove, this conflicts with similar macro defined by limits.h
on HP-UX. Reported by Andreas Vögele. on HP-UX. Reported by Andreas Vögele.
* stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
particular on HP-UX). Reported by Andreas Vögele. particular on HP-UX). Reported by Andreas Vögele.
* threads.c (scm_threads_mark_stacks): Correction sizet -> size_t. * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
Reported by Andreas Vögele. Reported by Andreas Vögele.
* threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long), * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
by Andreas Vögele. by Andreas Vögele.
2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
@ -7646,7 +7680,7 @@
2002-08-26 Marius Vollmer <mvo@zagadka.ping.de> 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
* script.c (scm_compile_shell_switches): Added "2002" to Copyright * script.c (scm_compile_shell_switches): Added "2002" to Copyright
years. Thanks to Martin Grabmüller! years. Thanks to Martin Grabmüller!
2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl> 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
@ -9562,7 +9596,7 @@
* deprecation.c (scm_include_deprecated_features): Simplified. * deprecation.c (scm_include_deprecated_features): Simplified.
* eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
`SCM_IMP' instead of `!SCM_CELLP´. `SCM_IMP' instead of `!SCM_CELLP´.
* eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests. * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
Extract side-effecting operations from macros. Extract side-effecting operations from macros.
@ -10603,7 +10637,7 @@
2001-06-09 Marius Vollmer <mvo@zagadka.ping.de> 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
* ports.c (scm_lfwrite): Maintain columnd and row count in port. * ports.c (scm_lfwrite): Maintain columnd and row count in port.
Thanks to Matthias Köppe! Thanks to Matthias Köppe!
2001-06-08 Michael Livshin <mlivshin@bigfoot.com> 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
@ -10611,7 +10645,7 @@
space-happy C preprocessors. space-happy C preprocessors.
* filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
inside cookies. thanks to Matthias Köppe! inside cookies. thanks to Matthias Köppe!
2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de> 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
@ -11186,7 +11220,7 @@
SCM_VARIABLE_INIT since that it what it used to be. SCM_VARIABLE_INIT since that it what it used to be.
* deprecation.c (scm_include_deprecated_features): Make docstring * deprecation.c (scm_include_deprecated_features): Make docstring
ANSIsh. Thanks to Matthias Köppe! ANSIsh. Thanks to Matthias Köppe!
2001-05-21 Marius Vollmer <mvo@zagadka.ping.de> 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
@ -11540,7 +11574,7 @@
2001-05-15 Marius Vollmer <mvo@zagadka.ping.de> 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
* values.c (print_values): Print as a unreadable object, not as * values.c (print_values): Print as a unreadable object, not as
multiple lines. Thanks to Matthias Köppe! multiple lines. Thanks to Matthias Köppe!
2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de> 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
@ -11572,7 +11606,7 @@
2001-05-09 Michael Livshin <mlivshin@bigfoot.com> 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
from Matthias Köppe (thanks!): from Matthias Köppe (thanks!):
* ports.c (scm_c_read): pointer arithmetic on void pointers isn't * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
portable. portable.
@ -13429,7 +13463,7 @@
2001-01-11 Michael Livshin <mlivshin@bigfoot.com> 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
from Matthias Köppe: from Matthias Köppe:
* objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
casts its result, so doesn't yield an lvalue per ANSI C. casts its result, so doesn't yield an lvalue per ANSI C.

View file

@ -54,6 +54,9 @@
and differences between _scm.h and __scm.h. and differences between _scm.h and __scm.h.
**********************************************************************/ **********************************************************************/
#if defined(__ia64) && !defined(__ia64__)
# define __ia64__
#endif
#if HAVE_CONFIG_H #if HAVE_CONFIG_H
# include <config.h> # include <config.h>

View file

@ -92,22 +92,6 @@ continuation_print (SCM obj, SCM port, scm_print_state *state SCM_UNUSED)
return 1; return 1;
} }
#ifdef __ia64__
/* Extern declaration of getcontext()/setcontext() in order to redefine
getcontext() since on ia64-linux the second return value indicates whether
it returned from getcontext() itself or by running setcontext(). */
struct rv
{
long retval;
long first_return;
};
#ifdef __GNUC__
__attribute__ ((returns_twice))
#endif /* __GNUC__ */
extern struct rv ia64_getcontext (ucontext_t *) __asm__ ("getcontext");
#endif /* __ia64__ */
/* this may return more than once: the first time with the escape /* this may return more than once: the first time with the escape
procedure, then subsequently with the value to be passed to the procedure, then subsequently with the value to be passed to the
continuation. */ continuation. */
@ -120,9 +104,6 @@ scm_make_continuation (int *first)
scm_t_contregs *continuation; scm_t_contregs *continuation;
long stack_size; long stack_size;
SCM_STACKITEM * src; SCM_STACKITEM * src;
#ifdef __ia64__
struct rv rv;
#endif /* __ia64__ */
SCM_FLUSH_REGISTER_WINDOWS; SCM_FLUSH_REGISTER_WINDOWS;
stack_size = scm_stack_size (thread->continuation_base); stack_size = scm_stack_size (thread->continuation_base);
@ -144,20 +125,23 @@ scm_make_continuation (int *first)
memcpy (continuation->stack, src, sizeof (SCM_STACKITEM) * stack_size); memcpy (continuation->stack, src, sizeof (SCM_STACKITEM) * stack_size);
#ifdef __ia64__ #ifdef __ia64__
rv = ia64_getcontext (&continuation->ctx); continuation->fresh = 1;
if (rv.first_return) getcontext (&continuation->ctx);
if (continuation->fresh)
{ {
continuation->backing_store_size = continuation->backing_store_size =
continuation->ctx.uc_mcontext.sc_ar_bsp - (char *) scm_ia64_ar_bsp(&continuation->ctx)
(unsigned long) __libc_ia64_register_backing_store_base; -
(char *) scm_ia64_register_backing_store_base ();
continuation->backing_store = NULL; continuation->backing_store = NULL;
continuation->backing_store = continuation->backing_store =
scm_gc_malloc (continuation->backing_store_size, scm_gc_malloc (continuation->backing_store_size,
"continuation backing store"); "continuation backing store");
memcpy (continuation->backing_store, memcpy (continuation->backing_store,
(void *) __libc_ia64_register_backing_store_base, (void *) scm_ia64_register_backing_store_base (),
continuation->backing_store_size); continuation->backing_store_size);
*first = 1; *first = 1;
continuation->fresh = 0;
return cont; return cont;
} }
else else
@ -252,7 +236,7 @@ copy_stack_and_call (scm_t_contregs *continuation, SCM val,
continuation->throw_value = val; continuation->throw_value = val;
#ifdef __ia64__ #ifdef __ia64__
memcpy ((void *) __libc_ia64_register_backing_store_base, memcpy (scm_ia64_register_backing_store_base (),
continuation->backing_store, continuation->backing_store,
continuation->backing_store_size); continuation->backing_store_size);
setcontext (&continuation->ctx); setcontext (&continuation->ctx);

View file

@ -27,7 +27,6 @@
#ifdef __ia64__ #ifdef __ia64__
#include <signal.h> #include <signal.h>
#include <ucontext.h> #include <ucontext.h>
extern unsigned long * __libc_ia64_register_backing_store_base;
#endif /* __ia64__ */ #endif /* __ia64__ */
@ -48,6 +47,7 @@ typedef struct
SCM dynenv; SCM dynenv;
#ifdef __ia64__ #ifdef __ia64__
ucontext_t ctx; ucontext_t ctx;
int fresh;
void *backing_store; void *backing_store;
unsigned long backing_store_size; unsigned long backing_store_size;
#endif /* __ia64__ */ #endif /* __ia64__ */

View file

@ -31,6 +31,7 @@
#include "libguile/eval.h" #include "libguile/eval.h"
#include "libguile/async.h" #include "libguile/async.h"
#include "libguile/ports.h" #include "libguile/ports.h"
#include "libguile/gc.h"
#undef DEBUG #undef DEBUG
@ -847,8 +848,8 @@ scm_threads_init (SCM_STACKITEM *base)
scm_mark_locations ((SCM_STACKITEM *) &ctx.uc_mcontext, \ scm_mark_locations ((SCM_STACKITEM *) &ctx.uc_mcontext, \
((size_t) (sizeof (SCM_STACKITEM) - 1 + sizeof ctx.uc_mcontext) \ ((size_t) (sizeof (SCM_STACKITEM) - 1 + sizeof ctx.uc_mcontext) \
/ sizeof (SCM_STACKITEM))); \ / sizeof (SCM_STACKITEM))); \
bot = (SCM_STACKITEM *) __libc_ia64_register_backing_store_base; \ bot = (SCM_STACKITEM *) scm_ia64_register_backing_store_base (); \
top = (SCM_STACKITEM *) ctx.uc_mcontext.sc_ar_bsp; \ top = (SCM_STACKITEM *) scm_ia64_ar_bsp (&ctx); \
scm_mark_locations (bot, top - bot); } while (0) scm_mark_locations (bot, top - bot); } while (0)
#else #else
# define SCM_MARK_BACKING_STORE() # define SCM_MARK_BACKING_STORE()

View file

@ -28,11 +28,6 @@
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#ifdef __ia64__
#include <ucontext.h>
extern unsigned long * __libc_ia64_register_backing_store_base;
#endif
#include "libguile/_scm.h" #include "libguile/_scm.h"
#include "libguile/eval.h" #include "libguile/eval.h"
#include "libguile/stime.h" #include "libguile/stime.h"
@ -1036,6 +1031,44 @@ scm_init_gc ()
#include "libguile/gc.x" #include "libguile/gc.x"
} }
#ifdef __ia64__
# ifdef __hpux
# include <sys/param.h>
# include <sys/pstat.h>
void *
scm_ia64_register_backing_store_base (void)
{
struct pst_vm_status vm_status;
int i = 0;
while (pstat_getprocvm (&vm_status, sizeof (vm_status), 0, i++) == 1)
if (vm_status.pst_type == PS_RSESTACK)
return (void *) vm_status.pst_vaddr;
abort ();
}
void *
scm_ia64_ar_bsp (const void *ctx)
{
uint64_t bsp;
__uc_get_ar_bsp(ctx, &bsp);
return (void *) bsp;
}
# endif /* hpux */
# ifdef linux
# include <ucontext.h>
void *
scm_ia64_register_backing_store_base (void)
{
extern void *__libc_ia64_register_backing_store_base;
return __libc_ia64_register_backing_store_base;
}
void *
scm_ia64_ar_bsp (const void *opaque)
{
ucontext_t *ctx = opaque;
return (void *) ctx->uc_mcontext.sc_ar_bsp;
}
# endif /* linux */
#endif /* __ia64__ */
void void
scm_gc_sweep (void) scm_gc_sweep (void)

View file

@ -246,6 +246,11 @@ SCM_API scm_i_pthread_mutex_t scm_i_gc_admin_mutex;
#define scm_gc_running_p (SCM_I_CURRENT_THREAD->gc_running_p) #define scm_gc_running_p (SCM_I_CURRENT_THREAD->gc_running_p)
SCM_API scm_i_pthread_mutex_t scm_i_sweep_mutex; SCM_API scm_i_pthread_mutex_t scm_i_sweep_mutex;
#ifdef __ia64__
void *scm_ia64_register_backing_store_base (void);
void *scm_ia64_ar_bsp (const void *);
#endif
#if (SCM_ENABLE_DEPRECATED == 1) #if (SCM_ENABLE_DEPRECATED == 1)

View file

@ -1304,8 +1304,8 @@ SCM_DEFINE (scm_broadcast_condition_variable, "broadcast-condition-variable", 1,
scm_mark_locations ((SCM_STACKITEM *) &ctx.uc_mcontext, \ scm_mark_locations ((SCM_STACKITEM *) &ctx.uc_mcontext, \
((size_t) (sizeof (SCM_STACKITEM) - 1 + sizeof ctx.uc_mcontext) \ ((size_t) (sizeof (SCM_STACKITEM) - 1 + sizeof ctx.uc_mcontext) \
/ sizeof (SCM_STACKITEM))); \ / sizeof (SCM_STACKITEM))); \
bot = (SCM_STACKITEM *) __libc_ia64_register_backing_store_base; \ bot = (SCM_STACKITEM *) scm_ia64_register_backing_store_base (); \
top = (SCM_STACKITEM *) ctx.uc_mcontext.sc_ar_bsp; \ top = (SCM_STACKITEM *) scm_ia64_ar_bsp (&ctx); \
scm_mark_locations (bot, top - bot); } while (0) scm_mark_locations (bot, top - bot); } while (0)
#else #else
# define SCM_MARK_BACKING_STORE() # define SCM_MARK_BACKING_STORE()