1.1 --- a/src/cpu/sparc/vm/runtime_sparc.cpp Mon May 24 14:15:14 2010 -0700 1.2 +++ b/src/cpu/sparc/vm/runtime_sparc.cpp Tue May 25 02:38:48 2010 -0700 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. 1.6 + * Copyright 1998-2010 Sun Microsystems, Inc. All Rights Reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -116,6 +116,11 @@ 1.11 __ mov(O0, G3_scratch); // Move handler address to temp 1.12 __ restore(); 1.13 1.14 + // Restore SP from L7 if the exception PC is a MethodHandle call site. 1.15 + __ lduw(Address(G2_thread, JavaThread::is_method_handle_return_offset()), O7); 1.16 + __ tst(O7); 1.17 + __ movcc(Assembler::notZero, false, Assembler::icc, L7_mh_SP_save, SP); 1.18 + 1.19 // G3_scratch contains handler address 1.20 // Since this may be the deopt blob we must set O7 to look like we returned 1.21 // from the original pc that threw the exception