From 1e8dd52ee052af7d3e6164752770f5d9597f74f6 Mon Sep 17 00:00:00 2001 From: crc Date: Mon, 23 Dec 2019 15:21:44 +0000 Subject: [PATCH] retro.forth: some optimizations in the buffer: words FossilOrigin-Name: e80f40e3c5dc07db1977fb1b7d0c1d735dd43caf3c71e953f9248d989513c9f9 --- image/retro.forth | 22 +- ngaImage | Bin 38028 -> 38024 bytes vm/nga-c/retro-image.c | 1158 ++++++++++++++++++++-------------------- 3 files changed, 590 insertions(+), 590 deletions(-) diff --git a/image/retro.forth b/image/retro.forth index 52096db..cc64295 100644 --- a/image/retro.forth +++ b/image/retro.forth @@ -710,19 +710,19 @@ null) and other simple structures. ~~~ {{ - :Buffer `0 ; data - :Ptr `0 ; data - :terminate (-) #0 @Ptr store ; + :Start `0 ; data + :End `0 ; data + :terminate (-) #0 @End store ; ---reveal--- - :buffer:start (-a) @Buffer ; - :buffer:end (-a) @Ptr ; - :buffer:add (c-) buffer:end store &Ptr v:inc terminate ; - :buffer:get (-c) &Ptr v:dec buffer:end fetch terminate ; - :buffer:empty (-) buffer:start !Ptr terminate ; - :buffer:size (-n) buffer:end buffer:start - ; - :buffer:set (a-) !Buffer buffer:empty ; + :buffer:start (-a) @Start ; + :buffer:end (-a) @End ; + :buffer:add (c-) @End store &End v:inc terminate ; + :buffer:get (-c) &End v:dec @End fetch terminate ; + :buffer:empty (-) @Start !End terminate ; + :buffer:size (-n) @End @Start - ; + :buffer:set (a-) !Start buffer:empty ; :buffer:preserve (q-) - @Buffer @Ptr [ &call dip !Buffer ] dip !Ptr ; + @Start @End [ &call dip !Start ] dip !End ; }} ~~~ diff --git a/ngaImage b/ngaImage index 35f8cc77fedc1268f643a8c65693dbbaf4a462be..a793a44222106d087ed42cb0dda4878d01272c19 100644 GIT binary patch delta 9893 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