hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
changeset 4761 bdb7375a1fee
parent 4571 80b553bddc26
child 5419 f2e8cc8c12ea
equal deleted inserted replaced
4744:40fc0ab5cd15 4761:bdb7375a1fee
     1 /*
     1 /*
     2  * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
     2  * Copyright 1997-2010 Sun Microsystems, Inc.  All Rights Reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   395     }
   395     }
   396   } while (should_repeat == true);
   396   } while (should_repeat == true);
   397 
   397 
   398   // notify JVMTI of an exception throw; JVMTI will detect if this is a first
   398   // notify JVMTI of an exception throw; JVMTI will detect if this is a first
   399   // time throw or a stack unwinding throw and accordingly notify the debugger
   399   // time throw or a stack unwinding throw and accordingly notify the debugger
   400   if (JvmtiExport::can_post_exceptions()) {
   400   if (JvmtiExport::can_post_on_exceptions()) {
   401     JvmtiExport::post_exception_throw(thread, h_method(), bcp(thread), h_exception());
   401     JvmtiExport::post_exception_throw(thread, h_method(), bcp(thread), h_exception());
   402   }
   402   }
   403 
   403 
   404 #ifdef CC_INTERP
   404 #ifdef CC_INTERP
   405   address continuation = (address)(intptr_t) handler_bci;
   405   address continuation = (address)(intptr_t) handler_bci;
   424     continuation = Interpreter::dispatch_table(vtos)[*handler_pc];
   424     continuation = Interpreter::dispatch_table(vtos)[*handler_pc];
   425 #endif
   425 #endif
   426   }
   426   }
   427   // notify debugger of an exception catch
   427   // notify debugger of an exception catch
   428   // (this is good for exceptions caught in native methods as well)
   428   // (this is good for exceptions caught in native methods as well)
   429   if (JvmtiExport::can_post_exceptions()) {
   429   if (JvmtiExport::can_post_on_exceptions()) {
   430     JvmtiExport::notice_unwind_due_to_exception(thread, h_method(), handler_pc, h_exception(), (handler_pc != NULL));
   430     JvmtiExport::notice_unwind_due_to_exception(thread, h_method(), handler_pc, h_exception(), (handler_pc != NULL));
   431   }
   431   }
   432 
   432 
   433   thread->set_vm_result(h_exception());
   433   thread->set_vm_result(h_exception());
   434   return continuation;
   434   return continuation;