proclamations for struct accessors and predicates - gcl.git - GNU Common Lisp

index : gcl.git
GNU Common Lisp
summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2015年03月10日 17:20:35 -0400
committerCamm Maguire <camm@debian.org>2015年03月10日 17:20:35 -0400
commite64cb1aa25bcb82acf514fc52dd280b309d02afd (patch)
treec34601139298f6cdec11338d525d0c5a135f8bd7
parent18f2f3459c2f37b935ca0c829c120c0187a54456 (diff)
downloadgcl-e64cb1aa25bcb82acf514fc52dd280b309d02afd.tar.gz
proclamations for struct accessors and predicates
Diffstat
-rwxr-xr-xgcl/lsp/gcl_defstruct.lsp 9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcl/lsp/gcl_defstruct.lsp b/gcl/lsp/gcl_defstruct.lsp
index 011b29349..88331f62f 100755
--- a/gcl/lsp/gcl_defstruct.lsp
+++ b/gcl/lsp/gcl_defstruct.lsp
@@ -99,7 +99,10 @@
(setq dont-overwrite t)
)
(t (setf (get access-function 'structure-access)
- (cons (if type type name) offset)))))))
+ (cons (if type type name) offset))
+ (when slot-type
+ (proclaim `(ftype (function (,name) ,slot-type) ,access-function)))
+ )))))
nil))
@@ -569,9 +572,7 @@
(setf (symbol-function predicate)
#'(lambda (x)
(si::structure-subtype-p x name))))
- (setf (get predicate 'compiler::co1)
- 'compiler::co1structure-predicate)
- (setf (get predicate 'struct-predicate) name)
+ (proclaim `(ftype (function (,name) t) ,predicate));FIXME boolean is unboxed
)
) nil)
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月05日 00:53:39 +0000

AltStyle によって変換されたページ (->オリジナル) /