aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/open-axiom.m45
-rwxr-xr-xconfigure5
-rw-r--r--src/ChangeLog4
-rw-r--r--src/interp/category.boot3
-rw-r--r--src/lisp/core.lisp.in6
5 files changed, 21 insertions, 2 deletions
diff --git a/config/open-axiom.m4 b/config/open-axiom.m4
index 85a75690..57db43bd 100644
--- a/config/open-axiom.m4
+++ b/config/open-axiom.m4
@@ -415,6 +415,7 @@ case $axiom_lisp_flavor in
float_type='float'
double_type='double'
string_type='string'
+ pointer_type='fixnum' # well, this is from poking into GCL source code
;;
sbcl)
void_type='void'
@@ -423,6 +424,7 @@ case $axiom_lisp_flavor in
float_type='float'
double_type='double'
string_type='c-string'
+ pointer_type='(* t)'
;;
clisp)
void_type='nil'
@@ -431,6 +433,7 @@ case $axiom_lisp_flavor in
float_type='single-float'
double_type='double-float'
string_type='c-string'
+ pointer_type='c-pointer'
;;
ecl)
void_type=':void'
@@ -439,6 +442,7 @@ case $axiom_lisp_flavor in
float_type=':float'
double_type=':double'
string_type=':cstring'
+ pointer_type=':pointer-void'
;;
clozure)
void_type=':void'
@@ -449,6 +453,7 @@ case $axiom_lisp_flavor in
double_type=':double-float'
# Clozure CL wants you to deal with your own mess
string_type=':address'
+ pointer_type=':address'
;;
*)
AC_MSG_ERROR([We do not know how to translate native types for this Lisp])
diff --git a/configure b/configure
index 8701942f..0aa2e420 100755
--- a/configure
+++ b/configure
@@ -19565,6 +19565,7 @@ case $axiom_lisp_flavor in
float_type='float'
double_type='double'
string_type='string'
+ pointer_type='fixnum' # well, this is from poking into GCL source code
;;
sbcl)
void_type='void'
@@ -19573,6 +19574,7 @@ case $axiom_lisp_flavor in
float_type='float'
double_type='double'
string_type='c-string'
+ pointer_type='(* t)'
;;
clisp)
void_type='nil'
@@ -19581,6 +19583,7 @@ case $axiom_lisp_flavor in
float_type='single-float'
double_type='double-float'
string_type='c-string'
+ pointer_type='c-pointer'
;;
ecl)
void_type=':void'
@@ -19589,6 +19592,7 @@ case $axiom_lisp_flavor in
float_type=':float'
double_type=':double'
string_type=':cstring'
+ pointer_type=':pointer-void'
;;
clozure)
void_type=':void'
@@ -19599,6 +19603,7 @@ case $axiom_lisp_flavor in
double_type=':double-float'
# Clozure CL wants you to deal with your own mess
string_type=':address'
+ pointer_type=':address'
;;
*)
as_fn_error $? "We do not know how to translate native types for this Lisp" "$LINENO" 5
diff --git a/src/ChangeLog b/src/ChangeLog
index cba7ca1c..c951d78a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
2013-06-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
+ * interp/category.boot (filterConditionalCategories): Fix thinko.
+
+2013-06-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
Support --output in compiler, for bootstrapping stage.
* lisp/core.lisp.in (directoryEntries): New.
* interp/lisplib.boot (compDefineLisplib): Tidy. Honor --output.
diff --git a/src/interp/category.boot b/src/interp/category.boot
index cdacc6b4..b018b875 100644
--- a/src/interp/category.boot
+++ b/src/interp/category.boot
@@ -382,11 +382,12 @@ filterConditionalCategories(l,e) ==
unconditionals := [CatEval(at,e),:unconditionals]
pred isnt ["and",:.] =>
conditionals := [[CatEval(at,e),pred],:conditionals]
+ -- Predicate is a conjunctive; decompose it.
pred' := [x for x in pred.args |
not listMember?(x,get("$Information","special",e))
and x isnt true]
pred' = nil => unconditionals := [CatEval(at,e),:unconditionals]
- pred' is [.] => conditionals := [[CatEval(at,e),pred'],:conditionals]
+ pred' is [x] => conditionals := [[CatEval(at,e),x],:conditionals]
conditionals := [[CatEval(at,e),["and",:pred']],:conditionals]
[conditionals,reverse! unconditionals]
diff --git a/src/lisp/core.lisp.in b/src/lisp/core.lisp.in
index 4b72e76f..8468c558 100644
--- a/src/lisp/core.lisp.in
+++ b/src/lisp/core.lisp.in
@@ -87,6 +87,7 @@
"%Vector"
"%BitVector"
"%SimpleArray"
+ "%Table"
;; Some common data structures
"makeTable" ; construct a hash table with a given comp function
@@ -282,6 +283,8 @@
(deftype |%BitVector| () '(simple-array bit))
+(deftype |%Table| nil 'hash-table)
+
(deftype |%Shell| () 'simple-vector)
(deftype |%Mode| () '(or symbol string cons))
@@ -1503,5 +1506,6 @@
(|int| . @int_type@)
(|float| . @float_type@)
(|double| . @double_type@)
- (|string| . @string_type@)))
+ (|string| . @string_type@)
+ (|address| . @pointer_type@)))