0.8.19.32:
[sbcl.git] / src / compiler / policies.lisp
1 ;;;; aimed optimization qualities
2
3 ;;;; This software is part of the SBCL system. See the README file for
4 ;;;; more information.
5 ;;;;
6 ;;;; This software is derived from the CMU CL system, which was
7 ;;;; written at Carnegie Mellon University and released into the
8 ;;;; public domain. The software is in the public domain and is
9 ;;;; provided with absolutely no warranty. See the COPYING and CREDITS
10 ;;;; files for more information.
11
12 (in-package "SB!C")
13
14 (define-optimization-quality type-check
15     (cond ((= safety 0) 0)
16           ;; FIXME: It is duplicated in PROBABLE-TYPE-CHECK-P and in
17           ;; some other places.
18
19           ((and (<= speed safety)
20                 (<= space safety)
21                 (<= compilation-speed safety))
22            3)
23           (t 2))
24   ("no" "maybe" "fast" "full"))
25
26 (define-optimization-quality check-tag-existence
27     (cond ((= safety 0) 0)
28           (t 3))
29   ("no" "maybe" "yes" "yes"))
30
31 (define-optimization-quality let-convertion
32     (if (<= debug speed) 3 0)
33   ("off" "maybe" "on" "on"))
34
35 (define-optimization-quality verify-arg-count
36     (if (zerop safety) 0 3)
37   ("no" "maybe" "yes" "yes"))
38
39 (define-optimization-quality merge-tail-calls
40     (if (or (> space debug)
41             (> speed debug))
42         3
43         0)
44   ("no" "maybe" "yes" "yes"))
45
46 (define-optimization-quality insert-debug-catch
47     (if (> debug (max speed space))
48         3
49         0)
50   ("no" "maybe" "yes" "yes"))
51
52 (define-optimization-quality recognize-self-calls
53     (if (> (max speed space) debug)
54         3
55         0)
56   ("no" "maybe" "yes" "yes"))
57
58 (define-optimization-quality stack-allocate-dynamic-extent
59     (if (and (> (max speed space) (max debug safety))
60              (< safety 3))
61         3
62         0)
63   ("no" "maybe" "yes" "yes"))
64
65 (define-optimization-quality float-accuracy
66     3
67   ("degraded" "full" "full" "full"))
68
69 (define-optimization-quality insert-step-conditions
70     (if (> debug (max speed space))
71         debug
72         0)
73   ("no" "no" "partial" "full"))