8154210: Zero: Better byte behaviour

Complete support for 8132051 on Zero and fix failure on 64-bit big-endian systems

Reviewed-by: andrew, chrisphi, coleenp
This commit is contained in:
Andrew Haley 2016-04-22 14:30:58 +02:00
parent f9426642c6
commit 651e264d3c
2 changed files with 12 additions and 4 deletions

View file

@ -221,9 +221,16 @@ void CppInterpreter::main_loop(int recurse, TRAPS) {
// Push our result
for (int i = 0; i < result_slots; i++) {
// Adjust result to smaller
intptr_t res = result[-i];
union {
intptr_t res;
jint res_jint;
};
res = result[-i];
if (result_slots == 1) {
res = narrow(method->result_type(), res);
BasicType t = method->result_type();
if (is_subword_type(t)) {
res_jint = (jint)narrow(t, res_jint);
}
}
stack->push(res);
}