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);