From df4fac6bb2474dd807709dbc2f8142ca6c513337 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Sat, 1 Jun 2013 16:28:58 +0000 Subject: * interp/category.boot (filterConditionalCategories): Fix thinko. --- config/open-axiom.m4 | 5 +++++ configure | 5 +++++ src/ChangeLog | 4 ++++ src/interp/category.boot | 3 ++- 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]) 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,3 +1,7 @@ +2013-06-01 Gabriel Dos Reis + + * interp/category.boot (filterConditionalCategories): Fix thinko. + 2013-06-01 Gabriel Dos Reis Support --output in compiler, for bootstrapping stage. 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@))) -- cgit v1.2.3