Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
(optSeq,getRidOfTemps): Likewise.
(optSeq): Rewrite.
* interp/slam.boot (compileRecurrenceRelation): Tidy.
|
|
(cancelScopeLeave!): New.
(inlineLocals!): Tidy.
(optimize!): Run cancelScopeLeave! right after removeJunk!.
|
|
before changing %LETs to %stores. Run beta reduction and
condtional splitting afterward, one more time.
(optimizeFunctionDef): Simplify.
|
|
(spliceSeq!): New.
(optimize!): Run splice! packWhen! twice.
|
|
(splitAssignments!): Use it.
* algebra/multpoly.spad.pamphlet (SparseMultivariatePolynomial):
Fix thinko.
|
|
(spliceSeqArgs): Splice sequences drapped in %scope cloths too.
|
|
to local variable declarations which are not definitions.
* interp/lisp-backend.boot (expandToVMForm): Translate %undefined.
|
|
* interp/functor.boot (optFunctorBody): Generate %seq form, not PROGN.
(DescendCode): Likewise.
* interp/c-util.boot (displayComp): Fix thinko.
|
|
with packWhen!.
|
|
* boot/ast.boot (bfType): New.
* boot/translator.boot (genDeclaration): Use it.
* boot/utility.boot (every?): New. Export.
(any?): Likewise.
(takeWhile): Lilkewise.
|
|
(coagulateWhenSeries): Likewise.
(packWhen!): Likewise. Use them.
(optimize!): Call it. Tidy.
|
|
(expandIN): Likewise.
(expandON): Likewise.
(expandSTEP): Likewise.
(expandUNTIL): Likewise.
(expandWHILE): Likewise.
(expandSUCHTHAT): Likewise.
(expandInit): Likewise.
(expandIterators): Likewise.
(massageFreeVarInits): Likewise.
(expandLoop): optimize! then expand.
|
|
(optimize!): Use it.
|
|
(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.
|
|
are side-effect full.
(removeSeq!): Tidy. Skip side-effectfree statements.
|
|
(inlineLocals!): Likewise.
(optimizeFunctionDef): Use them.
(optSeq): Tidy.
* interp/buildom.boot (seteltRecordFun): Tidy.
* interp/clam.boot (compHash): Likewise.
|
|
(reduceXLAM!): Likewise.
(optimizeFunctionDef): Call them before simplifyVMForm.
* interp/g-util.boot (mkSeq): New.
(abstraction?): Likewise.
(walkWith!): 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.
|
|
(spliceSeqArgs): Tidy.
* algebra/gdpoly.spad.pamphlet
(GeneralDistributedMultivariatePolynomial): Fix thinko.
|
|
handle %bind and LET forms.
* interp/g-util.boot (spliceSeqArgs): Recurse into %seq forms.
|
|
|
|
(spliceSeqArgs): Use it.
|
|
(expandSeq): Likewise. Use it. Expand %seq forms.
|
|
* 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.
|
|
forms too.
|
|
* interp/define.boot: Likewise.
* interp/g-opt.boot: Likewise.
* interp/g-util.boot: Likewise. Rename mkLabelled to mkScope.
|
|
(optimizeFunctionDef): Likewise. Change %LET to %store before
simplification.
(simplifyVMForm): Do not call changeVariableDefinitionToStore.
|
|
(mkLabelled): New.
(mkBind): Likewise.
* interp/g-opt.boot (groupVariableDefinitions): Use them.
* algebra/aggcat.spad.pamphlet (ListAggregate) [merge!]: Declare
local variables `r' and `s' before assigning to them.
|
|
(changeLoopVarDefsToStore): Likewise.
(changeVariableDefinitionToStore): Use it. Tidy.
(groupVariableDefinitions): Tidy.
|
|
* interp/clam.boot (compHash):Likewise.
* interp/g-opt.boot (changeVariableDefinitionToStore): Likewise.
(jumpToToplevel?): Likewise.
(groupVariableDefinitions): Likewise.
(changeLeaveToExit): Likewise.
(optLabelled): Likewise.
(optSeq): Likewise.
* interp/lisp-backend.boot: Translate %exit to EXIT.
|
|
* 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.
|
|
* interp/br-util.boot (bcPred): Do not compare pred against a string.
|
|
|
|
forms too.
(groupVariableDefinitions): Handle %bind and %loop forms.
* interp/lisp-backend.boot (expandLoop): Special code for case
where there is explicit exit condition, for better pretty-printing.
|
|
%labelled and %lambda.
(optimizeFunctionDef): Use copyTree, not COPY. Simplify.
(simplifyVMForm): Perform changeVariableDefinitionToStore and
groupVariableDefinitions on abstraction forms.
|
|
It is always nil. Adjust caller.
(compDefineCategory1): Likewise.
(compDefineCategory2): Likewise.
(compDefineFunctor): Likewise.
(compDefineFunctor1): Likewise. Bind it to nil.
* interp/lisplib.boot (compDefineLisplib): Likewise.
|
|
(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.
|
|
(registerRedexForm): New.
(redexForm): Likewise.
(inlineDirectCall): Inline functions with known redex forms.
(foldExportedFunctionReferences): Compute redex forms.
(backendCompileILAM): Remove as unused.
(backendCompile2): Adjust.
(massageBackendCode): Likeiwse.
* interp/define.boot (compDefineCapsuleFunction): Clear
replacement info.
|
|
* 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.
|
|
(floatableVMForm?): New.
(modified?): Rename form varIsAssigned.
(canInlineVarDefinition): Tidy. Allow intermediate temporaries
initialized from variables to be inlined if not modified.
(optBind): Tidy.
|
|
computation it if is the expanded form of the current domain.
|
|
free argument in a unary pure function call if it is used exactly once.
* algebra/integer.spad.pamphlet (Integer) [reducedSystem]: Fix typo.
|