Diff for /gforth/Attic/gforth.ds between versions 1.25 and 1.26

version 1.25, 1995/11/28 18:45:28 version 1.26, 1995/11/30 18:04:27
Line 2528  The next invocation of a parsing word re Line 2528  The next invocation of a parsing word re
 Compiles a recursive call to the defining word not to the defined word.  Compiles a recursive call to the defining word not to the defined word.
   
 @item argument input source different than current input source for @code{RESTORE-INPUT}:  @item argument input source different than current input source for @code{RESTORE-INPUT}:
 !!???If the argument input source is a valid input source then it gets  If the argument input source is a valid input source then it gets
 restored. Otherwise causes @code{-12 THROW}, which, unless caught, issues  restored. Otherwise the result is undefined.
 the message "argument type mismatch" and aborts.  @comment causes @code{-12 THROW}, which, unless caught, issues the message "argument type mismatch" and aborts. !! not all of the state is restored (e.g., sourcefilename).
   
 @item data space containing definitions gets de-allocated:  @item data space containing definitions gets de-allocated:
 Deallocation with @code{allot} is not checked. This typically resuls in  Deallocation with @code{allot} is not checked. This typically resuls in
Line 2602  Not checked. As usual, you can expect me Line 2602  Not checked. As usual, you can expect me
 None.  None.
   
 @item operator's terminal facilities available:  @item operator's terminal facilities available:
 !!??  After processing the command line, Gforth goes into interactive mode,
   and you can give commands to Gforth interactively. The actual facilities
   available depend on how you invoke Gforth.
   
 @item program data space available:  @item program data space available:
 @code{sp@ here - .} gives the space remaining for dictionary and data  @code{sp@ here - .} gives the space remaining for dictionary and data
 stack together.  stack together.
   
 @item return stack space available:  @item return stack space available:
 !!??  By default 16 KBytes. The default can be overridden with the @code{-r}
   switch (@pxref{Invocation}) when Gforth starts up.
   
 @item stack space available:  @item stack space available:
 @code{sp@ here - .} gives the space remaining for dictionary and data  @code{sp@ here - .} gives the space remaining for dictionary and data
Line 2930  System dependent; @code{REPRESENT} is im Line 2933  System dependent; @code{REPRESENT} is im
 function @code{ecvt()} and inherits its behaviour in this respect.  function @code{ecvt()} and inherits its behaviour in this respect.
   
 @item rounding or truncation of floating-point numbers:  @item rounding or truncation of floating-point numbers:
 What's the question?!!  System dependent; the rounding behaviour is inherited from the hosting C
   compiler. IEEE-FP-based (i.e., most) systems by default round to
   nearest, and break ties by rounding to even (i.e., such that the last
   bit of the mantissa is 0).
   
 @item size of floating-point stack:  @item size of floating-point stack:
 @code{s" FLOATING-STACK" environment? drop .}. Can be changed at startup  @code{s" FLOATING-STACK" environment? drop .}. Can be changed at startup
Line 3641  Sieve benchmark on a 486DX2/66 than Gfor Line 3647  Sieve benchmark on a 486DX2/66 than Gfor
   
 However, this potential advantage of assembly language implementations  However, this potential advantage of assembly language implementations
 is not necessarily realized in complete Forth systems: We compared  is not necessarily realized in complete Forth systems: We compared
 Gforth (compiled with @code{gcc-2.6.3} and @code{-DFORCE_REG}) with  Gforth (direct threaded, compiled with @code{gcc-2.6.3} and
 Win32Forth 1.2093 and LMI's NT Forth (Beta, May 1994), two systems  @code{-DFORCE_REG}) with Win32Forth 1.2093, LMI's NT Forth (Beta, May
 written in assembly, and with two systems written in C: PFE-0.9.11  1994) and Eforth (with and without peephole (aka pinhole) optimization
 (compiled with @code{gcc-2.6.3} with the default configuration for  of the threaded code); all these systems were written in assembly
 Linux: @code{-O2 -fomit-frame-pointer -DUSE_REGS}) and ThisForth Beta  language. We also compared Gforth with two systems written in C:
 (compiled with gcc-2.6.3 -O3 -fomit-frame-pointer). We benchmarked  PFE-0.9.11 (compiled with @code{gcc-2.6.3} with the default
 Gforth, PFE and ThisForth on a 486DX2/66 under Linux. Kenneth O'Heskin  configuration for Linux: @code{-O2 -fomit-frame-pointer -DUSE_REGS}) and
 kindly provided the results for Win32Forth and NT Forth on a 486DX2/66  ThisForth Beta (compiled with gcc-2.6.3 -O3 -fomit-frame-pointer;
 with similar memory performance under Windows NT.  ThisForth employs peephole optimization of the threaded code). We
   benchmarked Gforth, PFE and ThisForth on a 486DX2/66 under
   Linux. Kenneth O'Heskin kindly provided the results for Win32Forth and
   NT Forth on a 486DX2/66 with similar memory performance under Windows
   NT. Marcel Hendrix ported Eforth to Linux, then extended it to run the
   benchmarks, added the peephole optimizer, ran the benchmarks and
   reported the results.
     
 We used four small benchmarks: the ubiquitous Sieve; bubble-sorting and  We used four small benchmarks: the ubiquitous Sieve; bubble-sorting and
 matrix multiplication come from the Stanford integer benchmarks and have  matrix multiplication come from the Stanford integer benchmarks and have
Line 3661  other words, it shows the speedup factor Line 3673  other words, it shows the speedup factor
 other systems).  other systems).
   
 @example  @example
 relative             Win32-        NT               This-  relative        Win32-    NT       eforth       This-
   time     Gforth     Forth     Forth       PFE     Forth  time      Gforth Forth Forth eforth  +opt   PFE Forth
 sieve        1.00      1.30      1.07      1.67      2.98  sieve       1.00  1.39  1.14   1.39  0.85  1.78  3.18
 bubble       1.00      1.30      1.40      1.66  bubble      1.00  1.33  1.43   1.51  0.89  1.70
 matmul       1.00      1.40      1.29      2.24  matmul      1.00  1.43  1.31   1.42  1.12  2.28
 fib          1.00      1.44      1.26      1.82      2.82  fib         1.00  1.55  1.36   1.24  1.15  1.97  3.04
 @end example  @end example
   
 You may find the good performance of Gforth compared with the systems  You may find the good performance of Gforth compared with the systems
Line 3678  method for relocating the Forth image: l Line 3690  method for relocating the Forth image: l
 the actual addresses at run time, resulting in two address computations  the actual addresses at run time, resulting in two address computations
 per NEXT (@pxref{System Architecture}).  per NEXT (@pxref{System Architecture}).
   
   Only Eforth with the peephole optimizer performs comparable to
   Gforth. The speedups achieved with peephole optimization of threaded
   code are quite remarkable. Adding a peephole optimizer to Gforth should
   cause similar speedups.
   
 The speedup of Gforth over PFE and ThisForth can be easily explained  The speedup of Gforth over PFE and ThisForth can be easily explained
 with the self-imposed restriction to standard C (although the measured  with the self-imposed restriction to standard C (although the measured
 implementation of PFE uses a GNU C extension: global register  implementation of PFE uses a GNU C extension: global register
Line 3692  machine registers by itself and would no Line 3709  machine registers by itself and would no
 register declarations, giving a 1.3 times slower engine (on a 486DX2/66  register declarations, giving a 1.3 times slower engine (on a 486DX2/66
 running the Sieve) than the one measured above.  running the Sieve) than the one measured above.
   
 The numbers in this section have also been published in the paper  In @cite{Translating Forth to Efficient C} by M. Anton Ertl and Martin
 @cite{Translating Forth to Efficient C} by M. Anton Ertl and Martin  Maierhofer (presented at EuroForth '95), an indirect threaded version of
 Maierhofer, presented at EuroForth '95. It is available at  Gforth is compared with Win32Forth, NT Forth, PFE, and ThisForth; that
   version of Gforth is 2\%@minus{}8\% slower on a 486 than the version
   used here. The paper available at
 @*@file{http://www.complang.tuwien.ac.at/papers/ertl&maierhofer95.ps.gz};  @*@file{http://www.complang.tuwien.ac.at/papers/ertl&maierhofer95.ps.gz};
 it also contains numbers for some native code systems. You can find  it also contains numbers for some native code systems. You can find
 numbers for Gforth on various machines in @file{Benchres}.  numbers for Gforth on various machines in @file{Benchres}.

Removed from v.1.25  
changed lines
  Added in v.1.26


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