Mercurial > hg > release > icedtea6-1.4.1
changeset 350:914992a3ebba
2007-11-13 Gary Benson <gbenson@redhat.com>
* ports/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.cpp
(SlowSignatureHandler::pass_int): Implemented.
(SlowSignatureHandler::pass_object): Likewise.
author | Gary Benson <gbenson@redhat.com> |
---|---|
date | Tue, 13 Nov 2007 10:20:57 -0500 |
parents | 55e5e7e59cb7 |
children | 9cbaee9e9b57 |
files | ChangeLog ports/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.cpp |
diffstat | 2 files changed, 33 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue Nov 13 06:50:47 2007 -0500 +++ b/ChangeLog Tue Nov 13 10:20:57 2007 -0500 @@ -1,3 +1,9 @@ +2007-11-13 Gary Benson <gbenson@redhat.com> + + * ports/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.cpp + (SlowSignatureHandler::pass_int): Implemented. + (SlowSignatureHandler::pass_object): Likewise. + 2007-11-13 Gary Benson <gbenson@redhat.com> * ports/hotspot/src/cpu/ppc/vm/cppInterpreter_ppc.cpp
--- a/ports/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.cpp Tue Nov 13 06:50:47 2007 -0500 +++ b/ports/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.cpp Tue Nov 13 10:20:57 2007 -0500 @@ -246,7 +246,18 @@ void InterpreterRuntime::SlowSignatureHandler::pass_int() { - Unimplemented(); + jint src = *(jint *) + (_from + Interpreter::local_offset_in_bytes(offset())); + + if (_gp_regs <= _gp_reg_max) { + *(jint *)(_gp_regs++) = src; +#ifdef PPC64 + _st_args++; +#endif + } + else { + *(jint *)(_st_args++) = src; + } } void InterpreterRuntime::SlowSignatureHandler::pass_long() @@ -293,7 +304,21 @@ void InterpreterRuntime::SlowSignatureHandler::pass_object() { - Unimplemented(); + intptr_t *src = (intptr_t *) + (_from + Interpreter::local_offset_in_bytes(offset())); + + if (*src == 0) + src = NULL; + + if (_gp_regs <= _gp_reg_max) { + *(intptr_t **)(_gp_regs++) = src; +#ifdef PPC64 + _st_args++; +#endif + } + else { + *(intptr_t **)(_st_args++) = src; + } } IRT_ENTRY(address,