Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
23be3758
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看板
提交
23be3758
编写于
2月 21, 2014
作者:
S
stefank
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8035393: Use CLDClosure instead of CLDToOopClosure in frame::oops_interpreted_do
Reviewed-by: tschatzl, coleenp
上级
92b3c0e6
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
25 addition
and
20 deletion
+25
-20
src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp
src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp
+2
-2
src/share/vm/memory/iterator.hpp
src/share/vm/memory/iterator.hpp
+6
-1
src/share/vm/runtime/frame.cpp
src/share/vm/runtime/frame.cpp
+2
-2
src/share/vm/runtime/frame.hpp
src/share/vm/runtime/frame.hpp
+3
-3
src/share/vm/runtime/thread.cpp
src/share/vm/runtime/thread.cpp
+5
-5
src/share/vm/runtime/thread.hpp
src/share/vm/runtime/thread.hpp
+5
-5
src/share/vm/runtime/vmThread.cpp
src/share/vm/runtime/vmThread.cpp
+1
-1
src/share/vm/runtime/vmThread.hpp
src/share/vm/runtime/vmThread.hpp
+1
-1
未找到文件。
src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp
浏览文件 @
23be3758
...
...
@@ -65,7 +65,7 @@ void ScavengeRootsTask::do_it(GCTaskManager* manager, uint which) {
case
threads
:
{
ResourceMark
rm
;
CLD
ToOop
Closure
*
cld_closure
=
NULL
;
// Not needed. All CLDs are already visited.
CLDClosure
*
cld_closure
=
NULL
;
// Not needed. All CLDs are already visited.
Threads
::
oops_do
(
&
roots_closure
,
cld_closure
,
NULL
);
}
break
;
...
...
@@ -122,7 +122,7 @@ void ThreadRootsTask::do_it(GCTaskManager* manager, uint which) {
PSPromotionManager
*
pm
=
PSPromotionManager
::
gc_thread_promotion_manager
(
which
);
PSScavengeRootsClosure
roots_closure
(
pm
);
CLD
ToOop
Closure
*
roots_from_clds
=
NULL
;
// Not needed. All CLDs are already visited.
CLDClosure
*
roots_from_clds
=
NULL
;
// Not needed. All CLDs are already visited.
CodeBlobToOopClosure
roots_in_blobs
(
&
roots_closure
,
/*do_marking=*/
true
);
if
(
_java_thread
!=
NULL
)
...
...
src/share/vm/memory/iterator.hpp
浏览文件 @
23be3758
...
...
@@ -128,6 +128,11 @@ class KlassClosure : public Closure {
virtual
void
do_klass
(
Klass
*
k
)
=
0
;
};
class
CLDClosure
:
public
Closure
{
public:
virtual
void
do_cld
(
ClassLoaderData
*
cld
)
=
0
;
};
class
KlassToOopClosure
:
public
KlassClosure
{
OopClosure
*
_oop_closure
;
public:
...
...
@@ -135,7 +140,7 @@ class KlassToOopClosure : public KlassClosure {
virtual
void
do_klass
(
Klass
*
k
);
};
class
CLDToOopClosure
{
class
CLDToOopClosure
:
public
CLDClosure
{
OopClosure
*
_oop_closure
;
KlassToOopClosure
_klass_closure
;
bool
_must_claim_cld
;
...
...
src/share/vm/runtime/frame.cpp
浏览文件 @
23be3758
...
...
@@ -900,7 +900,7 @@ oop* frame::interpreter_callee_receiver_addr(Symbol* signature) {
}
void
frame
::
oops_interpreted_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
void
frame
::
oops_interpreted_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
const
RegisterMap
*
map
,
bool
query_oop_map_cache
)
{
assert
(
is_interpreted_frame
(),
"Not an interpreted frame"
);
assert
(
map
!=
NULL
,
"map must be set"
);
...
...
@@ -1140,7 +1140,7 @@ void frame::oops_entry_do(OopClosure* f, const RegisterMap* map) {
}
void
frame
::
oops_do_internal
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
,
RegisterMap
*
map
,
bool
use_interpreter_oop_map_cache
)
{
void
frame
::
oops_do_internal
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
,
RegisterMap
*
map
,
bool
use_interpreter_oop_map_cache
)
{
#ifndef PRODUCT
// simulate GC crash here to dump java thread in error report
if
(
CrashGCForDumpingJavaThread
)
{
...
...
src/share/vm/runtime/frame.hpp
浏览文件 @
23be3758
...
...
@@ -419,19 +419,19 @@ class frame VALUE_OBJ_CLASS_SPEC {
// Oops-do's
void
oops_compiled_arguments_do
(
Symbol
*
signature
,
bool
has_receiver
,
bool
has_appendix
,
const
RegisterMap
*
reg_map
,
OopClosure
*
f
);
void
oops_interpreted_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
const
RegisterMap
*
map
,
bool
query_oop_map_cache
=
true
);
void
oops_interpreted_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
const
RegisterMap
*
map
,
bool
query_oop_map_cache
=
true
);
private:
void
oops_interpreted_arguments_do
(
Symbol
*
signature
,
bool
has_receiver
,
OopClosure
*
f
);
// Iteration of oops
void
oops_do_internal
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
,
RegisterMap
*
map
,
bool
use_interpreter_oop_map_cache
);
void
oops_do_internal
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
,
RegisterMap
*
map
,
bool
use_interpreter_oop_map_cache
);
void
oops_entry_do
(
OopClosure
*
f
,
const
RegisterMap
*
map
);
void
oops_code_blob_do
(
OopClosure
*
f
,
CodeBlobClosure
*
cf
,
const
RegisterMap
*
map
);
int
adjust_offset
(
Method
*
method
,
int
index
);
// helper for above fn
public:
// Memory management
void
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
,
RegisterMap
*
map
)
{
oops_do_internal
(
f
,
cld_f
,
cf
,
map
,
true
);
}
void
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
,
RegisterMap
*
map
)
{
oops_do_internal
(
f
,
cld_f
,
cf
,
map
,
true
);
}
void
nmethods_do
(
CodeBlobClosure
*
cf
);
// RedefineClasses support for finding live interpreted methods on the stack
...
...
src/share/vm/runtime/thread.cpp
浏览文件 @
23be3758
...
...
@@ -834,7 +834,7 @@ bool Thread::claim_oops_do_par_case(int strong_roots_parity) {
return
false
;
}
void
Thread
::
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
void
Thread
::
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
active_handles
()
->
oops_do
(
f
);
// Do oop for ThreadShadow
f
->
do_oop
((
oop
*
)
&
_pending_exception
);
...
...
@@ -2730,7 +2730,7 @@ public:
}
};
void
JavaThread
::
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
void
JavaThread
::
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
// Verify that the deferred card marks have been flushed.
assert
(
deferred_card_mark
().
is_empty
(),
"Should be empty during GC"
);
...
...
@@ -3253,7 +3253,7 @@ CompilerThread::CompilerThread(CompileQueue* queue, CompilerCounters* counters)
#endif
}
void
CompilerThread
::
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
void
CompilerThread
::
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
JavaThread
::
oops_do
(
f
,
cld_f
,
cf
);
if
(
_scanned_nmethod
!=
NULL
&&
cf
!=
NULL
)
{
// Safepoints can occur when the sweeper is scanning an nmethod so
...
...
@@ -4167,14 +4167,14 @@ bool Threads::includes(JavaThread* p) {
// uses the Threads_lock to gurantee this property. It also makes sure that
// all threads gets blocked when exiting or starting).
void
Threads
::
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
void
Threads
::
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
ALL_JAVA_THREADS
(
p
)
{
p
->
oops_do
(
f
,
cld_f
,
cf
);
}
VMThread
::
vm_thread
()
->
oops_do
(
f
,
cld_f
,
cf
);
}
void
Threads
::
possibly_parallel_oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
void
Threads
::
possibly_parallel_oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
// Introduce a mechanism allowing parallel threads to claim threads as
// root groups. Overhead should be small enough to use all the time,
// even in sequential code.
...
...
src/share/vm/runtime/thread.hpp
浏览文件 @
23be3758
...
...
@@ -472,7 +472,7 @@ class Thread: public ThreadShadow {
// Apply "cld_f->do_cld" to CLDs that are otherwise not kept alive.
// Used by JavaThread::oops_do.
// Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames
virtual
void
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
);
virtual
void
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
);
// Handles the parallel case for the method below.
private:
...
...
@@ -1429,7 +1429,7 @@ class JavaThread: public Thread {
void
frames_do
(
void
f
(
frame
*
,
const
RegisterMap
*
));
// Memory operations
void
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
);
void
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
);
// Sweeper operations
void
nmethods_do
(
CodeBlobClosure
*
cf
);
...
...
@@ -1860,7 +1860,7 @@ class CompilerThread : public JavaThread {
// GC support
// Apply "f->do_oop" to all root oops in "this".
// Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames
void
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
);
void
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
);
#ifndef PRODUCT
private:
...
...
@@ -1927,9 +1927,9 @@ class Threads: AllStatic {
// Apply "f->do_oop" to all root oops in all threads.
// This version may only be called by sequential code.
static
void
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
);
static
void
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
);
// This version may be called by sequential or parallel code.
static
void
possibly_parallel_oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
);
static
void
possibly_parallel_oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
);
// This creates a list of GCTasks, one per thread.
static
void
create_thread_roots_tasks
(
GCTaskQueue
*
q
);
// This creates a list of GCTasks, one per thread, for marking objects.
...
...
src/share/vm/runtime/vmThread.cpp
浏览文件 @
23be3758
...
...
@@ -682,7 +682,7 @@ void VMThread::execute(VM_Operation* op) {
}
void
VMThread
::
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
void
VMThread
::
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
)
{
Thread
::
oops_do
(
f
,
cld_f
,
cf
);
_vm_queue
->
oops_do
(
f
);
}
...
...
src/share/vm/runtime/vmThread.hpp
浏览文件 @
23be3758
...
...
@@ -126,7 +126,7 @@ class VMThread: public NamedThread {
static
VMThread
*
vm_thread
()
{
return
_vm_thread
;
}
// GC support
void
oops_do
(
OopClosure
*
f
,
CLD
ToOop
Closure
*
cld_f
,
CodeBlobClosure
*
cf
);
void
oops_do
(
OopClosure
*
f
,
CLDClosure
*
cld_f
,
CodeBlobClosure
*
cf
);
// Debugging
void
print_on
(
outputStream
*
st
)
const
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录