Subject: Re: Performance tuning
From: Erik Naggum <>
Date: 2000/12/07
Newsgroups: comp.lang.lisp
Message-ID: <>

* Tim Bradshaw <>
| Surely the semantic change is somnething like:
| (defun foo (x)
|   (declare (type integer x))
|   (let ((y x))
|     ;; if X is a bignum then Y is a pointer to X, if X is a fixnum then 
|     ;; Y is a copy of X (probably?)
|     (bar y)
|     ;; right now this is true.  if DPB modifies bignums it will be
|     ;; true only if y was odd.
|     (= x y)))
| (defun bar (y)
|   (declare (type integer y))
|   (dpb 1 (byte 1 0) y))

  Well, I _had_ hoped to see semething a tad less contrived, as this is
  bad style on so many counts that I'm likely to believe nobody has done
  anything like this that would cause a _change_ in observable behavior.

  To find a change in semantics, you would at least have to find
  something that people do today with dpb (or setf of ldb).  But at
  worst, we could define a destructive version of dpb, which would be
  pretty easy to write even today.

  "When you are having a bad day and it seems like everybody is trying
   to piss you off, remember that it takes 42 muscles to produce a
   frown, but only 4 muscles to work the trigger of a good sniper rifle."
								-- Unknown