Merge

Tue, 05 Jan 2010 11:16:09 -0800

author
never
date
Tue, 05 Jan 2010 11:16:09 -0800
changeset 1575
1f6d42899c3a
parent 1573
dd57230ba8fe
parent 1574
b6f06e395428
child 1576
b1f619d38249
child 1577
4ce7240d622c

Merge

     1.1 --- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Jan 05 15:21:25 2010 +0100
     1.2 +++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Jan 05 11:16:09 2010 -0800
     1.3 @@ -245,7 +245,7 @@
     1.4      if (handlerAddr == NULL) {
     1.5        CALL_VM_NOCHECK(InterpreterRuntime::prepare_native_call(thread, method));
     1.6        if (HAS_PENDING_EXCEPTION)
     1.7 -        goto unwind_and_return;
     1.8 +        goto unlock_unwind_and_return;
     1.9  
    1.10        handlerAddr = method->signature_handler();
    1.11        assert(handlerAddr != NULL, "eh?");
    1.12 @@ -254,7 +254,7 @@
    1.13        CALL_VM_NOCHECK(handlerAddr =
    1.14          InterpreterRuntime::slow_signature_handler(thread, method, NULL,NULL));
    1.15        if (HAS_PENDING_EXCEPTION)
    1.16 -        goto unwind_and_return;
    1.17 +        goto unlock_unwind_and_return;
    1.18      }
    1.19      handler = \
    1.20        InterpreterRuntime::SignatureHandler::from_handlerAddr(handlerAddr);
    1.21 @@ -365,10 +365,10 @@
    1.22    // Reset handle block
    1.23    thread->active_handles()->clear();
    1.24  
    1.25 -  // Unlock if necessary.  It seems totally wrong that this
    1.26 -  // is skipped in the event of an exception but apparently
    1.27 -  // the template interpreter does this so we do too.
    1.28 -  if (monitor && !HAS_PENDING_EXCEPTION) {
    1.29 + unlock_unwind_and_return:
    1.30 +
    1.31 +  // Unlock if necessary
    1.32 +  if (monitor) {
    1.33      BasicLock *lock = monitor->lock();
    1.34      markOop header = lock->displaced_header();
    1.35      oop rcvr = monitor->obj();

mercurial