Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to gengc:||(view) (annotate)|
Just mutator slots for eval-stack and eval-stack-top instead of specials. This is really only needed for threads support, but why not change it now?
Fix to make unreferenced arguments in local call work. We were correctly only popping (into the INTERNAL-APPLY arglist) the number of referenced args, but INTERNAL-APPLY was assuming that all arguments were present in the list. Added a flag to INTERNAL-APPLY to control this behavior. This was breaking full call to interpreted functions as well, since the XEP did a local call to the main entry.
Added a (OPTIMIZE (SAFETY 1)) in LEAF-VALUE so that we get unbound errors in interpreted code, even when the interpreter is compiled unsafe.
Added FLUSH-INTERPRETED-FUNCTION-CACHE so that we can prevent interpreted stuff from being unnecessarily retained in saved cores.
New file header with RCS stuff.
Let-bind a special in interpreted-function-type so that we can tell when we are recursivly called with the same function object. If we are, we just return a generic function type.
Added the INTERPRETED-FUNCTION-TYPE interface so that the compiler could stop thinking all interpreted functions are (&rest t).
Merged MIPS branch with the trunk.
lexenv changes and associated NLX changes, and also changes to support interpreted code debugging.
In CONVERT-EVAL-FUN, fixed inverted sense in the computation of the Quietly arg to COMPILE-FOR-EVAL. Also, changed eval function cache replacement to be less eager to flush functions from the cache: the threshold is now GCs/call rather than calls/GC.
Added some missing commas in COMBINATION-NODE.
Changed COMBINATION-NODE to recognize the funny function case by the :UNUSED annotation of the FUN continuation. MAYBE-DO-FUNNY-FUNCTION is now DO-FUNNY-FUNCTION and is only called when we've got a live one. This speeds up the most common case of call (a known, non-funny function), since we don't have to fall all the way down to the bottom of a CASE.
Changed INTERPRETED-FUNCTION-LAMBDA-EXPRESSION to not return the lambda as the name when there is no name. Callers can do this when that's what they want.
Changed the interpreted function caching policy so that any function used more than *INTERPRETED-FUNCTION-CACHE-THRESHOLD* times since the last GC is retained.
Fixed the unwind case of %UNWIND-PROTECT to push a bogus values list on the stack to keep the MV-BIND in the UNWIND-PROTECT translation happy. Unlike in compiled code, we don't use these values to keep track of the exit being done, but we still execute the MV-BIND. Also, fixed SET-LEAF-VALUE to check for the var being indirect even when the reference is in the home env. Reordered the TYPECASE in INTERNAL-APPLY-LOOP according to my intuition of the relatively frequency of node types.
Fixed a comment.
Oops... In LEAF-VALUE, I was looking at the wrong closure to see if the environment was null.
Changed LEAF-VALUE to make a cached EVAL-FUNCTION when the lexical environment is null. Although we don't get lazy conversion, at least we can prevent excessive memory usage. Also, this result is cached in the new LAMBDA-EVAL-INFO-FUNCTION slot so that all references to a non-closure interpreted function will get the same EQ result (mainly to avoid having N copies of the IR1 if the conversion is decached and then reconverted.)
When handling %UNWIND-PROTECT, don't pop and discard the cleanup function, since it is no longer pushed.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|