changeset in /hg/icedtea6: 2008-11-06 Gary Benson <gbenson at red...

Gary Benson gbenson at redhat.com
Thu Nov 6 04:00:24 PST 2008


changeset 2edccb28b389 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2edccb28b389
description:
	2008-11-06  Gary Benson  <gbenson at redhat.com>

		* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
		(CppInterpreter::native_entry): Unwind correctly if an
		exception is thrown while setting up the call.

diffstat:

2 files changed, 13 insertions(+), 12 deletions(-)
ChangeLog                                             |    6 +++++
ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp |   19 ++++++-----------

diffs (55 lines):

diff -r a261142d4db9 -r 2edccb28b389 ChangeLog
--- a/ChangeLog	Thu Nov 06 06:53:14 2008 -0500
+++ b/ChangeLog	Thu Nov 06 07:00:19 2008 -0500
@@ -1,3 +1,9 @@ 2008-11-06  Gary Benson  <gbenson at redhat
+2008-11-06  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+	(CppInterpreter::native_entry): Unwind correctly if an
+	exception is thrown while setting up the call.
+
 2008-11-06  Gary Benson  <gbenson at redhat.com>
 
 	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
diff -r a261142d4db9 -r 2edccb28b389 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
--- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Thu Nov 06 06:53:14 2008 -0500
+++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Thu Nov 06 07:00:19 2008 -0500
@@ -206,10 +206,8 @@ void CppInterpreter::native_entry(method
       }
       else {
         CALL_VM_NOCHECK(InterpreterRuntime::monitorenter(thread, monitor));
-        if (HAS_PENDING_EXCEPTION) {
-          thread->pop_zero_frame();
-          return;
-        }
+        if (HAS_PENDING_EXCEPTION)
+          goto unwind_and_return;
       }
     }
   }
@@ -220,20 +218,17 @@ void CppInterpreter::native_entry(method
     address handlerAddr = method->signature_handler();
     if (handlerAddr == NULL) {
       CALL_VM_NOCHECK(InterpreterRuntime::prepare_native_call(thread, method));
-      if (HAS_PENDING_EXCEPTION) {
-        thread->pop_zero_frame();
-        return;
-      }
+      if (HAS_PENDING_EXCEPTION)
+        goto unwind_and_return;
+
       handlerAddr = method->signature_handler();
       assert(handlerAddr != NULL, "eh?");
     }
     if (handlerAddr == (address) InterpreterRuntime::slow_signature_handler) {
       CALL_VM_NOCHECK(handlerAddr =
         InterpreterRuntime::slow_signature_handler(thread, method, NULL,NULL));
-      if (HAS_PENDING_EXCEPTION) {
-        thread->pop_zero_frame();
-        return;
-      }
+      if (HAS_PENDING_EXCEPTION)
+        goto unwind_and_return;
     }
     handler = \
       InterpreterRuntime::SignatureHandler::from_handlerAddr(handlerAddr);



More information about the distro-pkg-dev mailing list