[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] Re: gclcvs-2.7.0 sputc error
From: |
Camm Maguire |
Subject: |
[Gcl-devel] Re: gclcvs-2.7.0 sputc error |
Date: |
17 Jul 2007 10:23:33 -0400 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings, and thanks! Should be fixed now. At some point the io
functions need writing to take advantage of the new inlining
capability, so this is a bit of a temporary fix.
Take care,
Stephen Wilson <address@hidden> writes:
> Camm,
>
> Another slight problem. Would appear compiler::sputc is not being
> inlined to glibc's putc (if I am reading cmpnew/gcl_cmpopt.lsp and the
> session below correctly).
>
>
> ==-- test.lisp -------
> (defun doit (in out)
> (write-char (read-char in) out))
>
> (defun test ()
> (with-input-from-string (in "TEST")
> (with-open-file (out "test.txt" :if-exists :error :direction :output)
> (doit in out))))
> ==--------------------
>
>
> steve:tmp> gcl
> GCL (GNU Common Lisp) 2.7.0 ANSI Jul 16 2007 22:45:53
> Source License: LGPL(gcl,gmp,pargcl), GPL(unexec,bfd,xgcl)
> Binary License: GPL due to GPL'ed components: (XGCL READLINE 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.
>
> Temporary directory for compiler files set to /tmp/
>
> >(si:use-fast-links nil)
>
> NIL
>
> >(load (compile-file "test.lisp"))
>
> ;; Compiling test.lisp.
> ;; 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 test.o.
> ;; Loading /home/steve/tmp/test.o
> ;; start address -T 0xa63c80 ;; Finished loading /home/steve/tmp/test.o
> 1352
>
> >(test)
>
> Error:
> Signalled by DOIT.
> Condition in DOIT [or a callee]: INTERNAL-SIMPLE-TYPE-ERROR: COMPILER::SPUTC
> is not of type FUNCTION:
>
> Broken at DOIT. Type :H for Help.
> 1 (Continue) Return to top level.
> >>:bt
>
> #0 DOIT {loc0=#<string-input stream from "TEST">,loc1=#<output stream
> "test.txt">,loc2=...} [ihs=4]
> #1 TEST {loc0=#<string-input stream from "TEST">,loc1=#<output stream
> "test.txt">,loc2=...} [ihs=3]
> #2 EVAL {loc0=nil,loc1=nil,loc2=nil,loc3=#<compiled-function test>} [ihs=2]
> >>(disassemble 'doit)
>
> ;; Compiling /tmp/gazonk_11505_0.lsp.
> ;; 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_11505_0.o.
>
> #include "gazonk_11505_0.h"
> void init_code(){do_init((void *)VV);}
> /* local entry for function DOIT */
>
> static object LI1__DOIT___gazonk_11505_0(V3,V4)
>
> object V3;object V4;
> { VMB1 VMS1 VMV1
> goto TTL;
> TTL:;
> {object V5;
> base[0]= (V3);
> vs_top=(vs_base=base+0)+1;
> Lread_char();
> vs_top=sup;
> V5= ({register object _z=vs_base[0];_z;});
> if(!((type_of((V4))==t_stream? (((V4))->sm.sm_fp)!=0: 0 ))){
> goto T5;}
> (void)((VFUN_NARGS=2,(/* SPUTC */(*LnkLI0)((fixnum)0,(V5),(V4)))));
> goto T3;
> goto T5;
> T5:;
> base[0]= (V5);
> base[1]= (V4);
> vs_top=(vs_base=base+0)+2;
> Lwrite_char();
> vs_top=sup;
> goto T3;
> T3:;
> {object V6 = (V5);VMR1
> (V6);}}
> base[0]=base[0];
> return Cnil;
> }
> static object LnkTLI0(object first,...){object V1;va_list
> ap;va_start(ap,first);V1=(object )call_vproc_new(((object)VV[0]),0,32,(void
> **)(void *)&LnkLI0,first,ap);va_end(ap);return V1;} /* SPUTC */
> #(#(SPUTC
> (%INIT
> . #((LET ((*DISABLE-RECOMPILE* T))
> (MFSFUN 'DOIT 0 2 0)
> (ADD-HASH 'DOIT '((T T) T)
> '((SPUTC (*) *) (FP-OKP (*) *) (READ-CHAR (*) T)
> (WRITE-CHAR (T *) T))
> COMMON-LISP-USER
> LISPLAMBD!
> IN!
> OU,DECLA,OPTIMIZ,SAFETY ,BLOCK
> DOIT
> ,WRITE-CHAR ,READ-CHAR-. '/tmp/gazonk_11505_0.lsp))
> (DO-RECOMPILE)))))
> static object LI1__DOIT___gazonk_11505_0();
> #define VMB1 register object *base=vs_top;
> #define VMS1 register object *sup=vs_top+2;vs_top=sup;
> #define VMV1 vs_check;
> #define VMR1(VMT1) vs_top=base ; return(VMT1);
> #define VM1 2
> static void * VVi[2]={
> #define Cdata VV[1]
> (void *)(LI1__DOIT___gazonk_11505_0)
> };
> #define VV (VVi)
> static object LnkTLI0(object,...);
> static object (*LnkLI0)() = (object (*)()) LnkTLI0;
>
> /tmp/gazonk_11505_0.o: file format elf32-i386
>
> Disassembly of section .text:
>
> 00000000 <init_code>:
> 0: 68 00 00 00 00 push $0x0
> 5: e8 fc ff ff ff call 6 <init_code+0x6>
> a: 58 pop %eax
> b: c3 ret
>
> 0000000c <LI1__DOIT___gazonk_11505_0>:
> c: 55 push %ebp
> d: 57 push %edi
> e: 56 push %esi
> f: 53 push %ebx
> 10: 8b 1d 00 00 00 00 mov 0x0,%ebx
> 16: 8d 7b 08 lea 0x8(%ebx),%edi
> 19: 3b 3d 00 00 00 00 cmp 0x0,%edi
> 1f: 8b 74 24 18 mov 0x18(%esp),%esi
> 23: 89 3d 00 00 00 00 mov %edi,0x0
> 29: 72 05 jb 30 <LI1__DOIT___gazonk_11505_0+0x24>
> 2b: e8 fc ff ff ff call 2c <LI1__DOIT___gazonk_11505_0+0x20>
> 30: 8b 44 24 14 mov 0x14(%esp),%eax
> 34: 89 03 mov %eax,(%ebx)
> 36: 8d 43 04 lea 0x4(%ebx),%eax
> 39: a3 00 00 00 00 mov %eax,0x0
> 3e: 89 1d 00 00 00 00 mov %ebx,0x0
> 44: e8 fc ff ff ff call 45 <LI1__DOIT___gazonk_11505_0+0x39>
> 49: a1 00 00 00 00 mov 0x0,%eax
> 4e: 81 fe 00 00 00 00 cmp $0x0,%esi
> 54: 89 3d 00 00 00 00 mov %edi,0x0
> 5a: 8b 28 mov (%eax),%ebp
> 5c: 74 39 je 97 <LI1__DOIT___gazonk_11505_0+0x8b>
> 5e: 81 fe ff ff ff bf cmp $0xbfffffff,%esi
> 64: 77 31 ja 97 <LI1__DOIT___gazonk_11505_0+0x8b>
> 66: f6 06 01 testb $0x1,(%esi)
> 69: 74 2c je 97 <LI1__DOIT___gazonk_11505_0+0x8b>
> 6b: 81 3e ff ff ff bf cmpl $0xbfffffff,(%esi)
> 71: 77 24 ja 97 <LI1__DOIT___gazonk_11505_0+0x8b>
> 73: 80 7e 01 11 cmpb $0x11,0x1(%esi)
> 77: 75 1e jne 97 <LI1__DOIT___gazonk_11505_0+0x8b>
> 79: 83 7e 04 00 cmpl $0x0,0x4(%esi)
> 7d: 74 18 je 97 <LI1__DOIT___gazonk_11505_0+0x8b>
> 7f: 56 push %esi
> 80: 55 push %ebp
> 81: 6a 00 push $0x0
> 83: 66 c7 05 04 00 00 00 movw $0x2,0x4
> 8a: 02 00
> 8c: ff 15 08 00 00 00 call *0x8
> 92: 83 c4 0c add $0xc,%esp
> 95: eb 1e jmp b5 <LI1__DOIT___gazonk_11505_0+0xa9>
> 97: 8d 43 08 lea 0x8(%ebx),%eax
> 9a: 89 2b mov %ebp,(%ebx)
> 9c: 89 73 04 mov %esi,0x4(%ebx)
> 9f: 89 1d 00 00 00 00 mov %ebx,0x0
> a5: a3 00 00 00 00 mov %eax,0x0
> aa: e8 fc ff ff ff call ab <LI1__DOIT___gazonk_11505_0+0x9f>
> af: 89 3d 00 00 00 00 mov %edi,0x0
> b5: 89 1d 00 00 00 00 mov %ebx,0x0
> bb: 5b pop %ebx
> bc: 5e pop %esi
> bd: 5f pop %edi
> be: 89 e8 mov %ebp,%eax
> c0: 5d pop %ebp
> c1: c3 ret
>
> 000000c2 <LnkTLI0>:
> c2: 8d 44 24 08 lea 0x8(%esp),%eax
> c6: 50 push %eax
> c7: ff 74 24 08 pushl 0x8(%esp)
> cb: 68 08 00 00 00 push $0x8
> d0: 6a 20 push $0x20
> d2: 6a 00 push $0x0
> d4: ff 35 00 00 00 00 pushl 0x0
> da: e8 fc ff ff ff call db <LnkTLI0+0x19>
> df: 83 c4 18 add $0x18,%esp
> e2: c3 ret
> NIL
>
>
>
> Sincerely,
> Stevev
>
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah