X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fpolicies.lisp;h=53b21e4917819c3c8799f39a69dc38c5f8d89750;hb=f7faed97898dd0e94a18b0d1fca03aaa0fe24ab0;hp=55e5de325fc82dad34df56f1103026c9e09f8f38;hpb=6822034325136cde4e14773c83c3769b42721306;p=sbcl.git diff --git a/src/compiler/policies.lisp b/src/compiler/policies.lisp index 55e5de3..53b21e4 100644 --- a/src/compiler/policies.lisp +++ b/src/compiler/policies.lisp @@ -45,32 +45,35 @@ Enabling this option can increase heap consing of closures.") ("off" "maybe" "on" "on") "Control inline-substitution of used-once local functions.") +(define-optimization-quality rest-conversion + (if (= debug 3) 0 3) + ("off" "maybe" "on" "on") + "Control conversion of &REST argments to &MORE arguments when +only used as the final argument to APPLY.") + +(define-optimization-quality alien-funcall-saves-fp-and-pc + (if (<= speed debug) 3 0) + ("no" "maybe" "yes" "yes") + "Control ALIEN-FUNCALL saving frame-pointer and program counter for +more reliable bactracing across foreign calls.") + (define-optimization-quality verify-arg-count (if (zerop safety) 0 3) ("no" "maybe" "yes" "yes")) (define-optimization-quality merge-tail-calls - (if (or (> space debug) - (> speed debug)) - 3 - 0) - ("no" "maybe" "yes" "yes") - "Control whether tail-calls should reuse caller stack frame. -Enabling this option make functions use less stack space, and make -tail-recursive functions execute in constant stack, but debugging -become harder, because backtraces show only part of function call -sequence. - -This options has no effect when INSERT-DEBUG-CATCH is set.") + 3 + "Deprecated: has no effect on compiled code. (Never really did.)") (define-optimization-quality insert-debug-catch (if (> debug (max speed space)) 3 0) ("no" "maybe" "yes" "yes") - "Enable possibility of returning from stack frames with the debugger. - -Enabling this option effectively disables MERGE-TAIL-CALLS.") + "Enables possibility of returning from stack frames with the debugger. +Enabling this option causes apparent tail calls to no longer be in a tail +position -- effectively disabling tail-merging, hence causing apparently tail +recursive functions to no longer execute in constant stack space") (define-optimization-quality recognize-self-calls (if (> (max speed space) debug)