< prev index next >
src/cpu/sparc/vm/interpreterRT_sparc.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 1998, 2012, 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
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 1998, 2017, 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
* published by the Free Software Foundation.
*** 51,101 ****
void InterpreterRuntime::SignatureHandlerGenerator::pass_long() {
Argument jni_arg(jni_offset(), false);
Register Rtmp = O0;
- #ifdef _LP64
__ ldx(Llocals, Interpreter::local_offset_in_bytes(offset() + 1), Rtmp);
__ store_long_argument(Rtmp, jni_arg);
- #else
- __ ld(Llocals, Interpreter::local_offset_in_bytes(offset() + 1), Rtmp);
- __ store_argument(Rtmp, jni_arg);
- __ ld(Llocals, Interpreter::local_offset_in_bytes(offset() + 0), Rtmp);
- Argument successor(jni_arg.successor());
- __ store_argument(Rtmp, successor);
- #endif
}
void InterpreterRuntime::SignatureHandlerGenerator::pass_float() {
Argument jni_arg(jni_offset(), false);
- #ifdef _LP64
FloatRegister Rtmp = F0;
__ ldf(FloatRegisterImpl::S, Llocals, Interpreter::local_offset_in_bytes(offset()), Rtmp);
__ store_float_argument(Rtmp, jni_arg);
- #else
- Register Rtmp = O0;
- __ ld(Llocals, Interpreter::local_offset_in_bytes(offset()), Rtmp);
- __ store_argument(Rtmp, jni_arg);
- #endif
}
void InterpreterRuntime::SignatureHandlerGenerator::pass_double() {
Argument jni_arg(jni_offset(), false);
- #ifdef _LP64
FloatRegister Rtmp = F0;
__ ldf(FloatRegisterImpl::D, Llocals, Interpreter::local_offset_in_bytes(offset() + 1), Rtmp);
__ store_double_argument(Rtmp, jni_arg);
- #else
- Register Rtmp = O0;
- __ ld(Llocals, Interpreter::local_offset_in_bytes(offset() + 1), Rtmp);
- __ store_argument(Rtmp, jni_arg);
- __ ld(Llocals, Interpreter::local_offset_in_bytes(offset()), Rtmp);
- Argument successor(jni_arg.successor());
- __ store_argument(Rtmp, successor);
- #endif
}
void InterpreterRuntime::SignatureHandlerGenerator::pass_object() {
Argument jni_arg(jni_offset(), false);
Argument java_arg( offset(), true);
--- 51,78 ----
*** 169,179 ****
*_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr;
_from -= Interpreter::stackElementSize;
add_signature( non_float );
}
- #ifdef _LP64
virtual void pass_float() {
*_to++ = *(jint *)(_from+Interpreter::local_offset_in_bytes(0));
_from -= Interpreter::stackElementSize;
add_signature( float_sig );
}
--- 146,155 ----
*** 188,214 ****
_to[0] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1));
_to += 1;
_from -= 2*Interpreter::stackElementSize;
add_signature( long_sig );
}
- #else
- // pass_double() is pass_long() and pass_float() only _LP64
- virtual void pass_long() {
- _to[0] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1));
- _to[1] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(0));
- _to += 2;
- _from -= 2*Interpreter::stackElementSize;
- add_signature( non_float );
- }
-
- virtual void pass_float() {
- *_to++ = *(jint *)(_from+Interpreter::local_offset_in_bytes(0));
- _from -= Interpreter::stackElementSize;
- add_signature( non_float );
- }
-
- #endif // _LP64
virtual void add_signature( intptr_t sig_type ) {
if ( _argcount < (sizeof (intptr_t))*4 ) {
*_RegArgSignature |= (sig_type << (_argcount*2) );
_argcount++;
--- 164,173 ----
< prev index next >