Custom Query (1030 matches)
Results (841 - 843 of 1030)
| Ticket | Resolution | Summary | Owner | Reporter |
|---|---|---|---|---|
| #182 | fixed | Cannot enter # on British Keyboard | ||
| Description |
Cannot key the # sign on British keyboards ... It is located "above" '3' but you have to press the option key to get it, otherwise you would get the £. Unfortunately the option key seems to be ignored and whatever meta key combination is used, `3' gets echoed. (OS X Leopard on British Keyboard) |
|||
| #630 | fixed | Cannot apply inline function with optional argument | ||
| Description |
I am using CCL 1.4-r13119 (LinuxX8632) cl-opengl includes the following code: (defmacro definline (name args &body body)
`(progn
(declaim (inline ,name))
(defun ,name ,args ,@body)))
(definline color (r g b &optional (a 1.0))
(%gl:color-4f r g b a))
If I try to (apply #'gl:color '(0.5 0.5 0.5 1)) inside my function, then I get the following: Error: Too many arguments in (0.5 0.5 0.5 1). If, instead, I try (apply #'gl:color '(0.5 0.5 0.5)), it passes NIL rather than 1.0 for the fourth argument. I can work around it by making a non-inlined wrapper around gl:color and applying that instead.... so it's not a highy priority for me. But, it works for me on other Lisps. It also seems to work at the REPL, but not in compiled code. |
|||
| #1286 | invalid | Cannot INLINE functions created by MACROLET - again? | ||
| Description |
Intro: generating a declaim-inline declaration and a function definition via macrolet somehow gets in the way of inlining. Detailed minimal example below. This looks very similar to the following Clozure CL bug, whence the "again?" in the summary comes from. http://trac.clozure.com/ccl/ticket/1280
Example with 3 files, package.lisp, a.lisp, and b.lisp: package.lisp:
(in-package :cl-user)
(defpackage a
(:use :cl)
(:export #:***f*** #:///f///)) ; easy to see in disassembly
(defpackage b
(:use :cl)
(:export #:g #:g2))
a.lisp:
(in-package #:a)
(macrolet ((define-op (name op)
`(progn
(declaim (inline ,op))
(defun ,name (x y)
(,op x y)))))
(define-op ***f*** +))
(declaim (inline ///f///))
(defun ///f/// (x y)
(+ x y))
b.lisp:
(in-package #:b)
(defun g (x y)
(flet ((h ()
(a:***f*** x y)))
#'h))
(defun g2 (x y)
(flet ((h ()
(a:///f/// x y)))
#'h))
Session with results: ; SLIME 2015-06-01
CL-USER> (progn
(load "package.lisp")
(load (compile-file "a.lisp"))
(load (compile-file "b.lisp")))
#P"b.lx64fsl"
CL-USER> (disassemble (b:g 1 2))
L0
(leaq (@ (:^ L0) (% rip)) (% fn)) ; [0]
(cmpl ($ 16) (% nargs)) ; [7]
(jne L81) ; [10]
(pushq (% rbp)) ; [12]
(movq (% rsp) (% rbp)) ; [13]
(pushq (% arg_y)) ; [16]
(pushq (% arg_z)) ; [17]
;;; (a:***f*** x y)
(leaq (@ (:^ L61) (% fn)) (% temp0)) ; [18]
(pushq (% temp0)) ; [25]
(movq (% arg_z) (% arg_y)) ; [26]
(movq (@ -8 (% rbp)) (% arg_z)) ; [29]
(movl ($ 16) (% nargs)) ; [33]
(movq (@ 'A:***F*** (% fn)) (% temp0)) ; [38]
(pushq (@ #x12FB8)) ; [45]
(jmpq (@ 10 (% temp0))) ; [52]
L61
(leaq (@ (:^ L0) (% rip)) (% fn)) ; [61]
(jmpq (@ .SPNVALRET)) ; [68]
;;; #<no source text>
L81
(uuo-error-wrong-number-of-args) ; [81]
NIL
CL-USER> (disassemble (b:g2 1 2))
L0
(leaq (@ (:^ L0) (% rip)) (% fn)) ; [0]
(cmpl ($ 16) (% nargs)) ; [7]
(jne L81) ; [10]
(pushq (% rbp)) ; [12]
(movq (% rsp) (% rbp)) ; [13]
(pushq (% arg_y)) ; [16]
(pushq (% arg_z)) ; [17]
;;; (a:///f/// x y)
(leaq (@ (:^ L61) (% fn)) (% temp0)) ; [18]
(pushq (% temp0)) ; [25]
(movq (% arg_z) (% arg_y)) ; [26]
(movq (@ -8 (% rbp)) (% arg_z)) ; [29]
(movl ($ 16) (% nargs)) ; [33]
(movq (@ '+ (% fn)) (% temp0)) ; [38]
(pushq (@ #x12FB8)) ; [45]
(jmpq (@ 10 (% temp0))) ; [52]
L61
(leaq (@ (:^ L0) (% rip)) (% fn)) ; [61]
(jmpq (@ .SPNVALRET)) ; [68]
;;; #<no source text>
L81
(uuo-error-wrong-number-of-args) ; [81]
NIL
Summary: g's #'h does NOT get a:***f*** inlined g2's #'h DOES get a:///f/// inlined |
|||
