[Vm-dev] Integer overflow with BitBlt rule 20 and depth 32

Juan Vuletich juan at jvuletich.org
Fri Oct 30 13:13:42 UTC 2009


David T. Lewis wrote:
>  
> On Sat, Oct 24, 2009 at 10:40:17AM -0300, Juan Vuletich wrote:
>   
>> What worries me a bit is the other changes I needed to do to be able to 
>> run the Smalltalk BitBlt simulation and to do the translation. These are:
>> BitBltSimulator >> #oopForPointer:   "May be harmless"
>> CArrayAccessor >> #long32At:         "Why is this needed?"
>> CArrayAccessor >> #long32At:put:      "Why is this needed?"
>> CCodeGenerator >> #emitCConstantsOn:  "Consequence of recent changes to 
>> Dictionary >> #keys. Most likely harmless. May be other senders aroud! 
>> (yes, in the very same method there is another sender that would be 
>> optimized by #asSet!"
>>
>> I've not been following the development of VMMaker closely enough to 
>> advise on them, so please everybody, check and comment on them.
>>     
>
> Juan,
>
> I think I finally figured out why the #oopForPointer: and #long32At: and
> #long32At:put: are needed.
>
> I went back to look at Squeak 3.7 and Squeak 3.8 images with VMMaker as
> distributed in those images. The #testAlphaCompositingSimulated and
> #testAlphaCompositing2Simulated tests both pass in those older images.
>
> I then looked at a Squeak 3.8 with the latest VMMaker installed, and
> these two tests fail. The difference is that when the original 64-bit
> VM work was done in 2004, the #oopForPointer and #long32At: and
> #long32At:put: calls were added, but not implemented in BitBltSimulator
> and CArrayAccessor.  This was probably just an oversight, and the problem
> has not been noticed until you spotted it now.
>
> Therefore I think that your added #oopForPointer and #long32At: and
> #long32At:put: methods are correct, and that they do need to be added
> to VMMaker.
>
> Dave

Hi Dave,

Great! Thank you!

Cheers,
Juan Vuletich


More information about the Vm-dev mailing list