gcl-devel
[Top][All Lists]
Advanced

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

[Gcl-devel] Re: GCL error in simple-vector (fixed?)


From: Camm Maguire
Subject: [Gcl-devel] Re: GCL error in simple-vector (fixed?)
Date: 24 Feb 2006 17:03:12 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!

Matt Kaufmann <address@hidden> writes:

> Hi, Camm --
> 
> FYI:
> 
> The following error still occurs in a version of GCL 2.6.8pre I happen to have
> lying around on a Mac, probably from Feb. 5.  But it's fixed in a recent
> (Feb. 14 or earlier) GCL 2.7.0 (/p/bin/xg at UT CS), so maybe it's fixed in
> 2.6.8pre by now too; I figured you probably have a recent 2.6.8pre build handy
> and can check in an instant.
> 

OK, this should be fixed now. Also just committed:

1) nthcdr/binum fix to 2.6.8 and head
2) atanh branch cut fix to 2.6.8 and head
3) subtypep support for partially unknown types defined with saftisfies, e.g. 
si::proper-list,
   input-stream, etc. (to HEAD)
4) certain multiple-value-binding autodeclaration fixes (HEAD)
5) inf and nan contants, and their use in a substantially expanded
   type propagation scheme (including floating point) for random ash
   floor et. al. + - * / lcm gcd log exp expt atan sqrt max min abs
   mod rem (HEAD)
6) some new optimizers, e.g. abs and sqrt, nth and nthcdr inliners
   (please see gcl_cmpopt.lsp for inlining rules)

If anyone is interested in 5), please check out gcl_cmptype.lsp.  The
idea is to use +-inf and nan as a proxy to probe the function when the
type is unbounded, to probe the function for its contagion rules, and
to probe behavior around a possible pole at 0.  This facilitates the
following optimizations thus far (for example):

=============================================================================
(disassemble '(lambda (x y) 
        (declare ((short-float 0) x) ((integer 1 12312312) y)) 
        (multiple-value-bind (x y) (ffloor x y) 
                (abs (sqrt (/ x (ash y -3) x x y))))) nil)


;; Compiling /tmp/gazonk_899_0.lsp.
(FFLOOR X Y) (VALUES (SHORT-FLOAT 0.0 *) (INTEGER 0 (12312312)))
;; End of Pass 1.  
;; End of Pass 2.  
;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, 
(Debug quality ignored)
;; Finished compiling /tmp/gazonk_899_0.o.

#include "gazonk_899_0.h"
void init_code(){do_init(VV);}
/*      function definition for CMP-ANON        */

static void L1()
{register object *base=vs_base;
        register object *sup=base+VM1; VC1
        vs_check;
        {float V1;
        fixnum V2;
        V1=sf(base[0]);
        V2=fix(base[1]);
        vs_top=sup;
        goto TTL;
TTL:;
        {float V3;
        fixnum V4;
        base[2]= make_shortfloat(V1);
        base[3]= CMPmake_fixnum(V2);
        vs_top=(vs_base=base+2)+2;
        (void) (*Lnk0)();
        if(vs_base>=vs_top){vs_top=sup;goto T1;}
        V3= sf(vs_base[0]);
        vs_base++;
        if(vs_base>=vs_top){vs_top=sup;goto T2;}
        V4= fix(vs_base[0]);
        vs_top=sup;goto T3;
        goto T1;
T1:;
        V3= sf(Cnil);
        goto T2;
T2:;
        V4= fix(Cnil);
        goto T3;
T3:;
        {fixnum V5= (fixnum)(-((fixnum)-3)&-32? ((V4)>=0 ? 0 : -1) : 
(V4)>>-((fixnum)-3));
        V6 = (V3)/((double)(((double)(/* INLINE-ARGS 
*/V5)*(double)(V3))*(V3))*(double)(V4));
        base[2]= make_shortfloat(sqrt((double)V6));
        vs_top=(vs_base=base+2)+1;
        return;}}
        }
}
NIL
=============================================================================

More later time permitting.  Including the HEAD bug involving big
integer type inlining (Bob's segfault.)

If anyone needs anything else in 2.6.8pre, please so state soon.  I
just have to clean up xgcl therein before it is to be released.

Lastly, if anyone has a moment to describe the new mv strategy in
acl2, that would be helpful.

Take care,


>   vlad:~> gcl
>   GCL (GNU Common Lisp)  2.6.6 CLtL1    Jan 19 2005 20:24:14
>   Source License: LGPL(gcl,gmp), GPL(unexec,bfd)
>   Binary License:  GPL due to GPL'ed components: (BFD UNEXEC)
>   Modifications of this banner must retain notice of a compatible license
>   Dedicated to the memory of W. Schelter
> 
>   Use (help) to get some basic information on how to use GCL.
> 
>   >(the (simple-vector 5) #(0 0 0 0 0))
> 
>   Error: 5 is not of type SYMBOL.
>   Fast links are on: do (si::use-fast-links nil) for debugging
>   Error signalled by TYPEP.
>   Broken at TYPEP.  Type :H for Help.
>   >>
> 
> -- Matt
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

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