Add address metadata key to defcfn as well

This commit is contained in:
Joshua Suskalo 2021-09-30 15:45:10 -05:00
parent 5ab2bae1fa
commit daa1949f32
2 changed files with 6 additions and 3 deletions

View file

@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This change
## [Unreleased] ## [Unreleased]
### Added ### Added
- An `::ffi/address` key to deserialized function pointers' metadata - An `::ffi/address` key to wrapper functions' metadata
## [0.1.184] - 2021-09-30 ## [0.1.184] - 2021-09-30
### Fixed ### Fixed

View file

@ -545,6 +545,7 @@
(let [args (s/conform ::defcfn-args args) (let [args (s/conform ::defcfn-args args)
args-types (gensym "args-types") args-types (gensym "args-types")
ret-type (gensym "ret-type") ret-type (gensym "ret-type")
address (gensym "symbol")
invoke (gensym "invoke") invoke (gensym "invoke")
native-sym (gensym "native") native-sym (gensym "native")
[arity fn-tail] (-> args :wrapper :fn-tail) [arity fn-tail] (-> args :wrapper :fn-tail)
@ -558,7 +559,8 @@
nil))] nil))]
`(let [~args-types ~(:native-arglist args) `(let [~args-types ~(:native-arglist args)
~ret-type ~(:return-type args) ~ret-type ~(:return-type args)
~invoke (make-downcall ~(name (:symbol args)) ~args-types ~ret-type) ~address (find-symbol ~(name (:symbol args)))
~invoke (make-downcall ~address ~args-types ~ret-type)
~(or (-> args :wrapper :native-fn) native-sym) ~(or (-> args :wrapper :native-fn) native-sym)
~(if (and (every? #(= % (mem/primitive-type %)) ~(if (and (every? #(= % (mem/primitive-type %))
(:native-arglist args)) (:native-arglist args))
@ -581,7 +583,8 @@
(list (list
(mapv (comp symbol name) (mapv (comp symbol name)
(:native-arglist args))))))) (:native-arglist args)))))))
(:attr-map args))) (assoc (:attr-map args)
::address address)))
~@(when-let [doc (:doc args)] ~@(when-let [doc (:doc args)]
(list doc)) (list doc))
fun#)))) fun#))))