aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure18
-rw-r--r--configure.ac2
-rw-r--r--configure.ac.pamphlet2
-rw-r--r--src/ChangeLog10
-rw-r--r--src/interp/category.boot18
-rw-r--r--src/interp/define.boot1
-rw-r--r--src/interp/functor.boot13
-rw-r--r--src/interp/g-opt.boot1
8 files changed, 36 insertions, 29 deletions
diff --git a/configure b/configure
index e3a9a6fa..504f0088 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.60 for OpenAxiom 1.3.0-2008-11-27.
+# Generated by GNU Autoconf 2.60 for OpenAxiom 1.3.0-2008-11-30.
#
# Report bugs to <open-axiom-bugs@lists.sf.net>.
#
@@ -713,8 +713,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='OpenAxiom'
PACKAGE_TARNAME='openaxiom'
-PACKAGE_VERSION='1.3.0-2008-11-27'
-PACKAGE_STRING='OpenAxiom 1.3.0-2008-11-27'
+PACKAGE_VERSION='1.3.0-2008-11-30'
+PACKAGE_STRING='OpenAxiom 1.3.0-2008-11-30'
PACKAGE_BUGREPORT='open-axiom-bugs@lists.sf.net'
ac_unique_file="src/Makefile.pamphlet"
@@ -1405,7 +1405,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures OpenAxiom 1.3.0-2008-11-27 to adapt to many kinds of systems.
+\`configure' configures OpenAxiom 1.3.0-2008-11-30 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1475,7 +1475,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of OpenAxiom 1.3.0-2008-11-27:";;
+ short | recursive ) echo "Configuration of OpenAxiom 1.3.0-2008-11-30:";;
esac
cat <<\_ACEOF
@@ -1579,7 +1579,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-OpenAxiom configure 1.3.0-2008-11-27
+OpenAxiom configure 1.3.0-2008-11-30
generated by GNU Autoconf 2.60
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1593,7 +1593,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by OpenAxiom $as_me 1.3.0-2008-11-27, which was
+It was created by OpenAxiom $as_me 1.3.0-2008-11-30, which was
generated by GNU Autoconf 2.60. Invocation command line was
$ $0 $@
@@ -26424,7 +26424,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by OpenAxiom $as_me 1.3.0-2008-11-27, which was
+This file was extended by OpenAxiom $as_me 1.3.0-2008-11-30, which was
generated by GNU Autoconf 2.60. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -26473,7 +26473,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-OpenAxiom config.status 1.3.0-2008-11-27
+OpenAxiom config.status 1.3.0-2008-11-30
configured by $0, generated by GNU Autoconf 2.60,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/configure.ac b/configure.ac
index 9904befe..ce10b75c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
sinclude(config/open-axiom.m4)
sinclude(config/aclocal.m4)
-AC_INIT([OpenAxiom], [1.3.0-2008-11-27],
+AC_INIT([OpenAxiom], [1.3.0-2008-11-30],
[open-axiom-bugs@lists.sf.net])
AC_CONFIG_AUX_DIR(config)
diff --git a/configure.ac.pamphlet b/configure.ac.pamphlet
index 50424af1..efaf5d91 100644
--- a/configure.ac.pamphlet
+++ b/configure.ac.pamphlet
@@ -1126,7 +1126,7 @@ information:
<<Autoconf init>>=
sinclude(config/open-axiom.m4)
sinclude(config/aclocal.m4)
-AC_INIT([OpenAxiom], [1.3.0-2008-11-27],
+AC_INIT([OpenAxiom], [1.3.0-2008-11-30],
[open-axiom-bugs@lists.sf.net])
@
diff --git a/src/ChangeLog b/src/ChangeLog
index 716a15e7..fb0ec9dc 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
+2008-12-01 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/define.boot (compile): Don't check for PAC names.
+ * interp/g-opt.boot (optCall): Likewise.
+ * interp/functor.boot (SetFunctionSlots): Likewise.
+ (mkOperatorEntry): Lose first parameter.
+ (optPackageCall): Remove.
+ * interp/category.boot (mkCategory): Document. Adjust call to
+ mkOperatorEntry.
+
2008-11-30 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/parse.boot (parseEquivalence): Remove.
diff --git a/src/interp/category.boot b/src/interp/category.boot
index c7d49b9c..91a79604 100644
--- a/src/interp/category.boot
+++ b/src/interp/category.boot
@@ -82,21 +82,26 @@ CategoryPrint(D,$e) ==
++ Returns a fresly built category object for a domain or package
++ (as indicated by `domainOrPackage'), with signature list
-++ designated by `sigList', attribute list designated by `attList,
-++ domain list designatured by `domList', and a princical ancestor
+++ designated by `sigList', attribute list designated by `attList',
+++ used domains list designated by `domList', and a princical ancestor
++ category object designated by `PrincipalAncestor'.
mkCategory: (%Symbol,%List,%List,%List, %Maybe %Shell) -> %Shell
mkCategory(domainOrPackage,sigList,attList,domList,PrincipalAncestor) ==
NSigList := nil
- if PrincipalAncestor=nil then count := 6
- else count := #PrincipalAncestor
+ -- Unless extending a principal ancestor (from the end), start
+ -- from the first free, unencumbered slot.
+ count :=
+ PrincipalAncestor = nil => $NRTbase
+ #PrincipalAncestor
sigList:=
[if s is [sig,pred]
then
+ -- Don't retain duplicate signatures.
+ -- ??? Should we not check for predicate subsumption too?
or/[x is [[ =sig,.,:impl],:num] for x in NSigList] => [sig,pred,:impl]
--only needed for multiple copies of sig
num:= if domainOrPackage="domain" then count else count-5
- nsig:= mkOperatorEntry("domain",sig,pred,num)
+ nsig:= mkOperatorEntry(sig,pred,num)
NSigList:= [[nsig,:count],:NSigList]
count:= count+1
nsig
@@ -119,12 +124,15 @@ mkCategory(domainOrPackage,sigList,attList,domList,PrincipalAncestor) ==
v is ["Record",.,:w] => "union"/[Prepare2 third x for x in w]
[v]
OldLocals:= nil
+ -- Remove possible duplicate local domain caches.
if PrincipalAncestor then
for u in (OldLocals:= third PrincipalAncestor.4) repeat
NewLocals := delete(first u,NewLocals)
+ -- New local domains caches are hosted in slots at the end onward
for u in NewLocals repeat
OldLocals := [[u,:count],:OldLocals]
count := count+1
+ -- Build a fresh category object stuffed with all updated information
v := newShell count
v.0 := nil
v.1 := sigList
diff --git a/src/interp/define.boot b/src/interp/define.boot
index 8e684640..6225e63b 100644
--- a/src/interp/define.boot
+++ b/src/interp/define.boot
@@ -1247,7 +1247,6 @@ compile u ==
INTERN STRCONC(encodeItem $prefix,'";",encodeItem op)
isPackageFunction() and KAR $functorForm^="CategoryDefaults" =>
if null opmodes then userError ['"no modemap for ",op]
- opmodes is [['PAC,.,name]] => name
encodeFunctionName(op,$functorForm,$signatureOfForm,";",$suffix)
encodeFunctionName(op,$functorForm,$signatureOfForm,";",$suffix)
where
diff --git a/src/interp/functor.boot b/src/interp/functor.boot
index 2e0e7a4d..e31d5399 100644
--- a/src/interp/functor.boot
+++ b/src/interp/functor.boot
@@ -712,8 +712,7 @@ SetFunctionSlots(sig,body,flag,mode) == --mode is either "original" or "adding"
else body:= SetFunctionSlots(truename,body,nil,mode)
else nil
else
- if not (catImplem is ['PAC,:.]) then
- keyedSystemError("S2OR0002",[catImplem])
+ keyedSystemError("S2OR0002",[catImplem])
body is ["setShellEntry",:.] => body
body is ['SETELT,:.] => systemErrorHere "SetFunctionSlots"
body is ['QSETREFV,:.] => systemErrorHere "SetFunctionSlots"
@@ -997,19 +996,11 @@ isCategoryPackageName nam ==
p := PNAME opOf nam
p.(MAXINDEX p) = char '_&
-mkOperatorEntry(domainOrPackage,opSig is [op,sig,:flag],pred,count) ==
- domainOrPackage^="domain" =>
- [opSig,pred,["PAC","$",name]] where
- name() == encodeFunctionName(op,domainOrPackage,sig,":",count)
+mkOperatorEntry(opSig is [op,sig,:flag],pred,count) ==
null flag => [opSig,pred,["ELT","$",count]]
first flag="constant" => [[op,sig],pred,["CONST","$",count]]
systemError ["unknown variable mode: ",flag]
-optPackageCall(x,["PAC",packageVariableOrForm,functionName],arglist) ==
- RPLACA(x,functionName)
- RPLACD(x,[:arglist,packageVariableOrForm])
- x
-
--% Code for encoding function names inside package or domain
encodeFunctionName(fun,package is [packageName,:arglist],signature,sep,count)
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index 2a67c9c4..63f99d40 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -144,7 +144,6 @@ optCall (x is ["call",:u]) ==
atom first x => first x
[fn,:a]:= first x
atom fn => (RPLAC(rest x,a); RPLAC(first x,fn))
- fn is ["PAC",:.] => optPackageCall(x,fn,a)
fn is ["applyFun",name] =>
(RPLAC(first x,"SPADCALL"); RPLAC(rest x,[:a,name]); x)
fn is [q,R,n] and MEMQ(q,'(getShellEntry ELT QREFELT CONST)) =>