Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
f6bc3f00
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看板
提交
f6bc3f00
编写于
5月 09, 2013
作者:
J
jiangli
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
f7d4dbed
51749f49
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
32 addition
and
31 deletion
+32
-31
src/cpu/sparc/vm/globalDefinitions_sparc.hpp
src/cpu/sparc/vm/globalDefinitions_sparc.hpp
+2
-0
src/cpu/x86/vm/globalDefinitions_x86.hpp
src/cpu/x86/vm/globalDefinitions_x86.hpp
+2
-0
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/share/vm/prims/unsafe.cpp
src/share/vm/prims/unsafe.cpp
+4
-9
未找到文件。
src/cpu/sparc/vm/globalDefinitions_sparc.hpp
浏览文件 @
f6bc3f00
...
...
@@ -30,4 +30,6 @@ const int BytesPerInstWord = 4;
const
int
StackAlignmentInBytes
=
(
2
*
wordSize
);
#define SUPPORTS_NATIVE_CX8
#endif // CPU_SPARC_VM_GLOBALDEFINITIONS_SPARC_HPP
src/cpu/x86/vm/globalDefinitions_x86.hpp
浏览文件 @
f6bc3f00
...
...
@@ -27,4 +27,6 @@
const
int
StackAlignmentInBytes
=
16
;
#define SUPPORTS_NATIVE_CX8
#endif // CPU_X86_VM_GLOBALDEFINITIONS_X86_HPP
src/cpu/zero/vm/cppInterpreter_zero.cpp
浏览文件 @
f6bc3f00
...
...
@@ -212,7 +212,13 @@ int CppInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) {
// Update the invocation counter
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
();
if
(
counter
->
reached_InvocationLimit
())
{
CALL_VM_NOCHECK
(
...
...
src/share/vm/interpreter/bytecodeInterpreter.cpp
浏览文件 @
f6bc3f00
...
...
@@ -32,6 +32,7 @@
#include "interpreter/interpreterRuntime.hpp"
#include "memory/cardTableModRefBS.hpp"
#include "memory/resourceArea.hpp"
#include "oops/methodCounters.hpp"
#include "oops/objArrayKlass.hpp"
#include "oops/oop.inline.hpp"
#include "prims/jvmtiExport.hpp"
...
...
@@ -304,11 +305,12 @@
#define METHOD istate->method()
#define INVOCATION_COUNT METHOD->invocation_counter()
#define BACKEDGE_COUNT METHOD->backedge_counter()
#define GET_METHOD_COUNTERS(res) \
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) \
CALL_VM(res=InterpreterRuntime::frequency_counter_overflow(THREAD, branch_pc), handle_exception);
/*
...
...
@@ -325,10 +327,12 @@
#define DO_BACKEDGE_CHECKS(skip, branch_pc) \
if ((skip) <= 0) { \
MethodCounters* mcs; \
GET_METHOD_COUNTERS(mcs); \
if (UseLoopCounter) { \
bool do_OSR = UseOnStackReplacement; \
BACKEDGE_COUNT->increment();
\
if (do_OSR) do_OSR =
BACKEDGE_COUNT->reached_InvocationLimit();
\
mcs->backedge_counter()->increment();
\
if (do_OSR) do_OSR =
mcs->backedge_counter()->reached_InvocationLimit();
\
if (do_OSR) { \
nmethod* osr_nmethod; \
OSR_REQUEST(osr_nmethod, branch_pc); \
...
...
@@ -341,7 +345,7 @@
} \
} \
}
/* UseCompiler ... */
\
INCR_INVOCATION_COUNT;
\
mcs->invocation_counter()->increment();
\
SAFEPOINT; \
}
...
...
@@ -618,11 +622,13 @@ BytecodeInterpreter::run(interpreterState istate) {
// count invocations
assert
(
initialized
,
"Interpreter not initialized"
);
if
(
_compiling
)
{
MethodCounters
*
mcs
;
GET_METHOD_COUNTERS
(
mcs
);
if
(
ProfileInterpreter
)
{
METHOD
->
increment_interpreter_invocation_count
();
METHOD
->
increment_interpreter_invocation_count
(
THREAD
);
}
INCR_INVOCATION_COUNT
;
if
(
INVOCATION_COUNT
->
reached_InvocationLimit
())
{
mcs
->
invocation_counter
()
->
increment
()
;
if
(
mcs
->
invocation_counter
()
->
reached_InvocationLimit
())
{
CALL_VM
((
void
)
InterpreterRuntime
::
frequency_counter_overflow
(
THREAD
,
NULL
),
handle_exception
);
// We no longer retry on a counter overflow
...
...
src/share/vm/oops/method.hpp
浏览文件 @
f6bc3f00
...
...
@@ -67,7 +67,7 @@
// | ConstMethod* (oop) |
// |------------------------------------------------------|
// | methodData (oop) |
// |
interp_invocation_count
|
// |
methodCounters
|
// |------------------------------------------------------|
// | access_flags |
// | vtable_index |
...
...
@@ -76,16 +76,6 @@
// |------------------------------------------------------|
// | method_size | intrinsic_id| flags |
// |------------------------------------------------------|
// | throwout_count | num_breakpoints |
// |------------------------------------------------------|
// | invocation_counter |
// | backedge_counter |
// |------------------------------------------------------|
// | prev_time (tiered only, 64 bit wide) |
// | |
// |------------------------------------------------------|
// | rate (tiered) |
// |------------------------------------------------------|
// | code (pointer) |
// | i2i (pointer) |
// | adapter (pointer) |
...
...
src/share/vm/prims/unsafe.cpp
浏览文件 @
f6bc3f00
...
...
@@ -315,10 +315,7 @@ UNSAFE_ENTRY(void, Unsafe_SetObjectVolatile(JNIEnv *env, jobject unsafe, jobject
OrderAccess
::
fence
();
UNSAFE_END
#if defined(SPARC) || defined(X86)
// Sparc and X86 have atomic jlong (8 bytes) instructions
#else
#ifndef SUPPORTS_NATIVE_CX8
// Keep old code for platforms which may not have atomic jlong (8 bytes) instructions
// Volatile long versions must use locks if !VM_Version::supports_cx8().
...
...
@@ -356,7 +353,7 @@ UNSAFE_ENTRY(void, Unsafe_SetLongVolatile(JNIEnv *env, jobject unsafe, jobject o
}
UNSAFE_END
#endif // not S
PARC and not X86
#endif // not S
UPPORTS_NATIVE_CX8
#define DEFINE_GETSETOOP(jboolean, Boolean) \
\
...
...
@@ -420,8 +417,7 @@ DEFINE_GETSETOOP_VOLATILE(jint, Int);
DEFINE_GETSETOOP_VOLATILE
(
jfloat
,
Float
);
DEFINE_GETSETOOP_VOLATILE
(
jdouble
,
Double
);
#if defined(SPARC) || defined(X86)
// Sparc and X86 have atomic jlong (8 bytes) instructions
#ifdef SUPPORTS_NATIVE_CX8
DEFINE_GETSETOOP_VOLATILE
(
jlong
,
Long
);
#endif
...
...
@@ -450,8 +446,7 @@ UNSAFE_END
UNSAFE_ENTRY
(
void
,
Unsafe_SetOrderedLong
(
JNIEnv
*
env
,
jobject
unsafe
,
jobject
obj
,
jlong
offset
,
jlong
x
))
UnsafeWrapper
(
"Unsafe_SetOrderedLong"
);
#if defined(SPARC) || defined(X86)
// Sparc and X86 have atomic jlong (8 bytes) instructions
#ifdef SUPPORTS_NATIVE_CX8
SET_FIELD_VOLATILE
(
obj
,
offset
,
jlong
,
x
);
#else
// Keep old code for platforms which may not have atomic long (8 bytes) instructions
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录