diff src/share/vm/interpreter/interpreterRuntime.hpp @ 14420:abe03600372a

8024468: PPC64 (part 201): cppInterpreter: implement bytecode profiling Summary: Implement profiling for c2 jit compilation. Also enable new cppInterpreter features. Reviewed-by: kvn
author goetz
date Sun, 15 Sep 2013 15:28:58 +0200
parents ca0165daa6ec
children d8041d695d19
line wrap: on
line diff
--- a/src/share/vm/interpreter/interpreterRuntime.hpp	Thu Sep 19 17:31:42 2013 +0200
+++ b/src/share/vm/interpreter/interpreterRuntime.hpp	Sun Sep 15 15:28:58 2013 +0200
@@ -66,9 +66,15 @@
 
   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:
@@ -100,6 +106,17 @@
 #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);