Diff for /gforth/see.fs between versions 1.47 and 1.49

version 1.47, 2003/01/04 08:26:57 version 1.49, 2003/01/26 20:56:37
Line 278  VARIABLE C-Pass Line 278  VARIABLE C-Pass
 : .word ( addr x -- addr )  : .word ( addr x -- addr )
     \ print x as a word if possible      \ print x as a word if possible
     dup look 0= IF      dup look 0= IF
         drop dup threaded>name 0= if          drop dup threaded>name dup 0= if
             2drop dup 1 cells - @ dup body> look              2drop dup 1 cells - @ dup body> look
             IF              IF
                 nip dup ." <" name>string rot wordinfo .string ." > "                  nip dup ." <" name>string rot wordinfo .string ." > "
Line 331  VARIABLE C-Pass Line 331  VARIABLE C-Pass
     cell+ ;      cell+ ;
   
 : .name-without ( addr -- addr )  : .name-without ( addr -- addr )
 \ prints a name without a() e.g. a(+LOOP) or (s")      \ !! the stack effect cannot be correct
     dup 1 cells - @ threaded>name IF      \ prints a name without a() e.g. a(+LOOP) or (s")
       dup 1 cells - @ threaded>name dup IF
         name>string over c@ 'a = IF          name>string over c@ 'a = IF
             1 /string              1 /string
         THEN          THEN
Line 358  VARIABLE C-Pass Line 359  VARIABLE C-Pass
     \ if f is false, addr2=addr1      \ if f is false, addr2=addr1
     \ recognizes the following patterns:      \ recognizes the following patterns:
     \ c":     ahead X: len string then lit X      \ c":     ahead X: len string then lit X
     \ s\":    ahead X: string then lit X lit len      \ flit:   ahead X: float      then lit X f@
     \ .\":    ahead X: string then lit X lit len type      \ s\":    ahead X: string     then lit X lit len
       \ .\":    ahead X: string     then lit X lit len type
     \ !! not recognized anywhere:      \ !! not recognized anywhere:
     \ abort": if ahead X: len string then lit X c(abort") then      \ abort": if ahead X: len string then lit X c(abort") then
     dup @ back? if false exit endif      dup @ back? if false exit endif
Line 367  VARIABLE C-Pass Line 369  VARIABLE C-Pass
     r@ @ decompile-prim ['] lit xt>threaded <> if rdrop false exit endif      r@ @ decompile-prim ['] lit xt>threaded <> if rdrop false exit endif
     r@ cell+ @ over cell+ <> if rdrop false exit endif      r@ cell+ @ over cell+ <> if rdrop false exit endif
     \ we have at least C"      \ we have at least C"
     r@ 2 cells + @ decompile-prim ['] lit xt>threaded = if      r@ 2 cells + @ decompile-prim dup ['] lit xt>threaded = if
         r@ 3 cells + @ over cell+ + aligned r@ = if          drop r@ 3 cells + @ over cell+ + aligned r@ = if
             \ we have at least s"              \ we have at least s"
             r@ 4 cells + @ decompile-prim ['] lit-perform xt>threaded =              r@ 4 cells + @ decompile-prim ['] lit-perform xt>threaded =
             r@ 5 cells + @ ['] type >body = and if              r@ 5 cells + @ ['] type >body = and if
Line 385  VARIABLE C-Pass Line 387  VARIABLE C-Pass
             nip cells r> + true exit              nip cells r> + true exit
         endif          endif
     endif      endif
       ['] f@ xt>threaded = if
           display? if
               r@ cell+ @ f@ 10 8 16 f>str-rdp 0 .string bl cemit
           endif
           drop r> 3 cells + true exit
       endif
     \ !! check if count matches space?      \ !! check if count matches space?
     display? if      display? if
         s\" c\" " 0 .string r@ cell+ @ count 0 .string '" cemit bl cemit          s\" c\" " 0 .string r@ cell+ @ count 0 .string '" cemit bl cemit

Removed from v.1.47  
changed lines
  Added in v.1.49


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>