Hi,
In my project, caesium, I’m binding against libsodium using jnr-ffi. This involves creating an Interface with a bunch of methods. This all works swimmingly, most of the time. I have two functions that differ only in their arguments being type hinted: (defn secretbox-easy-to-byte-bufs-nocast! [^ByteBuffer out ^ByteBuffer msg ^ByteBuffer nonce ^ByteBuffer key] (.crypto_secretbox_easy sodium out msg (.remaining msg) nonce key) out) (defn secretbox-easy-refl! [out msg nonce key] (.crypto_secretbox_easy sodium out msg (.remaining msg) nonce key) out) When calling this function with direct byte buffers (and only with direct byte buffers!), the call fails. First few lines of traceback: actual: java.lang.IllegalArgumentException: No matching method found: crypto_secretbox_easy for class caesium.binding.Sodium$jnr$ffi$0 at clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:80) clojure.lang.Reflector.invokeInstanceMethod (Reflector.java:28) caesium.crypto.secretbox$secretbox_easy_refl_BANG_.invokeStatic (secretbox.clj:85) The type hinted version works fine. Is this expected behavior, or a bug? I’m trying to measure how expensive reflection is, and wasn’t expecting this problem. DirectByteBuffer appears undocumented, but it is a subclass of MappedByteBuffer, implementing ByteBuffer. lvh -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.