From c684b87671ae86f1697e3d86d8cea7952fe777a3 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Wed, 9 Nov 2011 14:16:25 +0000 Subject: * interp/define.boot (compDefineFunctor1): Clear dbTemplate before compilation starts. * interp/lisplib.boot (writeLoadInfo): New. (writeTemplate): Likewise. (finalizeLisplib): Use it to write template. --- src/ChangeLog | 8 ++++++++ src/interp/define.boot | 1 + src/interp/lisplib.boot | 18 +++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index e72ac886..b69f0ed2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2011-11-09 Gabriel Dos Reis + + * interp/define.boot (compDefineFunctor1): Clear dbTemplate before + compilation starts. + * interp/lisplib.boot (writeLoadInfo): New. + (writeTemplate): Likewise. + (finalizeLisplib): Use it to write template. + 2011-11-08 Gabriel Dos Reis * interp/define.boot (compFunctorBody): First argument is now a DB. diff --git a/src/interp/define.boot b/src/interp/define.boot index 72014231..873ee80e 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -1381,6 +1381,7 @@ compDefineFunctor1(df is ['DEF,form,signature,body], dbConstructorForm(db) := form dbCompilerData(db) := makeCompilationData() dbFormalSubst(db) := pairList(form.args,$FormalMapVariableList) + dbTemplate(db) := nil deduceImplicitParameters(db,$e) $formalArgList:= [:argl,:$formalArgList] -- all defaulting packages should have caching turned off diff --git a/src/interp/lisplib.boot b/src/interp/lisplib.boot index 9866b245..9449eff4 100644 --- a/src/interp/lisplib.boot +++ b/src/interp/lisplib.boot @@ -469,7 +469,22 @@ writeInfo(ctor,info,key,prop,file) == insn := ['%store,[prop,mkCtorDBForm ctor],quote info] LAM_,FILEACTQ(key,expandToVMForm insn) lisplibWrite(symbolName key,info,file) - + +++ Like writeInfo, but only write to the load unit. +writeLoadInfo(ctor,info,key,prop,file) == + info = nil => nil + insn := ['%store,[prop,mkCtorDBForm ctor],info] + LAM_,FILEACTQ(key,expandToVMForm insn) + +literalData x == + x = nil => nil + quote x + +writeTemplate(db,file) == + dbConstructorKind db = 'category => nil + writeLoadInfo(dbConstructor db,literalData dbTemplate db, + 'template,'dbTemplate,file) + writeKind(ctor,kind,file) == writeInfo(ctor,kind,'constructorKind,'dbConstructorKind,file) @@ -525,6 +540,7 @@ finalizeLisplib(ctor,libName) == kind := dbConstructorKind db form := dbConstructorForm db mm := getConstructorModemap ctor + writeTemplate(db,$libFile) writeConstructorForm(ctor,form,$libFile) writeKind(ctor,kind,$libFile) writeConstructorModemap(ctor,mm,$libFile) -- cgit v1.2.3