<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="">It sounds like this is discussing the implementation in V8, unless it’s done similarly in other engines. Possibly it’s talking about a polyfill mechanism that might be used in compile-to-js implementations that target older browsers.<div class=""><br class=""></div><div class="">V8’s template map is a Map with smi keys representing the hash of the raw string, containing a smaller array of lists of strings which yield the same hash (usually a single template literal)</div><div class=""><br class=""></div><div class="">Unfortunately, since the Map is not tied directly to the callsite objects (which aren’t available at parse-time when the hashing occurs), there’s no way to store these callsites in a WeakMap, and they are never collected. If WeakSets were iterable, this could be solved pretty easily, but these are the tools we’ve got :(</div><div class=""><br class=""><div class=""><div><blockquote type="cite" class=""><div class="">On Jun 16, 2015, at 10:31 PM, Mark S. Miller <<a href="mailto:erights@google.com" class="">erights@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi Yusuke, I am not sure I understood your message. Could you show some example code that would observe the observable difference you have in mind?<div class=""><br class=""><div class=""><br class=""></div></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Jun 16, 2015 at 7:25 PM, Yusuke SUZUKI <span dir="ltr" class=""><<a href="mailto:utatane.tea@gmail.com" target="_blank" class="">utatane.tea@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class="">Hi forks,</div><div class=""><br class=""></div><div class="">In ES6 spec, template site objects are strongly referenced by the realm.[[templateMap]].</div><div class="">So naive implementation leaks memory because it keeps all the site objects in the realm.</div><div class=""><br class=""></div><div class="">However, we can alleviate this situation.</div><div class="">Because template site objects are frozen completely, it behaves as if it's a primitive value.<br class=""></div><div class="">It enables the implementation to reference it from the realm weakly. When all disclosed site objects are not referenced, we can GC them because nobody knows the given site object is once collected (& re-generated).</div><div class=""><br class=""></div><div class="">But, even if the object is frozen, we can bind the property with it indirectly by using WeakMap.</div><div class="">As a result, if the site objects are referenced by the realm weakly, users can observe it by using WeakMap.</div><div class=""><br class=""></div><div class="">To avoid this situation, we need to specially handle template site objects in WeakMap; WeakMap refers template site objects strongly (if we choose the weak reference implementation for realm.[[templateMap]]).</div><div class="">But this may complicate the implementation and it may prevent implementing WeakMap as per-object table (it can be done, but it is no longer simple private symbols).</div><div class=""><br class=""></div><div class="">Is it intentional semantics? I'd like to hear about this.</div><div class="">(And please point it if I misunderstood)</div><div class=""><br class=""></div><div class="">Best Regards,</div><div class="">Yusuke Suzuki</div></div>
<br class="">_______________________________________________<br class="">
es-discuss mailing list<br class="">
<a href="mailto:es-discuss@mozilla.org" class="">es-discuss@mozilla.org</a><br class="">
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank" class="">https://mail.mozilla.org/listinfo/es-discuss</a><br class="">
<br class=""></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature">    Cheers,<br class="">    --MarkM</div>
</div>
_______________________________________________<br class="">es-discuss mailing list<br class=""><a href="mailto:es-discuss@mozilla.org" class="">es-discuss@mozilla.org</a><br class="">https://mail.mozilla.org/listinfo/es-discuss<br class=""></div></blockquote></div><br class=""></div></div></body></html>