--- old/src/cpu/zero/vm/cppInterpreter_zero.cpp 2016-04-25 10:30:39.970285155 +0200 +++ new/src/cpu/zero/vm/cppInterpreter_zero.cpp 2016-04-25 10:30:39.903286046 +0200 @@ -220,9 +220,16 @@ // 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); }