< prev index next >

src/hotspot/share/interpreter/interpreterRuntime.hpp

Print this page
rev 49172 : 8197405: Improve messages of AbstractMethodErrors and IncompatibleClassChangeErrors.
Reviewed-by: coleenp, dholmes, mdoerr, njian


 101   // Inner work method for Interpreter's frequency counter overflow.
 102   static nmethod* frequency_counter_overflow_inner(JavaThread* thread, address branch_bcp);
 103 
 104  public:
 105   // Constants
 106   static void    ldc           (JavaThread* thread, bool wide);
 107   static void    resolve_ldc   (JavaThread* thread, Bytecodes::Code bytecode);
 108 
 109   // Allocation
 110   static void    _new          (JavaThread* thread, ConstantPool* pool, int index);
 111   static void    newarray      (JavaThread* thread, BasicType type, jint size);
 112   static void    anewarray     (JavaThread* thread, ConstantPool* pool, int index, jint size);
 113   static void    multianewarray(JavaThread* thread, jint* first_size_address);
 114   static void    register_finalizer(JavaThread* thread, oopDesc* obj);
 115 
 116   // Quicken instance-of and check-cast bytecodes
 117   static void    quicken_io_cc(JavaThread* thread);
 118 
 119   // Exceptions thrown by the interpreter
 120   static void    throw_AbstractMethodError(JavaThread* thread);





 121   static void    throw_IncompatibleClassChangeError(JavaThread* thread);



 122   static void    throw_StackOverflowError(JavaThread* thread);
 123   static void    throw_delayed_StackOverflowError(JavaThread* thread);
 124   static void    throw_ArrayIndexOutOfBoundsException(JavaThread* thread, char* name, jint index);
 125   static void    throw_ClassCastException(JavaThread* thread, oopDesc* obj);
 126   static void    create_exception(JavaThread* thread, char* name, char* message);
 127   static void    create_klass_exception(JavaThread* thread, char* name, oopDesc* obj);
 128   static address exception_handler_for_exception(JavaThread* thread, oopDesc* exception);
 129 #if INCLUDE_JVMTI
 130   static void    member_name_arg_or_null(JavaThread* thread, address dmh, Method* m, address bcp);
 131 #endif
 132   static void    throw_pending_exception(JavaThread* thread);
 133 
 134 #ifdef CC_INTERP
 135   // Profile traps in C++ interpreter.
 136   static void    note_nullCheck_trap (JavaThread* thread, Method *method, int trap_bci);
 137   static void    note_div0Check_trap (JavaThread* thread, Method *method, int trap_bci);
 138   static void    note_rangeCheck_trap(JavaThread* thread, Method *method, int trap_bci);
 139   static void    note_classCheck_trap(JavaThread* thread, Method *method, int trap_bci);
 140   static void    note_arrayCheck_trap(JavaThread* thread, Method *method, int trap_bci);
 141   // A dummy for macros that shall not profile traps.




 101   // Inner work method for Interpreter's frequency counter overflow.
 102   static nmethod* frequency_counter_overflow_inner(JavaThread* thread, address branch_bcp);
 103 
 104  public:
 105   // Constants
 106   static void    ldc           (JavaThread* thread, bool wide);
 107   static void    resolve_ldc   (JavaThread* thread, Bytecodes::Code bytecode);
 108 
 109   // Allocation
 110   static void    _new          (JavaThread* thread, ConstantPool* pool, int index);
 111   static void    newarray      (JavaThread* thread, BasicType type, jint size);
 112   static void    anewarray     (JavaThread* thread, ConstantPool* pool, int index, jint size);
 113   static void    multianewarray(JavaThread* thread, jint* first_size_address);
 114   static void    register_finalizer(JavaThread* thread, oopDesc* obj);
 115 
 116   // Quicken instance-of and check-cast bytecodes
 117   static void    quicken_io_cc(JavaThread* thread);
 118 
 119   // Exceptions thrown by the interpreter
 120   static void    throw_AbstractMethodError(JavaThread* thread);
 121   static void    throw_AbstractMethodErrorWithMethod(JavaThread* thread, Method* oop);
 122   static void    throw_AbstractMethodErrorVerbose(JavaThread* thread,
 123                                                   Klass* recvKlass,
 124                                                   Method* missingMethod);
 125 
 126   static void    throw_IncompatibleClassChangeError(JavaThread* thread);
 127   static void    throw_IncompatibleClassChangeErrorVerbose(JavaThread* thread,
 128                                                            Klass* resc,
 129                                                            Klass* interfaceKlass);
 130   static void    throw_StackOverflowError(JavaThread* thread);
 131   static void    throw_delayed_StackOverflowError(JavaThread* thread);
 132   static void    throw_ArrayIndexOutOfBoundsException(JavaThread* thread, char* name, jint index);
 133   static void    throw_ClassCastException(JavaThread* thread, oopDesc* obj);
 134   static void    create_exception(JavaThread* thread, char* name, char* message);
 135   static void    create_klass_exception(JavaThread* thread, char* name, oopDesc* obj);
 136   static address exception_handler_for_exception(JavaThread* thread, oopDesc* exception);
 137 #if INCLUDE_JVMTI
 138   static void    member_name_arg_or_null(JavaThread* thread, address dmh, Method* m, address bcp);
 139 #endif
 140   static void    throw_pending_exception(JavaThread* thread);
 141 
 142 #ifdef CC_INTERP
 143   // Profile traps in C++ interpreter.
 144   static void    note_nullCheck_trap (JavaThread* thread, Method *method, int trap_bci);
 145   static void    note_div0Check_trap (JavaThread* thread, Method *method, int trap_bci);
 146   static void    note_rangeCheck_trap(JavaThread* thread, Method *method, int trap_bci);
 147   static void    note_classCheck_trap(JavaThread* thread, Method *method, int trap_bci);
 148   static void    note_arrayCheck_trap(JavaThread* thread, Method *method, int trap_bci);
 149   // A dummy for macros that shall not profile traps.


< prev index next >