提交 7b4f93f3 编写于 作者: J jiangli

Merge

...@@ -212,7 +212,13 @@ int CppInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) { ...@@ -212,7 +212,13 @@ int CppInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) {
// Update the invocation counter // Update the invocation counter
if ((UseCompiler || CountCompiledCalls) && !method->is_synchronized()) { if ((UseCompiler || CountCompiledCalls) && !method->is_synchronized()) {
InvocationCounter *counter = method->invocation_counter(); MethodCounters* mcs = method->method_counters();
if (mcs == NULL) {
CALL_VM_NOCHECK(mcs = InterpreterRuntime::build_method_counters(thread, method));
if (HAS_PENDING_EXCEPTION)
goto unwind_and_return;
}
InvocationCounter *counter = mcs->invocation_counter();
counter->increment(); counter->increment();
if (counter->reached_InvocationLimit()) { if (counter->reached_InvocationLimit()) {
CALL_VM_NOCHECK( CALL_VM_NOCHECK(
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "interpreter/interpreterRuntime.hpp" #include "interpreter/interpreterRuntime.hpp"
#include "memory/cardTableModRefBS.hpp" #include "memory/cardTableModRefBS.hpp"
#include "memory/resourceArea.hpp" #include "memory/resourceArea.hpp"
#include "oops/methodCounters.hpp"
#include "oops/objArrayKlass.hpp" #include "oops/objArrayKlass.hpp"
#include "oops/oop.inline.hpp" #include "oops/oop.inline.hpp"
#include "prims/jvmtiExport.hpp" #include "prims/jvmtiExport.hpp"
...@@ -304,11 +305,12 @@ ...@@ -304,11 +305,12 @@
#define METHOD istate->method() #define METHOD istate->method()
#define INVOCATION_COUNT METHOD->invocation_counter() #define GET_METHOD_COUNTERS(res) \
#define BACKEDGE_COUNT METHOD->backedge_counter() res = METHOD->method_counters(); \
if (res == NULL) { \
CALL_VM(res = InterpreterRuntime::build_method_counters(THREAD, METHOD), handle_exception); \
}
#define INCR_INVOCATION_COUNT INVOCATION_COUNT->increment()
#define OSR_REQUEST(res, branch_pc) \ #define OSR_REQUEST(res, branch_pc) \
CALL_VM(res=InterpreterRuntime::frequency_counter_overflow(THREAD, branch_pc), handle_exception); CALL_VM(res=InterpreterRuntime::frequency_counter_overflow(THREAD, branch_pc), handle_exception);
/* /*
...@@ -325,10 +327,12 @@ ...@@ -325,10 +327,12 @@
#define DO_BACKEDGE_CHECKS(skip, branch_pc) \ #define DO_BACKEDGE_CHECKS(skip, branch_pc) \
if ((skip) <= 0) { \ if ((skip) <= 0) { \
MethodCounters* mcs; \
GET_METHOD_COUNTERS(mcs); \
if (UseLoopCounter) { \ if (UseLoopCounter) { \
bool do_OSR = UseOnStackReplacement; \ bool do_OSR = UseOnStackReplacement; \
BACKEDGE_COUNT->increment(); \ mcs->backedge_counter()->increment(); \
if (do_OSR) do_OSR = BACKEDGE_COUNT->reached_InvocationLimit(); \ if (do_OSR) do_OSR = mcs->backedge_counter()->reached_InvocationLimit(); \
if (do_OSR) { \ if (do_OSR) { \
nmethod* osr_nmethod; \ nmethod* osr_nmethod; \
OSR_REQUEST(osr_nmethod, branch_pc); \ OSR_REQUEST(osr_nmethod, branch_pc); \
...@@ -341,7 +345,7 @@ ...@@ -341,7 +345,7 @@
} \ } \
} \ } \
} /* UseCompiler ... */ \ } /* UseCompiler ... */ \
INCR_INVOCATION_COUNT; \ mcs->invocation_counter()->increment(); \
SAFEPOINT; \ SAFEPOINT; \
} }
...@@ -618,11 +622,13 @@ BytecodeInterpreter::run(interpreterState istate) { ...@@ -618,11 +622,13 @@ BytecodeInterpreter::run(interpreterState istate) {
// count invocations // count invocations
assert(initialized, "Interpreter not initialized"); assert(initialized, "Interpreter not initialized");
if (_compiling) { if (_compiling) {
MethodCounters* mcs;
GET_METHOD_COUNTERS(mcs);
if (ProfileInterpreter) { if (ProfileInterpreter) {
METHOD->increment_interpreter_invocation_count(); METHOD->increment_interpreter_invocation_count(THREAD);
} }
INCR_INVOCATION_COUNT; mcs->invocation_counter()->increment();
if (INVOCATION_COUNT->reached_InvocationLimit()) { if (mcs->invocation_counter()->reached_InvocationLimit()) {
CALL_VM((void)InterpreterRuntime::frequency_counter_overflow(THREAD, NULL), handle_exception); CALL_VM((void)InterpreterRuntime::frequency_counter_overflow(THREAD, NULL), handle_exception);
// We no longer retry on a counter overflow // We no longer retry on a counter overflow
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
// | ConstMethod* (oop) | // | ConstMethod* (oop) |
// |------------------------------------------------------| // |------------------------------------------------------|
// | methodData (oop) | // | methodData (oop) |
// | interp_invocation_count | // | methodCounters |
// |------------------------------------------------------| // |------------------------------------------------------|
// | access_flags | // | access_flags |
// | vtable_index | // | vtable_index |
...@@ -76,16 +76,6 @@ ...@@ -76,16 +76,6 @@
// |------------------------------------------------------| // |------------------------------------------------------|
// | method_size | intrinsic_id| flags | // | method_size | intrinsic_id| flags |
// |------------------------------------------------------| // |------------------------------------------------------|
// | throwout_count | num_breakpoints |
// |------------------------------------------------------|
// | invocation_counter |
// | backedge_counter |
// |------------------------------------------------------|
// | prev_time (tiered only, 64 bit wide) |
// | |
// |------------------------------------------------------|
// | rate (tiered) |
// |------------------------------------------------------|
// | code (pointer) | // | code (pointer) |
// | i2i (pointer) | // | i2i (pointer) |
// | adapter (pointer) | // | adapter (pointer) |
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册