<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Over the holiday period, I looked into the possibility of giving EncodedJSValue a default constructor (because I didn’t like having to return encodedJSValue() instead of { } in lots of places), and learned why we had EncodedJSValue in the first place (i.e. for C linkage). This led me to discover (in my reading of the code) that we don’t really need to use EncodedJSValue for most of our host functions (those of type NativeFunction, GetValueFunc, and PutValueFunc). </div><div class=""><br class=""></div><div class="">I propose that we switch to using JSValue directly where we can. This has the benefit of:</div><div class="">1. better type safety with the use of JSValue (EncodedJSValue is a int64_t typedef).</div><div class="">2. more readable code (less marshaling back and forth with JSValue::encode()/decode()).</div><div class=""><br class=""></div><div class="">The patch for this change can be found here:</div><a href="https://bugs.webkit.org/show_bug.cgi?id=166658" class="">https://bugs.webkit.org/show_bug.cgi?id=166658</a><div class=""><br class=""></div><div class="">Perf is neutral. Any opinions?</div><div class=""><br class=""></div><div class="">Thanks.</div><div class=""><br class=""></div><div class="">Mark</div></body></html>