Mercurial > hg > shark > hotspot
changeset 2429:e9914a039a7f
New method for throwing exceptions
author | Gary Benson <gbenson@redhat.com> |
---|---|
date | Fri, 25 Mar 2011 16:02:37 +0000 |
parents | 30a40e6718c1 |
children | 4c72a3c6b2a1 |
files | src/cpu/zero/vm/cppInterpreter_zero.cpp src/cpu/zero/vm/cppInterpreter_zero.hpp src/share/vm/interpreter/interpreterRuntime.cpp src/share/vm/interpreter/interpreterRuntime.hpp |
diffstat | 4 files changed, 9 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Mar 25 15:20:44 2011 +0000 +++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Mar 25 16:02:37 2011 +0000 @@ -850,7 +850,8 @@ unwind_argument_slots(method_handle, THREAD); CALL_VM_NOCHECK_NOFIX( - InterpreterRuntime::throw_ClassCastException_msg(thread, message)); + throw_exception( + thread, vmSymbols::java_lang_ClassCastException(), message)); // NB all oops trashed! assert(HAS_PENDING_EXCEPTION, "should do"); return; @@ -1064,6 +1065,12 @@ stack->set_sp(stack->sp() + argument_slots); } +IRT_ENTRY(void, CppInterpreter::throw_exception(JavaThread* thread, + Symbol* name, + char* message)) + THROW_MSG(name, message); +IRT_END + InterpreterFrame *InterpreterFrame::build(const methodOop method, TRAPS) { JavaThread *thread = (JavaThread *) THREAD; ZeroStack *stack = thread->zero_stack();
--- a/src/cpu/zero/vm/cppInterpreter_zero.hpp Fri Mar 25 15:20:44 2011 +0000 +++ b/src/cpu/zero/vm/cppInterpreter_zero.hpp Fri Mar 25 16:02:37 2011 +0000 @@ -49,6 +49,7 @@ static void remove_vmslots(int first_slot, int num_slots, TRAPS); static BasicType result_type_of_handle(oop method_handle); static void unwind_argument_slots(oop method_handle, TRAPS); + static void throw_exception(JavaThread* thread, Symbol* name,char *msg=NULL); private: // Fast result type determination
--- a/src/share/vm/interpreter/interpreterRuntime.cpp Fri Mar 25 15:20:44 2011 +0000 +++ b/src/share/vm/interpreter/interpreterRuntime.cpp Fri Mar 25 16:02:37 2011 +0000 @@ -356,17 +356,6 @@ THROW_MSG(vmSymbols::java_lang_ClassCastException(), message); IRT_END -IRT_ENTRY(void, InterpreterRuntime::throw_ClassCastException_msg( - JavaThread* thread, char* message)) - - if (ProfileTraps) { - note_trap(thread, Deoptimization::Reason_class_check, CHECK); - } - - // create exception - THROW_MSG(vmSymbols::java_lang_ClassCastException(), message); -IRT_END - // required can be either a MethodType, or a Class (for a single argument) // actual (if not null) can be either a MethodHandle, or an arbitrary value (for a single argument) IRT_ENTRY(void, InterpreterRuntime::throw_WrongMethodTypeException(JavaThread* thread,
--- a/src/share/vm/interpreter/interpreterRuntime.hpp Fri Mar 25 15:20:44 2011 +0000 +++ b/src/share/vm/interpreter/interpreterRuntime.hpp Fri Mar 25 16:02:37 2011 +0000 @@ -98,7 +98,6 @@ static void throw_StackOverflowError(JavaThread* thread); static void throw_ArrayIndexOutOfBoundsException(JavaThread* thread, char* name, jint index); static void throw_ClassCastException(JavaThread* thread, oopDesc* obj); - static void throw_ClassCastException_msg(JavaThread* thread, char* message); static void throw_WrongMethodTypeException(JavaThread* thread, oopDesc* mtype = NULL, oopDesc* mhandle = NULL); static void create_exception(JavaThread* thread, char* name, char* message); static void create_klass_exception(JavaThread* thread, char* name, oopDesc* obj);