Diff for /gforth/prims2x.fs between versions 1.84 and 1.90

version 1.84, 2001/02/24 17:24:44 version 1.90, 2001/03/11 21:47:27
Line 60  warnings off Line 60  warnings off
                         \ different directory with the wordlibraries)                          \ different directory with the wordlibraries)
 include ./search.fs                       include ./search.fs                     
 include ./extend.fs  include ./extend.fs
 [THEN]  
 include ./stuff.fs  include ./stuff.fs
   [THEN]
   
 [IFUNDEF] environment?  [IFUNDEF] environment?
 include ./environ.fs  include ./environ.fs
Line 585  s" IP" save-mem w s" error don't use # o Line 585  s" IP" save-mem w s" error don't use # o
 : stores ( -- )  : stores ( -- )
     prim prim-effect-out prim prim-effect-out-end @ ['] store map-items ;      prim prim-effect-out prim prim-effect-out-end @ ['] store map-items ;
   
   : output-super-end ( -- )
       prim prim-c-code 2@ s" SET_IP" search if
           ." SUPER_END;" cr
       endif
       2drop ;
   
 : output-c-tail ( -- )  : output-c-tail ( -- )
     \ the final part of the generated C code      \ the final part of the generated C code
       output-super-end
     ." NEXT_P1;" cr      ." NEXT_P1;" cr
     stores      stores
     fill-tos      fill-tos
     ." NEXT_P2;" cr ;      ." NEXT_P2;" ;
   
 : type-c ( c-addr u -- )  : type-c-code ( c-addr u xt -- )
     \ like TYPE, but replaces "TAIL;" with tail code      \ like TYPE, but replaces "TAIL;" with tail code produced by xt
       { xt }
     begin ( c-addr1 u1 )      begin ( c-addr1 u1 )
         2dup s" TAIL;" search          2dup s" TAIL;" search
     while ( c-addr1 u1 c-addr3 u3 )      while ( c-addr1 u1 c-addr3 u3 )
         2dup 2>r drop nip over - type          2dup 2>r drop nip over - type
         output-c-tail          xt execute
         2r> 5 /string          2r> 5 /string
         \ !! resync #line missing          \ !! resync #line missing
     repeat      repeat
Line 634  s" IP" save-mem w s" error don't use # o Line 642  s" IP" save-mem w s" error don't use # o
  stack-pointer-updates   stack-pointer-updates
  ." {" cr   ." {" cr
  ." #line " c-line @ . quote c-filename 2@ type quote cr   ." #line " c-line @ . quote c-filename 2@ type quote cr
  prim prim-c-code 2@ type-c   prim prim-c-code 2@ ['] output-c-tail type-c-code
  ." }" cr   ." }" cr
  output-c-tail   output-c-tail
  ." }" cr   ." }" cr
Line 660  s" IP" save-mem w s" error don't use # o Line 668  s" IP" save-mem w s" error don't use # o
     ."   ip += " inst-stream stack-in @ 1+ 0 .r ." ;" cr      ."   ip += " inst-stream stack-in @ 1+ 0 .r ." ;" cr
     ." } else " ;      ." } else " ;
   
   : output-profile ( -- )
       \ generate code for postprocessing the VM block profile stuff
       ." if (VM_IS_INST(*ip, " function-number @ 0 .r ." )) {" cr
       ."   add_inst(b, " quote  prim prim-name 2@ type quote ." );" cr
       ."   ip += " inst-stream stack-in @ 1+ 0 .r ." ;" cr
       prim prim-c-code 2@  s" SET_IP"    search nip nip
       prim prim-c-code 2@  s" SUPER_END" search nip nip or if
           ."   return;" cr
       endif
       ." } else " cr ;
   
 : gen-arg-parm { item -- }  : gen-arg-parm { item -- }
     item item-stack @ inst-stream = if      item item-stack @ inst-stream = if
         ." , " item item-type @ type-c-name 2@ type space          ." , " item item-type @ type-c-name 2@ type space
Line 900  s" IP" save-mem w s" error don't use # o Line 919  s" IP" save-mem w s" error don't use # o
 : process-combined ( -- )  : process-combined ( -- )
     combined combined-prims num-combined @ cells      combined combined-prims num-combined @ cells
     combinations ['] constant insert-wordlist      combinations ['] constant insert-wordlist
       combined-prims num-combined @ 1- th ( last-part )
       @ prim-c-code 2@ prim prim-c-code 2! \ used by output-super-end
     prim compute-effects      prim compute-effects
     prim init-effects      prim init-effects
     output-combined perform ;      output-combined perform ;
Line 922  s" IP" save-mem w s" error don't use # o Line 943  s" IP" save-mem w s" error don't use # o
     fetches ;      fetches ;
   
 : part-output-c-tail ( -- )  : part-output-c-tail ( -- )
     stores      stores ;
     fill-tos ;  
   : output-combined-tail ( -- )
       part-output-c-tail
       prim >r combined to prim
       in-part @ >r in-part off
       output-c-tail
       r> in-part ! r> to prim ;
   
 : output-part ( p -- )  : output-part ( p -- )
     to prim      to prim
Line 936  s" IP" save-mem w s" error don't use # o Line 963  s" IP" save-mem w s" error don't use # o
     prim add-depths \ !! right place?      prim add-depths \ !! right place?
     ." {" cr      ." {" cr
     ." #line " c-line @ . quote c-filename 2@ type quote cr      ." #line " c-line @ . quote c-filename 2@ type quote cr
     prim prim-c-code 2@ type-c \ !! deal with TAIL      prim prim-c-code 2@ ['] output-combined-tail type-c-code
     ." }" cr      ." }" cr
     part-output-c-tail      part-output-c-tail
     ." }" cr ;      ." }" cr ;
Line 986  s" IP" save-mem w s" error don't use # o Line 1013  s" IP" save-mem w s" error don't use # o
     combined prim-c-name 2@ type ."  */"      combined prim-c-name 2@ type ."  */"
     cr ;      cr ;
   
   : output-forth-peephole ( -- )
       combined-prims num-combined @ 1- cells combinations search-wordlist
       s" the prefix for this combination must be defined earlier" ?print-error
       execute prim-num @ 5 .r
       combined-prims num-combined @ 1- th @ prim-num @ 5 .r
       combined prim-num @ 5 .r ."  prim, \ "
       combined prim-c-name 2@ type
       cr ;
   
   
 \ the parser  \ the parser
   
Line 1140  Variable c-flag Line 1176  Variable c-flag
 )) <- simple-primitive ( -- )  )) <- simple-primitive ( -- )
   
 (( {{ init-combined }}  (( {{ init-combined }}
    ` = (( white ++ {{ start }} forth-ident {{ end add-prim }} )) ++     ` = white ** (( {{ start }} forth-ident {{ end add-prim }} white ** )) ++
    nleof {{ process-combined }}     nleof {{ process-combined }}
 )) <- combined-primitive  )) <- combined-primitive
   

Removed from v.1.84  
changed lines
  Added in v.1.90


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