Request For Review (XS), 7077806, ARM: java.lang.InternalError: bound subword value does not fit into the subword type
bertrand.delsart at oracle.com
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
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 oracle.com,
Sun-Oracle France, 180 av. de l'Europe, ZIRST de Montbonnot,
38334 Saint Ismier, FRANCE
More information about the hotspot-compiler-dev