<div dir="ltr"><span style="font-size:12.8px">Hi,</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Why not. Associations referred from machine code are kept in a list to be updated as post-become action. We never keep the association live in register or anywhere so it should work.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Now I am thinking maybe we should scan all the machine code zone as a post become action to update literals so when #== happens we don't need to check for forwarders for annotable constant operand. In "var1 == 'string'", we would know 'string' is not a forwarder. And for super sends to annotable constant too.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Although all of this is about uncommon cases so I don't know if it really matters...</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 5, 2016 at 5:51 AM, Eliot Miranda <span dir="ltr"><<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br><div dir="ltr">Hi Clément,<div><br></div><div><span class="m_6678692650540675179gmail-Apple-tab-span" style="white-space:pre-wrap">    I just realized that if we maintain a list of machine code methods that reference global variables, in a similar fashion to the list of methods that refer to new literals, then we can scan the list post-become and ensure that all are unforwarded.  hence the code generator can avoid generating the unforwarding code on access.</span></div><div><span style="white-space:pre-wrap"><br></span></div><div><span style="white-space:pre-wrap">We could probably use the same list for both methods with global references and methods with new references.  Since</span> a method is marked as referring to new objects (cmRefersToYoung) we can avoid scanning methods that simply refer to globals when we scavenge.  That we have to visit a few extra methods after become (the cmRefersToYoung methods that don't refer to globals) is unlikely to be a hardship; there are very few methods on the youngReferrers list.</div><div><br></div><div>What do you think?<br><div class="m_6678692650540675179gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>
<br></blockquote></div><br></div>