Request For Review (XS), 7077806, ARM: java.lang.InternalError: bound subword value does not fit into the subword type

Bertrand Delsart bertrand.delsart at
Wed Sep 14 04:13:35 PDT 2011

Small shared fix for a bug in JSR292 ports:

Error comes form the fact that shifting by values higher than the number 
of bits is undefined in standard C and C++:
"The integer promotions are performed on each of the operands. The type 
of the result is that of the promoted left operand. If the value of the 
right operand is negative or is greater than or equal to the width of 
the promoted left operand, the behavior is undefined."

On SPARC and x86, the high bits were ignored and the code was behaving 
as expected.

On ARM, this is not the case. The shifts were actually resulting in 0.

Ensuring that the shift is a legal C value solves the problem.


Bertrand Delsart,               bertrand.delsart at,
Sun-Oracle France, 180 av. de l'Europe, ZIRST de Montbonnot,
38334 Saint Ismier,                                  FRANCE

More information about the hotspot-compiler-dev mailing list