[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Optimizer? What optimizer?
From: |
Daniel Colascione |
Subject: |
Optimizer? What optimizer? |
Date: |
Mon, 06 Jun 2011 19:33:54 -0700 |
User-agent: |
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 |
Is there some fundamental reason defsubst does so poorly here compared
to defmacro?
---
(defmacro foo-macro (a b)
`(if ,a
,b
(1+ ,b)))
(defun bar-macro (b)
(foo-macro t b))
(defun qux-macro (b)
(foo-macro nil b))
;; byte code for bar-macro:
;; args: (b)
;; 0 varref b
;; 1 return
;;
;; byte code for qux-macro:
;; args: (b)
;; 0 varref b
;; 1 add1
;; 2 return
;;
(defsubst foo-subst (a b)
`(if ,a
,b
(1+ ,b)))
(defun bar-subst (b)
(foo-subst t b))
(defun qux-subst (b)
(foo-subst nil b))
;; byte code for bar-subst:
;; args: (b)
;; 0 constant t
;; 1 varref b
;; 2 varbind b
;; 3 varbind a
;; 4 constant if
;; 5 varref a
;; 6 varref b
;; 7 constant 1+
;; 8 varref b
;; 9 list2
;; 10 list4
;; 11 unbind 2
;; 12 return
;;
;; byte code for qux-subst:
;; args: (b)
;; 0 constant nil
;; 1 varref b
;; 2 varbind b
;; 3 varbind a
;; 4 constant if
;; 5 varref a
;; 6 varref b
;; 7 constant 1+
;; 8 varref b
;; 9 list2
;; 10 list4
;; 11 unbind 2
;; 12 return
;;
signature.asc
Description: OpenPGP digital signature
- Optimizer? What optimizer?,
Daniel Colascione <=