commit 9104a52ccdad51d64b33952e13bc18301f8cfc21
parent 04667ee243aec0e25ae39d097555024e499756ad
Author: Alexander Burger <abu@software-lab.de>
Date: Fri, 26 Aug 2011 18:58:15 +0200
GC bug in 64-bit bignums
Diffstat:
3 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/CHANGES b/CHANGES
@@ -1,4 +1,6 @@
* XXsep11 picoLisp-3.0.8
+ GC bug in 64-bit bignums
+ Bug in 64-bit 'exec' error handling
Bug in 'rand' (64-bit)
EOF bug in pipes to stdin
'clause' function
diff --git a/lib/tags b/lib/tags
@@ -1,13 +1,13 @@
! (2849 . "@src64/flow.l")
$ (2951 . "@src64/flow.l")
-% (2570 . "@src64/big.l")
-& (2805 . "@src64/big.l")
+% (2572 . "@src64/big.l")
+& (2807 . "@src64/big.l")
* (2389 . "@src64/big.l")
*/ (2446 . "@src64/big.l")
+ (2171 . "@src64/big.l")
- (2209 . "@src64/big.l")
-> (3913 . "@src64/subr.l")
-/ (2511 . "@src64/big.l")
+/ (2513 . "@src64/big.l")
: (2925 . "@src64/sym.l")
:: (2949 . "@src64/sym.l")
; (2851 . "@src64/sym.l")
@@ -22,8 +22,8 @@ $ (2951 . "@src64/flow.l")
=T (2181 . "@src64/subr.l")
> (2267 . "@src64/subr.l")
>= (2297 . "@src64/subr.l")
->> (2625 . "@src64/big.l")
-abs (2729 . "@src64/big.l")
+>> (2627 . "@src64/big.l")
+abs (2731 . "@src64/big.l")
accept (139 . "@src64/net.l")
adr (594 . "@src64/main.l")
alarm (471 . "@src64/main.l")
@@ -41,7 +41,7 @@ assoc (2970 . "@src64/subr.l")
at (2099 . "@src64/flow.l")
atom (2385 . "@src64/subr.l")
bind (1352 . "@src64/flow.l")
-bit? (2746 . "@src64/big.l")
+bit? (2748 . "@src64/big.l")
bool (1714 . "@src64/flow.l")
box (819 . "@src64/flow.l")
box? (1007 . "@src64/sym.l")
@@ -147,13 +147,13 @@ from (3520 . "@src64/io.l")
full (1075 . "@src64/subr.l")
fun? (742 . "@src64/sym.l")
gc (432 . "@src64/gc.l")
-ge0 (2705 . "@src64/big.l")
+ge0 (2707 . "@src64/big.l")
get (2775 . "@src64/sym.l")
getd (750 . "@src64/sym.l")
getl (3069 . "@src64/sym.l")
glue (1242 . "@src64/sym.l")
-gt0 (2716 . "@src64/big.l")
-hash (2974 . "@src64/big.l")
+gt0 (2718 . "@src64/big.l")
+hash (2976 . "@src64/big.l")
head (1820 . "@src64/subr.l")
heap (526 . "@src64/main.l")
hear (3205 . "@src64/io.l")
@@ -175,7 +175,7 @@ journal (968 . "@src64/db.l")
key (3353 . "@src64/io.l")
kill (3231 . "@src64/flow.l")
last (2044 . "@src64/subr.l")
-le0 (2691 . "@src64/big.l")
+le0 (2693 . "@src64/big.l")
length (2741 . "@src64/subr.l")
let (1469 . "@src64/flow.l")
let? (1530 . "@src64/flow.l")
@@ -193,7 +193,7 @@ loop (2163 . "@src64/flow.l")
low? (3252 . "@src64/sym.l")
lowc (3282 . "@src64/sym.l")
lst? (2415 . "@src64/subr.l")
-lt0 (2680 . "@src64/big.l")
+lt0 (2682 . "@src64/big.l")
lup (2233 . "@src64/sym.l")
made (1107 . "@src64/subr.l")
make (1088 . "@src64/subr.l")
@@ -276,7 +276,7 @@ pwd (2674 . "@src64/main.l")
queue (1927 . "@src64/sym.l")
quit (1089 . "@src64/main.l")
quote (139 . "@src64/flow.l")
-rand (3001 . "@src64/big.l")
+rand (3003 . "@src64/big.l")
range (997 . "@src64/subr.l")
rank (3033 . "@src64/subr.l")
raw (449 . "@src64/main.l")
@@ -290,7 +290,7 @@ rollback (1889 . "@src64/db.l")
rot (848 . "@src64/subr.l")
run (311 . "@src64/flow.l")
sect (2541 . "@src64/subr.l")
-seed (2959 . "@src64/big.l")
+seed (2961 . "@src64/big.l")
seek (1275 . "@src64/apply.l")
send (1128 . "@src64/flow.l")
seq (1081 . "@src64/db.l")
@@ -347,9 +347,9 @@ with (1322 . "@src64/flow.l")
wr (5206 . "@src64/io.l")
xchg (1545 . "@src64/sym.l")
xor (1691 . "@src64/flow.l")
-x| (2885 . "@src64/big.l")
+x| (2887 . "@src64/big.l")
yield (2707 . "@src64/flow.l")
yoke (1196 . "@src64/subr.l")
zap (1071 . "@src64/sym.l")
zero (1638 . "@src64/sym.l")
-| (2845 . "@src64/big.l")
+| (2847 . "@src64/big.l")
diff --git a/src64/big.l b/src64/big.l
@@ -1,4 +1,4 @@
-# 19aug11abu
+# 26aug11abu
# (c) Software Lab. Alexander Burger
### Destructive primitives ###
@@ -2489,8 +2489,10 @@
jeq divErrX # Yes
ld A E # Last argument
call shruA_A # / 2
- ld E (L I) # Product
+ ld E (L I) # Get product
+ ld (L I) A # Save halved argument
call adduAE_A # Add for rounding
+ ld (L I) A # Save rounded product
ld E (L II) # Last argument
call divuAE_A # Divide
ld E A # Result