On Tue, 2014-03-18 at 12:37 +1100, Manuel M T Chakravarty wrote: > > > > Library implementation can't generate native dynamic wrapper, it has to > > use slow libffi. > > When we first implemented the FFI, there was no libffi. Maintaining the > adjustor code for all platforms is a PITA; hence, using libffi was a welcome > way to improve portability.
Do you think we can remove native adjustors? I can prepare a patch. It requires minor changes to cache ffi_cif structure. On desugar phase for each wrapper we can generate fresh global variable to store cif pointer and pass it to createAdjustor. > > > > > From my point of view, at this point it is more important to agree on > > the next question: do we want such functionality in ghc at all? I don't > > want to waste time on it if nobody wants to see it merged. > > I still don’t see the benefit in further complicating an already murky corner > of the compiler. Moreover, for this to make sense, it would need to work on > all supported platforms. Unless you are volunteering to implement it on > multiple platforms, this would mean, we’d use libffi for most platforms > anyway. This brings me to my original point, a library or tool is the better > place for this. OK, I don't buy it, but I see your point. > > Manuel > > PS: I’d happily accept language-c-inline patches for marshalling structs. > _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs