equal
deleted
inserted
replaced
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; |