[Ecls-list] Request to mailing list Ecls-list rejected

Gabriel Dos Reis gdr at cs.tamu.edu
Fri Aug 13 09:35:41 UTC 2010


ecls-list-bounces at lists.sourceforge.net writes:

| "Gabriel, your message was too large for the mailing list, but it was
| automatically forwarded to me this morning. I will commut the changes
| to number.h and have a look at the rest. Thanks a lot for your help.
| 
| Juanjo"

Hi Juanjo,

After having restructured src/c/load.d as I indicted in my earlier
message [1], I needed to apply the patch below (which fixes an obvious
thinko).  Then I could successfully build ecl_min.  However, it crashed
when used to bootstrap ECL.  The codes that are guarded by 

   ECL_LONG_BITS < FIXNUM_BITS

do not seem to have been tested in recent years (for they do not compile).
The reason for that is simple: ECL seems to have been tested only on ILP
or LP platforms.
So, I am wondering why ECL is making that distinction?  That is, why does
ECL need to distinguish 'long' from ECL_FIXNUM_TYPE?  Should not
the distinction between GMP_LIMB_BITS vs. FIXNUM_BITS be sufficient?

[1] I introduced the following CPP macro

       #if defined(__MINGW32__) || defined(__MINGW64__) || defined(_MSC_VER)
       #  define ECL_MS_WINDOWS_TARGET 1
       #endif
in src/h/ecl.h.  to abstract over the various targets that run native
windows. 
For Windows 7 64-bit I recommend testing also for __MINGW64__.  The
difference between __MINGW32__ and __MINGW64__ matters only for
selecting 32-bit v 64-bit specific code.

I'm not sending the patch against src/c/load.d yet since I did not
manage to resolve all issues.

-- Gaby

Index: big.d
===================================================================
RCS file: /cvsroot/ecls/ecl/src/c/big.d,v
retrieving revision 1.43
diff -p -r1.43 big.d
*** big.d	1 Feb 2010 13:55:16 -0000	1.43
--- big.d	13 Aug 2010 09:17:09 -0000
*************** _ecl_fix_times_fix(cl_fixnum x, cl_fixnu
*** 160,166 ****
          ECL_WITH_TEMP_BIGNUM(w,4);
          mpz_set_si(z->big.big_num, x);
          mpz_set_si(w->big.big_num, y);
!         mpz_mu(z->big.big_num, z->big.big_num, w->big.big_num);
  #endif
          {
                  cl_object y = big_normalize(z);
--- 160,166 ----
          ECL_WITH_TEMP_BIGNUM(w,4);
          mpz_set_si(z->big.big_num, x);
          mpz_set_si(w->big.big_num, y);
!         mpz_mul(z->big.big_num, z->big.big_num, w->big.big_num);
  #endif
          {
                  cl_object y = big_normalize(z);




More information about the ecl-devel mailing list