changeset in /hg/icedtea: 2007-11-13 Gary Benson <gbenson at redh...

Gary Benson gbenson at redhat.com
Tue Nov 13 07:21:02 PST 2007


changeset 914992a3ebba in /hg/icedtea
details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=914992a3ebba
description:
	2007-11-13  Gary Benson  <gbenson at redhat.com>

		* ports/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.cpp
		(SlowSignatureHandler::pass_int): Implemented.
		(SlowSignatureHandler::pass_object): Likewise.

diffstat:

2 files changed, 33 insertions(+), 2 deletions(-)
ChangeLog                                          |    6 ++++
ports/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.cpp |   29 ++++++++++++++++++--

diffs (59 lines):

diff -r 55e5e7e59cb7 -r 914992a3ebba ChangeLog
--- 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 at redhat
+2007-11-13  Gary Benson  <gbenson at 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 at redhat.com>
 
 	* ports/hotspot/src/cpu/ppc/vm/cppInterpreter_ppc.cpp
diff -r 55e5e7e59cb7 -r 914992a3ebba ports/hotspot/src/cpu/ppc/vm/interpreterRT_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::SignatureHandle
 
 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::SlowSignatureHa
 
 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,



More information about the distro-pkg-dev mailing list