guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: guile 1.5.2 build on ia64 ... successful gc'ing


From: stefan
Subject: Re: guile 1.5.2 build on ia64 ... successful gc'ing
Date: Fri, 21 Sep 2001 16:09:05 +0200 (CEST)

On Thu, 20 Sep 2001, Rob Browning wrote:

> stefan <address@hidden> writes:
> 
> > I digged around in the linux-ia64 mailing archives and found something:
> > When the alpha patches have been applied and guile-1.5.3 is out I would
> > like to try something like this.
> 
> I've committed some other changes I needed to make, but I still have
> to add the alpha changes.  After that I'll probably release 1.5.3, and
> we can test your code.

After some emails back and forth to linux-ia64 I successfully applied some
changes to guile-1.5.2 which fix the garbage collection:

In gc.c:

Somewhere at the beginning of the file:
#ifdef __ia64__
#include <ucontext.h>
extern long __libc_ia64_register_backing_store_base;
#endif

Below the setjmp()/scm_mark_locations() sequence:
#ifdef __ia64__
  {
    ucontext_t ctx;
    SCM_STACKITEM * top, * bot;
    getcontext (&ctx);
    scm_mark_locations ((SCM_STACKITEM *) &ctx.uc_mcontext,
      ((size_t) (sizeof (SCM_STACKITEM) - 1 + sizeof ctx.uc_mcontext)
       / sizeof (SCM_STACKITEM)));
    bot = (SCM_STACKITEM *) __libc_ia64_register_backing_store_base;
    top = (SCM_STACKITEM *) ctx.uc_mcontext.sc_ar_bsp;
    scm_mark_locations (bot, top - bot);
  }
#endif /* __ia64__ */


The check-guile script still fails in the bit-operations. I guess the
alpha-patch will solve this problem.
Another problem will be the setjmp()/longjmp() in "throw.c" and
"continuations.c". I could try to apply some changes using
getcontext()/setcontext() if you want to get it working on ia64...

Cheers,
        address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]