gio: specify proper c_marshaller and va_marshallers
This is related to #1532 (closed)
c_marshaller is specified to
va_marshaller will be automatically applied, even if we have an internal marshaller which could be used for the closure. However, if
c_marshaller is set to
NULL for the simple cases, a
va_marshaller will be automatically applied.
Further more, by ensuring we have proper marshallers for all objects within Gio, we allow application developers to get proper stack traces from profiler tooling such as Linux's perf (which does stack unwinding from kernel-space). Going through the
ffi_call_unix64 frame on x86_64 causes stack traces to be cut short.
There might be a small performance improvement as well, but it's likely negligible at best.