aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@axiomatics.org>2016-01-20 04:31:41 -0800
committerGabriel Dos Reis <gdr@axiomatics.org>2016-01-20 04:31:41 -0800
commit7ce0611cdcc235063e66cd291bf20474dc40668c (patch)
tree45da383462b2b52a34a70eae16250efe23eb8a75 /src
parent358328696d6d123172da6357f577952f180b395d (diff)
downloadopen-axiom-7ce0611cdcc235063e66cd291bf20474dc40668c.tar.gz
getConstructorFromFromDB: get it from compiled code.
Diffstat (limited to 'src')
-rw-r--r--src/interp/daase.lisp8
-rw-r--r--src/interp/database.boot8
2 files changed, 7 insertions, 9 deletions
diff --git a/src/interp/daase.lisp b/src/interp/daase.lisp
index 8fbe451d..97e66462 100644
--- a/src/interp/daase.lisp
+++ b/src/interp/daase.lisp
@@ -507,7 +507,7 @@
(setq dbstruct (|makeDB| (first item)))
(setq *allconstructors* (adjoin item *allconstructors*)))
(setf (|dbSourceFile| dbstruct) (second item))
- (setf (|dbConstructorForm| dbstruct) (third item))
+; (setf (|dbConstructorForm| dbstruct) (third item))
(setf (database-documentation dbstruct) (fourth item))
; (setf (|dbAttributes| dbstruct) (fifth item))
; (setf (|dbPredicates| dbstruct) (sixth item))
@@ -667,10 +667,6 @@
(setq stream *browse-stream*)
(when struct
(setq data (|dbSourceFile| struct))))
- (constructorform
- (setq stream *browse-stream*)
- (when struct
- (setq data (|dbConstructorForm| struct))))
(constructorargs
(setq data (cdr (|getConstructorFormFromDB| constructor))))
(documentation
@@ -705,8 +701,6 @@
(setf (|dbConstructor| struct) data))
(ancestors
(setf (|dbAncestors| struct) data))
- (constructorform
- (setf (|dbConstructorForm| struct) data))
(documentation
(setf (database-documentation struct) data))
(users
diff --git a/src/interp/database.boot b/src/interp/database.boot
index 79d49785..98dbc134 100644
--- a/src/interp/database.boot
+++ b/src/interp/database.boot
@@ -115,9 +115,13 @@ getConstructorModemap ctor ==
loadDBIfNecessary db
dbConstructorModemap db
-getConstructorFormFromDB: %Symbol -> %Form
+getConstructorFormFromDB: %Symbol -> %Maybe %Instantiation
getConstructorFormFromDB ctor ==
- GETDATABASE(ctor,"CONSTRUCTORFORM")
+ builtinConstructor? ctor => nil
+ db := constructorDB ctor or return nil -- FIXME: catch at call sites.
+ if not dbBeingDefined? db and dbConstructorForm db isnt [.,:.] then
+ loadDBIfNecessary db
+ dbConstructorForm db
++ Return the generic instantiation form of a constructor,
++ where the arguments are the parameters used in its