src/share/vm/interpreter/interpreterRuntime.hpp
Print this page
rev 5190 : 8024468: PPC64 (part 201): cppInterpreter: implement bytecode profiling
Summary: Implement profiling for c2 jit compilation. Also enable new cppInterpreter features.
@@ -64,13 +64,19 @@
{ return bytecode(thread).get_index_u4(bc); }
static int number_of_dimensions(JavaThread *thread) { return bcp(thread)[3]; }
static ConstantPoolCacheEntry* cache_entry_at(JavaThread *thread, int i) { return method(thread)->constants()->cache()->entry_at(i); }
static ConstantPoolCacheEntry* cache_entry(JavaThread *thread) { return cache_entry_at(thread, Bytes::get_native_u2(bcp(thread) + 1)); }
+ static void note_trap_inner(JavaThread* thread, int reason,
+ methodHandle trap_method, int trap_bci, TRAPS);
static void note_trap(JavaThread *thread, int reason, TRAPS);
+#ifdef CC_INTERP
+ // Profile traps in C++ interpreter.
+ static void note_trap(JavaThread* thread, int reason, Method *method, int trap_bci);
+#endif // CC_INTERP
- // Inner work method for Interpreter's frequency counter overflow
+ // Inner work method for Interpreter's frequency counter overflow.
static nmethod* frequency_counter_overflow_inner(JavaThread* thread, address branch_bcp);
public:
// Constants
static void ldc (JavaThread* thread, bool wide);
@@ -98,10 +104,21 @@
#if INCLUDE_JVMTI
static void member_name_arg_or_null(JavaThread* thread, address dmh, Method* m, address bcp);
#endif
static void throw_pending_exception(JavaThread* thread);
+#ifdef CC_INTERP
+ // Profile traps in C++ interpreter.
+ static void note_nullCheck_trap (JavaThread* thread, Method *method, int trap_bci);
+ static void note_div0Check_trap (JavaThread* thread, Method *method, int trap_bci);
+ static void note_rangeCheck_trap(JavaThread* thread, Method *method, int trap_bci);
+ static void note_classCheck_trap(JavaThread* thread, Method *method, int trap_bci);
+ static void note_arrayCheck_trap(JavaThread* thread, Method *method, int trap_bci);
+ // A dummy for makros that shall not profile traps.
+ static void note_no_trap(JavaThread* thread, Method *method, int trap_bci) {}
+#endif // CC_INTERP
+
// Statics & fields
static void resolve_get_put(JavaThread* thread, Bytecodes::Code bytecode);
// Synchronization
static void monitorenter(JavaThread* thread, BasicObjectLock* elem);