Age | Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
|
|
(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.
|
|
|
|
(extractCodeAndConstructTriple): Likewise.
* interp/g-opt.boot (optCall): Likewise.
($VMsideEffectFreeOperators): Include %function
* interp/lisp-backend.boot: Translate %function.
|
|
* 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.
|
|
(canInlineVarDefinition): Likewise.
|
|
(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.
|
|
(optCall): Use it to implement inline functions.
($VMsideEffectFreeOperators): Include %apply and STRINGIMAGE.
($simpleVMoperators): STRINGIMAGE is promoted.
(canInlineVarDefinition): Tidy.
(optBind): Likewise.
|
|
(optCONDtail): Likewise.
|
|
(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.
|
|
(optIinc): New. Register as new transformer.
* interp/c-util.boot ($middleEndMacroList): Remove.
(middleEndExpand): Don't check for Lisp-level macros anymore.
|
|
(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.
|
|
|
|
|
|
* 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.
|
|
($simpleVMoperators): Include SPADCALL.
|
|
(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.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
|
|
(BEVC-MAKE-FULL): Likewise.
(MAKE-BVEC): Likewise.
* boot/tokens.boot (shoeKeyTableCons): Adjust.
(shoePunCons): Likewise.
(shoeDfu): Likewise.
(shoeXref): Likewise.
|
|
|
|
|
|
(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.
|
|
* boot/utility.boot (reverse!): Define.
* boot/parser.boot: Use reverse! instead of NREVERSE.
* boot/ast.boot: Generate reverse! forms instead of NREVERSE.
|
|
|
|
|
|
|
|
%bytevec2str and %str2bytevec opcode.
* interp/lisp-backend.boot: Expand them.
* algebra/data.spad.pamphlet (ByteBuffer): Tidy.
|
|
|
|
Remove definition.
(SingleInteger): Simplify implementation of random.
* algebra/sf.spad.pamphlet (DoubleFloat): Likewise.
[positive?]: Define.
* algebra/integer.spad.pamphlet (Integer): Tidy.
|
|
considered side-effect free functions.
* algebra/boolean.spad.pamphlet: Reflect change.
* algebra/Makefile.in (oa_strap_0_sources): Include MAYBE.
|