aboutsummaryrefslogtreecommitdiff
path: root/src/interp/g-util.boot
AgeCommit message (Collapse)AuthorFilesLines
2010-12-07 Add support for exception handling.dos-reis1-1/+36
* interp/parsing.lisp (TEST-LEXING): Remove. (RTRACE): Likewise. (RUNTRACE): Likewise. (MATCH-ADVANCE-KEYWORD): New. (MATCH-ADVANCE-GLYPH): Likewise. (MATCH-ADVANCE-SPECIAL): Likewise. (MATCH-SPECIAL): Likewise. (MATCH-KEYWORD-NEXT): Likewise. * interp/newaux.lisp: Make try and throw prefix operators. * interp/metalex.lisp (KEYWORDS): Include finally, catch and throw. * interp/fnewmeta.lisp (PARSE-Throw): New. Parse throw-expressions. (PARSE-Catch): New. Parse catch-expressions. (PARSE-Finally): New. Parse finally-expressions. (PARSE-Try): New. Parse try-expressions. * interp/compiler.boot (compThrow): New. Register to compile throw-expressions. (compTry): New. Register to compiler try-expressions. (compCatch): New. Compile catch-handler expression. * interp/g-opt.boot (optTry): New. Simplify simple expressions in the try operand. * interp/g-util.boot (expandThrow): New. Expand %throw forms. (domainMatchCode): New. (expandTry): New. Expand %try forms. * doc/msgs/s2-us.msgs: Add new message with key S2GE0020. * interp/g-error.boot (systemErrorHandler): Handle possible uncaucght expression condition.
2010-11-16 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %s2cdos-reis1-3/+22
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/+17
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/spad.lisp (DIVIDE2): Remove.dos-reis1-1/+1
* interp/vmlisp.lisp (QSQUOTIENT): Likewise. (QSREMAINDER): Likewise. * interp/buildom.boot: Use quo and rem in leur of QUOTIENT and REMAINDER or variants. * interp/g-timer.boot: Likewise. * interp/g-util.boot: Likewise. * interp/htsetvar.boot: Likewise. * interp/i-output.boot: Likewise. * interp/incl.boot: Likewise. * interp/msgdb.boot: Likewise. * interp/nrungo.boot: Likewise. * interp/pspad1.boot: Likewise. * interp/topics.boot: Likewise.
2010-07-28 * interp/sys-globals.boot ($VariableCount): Remove.dos-reis1-0/+5
* interp/spad.lisp (QUOTIENT2): Remove. (REMAINDER2): Likewise. * algebra/integer.spad.pamphlet (Integer): Use builtin %idivide. * algebra/si.spad.pamphlet (SingleInteger): Likewise.
2010-07-28 * algebra/integer.spad.pamphlet (Integer): Use builtin functionsdos-reis1-11/+13
%irem and %iquo. * algebra/si.spad.pamphlet (SingleInteger): Likewise.
2010-07-27Misc cleanupdos-reis1-7/+7
2010-07-26 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include newdos-reis1-0/+8
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-25 * interp/g-opt.boot (resetTo): New.dos-reis1-1/+1
(optCatch): Use it. (optCall): Likewise. (optSpecialCall): Likewise. (simplifyVMForm): Handle simple cases here. * interp/macros.lisp (RPLACW): Remove.
2010-07-25 * interp/c-util.boot (usedSymbol?): Move to g-util.boot.dos-reis1-2/+18
* interp/nruncomp.boot (NRTsetVector4a): Tidy.
2010-07-23 * interp/g-opt.boot (optBind): Check for dependencies indos-reis1-6/+4
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-12/+0
* interp/g-opt.boot (optMINUS): Remove. (opt_-): Likewise. (optBle): New. (optBgt): Likewise. (optBge): Likewise.
2010-07-23 * interp/g-util.boot (expandFeq): New.dos-reis1-1/+6
* algebra/sf.spad.pamphlet (DoubleFloat): Tidy.
2010-07-22 * interp/g-util.boot (expandIeq): New expander for %ieq.dos-reis1-1/+8
* interp/g-opt.boot (optIeq): New. (optIadd): Likewise. (optIsub): Likewise. (optImul): Likewise. (optIneg): Likewise. (lispize): Remove.
2010-07-22 * algebra/data.spad.pamphlet (Byte) [~]: Tidy.dos-reis1-6/+26
(SystemNonNegativeInteger) [~]: Likewise. * interp/g-util.boot: Better expansion of byte operations.
2010-07-19 * interp/g-opt.boot ($VMsideEffectFreeOperators): Includedos-reis1-4/+23
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-13 * interp/g-opt.boot: %sname is a side-effect free operator.dos-reis1-0/+1
* interp/g-util.boot: Expand it. * algebra/syntax.spad.pamphlet (Identifer): Now satisfies CoercibleTo String.
2010-07-12cleanupsdos-reis1-8/+8
2010-07-03 * interp/category.boot (isCategoryForm): Tidy.dos-reis1-0/+5
* interp/compiler.boot (compMacro): Handle parameterized definition. * interp/define.boot (macroExpand): Likewise. (macroExpandList): Move case for niladic macros to macroExpand. * interp/g-util.boot (putMacro): New utility function.
2010-06-28Fix a typodos-reis1-1/+1
2010-06-27 * interp/g-util.boot: Add new opcode %before?.dos-reis1-6/+10
* interp/g-opt.boot ($VMsideEffectFreeOperators): Include it.
2010-06-26 * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %vrefdos-reis1-0/+5
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-0/+3
* 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-6/+7
* 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-23 * interp/nruncomp.boot (optDeltaEntry): Don't optimize currentdos-reis1-5/+58
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-2/+7
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/compiler.boot (massageLoop): New.dos-reis1-0/+1
(compRepeatOrCollect): Use it to generate appropriate %loop forms. Bind new special variable $mayHaveFreeIteratorVariables. (complainIfShadowing): Set it as appropriate.
2010-06-10 * interp/compiler.boot (freeVarUsage): Handle %when too.dos-reis1-9/+0
(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-util.boot (expandLoop): Now take all arguments as ados-reis1-4/+5
single %loop form. (expandCollect): Adjust call. (expandRepeat): Likewise.
2010-06-10Clean updos-reis1-2/+2
2010-06-09 * interp/compiler.boot (canReturn): Handle %when and %bind.dos-reis1-3/+9
(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 Widen scope of iterator variables in presence of terminatingdos-reis1-6/+15
predicate iterators. There is exactly one instance in the entire OpenAxio library. * interp/g-util.boot (expandIN): Take one more parameter to determine early binding. (expandIterators): Determine if wider scope is needed for iterator variables.
2010-06-07 * interp/compiler.boot (replaceExitEtc): Replace TAGGEDreturn withdos-reis1-0/+4
%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/buildom.boot (UnionEqual): Don't COERCE to FUNCTION. Usedos-reis1-1/+2
eval. (coerceUn2E): Likewise.
2010-06-04 * interp/br-con.boot: More cleanup.dos-reis1-21/+21
* interp/br-op1.boot: Likewise. * interp/br-saturn.boot: Likewise. * interp/c-util.boot: Likewise. * interp/category.boot: Likewise. * interp/clam.boot: Likewise. * interp/database.boot: Likewise. * interp/functor.boot: Likewise. * interp/g-cndata.boot: Likewise. * interp/g-util.boot: Likewise. * interp/guess.boot: Likewise. * interp/i-coerce.boot: Likewise. * interp/i-funsel.boot: Likewise. * interp/i-intern.boot: Likewise. * interp/i-syscmd.boot: Likewise. * interp/interop.boot: Likewise. * interp/newfort.boot: Likewise. * interp/nruncomp.boot: Likewise. * interp/nrunfast.boot: Likewise. * interp/nrunopt.boot: Likewise. * interp/setvars.boot: Likewise. * interp/slam.boot: Likewise. * interp/topics.boot: Likewise.
2010-06-02Use builtin functions for DF.dos-reis1-0/+2
2010-06-01 * algebra/list.spad.pamphlet: Use builtin functions.dos-reis1-9/+12
2010-06-01Adjust opcode for character supportdos-reis1-0/+9
2010-06-01 * interp/g-util.boot: Add more opcodes.dos-reis1-11/+22
* algebra/syntax.spad.pamphlet: Clean up. * algebra/variable.spad.pamphlet: Likewise. * algebra/ystream.spad.pamphlet: Likewise.
2010-05-31 * interp/compiler.boot (compWithMappingMode): Handle lambdados-reis1-3/+11
expressions as mapping.
2010-05-30 * interp/c-util.boot (middleEndExpand): Tidy.dos-reis1-10/+19
* interp/g-util.boot (expandToVMForm): Likewise. (expandStore): Refine store to pair components. * algebra/any.spad.pamphlet (Scope): Use builtin operators. (Environment): Likewise. * algebra/domain.spad.pamphlet (FunctionDescriptor): Likewise. (ConstructorCall): Likewise. (FunctorData): Likewise. (OperatorSignature): Likewise. (Category): Likewise. (Domain): Likewise. * algebra/integer.spad.pamphlet (Integer): Likewise. (NonNegativeInteger): Likewise. * algebra/outform.spad.pamphlet: Likewise. * algebra/si.spad.pamphlet (SingleInteger): Likewise. * algebra/syntax.spad.pamphlet (Syntax): Likewise.
2010-05-30Add more opcodesdos-reis1-80/+46
2010-05-29 * interp/compiler.boot (getExternalSymbolMode): Allow Lisp asdos-reis1-0/+6
foreign language. (checkExternalEntity): Likewise. (compSignatureImport): Likewise. Give foreign variables dummy values. * interp/c-util.boot (middleEndExpand): Handle %true and %false. * interp/g-util.boot (expandToVMForm): Likewise.
2010-05-29Fix typodos-reis1-1/+1
2010-05-29Add more utility functionsdos-reis1-5/+51
2010-05-28More opcode expandersdos-reis1-0/+33
2010-05-28Clean up MAKEPROP usesdos-reis1-1/+1
2010-05-27 * interp/sys-macros.lisp (eval): Expand opcodes before calling EVAL.dos-reis1-0/+7
* interp/slam.boot (reportFunctionCompilation): Tidy. Take extra care when generating code that access global variables. (reportFunctionCacheAll): Likewise. * interp/i-util.boot (isLocallyBound): Define. * interp/i-spec1.boot (upCOLLECT1): Bind $iteratorVars to nil. (upLoopIterSTEP): Call mkIteratorVariable instead of mkLocalVar. (upLoopIterIN): Likewise. (upStreamIterIN): Likewise. (upStreamIterSTEP): Likewise. (collectOneStream): Tidy. (mkAndApplyPredicates): Likewise. (mkIterFun): Lose last parameter. Tidy. (declare): Use isLocallyBound. (getAndEvalConstructorArgument): Likewise. (mkIteratorVariable): New. ($iteratorVars): New. * interp/i-spec2.boot (upREPEAT1): Bind $iteratorVars to nil. (isLocalPred): Use isLocallyBound. (compileIs): Likewise. (evalLETput): Likewise. (evalLETchangeValue): Likewise. (isType): Likewise. * interp/i-analy.boot (bottomUp): Likewise. (bottomUpDefaultCompile): Likewise. * interp/i-eval.boot (evalForm): Likewise. (getMappingArgValue): Likewise. * interp/i-map.boot (findLocalVars1): Likewise. (findLocalsInLoop): Tidy. Filter out iterator variables. (isLocalVar): Remove. * interp/g-util.boot (mkCacheName): Define here. (mkAuxiliaryName): Likewise. * interp/c-util.boot (backendCompileSLAM): Use mkCacheName. (backendCompileSPADSLAM): Likewise. * interp/clam.boot (compClam): Likewise. (clearCategoryCaches): Likewise. (clearCategoryCache): Likewise. * interp/g-timer.boot (timedEVALFUN): expandToVMForm is now implicitly called by eval.
2010-05-26 * interp/slam.boot (compileRecurrenceRelation): Generate code todos-reis1-15/+46
access and set the global value of the variable holding the cache state. * interp/g-util.boot: Add more middle end form expanders.
2010-05-26 * boot/tokens.boot: Automatically translate alphabetic?, digit?,dos-reis1-6/+6
lowerCase?, upperCase?, readByte, readInteger, readLine, writeByte, writeLine. * interp/as.boot: Use them. * interp/bc-matrix.boot: Likewise. * interp/bc-solve.boot: Likewise. * interp/br-con.boot: Likewise. * interp/br-search.boot: Likewise. * interp/br-util.boot: Likewise. * interp/c-doc.boot: Likewise. * interp/c-util.boot: Likewise. * interp/database.boot: Likewise. * interp/format.boot: Likewise. * interp/fortcall.boot: Likewise. * interp/functor.boot: Likewise. * interp/g-util.boot: Likewise. * interp/guess.boot: Likewise. * interp/ht-root.boot: Likewise. * interp/htcheck.boot: Likewise. * interp/htsetvar.boot: Likewise. * interp/i-map.boot: Likewise. * interp/i-output.boot: Likewise. * interp/i-syscmd.boot: Likewise. * interp/i-util.boot: Likewise. * interp/int-top.boot: Likewise. * interp/intfile.boot: Likewise. * interp/mark.boot: Likewise. * interp/msgdb.boot: Likewise. * interp/pf2sex.boot: Likewise. * interp/pspad1.boot: Likewise. * interp/pspad2.boot: Likewise. * interp/scan.boot: Likewise. * interp/slam.boot: Likewise. * interp/sys-utility.boot: Likewise. * interp/topics.boot: Likewise. * interp/trace.boot: Likewise. * interp/word.boot: Likewise.