< prev index next >

src/cpu/aarch64/vm/interpreterRT_aarch64.cpp

Print this page
rev 6466 : 8165673: AArch64: Fix JNI floating point argument handling
Reviewed-by: aph, adinn
Contributed-by: ningsheng.jian@linaro.org

*** 1,8 **** /* * Copyright (c) 2013, Red Hat Inc. ! * Copyright (c) 2003, 2010, Oracle and/or its affiliates. * All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as --- 1,8 ---- /* * Copyright (c) 2013, Red Hat Inc. ! * Copyright (c) 2003, 2016, Oracle and/or its affiliates. * All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as
*** 129,140 **** const Address src(from(), Interpreter::local_offset_in_bytes(offset())); if (_num_fp_args < Argument::n_float_register_parameters_c) { __ ldrs(as_FloatRegister(_num_fp_args++), src); } else { ! __ ldrh(r0, src); ! __ strh(r0, Address(to(), _stack_offset)); _stack_offset += wordSize; _num_fp_args++; } } --- 129,140 ---- const Address src(from(), Interpreter::local_offset_in_bytes(offset())); if (_num_fp_args < Argument::n_float_register_parameters_c) { __ ldrs(as_FloatRegister(_num_fp_args++), src); } else { ! __ ldrw(r0, src); ! __ strw(r0, Address(to(), _stack_offset)); _stack_offset += wordSize; _num_fp_args++; } }
*** 348,358 **** if (_num_fp_args < Argument::n_float_register_parameters_c) { *_fp_args++ = from_obj; _num_fp_args++; } else { *_to++ = from_obj; ! _num_int_args++; } } virtual void pass_double() { --- 348,358 ---- if (_num_fp_args < Argument::n_float_register_parameters_c) { *_fp_args++ = from_obj; _num_fp_args++; } else { *_to++ = from_obj; ! _num_fp_args++; } } virtual void pass_double() {
*** 363,373 **** *_fp_args++ = from_obj; *_fp_identifiers |= (1 << _num_fp_args); // mark as double _num_fp_args++; } else { *_to++ = from_obj; ! _num_int_args++; } } public: SlowSignatureHandler(methodHandle method, address from, intptr_t* to) --- 363,373 ---- *_fp_args++ = from_obj; *_fp_identifiers |= (1 << _num_fp_args); // mark as double _num_fp_args++; } else { *_to++ = from_obj; ! _num_fp_args++; } } public: SlowSignatureHandler(methodHandle method, address from, intptr_t* to)
< prev index next >