Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
ebdea31c
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看板
提交
ebdea31c
编写于
7月 02, 2009
作者:
J
jmasa
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
541b3020
7f4a8a49
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
55 addition
and
24 deletion
+55
-24
src/share/tools/MakeDeps/Database.java
src/share/tools/MakeDeps/Database.java
+11
-15
src/share/vm/gc_implementation/g1/concurrentMark.cpp
src/share/vm/gc_implementation/g1/concurrentMark.cpp
+44
-9
未找到文件。
src/share/tools/MakeDeps/Database.java
浏览文件 @
ebdea31c
/*
/*
* Copyright 1999-200
5
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1999-200
9
Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -39,7 +39,6 @@ public class Database {
...
@@ -39,7 +39,6 @@ public class Database {
private
HashMap
<
String
,
String
>
platformDepFiles
;
private
HashMap
<
String
,
String
>
platformDepFiles
;
private
long
threshold
;
private
long
threshold
;
private
int
nOuterFiles
;
private
int
nOuterFiles
;
private
int
nPrecompiledFiles
;
private
boolean
missingOk
;
private
boolean
missingOk
;
private
Platform
plat
;
private
Platform
plat
;
/** These allow you to specify files not in the include database
/** These allow you to specify files not in the include database
...
@@ -62,7 +61,6 @@ public class Database {
...
@@ -62,7 +61,6 @@ public class Database {
threshold
=
t
;
threshold
=
t
;
nOuterFiles
=
0
;
nOuterFiles
=
0
;
nPrecompiledFiles
=
0
;
missingOk
=
false
;
missingOk
=
false
;
firstFile
=
null
;
firstFile
=
null
;
lastFile
=
null
;
lastFile
=
null
;
...
@@ -343,7 +341,6 @@ public class Database {
...
@@ -343,7 +341,6 @@ public class Database {
plat
.
getGIFileTemplate
().
getInvDir
()
+
plat
.
getGIFileTemplate
().
getInvDir
()
+
list
.
getName
()
+
list
.
getName
()
+
"\""
);
"\""
);
nPrecompiledFiles
+=
1
;
}
}
}
}
inclFile
.
println
();
inclFile
.
println
();
...
@@ -408,11 +405,11 @@ public class Database {
...
@@ -408,11 +405,11 @@ public class Database {
gd
.
println
();
gd
.
println
();
}
}
if
(
nPrecompiledFiles
>
0
)
{
// write Precompiled_Files = ...
// write Precompiled_Files = ...
gd
.
println
(
"Precompiled_Files = \\"
);
gd
.
println
(
"Precompiled_Files = \\"
);
for
(
Iterator
iter
=
grandInclude
.
iterator
();
iter
.
hasNext
();
)
{
for
(
Iterator
iter
=
grandInclude
.
iterator
();
iter
.
hasNext
();
)
{
FileList
list
=
(
FileList
)
iter
.
next
();
FileList
list
=
(
FileList
)
iter
.
next
();
if
(
list
.
getCount
()
>=
threshold
)
{
gd
.
println
(
list
.
getName
()
+
" \\"
);
gd
.
println
(
list
.
getName
()
+
" \\"
);
String
platformDep
=
platformDepFiles
.
get
(
list
.
getName
());
String
platformDep
=
platformDepFiles
.
get
(
list
.
getName
());
if
(
platformDep
!=
null
)
{
if
(
platformDep
!=
null
)
{
...
@@ -421,9 +418,9 @@ public class Database {
...
@@ -421,9 +418,9 @@ public class Database {
gd
.
println
(
platformDep
+
" \\"
);
gd
.
println
(
platformDep
+
" \\"
);
}
}
}
}
}
gd
.
println
();
gd
.
println
();
gd
.
println
();
gd
.
println
();
}
gd
.
println
(
"DTraced_Files = \\"
);
gd
.
println
(
"DTraced_Files = \\"
);
for
(
Iterator
iter
=
outerFiles
.
iterator
();
iter
.
hasNext
();
)
{
for
(
Iterator
iter
=
outerFiles
.
iterator
();
iter
.
hasNext
();
)
{
...
@@ -483,7 +480,6 @@ public class Database {
...
@@ -483,7 +480,6 @@ public class Database {
}
}
if
(
plat
.
includeGIDependencies
()
if
(
plat
.
includeGIDependencies
()
&&
nPrecompiledFiles
>
0
&&
anII
.
getUseGrandInclude
())
{
&&
anII
.
getUseGrandInclude
())
{
gd
.
println
(
" $(Precompiled_Files) \\"
);
gd
.
println
(
" $(Precompiled_Files) \\"
);
}
}
...
...
src/share/vm/gc_implementation/g1/concurrentMark.cpp
浏览文件 @
ebdea31c
...
@@ -1233,6 +1233,41 @@ public:
...
@@ -1233,6 +1233,41 @@ public:
CardTableModRefBS
::
card_shift
);
CardTableModRefBS
::
card_shift
);
}
}
// It takes a region that's not empty (i.e., it has at least one
// live object in it and sets its corresponding bit on the region
// bitmap to 1. If the region is "starts humongous" it will also set
// to 1 the bits on the region bitmap that correspond to its
// associated "continues humongous" regions.
void
set_bit_for_region
(
HeapRegion
*
hr
)
{
assert
(
!
hr
->
continuesHumongous
(),
"should have filtered those out"
);
size_t
index
=
hr
->
hrs_index
();
if
(
!
hr
->
startsHumongous
())
{
// Normal (non-humongous) case: just set the bit.
_region_bm
->
par_at_put
((
BitMap
::
idx_t
)
index
,
true
);
}
else
{
// Starts humongous case: calculate how many regions are part of
// this humongous region and then set the bit range. It might
// have been a bit more efficient to look at the object that
// spans these humongous regions to calculate their number from
// the object's size. However, it's a good idea to calculate
// this based on the metadata itself, and not the region
// contents, so that this code is not aware of what goes into
// the humongous regions (in case this changes in the future).
G1CollectedHeap
*
g1h
=
G1CollectedHeap
::
heap
();
size_t
end_index
=
index
+
1
;
while
(
end_index
<
g1h
->
n_regions
())
{
HeapRegion
*
chr
=
g1h
->
region_at
(
end_index
);
if
(
!
chr
->
continuesHumongous
())
{
break
;
}
end_index
+=
1
;
}
_region_bm
->
par_at_put_range
((
BitMap
::
idx_t
)
index
,
(
BitMap
::
idx_t
)
end_index
,
true
);
}
}
bool
doHeapRegion
(
HeapRegion
*
hr
)
{
bool
doHeapRegion
(
HeapRegion
*
hr
)
{
if
(
_co_tracker
!=
NULL
)
if
(
_co_tracker
!=
NULL
)
_co_tracker
->
update
();
_co_tracker
->
update
();
...
@@ -1241,13 +1276,13 @@ public:
...
@@ -1241,13 +1276,13 @@ public:
_start_vtime_sec
=
os
::
elapsedVTime
();
_start_vtime_sec
=
os
::
elapsedVTime
();
if
(
hr
->
continuesHumongous
())
{
if
(
hr
->
continuesHumongous
())
{
HeapRegion
*
hum_start
=
hr
->
humongous_start_region
();
// We will ignore these here and process them when their
//
If the head region of the humongous region has been determined
//
associated "starts humongous" region is processed (see
//
to be alive, then all the tail regions should be marked
//
set_bit_for_heap_region()). Note that we cannot rely on their
//
such as well.
//
associated "starts humongous" region to have their bit set to
if
(
_region_bm
->
at
(
hum_start
->
hrs_index
()))
{
// 1 since, due to the region chunking in the parallel region
_region_bm
->
par_at_put
(
hr
->
hrs_index
(),
1
);
// iteration, a "continues humongous" region might be visited
}
// before its associated "starts humongous".
return
false
;
return
false
;
}
}
...
@@ -1343,14 +1378,14 @@ public:
...
@@ -1343,14 +1378,14 @@ public:
intptr_t
(
uintptr_t
(
tp
)
>>
CardTableModRefBS
::
card_shift
);
intptr_t
(
uintptr_t
(
tp
)
>>
CardTableModRefBS
::
card_shift
);
mark_card_num_range
(
start_card_num
,
last_card_num
);
mark_card_num_range
(
start_card_num
,
last_card_num
);
// This definitely means the region has live objects.
// This definitely means the region has live objects.
_region_bm
->
par_at_put
(
hr
->
hrs_index
(),
1
);
set_bit_for_region
(
hr
);
}
}
}
}
hr
->
add_to_marked_bytes
(
marked_bytes
);
hr
->
add_to_marked_bytes
(
marked_bytes
);
// Update the live region bitmap.
// Update the live region bitmap.
if
(
marked_bytes
>
0
)
{
if
(
marked_bytes
>
0
)
{
_region_bm
->
par_at_put
(
hr
->
hrs_index
(),
1
);
set_bit_for_region
(
hr
);
}
}
hr
->
set_top_at_conc_mark_count
(
nextTop
);
hr
->
set_top_at_conc_mark_count
(
nextTop
);
_tot_live
+=
hr
->
next_live_bytes
();
_tot_live
+=
hr
->
next_live_bytes
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录