aboutsummaryrefslogtreecommitdiff
path: root/src/interp/g-opt.boot
AgeCommit message (Collapse)AuthorFilesLines
2010-11-16 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %s2cdos-reis1-1/+1
builtin. * interp/g-util.boot (stringToChar): New. (expandCst): Use it. (expandS2c): Likewise. New. * interp/spad.lisp (|$Newline): Move to interp/sys-macros.lisp. * interp/sys-macros.lisp (|$Backspace): New. (|$HorizontalTab|): Likewise. (|$VerticalTab|): Likewise. (|$FormFeed|): Likewise. (|$CarriageReturn|): Likewise. * algebra/string.spad.pamphlet (Character) [newline]: New. [carriageReturn]: Likewise. [linefeed]: Likewise. [formfeed]: Likewise. [backspace]: Likewise. [horizontalTab]: Likewise. [verticalTab]: Likewise. [char]: Tidy.
2010-07-29 * algebra/sf.spad.pamphlet (DoubleFloat): Use builtindos-reis1-0/+2
trigonometric functions. * interp/g-opt.boot ($VMsideEffectFreeOperators): Include them. * interp/g-util.boot: Expand them. * include/edible.H1: Move declarations to clef/edible.c. Remove. * driver/utils.h: Give G linkage to declarations. * sman/Makefile.in: Link programs against C++ runtime.
2010-07-28 * interp/sys-globals.boot ($VariableCount): Remove.dos-reis1-1/+1
* interp/spad.lisp (QUOTIENT2): Remove. (REMAINDER2): Likewise. * algebra/integer.spad.pamphlet (Integer): Use builtin %idivide. * algebra/si.spad.pamphlet (SingleInteger): Likewise.
2010-07-28 * interp/g-opt.boot: Transform %iquo and %irem expressions.dos-reis1-0/+11
($VMsideEffectFreeOperators): Include %irem and %iquo.
2010-07-27Misc cleanupdos-reis1-10/+10
2010-07-26 * interp/g-opt.boot (optCond): Work harder at denesting nesteddos-reis1-6/+5
if-expressions.
2010-07-26 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include newdos-reis1-10/+10
opcodes %icst0, %icst1, %when, and %ccst. * interp/g-util.boot: Expand %ccst. * algebra/alql.spad.pamphlet: Clean up. * algebra/array1.spad.pamphlet: Likewise. * algebra/c02.spad.pamphlet: Likewise. * algebra/d03.spad.pamphlet: Likewise. * algebra/e04.spad.pamphlet: Likewise. * algebra/integer.spad.pamphlet: Likewise. * algebra/si.spad.pamphlet: Likewise. * algebra/string.spad.pamphlet: Likewise.
2010-07-26 * algebra/si.spad.pamphlet (SingleInteger): Tidy.dos-reis1-0/+8
* interp/g-opt.boot (simplifyVMForm): Expand %icst0 and %icst1. (optIlt): Fold more configurations.
2010-07-26 * interp/g-opt.boot (optCond): Simplify newly built COND-expression.dos-reis1-1/+1
2010-07-26 * interp/g-opt.boot (optimize): Remove as no longer used.dos-reis1-24/+2
* interp/define.boot (DomainSubstitutionFunction): Use simplifyVMForm in lieu of optimize. * interp/nruncomp.boot (NRTsetVector4a): Likewise.
2010-07-26 * interp/g-opt.boot (oprCond): Replace use of TruthP with directdos-reis1-2/+2
comparison to %true.
2010-07-25 (optCallSpecially): Remove deadcode.dos-reis1-11/+1
2010-07-25 * interp/g-opt.boot (optCall): Don't call optimize again.dos-reis1-14/+13
2010-07-25use simplifyVMForm instead of optimizedos-reis1-1/+1
2010-07-25 * interp/g-opt.boot (simplifyVMForm): Don't call optimize.dos-reis1-3/+16
(optCall): Handle VM macro expansions here.
2010-07-25 * interp/g-opt.boot (resetTo): New.dos-reis1-5/+16
(optCatch): Use it. (optCall): Likewise. (optSpecialCall): Likewise. (simplifyVMForm): Handle simple cases here. * interp/macros.lisp (RPLACW): Remove.
2010-07-25 * interp/g-opt.boot (optIadd): More simplification if either dos-reis1-0/+6
operand is zero. (optIsub): Likewise. (optImul): More simplifications if either operand is one.
2010-07-25 * interp/c-util.boot (usedSymbol?): Move to g-util.boot.dos-reis1-1/+1
* interp/nruncomp.boot (NRTsetVector4a): Tidy.
2010-07-25 * interp/cattable.boot: Use %true for truth value in VM expressions.dos-reis1-20/+15
* interp/clam.boot: Likewise. * interp/define.boot: Likewise. * interp/format.boot: Likewise. * interp/functor.boot: Likewise. * interp/g-opt.boot: Likewise. * interp/mark.boot: Likewise. * interp/pspad1.boot: Likewise. * interp/pspad2.boot: Likewise. * interp/slam.boot: Likewise. * interp/wi1.boot: Likewise. * interp/wi2.boot: Likewise. * interp/sys-constants.boot: Remove $true and $false as unused.
2010-07-24 * interp/compiler.boot (compMatchAlternative): Don't generatedos-reis1-4/+12
LET-expressions. * interp/g-opt.boot (optBind): Tidy.
2010-07-23 * interp/g-opt.boot (optBind): Check for dependencies indos-reis1-2/+5
initializations in %bind expressions. * interp/g-util.boot (expandBind): The body of s %bind expression may be a sequence of statements.
2010-07-23 * interp/g-util.boot: Remove expansion for %ble, %bgt, %bge.dos-reis1-7/+17
* interp/g-opt.boot (optMINUS): Remove. (opt_-): Likewise. (optBle): New. (optBgt): Likewise. (optBge): Likewise.
2010-07-23 * interp/g-opt.boot (optMINUS): Remove.dos-reis1-31/+10
(opt_-): Likewise.
2010-07-22more cleanupdos-reis1-3/+3
2010-07-22 * interp/g-util.boot (expandIeq): New expander for %ieq.dos-reis1-3/+30
* interp/g-opt.boot (optIeq): New. (optIadd): Likewise. (optIsub): Likewise. (optImul): Likewise. (optIneg): Likewise. (lispize): Remove.
2010-07-22 * interp/g-opt.boot (simplifyVMForm): New.dos-reis1-6/+59
(optRetract): Simplify the predicate when possible. (optNot): New transformer. (optAnd): Likewise. (optOr): Likewise. (optIlt): Likewise. (optIle): Likewise. (optIgt): Likewise. (optIge): Likewise.
2010-07-22 * algebra/data.spad.pamphlet (Byte) [~]: Tidy.dos-reis1-1/+1
(SystemNonNegativeInteger) [~]: Likewise. * interp/g-util.boot: Better expansion of byte operations.
2010-07-19 * interp/g-opt.boot ($VMsideEffectFreeOperators): Includedos-reis1-7/+8
byte relation operators and bitmakst operators. * interp/g-util.boot: Expand them. * algebra/data.spad.pamphlet (Byte): Now satisfies Logic. Tidy. (SystemNonNegativeInteger): Likewise. * algebra/java.spad.pamphlet (JVMBytecode): Rename from JavaBytecode. (JVMClassFileAccess): New. (JVMFieldAccess): Likewise. (JVMMethodAccess): Likewise. (JVMConstantTag): Likewise. (JVMOpcode): Likewise.
2010-07-18More cleanupsdos-reis1-3/+3
2010-07-13 * interp/g-opt.boot: %sname is a side-effect free operator.dos-reis1-1/+1
* interp/g-util.boot: Expand it. * algebra/syntax.spad.pamphlet (Identifer): Now satisfies CoercibleTo String.
2010-07-12cleanupsdos-reis1-1/+1
2010-06-30 * interp/c-util.boot (giveVariableSomeValue): New.dos-reis1-2/+2
* interp/compiler.boot (setqMultiple): Use it. (compColon): Likewise. (compRetractGuard): Likewise. (compRecoverDomain): Likewise. (defineMatchScrutinee): Likewise. (compStepIterator): Likewise. (compIterator): Likewise. (compUnnamedMapping): Likewise. * interp/define.boot (giveFormalParametersValues): Likewise. * interp/wi1.boot (setqMultiple): Likewise. * interp/wi2.boot (compIterator): Likewise. (smallIntegerStep): Likewise.
2010-06-27 * interp/g-util.boot: Add new opcode %before?.dos-reis1-1/+1
* interp/g-opt.boot ($VMsideEffectFreeOperators): Include it.
2010-06-26 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %vrefdos-reis1-1/+2
and %vlength. * interp/g-util.boot: Expand them. * algebra/array1.spad.pamphlet (PrimitiveArray): Use them. (IndexedOneDimensionalArray): Likewise.
2010-06-26 * interp/g-util.boot: Expand %f2s.dos-reis1-1/+1
* interp/g-opt.boot ($VMsideEffectFreeOperators): Include %f2s. * algebra/string.spad.pamphlet (StringCategory) [string]: Add overload DoubleFloat -> %. (String): Define it.
2010-06-25 * interp/g-opt.boot: Rename %eq to %peq for pointer comparaison.dos-reis1-1/+1
* interp/g-util.boot: Expand it. * algebra/aggcat.spad.pamphlet: Cleanup. * algebra/any.spad.pamphlet: Likewise. * algebra/boolean.spad.pamphlet: Likewise. * algebra/data.spad.pamphlet: Likewise. * algebra/domain.spad.pamphlet: Likewise. * algebra/files.spad.pamphlet: Likewise. * algebra/laurent.spad.pamphlet: Likewise. * algebra/list.spad.pamphlet: Likewise. * algebra/mappkg.spad.pamphlet: Likewise. * algebra/ore.spad.pamphlet: Likewise. * algebra/padic.spad.pamphlet: Likewise. * algebra/pattern.spad.pamphlet: Likewise. * algebra/sex.spad.pamphlet: Likewise. * algebra/stream.spad.pamphlet: Likewise. * algebra/string.spad.pamphlet: Likewise. * algebra/syntax.spad.pamphlet: Likewise. * algebra/table.spad.pamphlet: Likewise.
2010-06-24 * interp/c-util.boot: Cleanup.dos-reis1-3/+3
* interp/compiler.boot: Likewise. * interp/functor.boot: Likewise. * interp/g-opt.boot: Likewise. * interp/mark.boot: Likewise. * interp/nrunfast.boot: Likewise. * interp/wi1.boot: Likewise. * interp/wi2.boot: Likewise.
2010-06-23 * interp/nruncomp.boot (optDeltaEntry): Don't optimize currentdos-reis1-8/+7
domain modemap references here. * interp/g-opt.boot ($VMsideEffectFreeOperators): Include more floating point operators. ($simpleVMoperators): Move FUNCALL here. (isVMConstantForm): Tidy. * interp/g-util.boot: Expand more floating point insns. * interp/c-util.boot (replaceSimpleFunctions): Replace more constants. * algebra/integer.spad.pamphlet (Integer): More cleanup. Use builtin functions. * algebra/sf.spad.pamphlet: Likewise.
2010-06-22 Group sequence of LETT definitions into LET/LET* expressions wheredos-reis1-1/+28
appropriate. * interp/g-opt.boot (jumpToToplevel?): New. (singleAssignment?): Likewise. (groupVariableDefinitions): Likewise. Use them. (optimizeFunctionDef): Group toplevel variable definitions into a bind expression. * interp/g-util.boot (expandBind): Tidy. * interp/c-util.boot (transformToBackendCode): Refrain from enclosing let-expressions in SEQ if not needed.
2010-06-20 * interp/g-opt.boot (changeVariableDefinitionToStore): New.dos-reis1-1/+15
(optimizeFunctionDef): Use it.
2010-06-12 * interp/g-opt.boot (replaceableTemporary?): New.dos-reis1-2/+13
(optSEQ) [getRidOfTemps]: Use it to decide when to safely inline a temporary variable definition.
2010-06-10 * interp/compiler.boot (freeVarUsage): Handle %when too.dos-reis1-1/+1
(compLogicalNot): Generate %not form. (satisfies): Use %bind. (compMatch): Likewise. (compReduce1): Generate %loop directly instead of %reduce. * interp/g-opt.boot (changeThrowToExit): Don't check for %reduce. * interp/g-util.boot (expandRepeat): Remove. (expandReduce): Likewise.
2010-06-10 * interp/g-opt.boot (optCollectVector): Generate %loop for thedos-reis1-3/+2
non-simple case.
2010-06-10Clean updos-reis1-1/+1
2010-06-09 * interp/g-opt.boot (optCollectVector): Generare %collect form,dos-reis1-1/+1
not COLLECT.
2010-06-09 * interp/compiler.boot (canReturn): Handle %when and %bind.dos-reis1-3/+3
(compMatchAlternative): Generate %bind form. (compMatch): Likewise. (compReduce1): Rewrite. (getIdentity): Tidy. * interp/g-opt.boot (changeThrowToExit): HAndle %reduce. (varIsAssigned): %store is side-effectful. * interp/g-util.boot (expandReduce): New. Expand %reduce forms. * interp/i-map.boot (getUserIdentifiersIn): Handle %reduce. (findLocalVars1): Likewise. * interp/i-spec1.boot (checkForFreeVariables): Likewise.
2010-06-09 * interp/g-opt.boot (removeNeedlessThrow): Tidy.dos-reis1-1/+5
2010-06-07 * interp/compiler.boot (replaceExitEtc): Replace TAGGEDreturn withdos-reis1-0/+13
%return. * interp/g-opt.boot (removeNeedlessThrow): New. (optCatch): Use to it to avoid horrendous code generation for return statement. * interp/g-util.boot (expandReturn): New. Expand %return forms.
2010-06-04 * interp/compiler.boot: Replace QCAR first and QCDR first rest.dos-reis1-6/+6
* interp/g-opt.boot: Likewise.
2010-06-02Use builtin functions for DF.dos-reis1-1/+1