Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
%imulmod.
* algebra/si.spad.pamphlet (SingleInteger): Likewise.
* interp/c-util.boot (devaluate): Use # in lieu of QVSIZE.
* interp/g-opt.boot: %ilfshift and %irshift are now builtin
side-effect free operations.
* interp/lisp-backend.boot: Translate them.
* interp/g-util.boot (mergeSort): Avoid QSDIFFERENCE.
* interp/slam.boot: Likewise.
* interp/sys-macros.lisp: Likewise.
* interp/macros.lisp: Avoid QVMAXINDEX.
* interp/vmlisp.lisp (QSDIFFERENCE): Remove.
(QSGREATERP): Likewise.
(QSLEFTSHIFT): Likewise.
(QSLESSP): Likewise.
(QSMAX): Likewise.
(QSMIN): Likewise.
(QSMINUS): Likewise.
(QSMINUSP): Likewise.
(QSODDP): Likewise.
(QSABSVAL): Likewise.
(QSPLUS): Likewise.
(QSZEROP): Likewise.
(QVMAXINDEX): Likewise.
(QVSIZE): Likewise.
(ZERO?): Likewise.
|
|
%isubmod, and %imulmod.
* interp/g-opt.boot: These are now builtin side-effect operators.
(optIaddmod): New optimizer. Register.
(optIsubmod): Likewise.
(optImulmod): Likewise.
* interp/sys-macros.lisp (QSADDMOD): Remove.
(QSDIFMOD): Likewise.
(QSMULMOD): Likewise.
|
|
(compWithMappingMode): Use %lambda not LAMBDA.
* interp/g-opt.boot (changeVariableDefinitionToStore): Handle %closure.
|
|
* interp/clammed.boot: Use it in lieu of GENSYMP.
* interp/debug.lisp: Likewise.
* interp/g-opt.boot: Likewise.
* interp/g-util.boot: Likewise.
* interp/i-analy.boot: Likewise.
* interp/trace.boot: Likewise.
* interp/vmlisp.lisp (GENSYMP): Remove.
|
|
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.
|
|
(bindingForm?): New.
(usesVariable?): Likewise.
* interp/compiler.boot (declareUnusedParameters): Use it.
* interp/g-opt.boot (inlineLocals): Likewise.
(optClosure): Likewise.
(optBind): Likewise.
* interp/define.boot (compContained): Remove.
|
|
* 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): 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.
|
|
function expressions.
($VMsideEffectFreeOperators): Don't include %funcall.
($simpleVMoperators): Include it.
|
|
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.
|