Request for reviews (S): 6987555: JSR 292 unboxing to a boolean value fails on big-endian SPARC
Tom Rodriguez
tom.rodriguez at oracle.com
Wed Sep 29 09:22:01 PDT 2010
On Sep 29, 2010, at 9:05 AM, John Rose wrote:
> On Sep 29, 2010, at 6:58 AM, Christian Thalinger wrote:
>
>>> But changing the shift for boolean to 24 should also work, since
>>> booleans use 1 byte. I'll try that.
>>
>> What about this one:
>
> That works for unboxi but pushes the bug to value conversion.
>
> The Java runtime assumes that a conversion to boolean performs (x&1). If you change that to (x&0xFF) you could begin to see illegal boolean values like 2.
>
> You can assume that a boxed boolean is already normalized to 0 or 1, so 24 is fine, but a value in a register can be anything.
>
> So for the i2i conversion that creates a boolean, we need to make sure that the assembly code refuses to produce anything other than 0 or 1. That's why the shift value is 31 currently.
Why aren't the values dependent on which operation is being performed then?
tom
>
> -- John
More information about the hotspot-compiler-dev
mailing list