<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 21, 2020 at 12:30 PM Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Hi David,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 21, 2020 at 12:24 PM David T. Lewis <<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
This might also be an opportune time to add primitiveMultipleBytecodeSetsActive<br>
if you are so inclined. It requires trunk users to update their VM before<br>
the image format number can be updated, so it would be convenient if<br>
it could come along with the primitiveAt[Put] changes.<br></blockquote><div><br></div><div>We still have to discuss this.  I'm sorry, been too busy to do so.  I still don't understand the intent here.  The VM already provides a status bit in parameter 65 which says whether the VM supports multiple bytecode sets.  If the intent is to mark an image when multiple bytecode sets have been used then the primitive doesn't appear to me to do what's required.  I'll try and answer in the context of the thread soon, because I agree it's important.  Ideally there would be a pair of flags set somewhere that said if the current image had ever executed a method in either bytecode set.</div></div></div></blockquote><div><br></div><div>All VMs check the image format to see if they can run the image. That's the only check they perform, as far as I know. </div><div><br></div><div>That's why it seems appropriate to use a bit in the image format to mean "no, you can't run this if your VM does not understand the new byte code  set".</div><div><br></div><div>Otherwise e.g. SqueakJS or other Spur-compatible VMs would have to look at every single CompiledMethod to see if the alt byte code flag was set.</div><div><br></div><div>Btw, Squeak is not going to mix bytecode sets - it's going to recompile all methods, so when snapshotting, they all use one or the other. In that scenario, a simple primitive call like David's should work, if it's done right after recompiling all.</div><div><br></div><div>- Vanessa -</div><div><br></div></div></div>