[Vm-dev] urgent info required on Slang's shift treatment...

Igor Stasenko siguctua at gmail.com
Tue Mar 3 20:09:33 UTC 2009

2009/3/3 Eliot Miranda <eliot.miranda at gmail.com>:
> Hi All,
>     I'm being bitten by Slang's treatment of bitShift: & >>.  In both cases (generateBitShift:on:indent: & generateShiftRight:on:indent:) Slang generates an unsigned shift by explicitly casting the shifted expression to usqInt.  I can understand the benefit of having an unsigned shift.  But there are times when one really needs a signed shift.  Further, the Smalltalk versions of both bitShift: and >> are signed shifts.
> Dare I change e.g. generateShiftRight:on:indent: to leave the expression alone and generate either a signed or an unsigned shift based on the variable's declaration?  Or must I live with a maddening cCode: '(signed)' inSmalltalk: [] carbuncle?
> E.

I think an easier way would be to add:

#<<+	#generateSignedShiftLeft:on:indent:
#>>+	#generateSignedShiftRight:on:indent:

in #initializeCTranslationDictionary
so you can use:

a <<+ b
a >>+ b

without writing horrible cCode:

Best regards,
Igor Stasenko AKA sig.

More information about the Vm-dev mailing list