Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
7b4f93f3
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
7b4f93f3
编写于
5月 06, 2013
作者:
J
jiangli
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
75f509f9
70dfe226
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
22 deletion
+24
-22
src/cpu/zero/vm/cppInterpreter_zero.cpp
src/cpu/zero/vm/cppInterpreter_zero.cpp
+7
-1
src/share/vm/interpreter/bytecodeInterpreter.cpp
src/share/vm/interpreter/bytecodeInterpreter.cpp
+16
-10
src/share/vm/oops/method.hpp
src/share/vm/oops/method.hpp
+1
-11
未找到文件。
src/cpu/zero/vm/cppInterpreter_zero.cpp
浏览文件 @
7b4f93f3
...
@@ -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
(
...
...
src/share/vm/interpreter/bytecodeInterpreter.cpp
浏览文件 @
7b4f93f3
...
@@ -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
...
...
src/share/vm/oops/method.hpp
浏览文件 @
7b4f93f3
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录