aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-07-10 07:02:51 +0000
committerdos-reis <gdr@axiomatics.org>2010-07-10 07:02:51 +0000
commitbb7fb2ba39aee08afc943dbfa1ad9d375b8bb985 (patch)
tree0e86d2f22c2e9073a903b9c69ce6a3deae13df77 /src/interp
parentd8eca6ec8ed4ebe3bba40af4f6534458e92b6633 (diff)
downloadopen-axiom-bb7fb2ba39aee08afc943dbfa1ad9d375b8bb985.tar.gz
* interp/sys-utility.boot (minimalise): Move from compress.boot.
Rewrite local worker to use explicit hash table parameter instead of special variable. * interp/compress.boot (minimalise): Move to sys-utility.boot. Delete file. * interp/nruncomp.boot (buildFunctor): Don't bother to minimalise.
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/Makefile.in5
-rw-r--r--src/interp/Makefile.pamphlet5
-rw-r--r--src/interp/compress.boot70
-rw-r--r--src/interp/nruncomp.boot1
-rw-r--r--src/interp/sys-utility.boot25
5 files changed, 29 insertions, 77 deletions
diff --git a/src/interp/Makefile.in b/src/interp/Makefile.in
index c839616b..fcc44219 100644
--- a/src/interp/Makefile.in
+++ b/src/interp/Makefile.in
@@ -39,7 +39,7 @@ OBJS= boot-pkg.$(FASLEXT) types.$(FASLEXT) \
clammed.$(FASLEXT) nlib.$(FASLEXT) \
comp.$(FASLEXT) foam_l.$(FASLEXT) \
pathname.$(FASLEXT) \
- compat.$(FASLEXT) compress.$(FASLEXT) \
+ compat.$(FASLEXT) \
serror.$(FASLEXT) ptrees.$(FASLEXT) \
cparse.$(FASLEXT) cstream.$(FASLEXT) \
g-cndata.$(FASLEXT) database.$(FASLEXT) \
@@ -408,7 +408,6 @@ pspad2.$(FASLEXT): pspad1.$(FASLEXT)
pspad1.$(FASLEXT): macros.$(FASLEXT)
g-util.$(FASLEXT): ggreater.$(FASLEXT) macros.$(FASLEXT) sys-utility.$(FASLEXT)
g-cndata.$(FASLEXT): sys-macros.$(FASLEXT)
-compress.$(FASLEXT): sys-macros.$(FASLEXT)
msg.$(FASLEXT): sys-macros.$(FASLEXT) astr.$(FASLEXT)
util.$(FASLEXT): parsing.$(FASLEXT)
fname.$(FASLEXT): macros.$(FASLEXT)
@@ -424,7 +423,7 @@ union.$(FASLEXT): vmlisp.$(FASLEXT)
ggreater.$(FASLEXT): vmlisp.$(FASLEXT)
axext_l.$(FASLEXT): foam_l.$(FASLEXT)
foam_l.$(FASLEXT): vmlisp.$(FASLEXT) sys-constants.$(FASLEXT)
-sys-utility.$(FASLEXT): vmlisp.$(FASLEXT) sys-os.$(FASLEXT)
+sys-utility.$(FASLEXT): vmlisp.$(FASLEXT) sys-os.$(FASLEXT) hash.$(FASLEXT)
vmlisp.$(FASLEXT): types.$(FASLEXT) sys-globals.$(FASLEXT)
types.$(FASLEXT): boot-pkg.$(FASLEXT)
boot-pkg.$(FASLEXT): boot-pkg.lisp
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index be5cb024..8f92fc07 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -118,7 +118,7 @@ OBJS= boot-pkg.$(FASLEXT) types.$(FASLEXT) \
clammed.$(FASLEXT) nlib.$(FASLEXT) \
comp.$(FASLEXT) foam_l.$(FASLEXT) \
pathname.$(FASLEXT) \
- compat.$(FASLEXT) compress.$(FASLEXT) \
+ compat.$(FASLEXT) \
serror.$(FASLEXT) ptrees.$(FASLEXT) \
cparse.$(FASLEXT) cstream.$(FASLEXT) \
g-cndata.$(FASLEXT) database.$(FASLEXT) \
@@ -647,7 +647,6 @@ pspad2.$(FASLEXT): pspad1.$(FASLEXT)
pspad1.$(FASLEXT): macros.$(FASLEXT)
g-util.$(FASLEXT): ggreater.$(FASLEXT) macros.$(FASLEXT) sys-utility.$(FASLEXT)
g-cndata.$(FASLEXT): sys-macros.$(FASLEXT)
-compress.$(FASLEXT): sys-macros.$(FASLEXT)
msg.$(FASLEXT): sys-macros.$(FASLEXT) astr.$(FASLEXT)
util.$(FASLEXT): parsing.$(FASLEXT)
fname.$(FASLEXT): macros.$(FASLEXT)
@@ -663,7 +662,7 @@ union.$(FASLEXT): vmlisp.$(FASLEXT)
ggreater.$(FASLEXT): vmlisp.$(FASLEXT)
axext_l.$(FASLEXT): foam_l.$(FASLEXT)
foam_l.$(FASLEXT): vmlisp.$(FASLEXT) sys-constants.$(FASLEXT)
-sys-utility.$(FASLEXT): vmlisp.$(FASLEXT) sys-os.$(FASLEXT)
+sys-utility.$(FASLEXT): vmlisp.$(FASLEXT) sys-os.$(FASLEXT) hash.$(FASLEXT)
vmlisp.$(FASLEXT): types.$(FASLEXT) sys-globals.$(FASLEXT)
types.$(FASLEXT): boot-pkg.$(FASLEXT)
boot-pkg.$(FASLEXT): boot-pkg.lisp
diff --git a/src/interp/compress.boot b/src/interp/compress.boot
deleted file mode 100644
index 3944fc03..00000000
--- a/src/interp/compress.boot
+++ /dev/null
@@ -1,70 +0,0 @@
--- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
--- All rights reserved.
--- Copyright (C) 2007-2010, Gabriel Dos Reis.
--- All rights reserved.
---
--- Redistribution and use in source and binary forms, with or without
--- modification, are permitted provided that the following conditions are
--- met:
---
--- - Redistributions of source code must retain the above copyright
--- notice, this list of conditions and the following disclaimer.
---
--- - Redistributions in binary form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in
--- the documentation and/or other materials provided with the
--- distribution.
---
--- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
--- names of its contributors may be used to endorse or promote products
--- derived from this software without specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
--- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
--- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
--- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
--- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
--- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
--- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
--- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
--- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-import sys_-macros
-namespace BOOT
-
--- This one is not currently in general use, but can be applied
--- to various situations are required
-
-minimalise x ==
- $hash:local:=hashTable 'EQUAL
- min x where
- min x ==
- y:=HGET($hash,x)
- y => y
- cons? x =>
- x = '(QUOTE T) => '(QUOTE T)
- -- copes with a particular Lucid-ism, God knows why
- -- This circular way of doing things is an attempt to deal with Lucid
- -- Who may place quoted cells in read-only memory
- z:=min first x
- if not EQ(z,first x) then x.first := z
- z:=min rest x
- if not EQ(z,rest x) then x.rest := z
- HashCheck x
- REFVECP x =>
- for i in 0..MAXINDEX x repeat
- x.i:=min (x.i)
- HashCheck x
- string? x => HashCheck x
- x
- HashCheck x ==
- y:=HGET($hash,x)
- y => y
- HPUT($hash,x,x)
- x
- x
-
-
diff --git a/src/interp/nruncomp.boot b/src/interp/nruncomp.boot
index 1145b6c5..45a07b21 100644
--- a/src/interp/nruncomp.boot
+++ b/src/interp/nruncomp.boot
@@ -523,7 +523,6 @@ buildFunctor($definition is [name,:args],sig,code,$locals,$e) ==
[:codePart1,:codePart2,:codePart3],"$"]
$getDomainCode:= nil
--if we didn't kill this, DEFINE would insert it in the wrong place
- ans:= minimalise ans
SAY ['"time taken in buildFunctor: ",TEMPUS_-FUGIT()-oldtime]
ans
diff --git a/src/interp/sys-utility.boot b/src/interp/sys-utility.boot
index e3e99724..8c22be2e 100644
--- a/src/interp/sys-utility.boot
+++ b/src/interp/sys-utility.boot
@@ -35,6 +35,7 @@
import sys_-os
import vmlisp
+import hash
namespace BOOT
module sys_-utility where
@@ -285,6 +286,30 @@ hashTable cmp ==
error '"bad arg to hashTable"
MAKE_-HASH_-TABLE(KEYWORD::TEST,testFun)
+--% Trees to Graphs
+
+minimalise x ==
+ min(x,hashTable 'EQUAL) where
+ min(x,ht) ==
+ y := HGET(ht,x)
+ y => y
+ cons? x =>
+ z := min(first x,ht)
+ if not EQ(z,first x) then x.first := z
+ z := min(rest x,ht)
+ if not EQ(z,rest x) then x.rest := z
+ hashCheck(x,ht)
+ REFVECP x =>
+ for i in 0..MAXINDEX x repeat
+ x.i := min(x.i,ht)
+ hashCheck(x,ht)
+ string? x => hashCheck(x,ht)
+ x
+ hashCheck(x,ht) ==
+ y := HGET(ht,x)
+ y => y
+ HPUT(ht,x,x)
+ x
--% File IO
$InputIOMode == KEYWORD::INPUT