equal
deleted
inserted
replaced
1172 transition(itos, vtos); |
1172 transition(itos, vtos); |
1173 |
1173 |
1174 __ pop_i(Z_ARG3); |
1174 __ pop_i(Z_ARG3); |
1175 __ pop_ptr(Z_tmp_2); |
1175 __ pop_ptr(Z_tmp_2); |
1176 // Z_tos : value |
1176 // Z_tos : value |
1177 // Z_ARG3 : index |
1177 // Z_ARG3 : index |
1178 // Z_tmp_2 : array |
1178 // Z_tmp_2 : array |
|
1179 |
|
1180 // Need to check whether array is boolean or byte |
|
1181 // since both types share the bastore bytecode. |
|
1182 __ load_klass(Z_tmp_1, Z_tmp_2); |
|
1183 __ z_llgf(Z_tmp_1, Address(Z_tmp_1, Klass::layout_helper_offset())); |
|
1184 __ z_tmll(Z_tmp_1, Klass::layout_helper_boolean_diffbit()); |
|
1185 Label L_skip; |
|
1186 __ z_bfalse(L_skip); |
|
1187 // if it is a T_BOOLEAN array, mask the stored value to 0/1 |
|
1188 __ z_nilf(Z_tos, 0x1); |
|
1189 __ bind(L_skip); |
|
1190 |
1179 // No index shift necessary - pass 0. |
1191 // No index shift necessary - pass 0. |
1180 index_check(Z_tmp_2, Z_ARG3, 0); // Prefer index in Z_ARG3. |
1192 index_check(Z_tmp_2, Z_ARG3, 0); // Prefer index in Z_ARG3. |
1181 __ z_stc(Z_tos, |
1193 __ z_stc(Z_tos, |
1182 Address(Z_tmp_2, Z_ARG3, arrayOopDesc::base_offset_in_bytes(T_BYTE))); |
1194 Address(Z_tmp_2, Z_ARG3, arrayOopDesc::base_offset_in_bytes(T_BYTE))); |
1183 } |
1195 } |
2319 __ z_bfalse(skip_register_finalizer); |
2331 __ z_bfalse(skip_register_finalizer); |
2320 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::register_finalizer), Rthis); |
2332 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::register_finalizer), Rthis); |
2321 __ bind(skip_register_finalizer); |
2333 __ bind(skip_register_finalizer); |
2322 } |
2334 } |
2323 |
2335 |
|
2336 if (state == itos) { |
|
2337 // Narrow result if state is itos but result type is smaller. |
|
2338 // Need to narrow in the return bytecode rather than in generate_return_entry |
|
2339 // since compiled code callers expect the result to already be narrowed. |
|
2340 __ narrow(Z_tos, Z_tmp_1); /* fall through */ |
|
2341 } |
|
2342 |
2324 __ remove_activation(state, Z_R14); |
2343 __ remove_activation(state, Z_R14); |
2325 __ z_br(Z_R14); |
2344 __ z_br(Z_R14); |
2326 } |
2345 } |
2327 |
2346 |
2328 // ---------------------------------------------------------------------------- |
2347 // ---------------------------------------------------------------------------- |