diff options
-rw-r--r-- | config/open-axiom.m4 | 5 | ||||
-rwxr-xr-x | configure | 5 | ||||
-rw-r--r-- | src/ChangeLog | 4 | ||||
-rw-r--r-- | src/interp/category.boot | 3 | ||||
-rw-r--r-- | src/lisp/core.lisp.in | 6 |
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]) @@ -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@))) |