From 42fbc5e52f2ccc01630c485991336577ca18d190 Mon Sep 17 00:00:00 2001 From: Paul Khuong Date: Wed, 31 Aug 2011 09:05:16 -0400 Subject: [PATCH] Bring OPTIMIZATIONS up to date Some of these things were implemented months or a few years ago. Also, fix the header for NEWS. --- NEWS | 2 +- OPTIMIZATIONS | 23 +---------------------- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/NEWS b/NEWS index 60e5f9c..fcd1815 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,5 @@ ;;;; -*- coding: utf-8; fill-column: 78 -*- -changes relative to sbcl-1.0.50: +changes relative to sbcl-1.0.51: * enhancement: ASDF has been updated to version 2.017. * enhancement: the --core command line option now accepts binaries with an embedded core. diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index 81ab61d..42119ac 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -157,11 +157,6 @@ sbcl-0.8.12.30, this affects at least DUMP-OBJECT through COMPOUND-OBJECT-P, and (LABELS MAYBE-EMIT-MAKE-LOAD-FORMS GROVEL) through TYPEP UNBOXED-ARRAY, within the compiler itself. -------------------------------------------------------------------------------- -#18 -(lambda (x) (declare (null x)) (sxhash x)) goes through SYMBOL-HASH -rather than either constant-folding or manipulating NIL-VALUE or -NULL-TN directly. --------------------------------------------------------------------------------- #20 (defun-with-dx foo (x) (flet ((make (x) @@ -179,8 +174,7 @@ Result of MAKE is not stack allocated. IR2 does not perform unused code flushing. -------------------------------------------------------------------------------- #24 -a. Iterations on &REST lists, returning them as VALUES could be - rewritten with &MORE vectors. +a. Iterations on &REST lists could be rewritten with &MORE vectors. b. Implement local unknown-values mv-call (useful for fast type checking). -------------------------------------------------------------------------------- #26 @@ -247,21 +241,6 @@ vm-support-routine COMBINATION-IMPLEMENTATION-STYLE and its use in src/compiler/ir1opt.lisp, IR1-OPTIMIZE-COMBINATION. The above optimizations are left as an exercise for the reader.) -------------------------------------------------------------------------------- -#30 -(defun foo (x y) - (< x y)) - -FOO's IR1 representation is roughly: - -(defun foo (x y) - (if (< x y) - T - NIL)) - -However, if a full call is generated for < (and similarly for other -predicate functions), then the IF is unnecessary, since the return value -of (< x y) is already T or NIL. --------------------------------------------------------------------------------- #31 The typecheck generated for a declaration like (integer 0 45) on x86 looks like: -- 1.7.10.4