Hey all,

As part of porting Geary to WK2 (I'm writing this from it now!) I have been developing a Vala VAPI[0] for JSC, so I can work with the JS objects returned by JavascriptResult and Frame directly from Vala, without dropping back to C. However since they are not GObjects and not ref counted, I need to get the momeory management right still.

I've been trying to work out when to use functions like JSGlobalContextRelease, JSStringRelease, and JSValueUnprotect, but haven't been able to find any useful documentation about it. Also, examples on the web seem to conflict: E.g. The WebKitGTK docs and Cookbook[1] uses JSStringRelease on a string copied from a JSValueRef, whereas others (e.g. [2]) suggest that JSStringRelease only needs to be used in certain instances, or that it needs to be used all the time. Any pointers to canonical docs and examples would be appreciated.

I assume I never need to release a JSGlobalContextRef obtained from JavascriptResult or Frame, since the web process will effectively retain it, but what about the others? Would it hurt to call JSGlobalContextRelease and JSStringRelease even if not needed? What about JSValueRefs?

Also, my assumption that JSC objects should be treated as Vala simple types, i.e. they should be passed as copies (not by reference), that's correct isn't it?

Cheers,
//Mike

[0] - <https://git.gnome.org/browse/geary/tree/bindings/vapi/javascriptcore-4.0.vapi?h=wip/728002-webkit2> [1] - <https://wiki.gnome.org/Projects/WebKitGtk/ProgrammingGuide/Cookbook> [2] - <http://parmanoir.com/Taming_JavascriptCore_within_and_without_WebView>

--
⊨ Michael Gratton, Percept Wrangler.
⚙ <http://mjog.vee.net/>


_______________________________________________
webkit-gtk mailing list
webkit-gtk@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-gtk

Reply via email to