Age | Commit message (Collapse) | Author | Files | Lines |
|
(optDeltaEntry): Implement better patch for last change.
* interp/compiler.boot (compFormWithModemap): Undo last change.
|
|
resolution as appropriate.
|
|
operators as such, and local functions as such.
(freeVarUsage): Do not count external and local functions.
(extractCode): Tidy. Handle closure literals.
* interp/g-opt.boot (optCall): Optimize external calls where
possible.
%external is a side-effect free operator.
|
|
* interp/compiler.boot (compUnnamedMapping): Fix thinko.
* interp/g-opt.boot (semiSimpleRelativeTo?): Likewise.
|
|
(compWithMappingMode): Likewise.
(compUnnamedMapping): Likewise.
(extractCode): Simplify.
* interp/g-opt.boot (optClosure): New. Register.
(semiSimpleRelativeTo?): An abstraction is always semisimple.
* interp/nruncomp.boot ($killOptimizeIfTrue): Remove.
(optDeltaEntry): Don't test for it.
|
|
extractCodeAndConstructTriple. Change Arity. Tidy. Adjust callers.
|
|
(extractCodeAndConstructTriple): Likewise.
* interp/g-opt.boot (optCall): Adjust.
|
|
* interp/lisp-backend.boot (expandApply): Remove.
Unregister expander.
* interp/g-opt.boot (optCall): applyFun is not longer an opcode.
Look for %apply.
* interp/compiler.boot (applyMapping): Generate ['%call,['%apply,.]]
form, not ['%apply,..] form.
(extractCodeAndConstructTriple): Tidy.
(compApplication): Likewise.
|
|
from parentsOfBuiltinInstance.
* interp/buildom.boot (parentsOfBuiltinInstance): Tidy.
|
|
|
|
* boot/utility.boot (drop): Define and export.
(take): Likewise.
* interp/br-con.boot: Use take, not TAKE; use drop, not DROP.
* interp/br-data.boot: Likewise.
* interp/br-op1.boot: Likewise.
* interp/br-saturn.boot: Likewise.
* interp/c-doc.boot: Likewise.
* interp/c-util.boot: Likewise.
* interp/cattable.boot: Likewise.
* interp/clammed.boot: Likewise.
* interp/compiler.boot: Likewise.
* interp/database.boot: Likewise.
* interp/define.boot: Likewise.
* interp/guess.boot: Likewise.
* interp/htsetvar.boot: Likewise.
* interp/i-analy.boot: Likewise.
* interp/i-eval.boot: Likewise.
* interp/i-funsel.boot: Likewise.
* interp/i-map.boot: Likewise.
* interp/i-output.boot: Likewise.
* interp/i-special.boot: Likewise.
* interp/i-syscmd.boot: Likewise.
* interp/i-toplev.boot: Likewise.
* interp/i-util.boot: Likewise.
* interp/nruncomp.boot: Likewise.
* interp/parse.boot: Likewise.
* interp/record.boot: Likewise.
* interp/setvars.boot: Likewise.
* interp/slam.boot: Likewise.
* interp/trace.boot: Likewise.
* interp/word.boot: Likewise.
* interp/macros.lisp (DROP): Remove.
(TAKE): Likewise.
|
|
properly.
|
|
optCollectVector. Move here.
(compRepeatOrCollect): Use it.
|
|
(compRepeatOrCollect): Use it.
* interp/g-opt.boot (optCollectVector): Likewise.
* interp/lisp-backend.boot (expandCollect): Likewise.
|
|
(optimize!): Run it first.
* interp/compiler.boot (nullifyTargetingLeaves): Remove.
(massageLoop): Likewise.
(compRepeatOrCollect): Don't call it anymore.
|
|
* interp/g-opt.boot: Likewise.
* interp/i-map.boot: Likewise.
* interp/i-special.boot: Likewise.
* interp/lisp-backend.boot: Likewise.
* interp/slam.boot: Likewise.
|
|
to local variable declarations which are not definitions.
* interp/lisp-backend.boot (expandToVMForm): Translate %undefined.
|
|
(optimize!): Likewise. Abstract from optimizeFunctionDef.
(optimize): New.
(optimizeFunctionDef): Use optimize!.
(simplifyVMForm): Do not call optIF2COND.
(optIF2COND): Remove.
* interp/compiler.boot (compHasFormat): Use optimize! in lieu of
simplifyVMForm.
* interp/nruncomp.boot (NRTencode): Use optimize.
(NRTsetVector4a): Likewise.
|
|
* interp/define.boot (compDefineCategory2): Likewise.
* interp/nruncomp.boot (buildFunctor): Likewise.
* interp/slam.boot (compileRecurrenceRelation): Likewise.
* interp/lisp-backend.boot (expandSeq): Use PROGN in absence of EXIT.
|
|
temporary variables are local to the assignment.
|
|
(compRetractGuard): Tidy.
(compRecoverDomain): Likewise.
(compRecoverGuard): Likewise.
(compAlternativeGuard): Likewise.
(compMatchAlternative): Likewise.
(compMatch): Likewise.
|
|
|
|
* interp/g-util.boot (spliceSeqArgs): New.
* interp/g-opt.boot (changeVariableDefinitionToStore): Call it
before recursing on %seq forms.
|
|
Cross instance.
* interp/g-util.boot ($DomainNames): Include Cross.
* interp/cattable.boot (genCategoryTable): Do not eval Cross.
It is bogus to prepopulate the table with builtin functors anyway.
* algebra/triset.spad.pamphlet
(PolynomialSetUtilitiesPackage)[removeRedundantFactors]: Do not
define `c' and `d' in conditional. Make the initializer conditional.
|
|
* interp/define.boot: Likewise.
* interp/g-opt.boot: Likewise.
* interp/g-util.boot: Likewise. Rename mkLabelled to mkScope.
|
|
* interp/clam.boot (compHash): Likewise.
* interp/compiler.boot (freeVarUsage): Likewise.
(canReturn): Likewise.
* interp/i-special.boot (compileIs): Likewise.
* interp/g-opt.boot (changeVariableDefinitionToStore): Likewise.
(jumpToToplevel?): Likewise.
(groupVariableDefinitions): Likewise.
(changeLeaveToExit): Likewise.
(optLabelled): Likewise.
(optSeq): Rename from optSEQ. Adjust callers.
* interp/lisp-backend.boot: Translate %seq to SEQ.
|
|
(coerceExit): Likewise.
(compRepeatOrCollect): Likewise.
(replaceExitEtc): Tidy.
(canReturn): Likewise.
(compIterate): Generate %lave form.
(nullifyTargetingLeaves): Move out of massageLoop.
(massageLoop): Adjust.
* interp/define.boot (compDefineCapsuleFunction): Generate
%labelled form for the body.
* interp/g-opt.boot: Now handle %labelled and %leave forms.
(optLabelled): Rename from optCatch.
|
|
(coerceUn2E): Likewise.
* interp/compiler.boot (massageLoop): %leave now takes a label as
first argument.
* interp/lisp-backend.boot (expandLeave): New. Expand accordingly.
|
|
Recursively nominate constructor argument for inlining. Adjust callers.
* interp/c-util.boot: Tidy.
* algebra/Makefile.in: Tidy.
|
|
* interp/compiler.boot (canReturn): Handle %lambda forms.
(compUnnamedMapping): Generate %lambda forms. Don't optimize them
yet.
* interp/g-opt.boot: %lambda forms are side-effect free.
* interp/lisp-backend.boot: Translate them.
|
|
Adjust callers.
|
|
separate arguments (operation and modemap). Adjust callers.
|
|
* interp/c-util.boot (registerConstructor): New.
(currentConstructor): Likewise.
(makeCompilationData): Initialize dbEntityBuffer.
(dbEntityBuffer): New.
(dbUsedEntities): Likewise.
(dbEntityCount): Likewise.
* interp/compiler.boot: Adjust call to getLocalIndex, NRTassocIndex
* interp/define.boot: Likewise.
($NRTdeltaLength): Remove.
* interp/nruncomp.boot: Likewise.
|
|
Adjust callers.
* interp/compiler.boot: Adjust.
* interp/define.boot: Likewise.
|
|
domain producing mapping variables.
(compWithMappingMode): Coerce constructors to function objets.
(compFormWithModemap): Constructor calls are direct calls.
Everything else is ordinary indirect call.
* interp/g-opt.boot (optCall): Handle function objects.
* interp/nruncomp.boot (NRTencode): Encode the elaboration of
atomic forms, not the source level form.
* testsuite/compiler/ctor-mapping.spad: New.
|
|
* interp/define.boot ($NRTslot1Info): Likewise.
(getInfovecCode): Add additional environment argument. Adjust caller.
Call NRTmakeSlot1Info here.
(NRTgetLookupFunction): Lose second and third arguments. They are
derivable from the DB argument. Adjust caller.
(compDefineFunctor1): Do not bind $NRTslot1Info.
(compDefineCapsuleFunction): Adjust.
(compile): Likewise.
* interp/i-syscmd.boot (compilerDoitWithScreenedLisplib):
Remove. Adjust caller.
* interp/nruncomp.boot (NRTmakeSlot1Info): Tak a DB argument.
Adjust caller.
(mkSlot1sublis): Remove.
|
|
* interp/compiler.boot (bindPredicateExistentials): Rename from
constructorCondition. Now return a substitution on success,
otherwise failure.
(solveEquation): New.
(solveSubsumption): Likewise.
(deduceImplicitParameters): Likewise.
(evaluateConstructorModemap): Use it. Tidy.
|
|
substituteInfoFunctorModemap.
(constructorCondition): New.
* interp/define.boot (compDefineCategory2): Compute dual signature
early on.
(compDefineFunctor1): Likewise.
(typingKind): New.
(deduceImplicitParameters): Use it.
* interp/database.boot (modemapsFromCategory): Take a first
argument as a DB. Tidy. Adjust caller. Add constructor condition.
(modemapsFromFunctor): Likewise. Lose last argument.
(mkDatabasePred): Remove.
(formal2Pattern): Likewise.
|
|
* interp/sys-constants.boot ($QueryVariables): New.
* interp/define.boot ($whreDecls): Remove.
(checkRepresentation): Take a DB as first parameter. Adjust Callers.
(buildConstructorCondition): New
(deduceImplicitParameters): Likewise
(compDefineCategory2): Use it.
(compDefineFunctor1): Likewise.
(typeDependencyPath): Remove.
(inferConstructorImplicitParameters): Likewise.
* interp/compiler.boot (compTopLevel): Do not bind $whereDecls.
(recordDeclarationInSideCondition): Take additional reference
parameter to the list of processed decls. Adjust callers.
(compWhere): Record any side decls in compilation environment.
* interp/c-util.boot (makeCompilationData): Initialize implicit data.
(dbParameters): New.
(dbImplicitData): New accessor macro.
(dbImplicitParameters): New.
(dbImplicitConstraints): Likewise.
(dbSubstituteFormals): Likewise.
(dbSubstituteQueries): Likewise.
* interp/database.boot (fixUpPredicate): Tidy.
* boot/utility.boot (applySubst): Early exit on identity substitution.
(applySubst!): Likewise.
(applySubstNQ): Likewise.
* boot/ast.boot (bfIS1): Accept pattern matching against Boolean
constant true.
|
|
|
|
* interp/postpar.boot (postNormalizeName): Remove.
(postLhsOfDefinition): New.
(postDef): Use it.
(postMDef): Likewise.
(postForm): Remove dead code.
(postSignature): Internalize names of exported operators.
* interp/i-intern.boot (mkAtree2): For package call resolution,
use internal names.
* interp/compiler.boot (compAtomWithModemap): Use externalName for
name reported in diagnostic.
(compIntegerLiteral): New.
(compAtom): Use it.
(compElt): Look up modemaps for internal names.
(getModemapList): Likewise.
* interp/g-util.boot (normalizeName): New.
(internalName): Likewise.
(externalName): Likewise.
|
|
and "setelt" modemaps.
|
|
elaboration of all arguments fails.
|
|
(mostSpecificTriple): New.
(compAtomWithModemap): Use it to resolve ambiguous constants.
(formatConstantCandidates): New.
(compForm1): Do try to compile constants 0 and 1 with compToApply.
* algebra/polycat.spad.pamphlet (FiniteAbelianMonoidRing)
[binomThmExpt]: Tidy.
(UnivariatePolynomialCategory) [pseudoDivide]: Likewise.
* algebra/float.spad.pamphlet (Float) [log]: Specificy type for
local variable `l'.
* interp/format.boot (formatUnabbreviatedSig): Handle constants.
|
|
subsumption. Exit early on empty modemap candidate list.
|
|
|
|
(postAtom): Use it.
(postMDef): Do not generate artificial list of nils.
Leave left-hand-side as written in source code.
* interp/compiler.boot (compMacro): Tidy.
* interp/define.boot (checkRepresentation): Likewise.
* interp/parse.boot (parseMDEF): Likewise.
* algebra/syntax.spad.pamphlet (MacroAst): Adjust.
|
|
for interactive mode.
(postBigFloat): Likewise.
(postDef): Likewise.
(postMDef): Likewise.
(tuple2List): Likewise.
(postReduce): Likewise.
(postQUOTE): Remove.
(postQuot): Likewise.
(postOp): Likewise.
(postTran): Adjust.
* interp/newaux.lisp: Replace %LET with ':='.
* interp/property.lisp: Likewise.
* interp/g-util.boot (getTypeOfSyntax): Likewise.
* interp/define.boot (checkRepresentation): Likewise.
(doIt): Likewise.
* interp/compiler.boot (compSetq): Likewise.
(compRecoverGuard): Likewise.
(compReduce1): Likewise.
* interp/c-util.boot (lhsOfAssignment): Likewise.
(isAlmostSimple): Likewise.
* interp/c-doc.boot (recordAttributeDocumentation): Likewise.
* interp/parse.boot (parseLeftArrow): Remove.
(parseLETD): Likewise.
(parseAssign): Rename from parseLET.
* algebra/syntax.spad.pamphlet (SpadAst): Handle both cases.
|
|
|
|
* boot/ast.boot: Use it. instead of ASSOC.
* boot/translator.boot (packageBody): Tidy.
* interp/astr.boot: Use objectAssoc instead of ASSQ.
* interp/br-con.boot: Likewise.
* interp/br-op1.boot: Likewise.
* interp/br-saturn.boot: Likewise.
* interp/buildom.boot: Likewise.
* interp/c-util.boot: Likewise.
* interp/category.boot: Likewise.
* interp/clam.boot: Likewise.
* interp/compiler.boot: Likewise.
* interp/define.boot: Likewise.
* interp/functor.boot: Likewise.
* interp/g-util.boot: Likewise.
* interp/i-coerce.boot: Likewise.
* interp/i-coerfn.boot: Likewise.
* interp/i-funsel.boot: Likewise.
* interp/i-object.boot: Likewise.
* interp/i-output.boot: Likewise.
* interp/i-resolv.boot: Likewise.
* interp/i-special.boot: Likewise.
* interp/i-syscmd.boot: Likewise.
* interp/i-util.boot: Likewise.
* interp/int-top.boot: Likewise.
* interp/lisplib.boot: Likewise.
* interp/msg.boot: Likewise.
* interp/posit.boot: Likewise.
* interp/termrw.boot: Likewise.
* interp/trace.boot: Likewise.
* interp/sys-utility.boot (upwardCut): New.
* interp/spad.lisp: Use it.
* interp/util.lisp: Likewise.
* interp/spaderror.lisp: Likewise.
* interp/vmlisp.lisp (ASSEMBLE): Remove.
(ASSQ): Likewise.
(MEMQ): Likewise.
(NAMEDERRSET): Likewise.
(ORADDTEMPDEFS): Likewise.
* interp/macros.lisp (QLASSQ): Move to vmlisp.lisp.
(LASSQ): Remove.
|