aboutsummaryrefslogtreecommitdiff
path: root/src/interp/g-opt.boot
AgeCommit message (Collapse)AuthorFilesLines
2011-12-05 * interp/g-opt.boot (changeVariableDefinitionToStore): Separatelydos-reis1-3/+11
handle %bind and LET forms. * interp/g-util.boot (spliceSeqArgs): Recurse into %seq forms.
2011-12-03 * interp/compiler.boot: Use %seq in lieu of PROGN.dos-reis1-0/+2
* interp/g-util.boot (spliceSeqArgs): New. * interp/g-opt.boot (changeVariableDefinitionToStore): Call it before recursing on %seq forms.
2011-12-03 * interp/compiler.boot: Replace %labelled with %scope.dos-reis1-6/+6
* interp/define.boot: Likewise. * interp/g-opt.boot: Likewise. * interp/g-util.boot: Likewise. Rename mkLabelled to mkScope.
2011-12-03 * interp/g-opt.boot (groupVariableDefinitions): Simplify a bit.dos-reis1-20/+13
(optimizeFunctionDef): Likewise. Change %LET to %store before simplification. (simplifyVMForm): Do not call changeVariableDefinitionToStore.
2011-12-03 * interp/g-util.boot (hasNoLeave?): Move from g-opt.boot.dos-reis1-23/+12
(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.
2011-12-02 * interp/g-opt.boot (iteratorName): New.dos-reis1-6/+55
(changeLoopVarDefsToStore): Likewise. (changeVariableDefinitionToStore): Use it. Tidy. (groupVariableDefinitions): Tidy.
2011-12-02 * interp/buildom.boot (seteltRecordFun): Change EXIT to %exit.dos-reis1-9/+9
* 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.
2011-12-02 * interp/buildom.boot (setelt): Change SEQ to %seq.dos-reis1-16/+16
* 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.
2011-12-02 * interp/g-opt.boot (modified?): Examine the rhs too.dos-reis1-1/+2
2011-12-02 * interp/g-opt.boot (changeVariableDefinitionToStore): Handle SEQdos-reis1-1/+9
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.
2011-12-01 * interp/g-opt.boot (groupVariableDefinitions): Look throughdos-reis1-4/+9
%labelled and %lambda. (optimizeFunctionDef): Use copyTree, not COPY. Simplify. (simplifyVMForm): Perform changeVariableDefinitionToStore and groupVariableDefinitions on abstraction forms.
2011-12-01 * interp/compiler.boot (compSeq1): Generate %labelled forms.dos-reis1-43/+42
(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.
2011-11-29 * boot/tokens.boot (absKind, absParms, absBody): New selectors.dos-reis1-4/+4
* 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.
2011-11-29 * interp/g-opt.boot (isSimpleForm): Remove as unused.dos-reis1-32/+27
(floatableVMForm?): New. (modified?): Rename form varIsAssigned. (canInlineVarDefinition): Tidy. Allow intermediate temporaries initialized from variables to be inlined if not modified. (optBind): Tidy.
2011-11-11 * interp/compiler.boot (applyMapping): Emit special call fordos-reis1-0/+4
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.
2011-10-27 * algebra/stream.spad.pamphlet (Stream): Tidy accessors.dos-reis1-1/+1
2011-10-23 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %fdecode.dos-reis1-1/+1
* 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.
2011-10-03 Cleanup.dos-reis1-3/+3
2011-10-01 * boot/utility.boot: Define BOOTTRAN namespace.dos-reis1-1/+1
(setUnion): New. (setDifference): New. * boot/translator.boot (packageBody): New. (translateToplevel): Use it. Translate namespace definition. * boot/tokens.boot: Replace bitmask with bitref. Do not translate setDifference and setUnion. * boot/parser.boot (bpDef): Now include namespace definition. (bpComma): Remove namespace rule as subsumed by Where rule. * boot/Makefile.in: Remove dependencies on initial-env.lisp. (AXIOM_LOCAL_LISP_sources): Remove as unused, (boot_sources): Remove as redundant with boot_SOURCES. * boot/initial-env.lisp: Remove.
2011-09-12 * interp/g-opt.boot (optList): Tidy.dos-reis1-1/+3
2011-09-11 * interp/compiler.boot (finishLambdaExpression): Tidy.dos-reis1-1/+5
(extractCodeAndConstructTriple): Likewise. * interp/g-opt.boot (optCall): Likewise. ($VMsideEffectFreeOperators): Include %function * interp/lisp-backend.boot: Translate %function.
2011-09-11 * interp/lisplib.boot (isFunctor): Noe recognize Mapping as a functor.dos-reis1-58/+6
* interp/g-opt.boot (doInlineCall): Tidy one more time. ($VMsideEffectFreeOperators): Move %aplly to $simpleVMoperators. (optLET): Remove as unused. * interp/lisp-backend.boot (expandApply): New. Register as expander for %apply forms. * interp/define.boot (getXmode): New. (displayMissingFunctions): Use it instead of getmode. (compDefineCapsuleFunction): Likewise. (addDomain): Likewise. (getSignature): Likewise. (compile): Likewise. (compJoin): Likewise. * interp/compiler.boot (comp3): Likewise. (compWithMappingMode): Likewise. (applyMapping): Generate %apply form. (compApplication): Likewise. (autoCoerceByModemap): Likewise. (extractCodeAndConstructTriple): Handle %apply forms. (setqSingle): For domain variables, put corresponding macro forms in the environment. * algebra/ore.spad.pamphlet (Automorphism): Define Rep as a constant. Adjust; include explicit uses of rep and per.
2011-09-10 * interp/g-opt.boot (doInlineCall): Tidy.dos-reis1-4/+4
(canInlineVarDefinition): Likewise.
2011-09-10 * interp/macros.lisp (COERCE-FAILURE-MSG): Remove.dos-reis1-4/+18
(check-subtype): Likewise. (check-union): Likewise. (MAKE-REASONABLE): Move to diagnostic.boot. Rename. (assert): Move to sys-macros.lisp. * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %retract and %pullback. (optRetract): Tidy. (optPullback): New. * interp/diagnostics.boot (makeReasonable): New. (moanRetract): Likewise. Use it. * interp/buildom.boot (mkNewUnionFunList): Simplify. (mkUnionFunList): Likewise.
2011-09-10 * interp/g-opt.boot (doInlineCall): New.dos-reis1-6/+43
(optCall): Use it to implement inline functions. ($VMsideEffectFreeOperators): Include %apply and STRINGIMAGE. ($simpleVMoperators): STRINGIMAGE is promoted. (canInlineVarDefinition): Tidy. (optBind): Likewise.
2011-09-09 * interp/g-opt.boot (optXLAMCond): Remove as useless.dos-reis1-17/+1
(optCONDtail): Likewise.
2011-09-09 * interp/g-opt.boot (optIadd): Remork.dos-reis1-5/+50
(optIsub): Likewise. (optIdec): New. * algebra/string.spad.pamphlet (IndexedString): Fold definition into String. Remove. (Character): Tidy. (CharacterClass): Likewise. * algebra/exposed.lsp.pamphlet: Do not expose ISTRING.
2011-08-15 * interp/g-opt.boot (optCollectVector): Generate VM forms.dos-reis1-9/+18
(optIinc): New. Register as new transformer. * interp/c-util.boot ($middleEndMacroList): Remove. (middleEndExpand): Don't check for Lisp-level macros anymore.
2011-08-14 * interp/lisp-backend.boot ($freeVarName): New global constant.dos-reis1-1/+3
(loopVarInit): New. (expandIN): Use it. (expandON): Likewise. (expandSTEP): Likewise. (massageFreeVarInits): New. (expandLoop): Use it. * interp/fnewmeta.lisp (PARSE-QuantifiedVariable): Tidy. (PARSE-AnyId): Likewise. (PARSE-Variable): New. Allow scope-of-type specification for loop variable. (PARSE-Iterator): Use it. * interp/compiler.boot (massage_llop): Don't check $mayHaveFreeIteratorVariables. (compRepeatOrCollect): Don't bind it. (classifyIteratorVariable): New. (complainIfShadowing): Remove as no longer needed. (compStepIterator): Use it. Tidy. (compONIterator, compINIterator): New. Split out of compIterator. (compIterator): Refactor. * interp/functor.boot (optFunctorBody): Fix thinko. * interp/g-opt.boot (optCollectVector): A STEP iterator may have a storage class. * algebra/clip.spad.pamphlet: Fix loop variable scope. * algebra/ffpoly.spad.pamphlet: Likewise. * algebra/fparfrac.spad.pamphlet: Likewise. * algebra/gdpoly.spad.pamphlet: Likewise. * algebra/ghensel.spad.pamphlet: Likewise. * algebra/groebsol.spad.pamphlet: Likewise. * algebra/intfact.spad.pamphlet: Likewise. * algebra/matfuns.spad.pamphlet: Likewise. * algebra/moddfact.spad.pamphlet: Likewise. * algebra/numtheor.spad.pamphlet: Likewise. * algebra/permgrps.spad.pamphlet: Likewise. * algebra/pfbr.spad.pamphlet: Likewise. * algebra/pgcd.spad.pamphlet: Likewise. * algebra/pleqn.spad.pamphlet: Likewise. * algebra/pseudolin.spad.pamphlet: Likewise. * algebra/radeigen.spad.pamphlet: Likewise. * algebra/radix.spad.pamphlet: Likewise. * algebra/regset.spad.pamphlet: Likewise. * algebra/rep2.spad.pamphlet: Likewise. * algebra/sgcf.spad.pamphlet: Likewise. * algebra/smith.spad.pamphlet: Likewise. * algebra/sregset.spad.pamphlet: Likewise. * algebra/syssolp.spad.pamphlet: Likewise. * algebra/zerodim.spad.pamphlet: Likewise. * algebra/crfp.spad.pamphlet: Remove capsule-level declaration of local variables. * algebra/galfact.spad.pamphlet: Likewise. * algebra/mathml.spad.pamphlet: Likewise. * algebra/numode.spad.pamphlet: Likewise. * algebra/tex.spad.pamphlet: Likewise. * algebra/updecomp.spad.pamphlet: Likewise.
2011-08-06cleanupdos-reis1-16/+16
2011-08-04cleanupdos-reis1-5/+5
2011-07-04 * interp/vmlisp.lisp (PRINTEXP): Remove.dos-reis1-1/+2
* interp/br-data.boot: Use writeString, writeChar, and writeLine. * interp/c-util.boot: Likewise. * interp/diagnostics.boot: Likewise. * interp/fortcall.boot: Likewise. * interp/i-output.boot: Likewise. * interp/i-syscmd.boot: Likewise. * interp/i-util.boot: Likewise. * interp/lisplib.boot: Likewise. * interp/msgdb.boot: Likewise. * interp/newfort.boot: Likewise. * interp/record.boot: Likewise. * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %writeString, %writeNewline, %writeLine. * interp/lisp-backend.boot: Translate them.
2011-06-22 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include FUNCALL.dos-reis1-2/+3
($simpleVMoperators): Include SPADCALL.
2011-06-22 * interp/g-opt.boot (optCond): Remove unreachable code. dos-reis1-14/+15
(opt2bit): Tidy. (opt2bool): Likewise. * interp/bits.lisp (TRUTH-TO-BIT): Remove. (BIT-TO-TRUTH): Likewise. (BVEC-MAKE-FULL): Likewise. (BVEC-ELT): Likewise. (BVEC-SETELT): Likewise.
2011-06-21 * lisp/core.lisp.in (%fNaN?): New.dos-reis1-1/+1
* interp/spaderror.lisp (trapNumericErrors): Handle ARITHMETIC-ERROR too. * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %fNaN?. * algebra/clip.spad.pamphlet (TwoDimensionalPlotClipping): Use it. * algebra/plot.spad.pamphlet (Plot): Likewise.
2011-05-19 * interp/i-analy.boot (bottomUpForm0): Tidy.dos-reis1-17/+1
* interp/i-eval.boot (evalForm): Likewise. * interp/buildom.boot (formalRecordField): New. (eltRecordFun): Use it. (seteltRecordFun): New. * interp/g-opt.boot (optSETRECORDELT): Remove. (optRECORDCOPY): Likewise. * interp/vmlisp.lisp (MAKE-VEC): Likewise.
2011-05-19 * interp/i-eval.boot (evalForm): Adjust.dos-reis1-21/+4
* interp/buildom.boot (mkRecordFun): New. (eltRecordFun): Likewise. (copyRecordFun): Likewise. (mkRecordFunList): Use them. * interp/g-opt.boot (optMkRecord): Remove. (optRECORDELT): Likewise. * interp/lisp-backend.boot: Translate %vcopy.
2011-05-15cleanupdos-reis1-1/+1
2011-05-12 * boot/initial-env.lisp (MAKE-HASHTABLE): Remove.dos-reis1-1/+1
(BEVC-MAKE-FULL): Likewise. (MAKE-BVEC): Likewise. * boot/tokens.boot (shoeKeyTableCons): Adjust. (shoePunCons): Likewise. (shoeDfu): Likewise. (shoeXref): Likewise.
2011-05-02more cleanupdos-reis1-4/+4
2011-04-30more cleanupdos-reis1-28/+28
2011-04-29 * boot/utility.boot (assocSymbol): New.dos-reis1-4/+4
(applySubst): Likewise. Export. * boot/ast.boot: Use it. Remove SUBLIS and SUBLISLIS. * interp/ax.boot: Likewise. * interp/br-con.boot: Likewise. * interp/br-op1.boot: Likewise. * interp/br-op2.boot: Likewise. * interp/br-prof.boot: Likewise. * interp/br-saturn.boot: Likewise. * interp/buildom.boot: Likewise. * interp/c-doc.boot: Likewise. * interp/c-util.boot: Likewise. * interp/cattable.boot: Likewise. * interp/compiler.boot: Likewise.
2011-04-21 * boot/tokens.boot: Don't rename nreverse.dos-reis1-2/+2
* boot/utility.boot (reverse!): Define. * boot/parser.boot: Use reverse! instead of NREVERSE. * boot/ast.boot: Generate reverse! forms instead of NREVERSE.
2011-04-19cleanupdos-reis1-6/+6
2011-04-16 * boot/tokens.boot (shoeIdChar): Accept "!" too.dos-reis1-2/+2
2011-04-15misc cleanupdos-reis1-1/+1
2011-03-20 * interp/g-opt.boot ($VMsideEffectFreeOperators): Includedos-reis1-1/+1
%bytevec2str and %str2bytevec opcode. * interp/lisp-backend.boot: Expand them. * algebra/data.spad.pamphlet (ByteBuffer): Tidy.
2011-03-20More cleanupsdos-reis1-1/+2
2011-03-12 * algebra/si.spad.pamphlet (IntegerNumberSystem) [positive?]:dos-reis1-2/+2
Remove definition. (SingleInteger): Simplify implementation of random. * algebra/sf.spad.pamphlet (DoubleFloat): Likewise. [positive?]: Define. * algebra/integer.spad.pamphlet (Integer): Tidy.
2011-03-09 * interp/g-opt.boot: %pair, %list, %vector, %bitvector are nowdos-reis1-5/+6
considered side-effect free functions. * algebra/boolean.spad.pamphlet: Reflect change. * algebra/Makefile.in (oa_strap_0_sources): Include MAYBE.