Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
62955820
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看板
提交
62955820
编写于
6月 08, 2011
作者:
Y
ysr
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
c4091c5a
30cee037
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
17 deletion
+25
-17
src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
...entation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+0
-2
src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp
...re/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp
+0
-6
src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp
...hare/vm/gc_implementation/parNew/parCardTableModRefBS.cpp
+25
-9
未找到文件。
src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
浏览文件 @
62955820
...
@@ -1833,8 +1833,6 @@ CompactibleFreeListSpace::removeChunkFromIndexedFreeList(FreeChunk* fc) {
...
@@ -1833,8 +1833,6 @@ CompactibleFreeListSpace::removeChunkFromIndexedFreeList(FreeChunk* fc) {
}
}
)
)
_indexedFreeList
[
size
].
removeChunk
(
fc
);
_indexedFreeList
[
size
].
removeChunk
(
fc
);
debug_only
(
fc
->
clearNext
());
debug_only
(
fc
->
clearPrev
());
NOT_PRODUCT
(
NOT_PRODUCT
(
if
(
FLSVerifyIndexTable
)
{
if
(
FLSVerifyIndexTable
)
{
verifyIndexedFreeList
(
size
);
verifyIndexedFreeList
(
size
);
...
...
src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp
浏览文件 @
62955820
...
@@ -114,17 +114,11 @@ class FreeChunk VALUE_OBJ_CLASS_SPEC {
...
@@ -114,17 +114,11 @@ class FreeChunk VALUE_OBJ_CLASS_SPEC {
linkNext
(
ptr
);
linkNext
(
ptr
);
if
(
ptr
!=
NULL
)
ptr
->
linkPrev
(
this
);
if
(
ptr
!=
NULL
)
ptr
->
linkPrev
(
this
);
}
}
void
linkAfterNonNull
(
FreeChunk
*
ptr
)
{
assert
(
ptr
!=
NULL
,
"precondition violation"
);
linkNext
(
ptr
);
ptr
->
linkPrev
(
this
);
}
void
linkNext
(
FreeChunk
*
ptr
)
{
_next
=
ptr
;
}
void
linkNext
(
FreeChunk
*
ptr
)
{
_next
=
ptr
;
}
void
linkPrev
(
FreeChunk
*
ptr
)
{
void
linkPrev
(
FreeChunk
*
ptr
)
{
LP64_ONLY
(
if
(
UseCompressedOops
)
_prev
=
ptr
;
else
)
LP64_ONLY
(
if
(
UseCompressedOops
)
_prev
=
ptr
;
else
)
_prev
=
(
FreeChunk
*
)((
intptr_t
)
ptr
|
0x1
);
_prev
=
(
FreeChunk
*
)((
intptr_t
)
ptr
|
0x1
);
}
}
void
clearPrev
()
{
_prev
=
NULL
;
}
void
clearNext
()
{
_next
=
NULL
;
}
void
clearNext
()
{
_next
=
NULL
;
}
void
markNotFree
()
{
void
markNotFree
()
{
// Set _prev (klass) to null before (if) clearing the mark word below
// Set _prev (klass) to null before (if) clearing the mark word below
...
...
src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp
浏览文件 @
62955820
...
@@ -348,15 +348,31 @@ process_chunk_boundaries(Space* sp,
...
@@ -348,15 +348,31 @@ process_chunk_boundaries(Space* sp,
// cleared before we had a chance to examine it. In that case, the value
// cleared before we had a chance to examine it. In that case, the value
// will have been logged in the LNC for that chunk.
// will have been logged in the LNC for that chunk.
// We need to examine as many chunks to the right as this object
// We need to examine as many chunks to the right as this object
// covers.
// covers. However, we need to bound this checking to the largest
const
uintptr_t
last_chunk_index_to_check
=
addr_to_chunk_index
(
last_block
+
last_block_size
-
1
)
// entry in the LNC array: this is because the heap may expand
-
lowest_non_clean_base_chunk_index
;
// after the LNC array has been created but before we reach this point,
DEBUG_ONLY
(
const
uintptr_t
last_chunk_index
=
addr_to_chunk_index
(
used
.
last
())
// and the last block in our chunk may have been expanded to include
-
lowest_non_clean_base_chunk_index
;)
// the expansion delta (and possibly subsequently allocated from, so
assert
(
last_chunk_index_to_check
<=
last_chunk_index
,
// it wouldn't be sufficient to check whether that last block was
err_msg
(
"Out of bounds: last_chunk_index_to_check "
INTPTR_FORMAT
// or was not an object at this point).
" exceeds last_chunk_index "
INTPTR_FORMAT
,
uintptr_t
last_chunk_index_to_check
=
addr_to_chunk_index
(
last_block
+
last_block_size
-
1
)
last_chunk_index_to_check
,
last_chunk_index
));
-
lowest_non_clean_base_chunk_index
;
const
uintptr_t
last_chunk_index
=
addr_to_chunk_index
(
used
.
last
())
-
lowest_non_clean_base_chunk_index
;
if
(
last_chunk_index_to_check
>
last_chunk_index
)
{
assert
(
last_block
+
last_block_size
>
used
.
end
(),
err_msg
(
"Inconsistency detected: last_block ["
PTR_FORMAT
","
PTR_FORMAT
"]"
" does not exceed used.end() = "
PTR_FORMAT
","
" yet last_chunk_index_to_check "
INTPTR_FORMAT
" exceeds last_chunk_index "
INTPTR_FORMAT
,
last_chunk_index_to_check
,
last_chunk_index
));
assert
(
sp
->
used_region
().
end
()
>
used
.
end
(),
err_msg
(
"Expansion did not happen: "
"["
PTR_FORMAT
","
PTR_FORMAT
") -> ["
PTR_FORMAT
","
PTR_FORMAT
")"
,
sp
->
used_region
().
start
(),
sp
->
used_region
().
end
(),
used
.
start
(),
used
.
end
()));
NOISY
(
tty
->
print_cr
(
" process_chunk_boundary: heap expanded; explicitly bounding last_chunk"
);)
last_chunk_index_to_check
=
last_chunk_index
;
}
for
(
uintptr_t
lnc_index
=
cur_chunk_index
+
1
;
for
(
uintptr_t
lnc_index
=
cur_chunk_index
+
1
;
lnc_index
<=
last_chunk_index_to_check
;
lnc_index
<=
last_chunk_index_to_check
;
lnc_index
++
)
{
lnc_index
++
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录