Age | Commit message (Collapse) | Author | Files | Lines |
|
loopBody and loopExit are not selectors.
* interp/i-output.boot: Include sys-utility.
* interp/sys-utility.boot (last): New macro.
(loopBody): Likewise.
* interp/vmlisp.lisp (LASTNODE): Remove.
(LASTPAIR): Likewise.
(last): Do not define here.
|
|
(packWhen!): Likewise.
(unnestWhen!): Tidy.
(removeScope!): Handle %when forms.
|
|
(cancelScopeLeave!): Tidy.
|
|
Remove handling of IF forms as no longer relevant.
* algebra/matfuns.spad.pamphlet
(MatrixLinearAlgebraFunctions) [rank]: Tidy.
|
|
structures.
|
|
(packWhen!): Simplify.
(optimize!): Run before changeVariableDefinitionToStore.
|
|
(optimize!): Call it.
(optimizeFunctionDef): Simplify.
|
|
optCollectVector. Move here.
(compRepeatOrCollect): Use it.
|
|
(cleanLoop!): Use it.
* interp/lisp-backend.boot ($freeVarName): Remove.
(loopVarInit): Do not generate initializer for free iterators.
Adjust callers.
(massageFreeVarInits): Remove. Adjust caller.
|
|
(compRepeatOrCollect): Use it.
* interp/g-opt.boot (optCollectVector): Likewise.
* interp/lisp-backend.boot (expandCollect): Likewise.
|
|
* interp/g-opt.boot (cleanLoop!): Rename from removeLoopExitTag!.
Adjust caller. Rewrite as a prefix walk.
|
|
(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.
|
|
|
|
|
|
(packWhen!): Use it.
(coagulateWhenSeries): Tidy.
(cancelScopeLeave!): Likewise.
|
|
(optScope): Adjust.
(removeLeave!): New.
(optimize!): Run it at the very beginning.
|
|
|
|
|
|
(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.
|
|
(spliceSeqArgs): Splice sequences drapped in %scope cloths too.
|
|
* interp/functor.boot (optFunctorBody): Generate %seq form, not PROGN.
(DescendCode): Likewise.
* interp/c-util.boot (displayComp): Fix thinko.
|
|
with packWhen!.
|
|
(coagulateWhenSeries): Likewise.
(packWhen!): Likewise. Use them.
(optimize!): Call it. Tidy.
|
|
(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.
|
|
handle %bind and LET forms.
* interp/g-util.boot (spliceSeqArgs): Recurse into %seq forms.
|
|
* interp/g-util.boot (spliceSeqArgs): New.
* interp/g-opt.boot (changeVariableDefinitionToStore): Call it
before recursing on %seq forms.
|
|
* 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.
|
|
|
|
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.
|
|
(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.
|
|
* 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.
|
|
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/lisp-backend.boot: Expand it.
* algebra/sf.spad.pamphlet (DoubleFloat): Remove %fmanexpr import.
Use %fdecode to access Lisp-level double-float decoding.
[mantissa]: Rewrite.
[exponent]: Likewise.
[negative?]: Likewise.
[positive?]: Likewise.
[manexp]: Likewise.
* algebra/view2D.spad.pamphlet (TwoDimensionalViewport): Tidy.
|
|
|