<div dir="ltr">Hi Eliot,<div><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 18, 2018 at 5:28 PM Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi All,<div><br></div><div>    it is my understanding that the R/Squeak VM implementation uses plugin simulator subclasses along with the InterpreterProxy infrastructure (implementation of the InterpreterProxy interface between plugins and the VM, which is implemented using normal Smalltalk code for plugin testing) to implement primitives above the R/Squeak VM.  Meanwhile the simulator subclasses of plugins, for example the BitBltSimulator subclass of BitBltSimulation (which would better be called BitBltPlugin) provide overrides to host plugins within the simulation framework, to add debugging facilities, etc.  These two uses can conflict.</div><div><br></div><div>In debugging a bug whereby BitBlt fetches beyond the last work of a source bitmap I want to collect the hashes of the destination bitmap after each copyBits operation in a test that succeeds with the old code (but fetches beyond the end of the source).  I then want to compare the destination hashes after each bitable in the version of the code I'm trying to fix (since I have setup code that makes sense to me but fails for occasional bits).  The natural way for me to do this is to add a couple of variables to BitBltSimulator, copyBitsCount and destinationHashes and write</div><div><br></div><div>copyBits</div><div>    super copyBits.</div><div>    (interpreterProxy failed</div><div>     or: [destinationHashes isNil]) ifFalse:</div><div>        [(copyBitsCount := copyBitsCount + 1) <= destinationHashes size</div><div>            ifTrue:</div><div>                [(destinationHashes at: copyBitsCount) ~= self destinationHash ifTrue:</div><div>                    [self halt: 'destination different']]</div><div>            ifFalse:</div><div>                [destinationHashes at: copyBitsCount put: self destinationHash]</div><div><br></div><div>then by setting destinationHashes to an empty OrderedCollection I can collect hashes in one version and by setting destinationHashes to that sequence I can identify the bait that is different in the other version.</div><div><br></div><div>But if I add this code I fear I will break R/Squeak.  If that's the case then I ant to ask the R/Squeak team to duplicate all the plugin simulator subclasses, and call them something like BitBltRSqueakImplementation or RSqueakBitBltImplementation etc.  I don't mind if this lives in the VMMaker package or a separate package.  I think a separate package is better but I will keep it loaded anyway to avoid it getting stale.</div><div><br></div><div>If on the other hand I won't step on R/Squeak by making modifications such as the above can someone explain how this works?</div><div><br></div><div>In the mean time I'm going to make my mods and possibly damage R/Squeak.  Forgive me, but I have to be able to do things like the above to debug the system.</div></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div>Just wanted to mention that GraalSqueak is following a similar approach to RSqueak/VM. If we notice any problems after pulling new VMMaker changes, we'll figure something out. :)</div><div>And like Tim said, thanks for the heads up!<br></div><div><br></div><div>Fabio</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><div dir="ltr" class="m_-8852705614388214966gmail_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></div></div></div></div></div></div></div></div>
</blockquote></div></div></div>