[squeak-dev] New Cog VMs available

Douglas McPherson djm1329 at san.rr.com
Mon Dec 8 17:54:28 UTC 2014


ARMv7 binaries also updated. (These are compiled without fast BitBlt optimizations as they are still broken for ARMv7).

On Dec 7, 2014, at 19:09 , Douglas McPherson wrote:

> ARMv6 binaries updated accordingly.
> 
> On Dec 6, 2014, at 19:17 , Eliot Miranda wrote:
> 
>> Oops, for http://www.mirandabanda.org/files/Cog/VM/VM.r3163/ read http://www.mirandabanda.org/files/Cog/VM/VM.r3164
>> 
>> On Sat, Dec 6, 2014 at 1:53 PM, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>> ... at http://www.mirandabanda.org/files/Cog/VM/VM.r3163/.
>> 
>> CogVM binaries as per VMMaker.oscog-eem.972/r3163
>> 
>> Fix a devilishly tricky bug with 32-bit Spur and PICs in the Cogit.  In 32-bit
>> Spur only zero is a valid cache tag, that for Characters, due to SmallIntegers
>> having both 2r11 and 2r01 as valid tags.  The cache check prolog collapses
>> these down onto 1 by anding with 1 and hence collapses Character's 2r10 to 0.
>> 
>> The cache tag is also tested in the PIC abort routine to distinguish between
>> an MNU abort and an interpret abort.  A PIC MNU entry jumps to code that first
>> zeros the cache tag (held in ClassReg) before calling the abort routine, which
>> tests ClassReg and selects the relevant abort processing.
>> 
>> Hence in 32-bit Spur if a send site is linked for Character and later extended
>> to a PIC with an interpret case, that interpret case will instead invoke MNU
>> processing.  This is rare; first there needs to be a send to a CHaracter, then
>> a send to something else which binds to something that must be interpreted.
>> Ouch.
>> 
>> The fix is simple; if a send site that was linked with a zero cache tag (which
>> can only happen in 32-bit Spur) link to an open PIC instead of to a closed PIC,
>> or in the case of an MNU do not link.
>> 
>> Add a debug lookup routine that only looks up (and follows forwarding pointers).
>> 
>> Add a -breakmnu vm argument that calls warning on an mnu of a specific selector.
>> 
>> Fix SmartSyntaxPlugin code generation for Spur of
>> 
>> - asOop: old code assumed 4 byte oops & headers
>> - Unsigned old code assumed 32-bit oops
>> 
>> 
>> Affects AsyncFilePlugin, BochsIA32Plugin & FT2Plgin.
>> 
>> Avoid duplication of effort in special selector send forwarding fault handling.
>> 
>> Improve stack trace printing for Newspeak and Glue by providing something that
>> assumes the penultimate literal is the selector or an AdditionalMethodState-like
>> thing containing it.
>> 
>> Reimplement primitiveCopyObject to work for both pointer and bits objects.
>> This to support a good Object>>clone for Spur.
>> 
>> Fix Spur's isWordsOrBytes[NonImm]:.  Old code answered true for CompiledMethods.
>> -- 
>> best,
>> Eliot
>> 
>> 
>> 
>> -- 
>> best,
>> Eliot
>> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20141208/25cff2b8/attachment.htm


More information about the Squeak-dev mailing list