Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
dca1970a
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看板
提交
dca1970a
编写于
8月 06, 2009
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6868051: (SA) FreeChunk support for compressed oops is broken
Reviewed-by: kvn, dcubed
上级
3a963011
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
12 addition
and
16 deletion
+12
-16
agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java
...sses/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java
+10
-14
agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java
...t/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java
+2
-2
未找到文件。
agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java
浏览文件 @
dca1970a
...
@@ -176,19 +176,6 @@ public class CompactibleFreeListSpace extends CompactibleSpace {
...
@@ -176,19 +176,6 @@ public class CompactibleFreeListSpace extends CompactibleSpace {
for
(;
cur
.
lessThan
(
limit
);)
{
for
(;
cur
.
lessThan
(
limit
);)
{
Address
klassOop
=
cur
.
getAddressAt
(
addressSize
);
Address
klassOop
=
cur
.
getAddressAt
(
addressSize
);
// FIXME: need to do a better job here.
// can I use bitMap here?
if
(
klassOop
==
null
)
{
//Find the object size using Printezis bits and skip over
System
.
err
.
println
(
"Finding object size using Printezis bits and skipping over..."
);
long
size
=
collector
().
blockSizeUsingPrintezisBits
(
cur
);
if
(
size
==
-
1
)
{
System
.
err
.
println
(
"Printezis bits not set..."
);
break
;
}
cur
=
cur
.
addOffsetTo
(
adjustObjectSizeInBytes
(
size
));
}
if
(
FreeChunk
.
indicatesFreeChunk
(
cur
))
{
if
(
FreeChunk
.
indicatesFreeChunk
(
cur
))
{
if
(!
cur
.
equals
(
regionStart
))
{
if
(!
cur
.
equals
(
regionStart
))
{
res
.
add
(
new
MemRegion
(
regionStart
,
cur
));
res
.
add
(
new
MemRegion
(
regionStart
,
cur
));
...
@@ -200,12 +187,21 @@ public class CompactibleFreeListSpace extends CompactibleSpace {
...
@@ -200,12 +187,21 @@ public class CompactibleFreeListSpace extends CompactibleSpace {
}
}
// note that fc.size() gives chunk size in heap words
// note that fc.size() gives chunk size in heap words
cur
=
cur
.
addOffsetTo
(
chunkSize
*
addressSize
);
cur
=
cur
.
addOffsetTo
(
chunkSize
*
addressSize
);
System
.
err
.
println
(
"Free chunk in CMS heap, size="
+
chunkSize
*
addressSize
);
regionStart
=
cur
;
regionStart
=
cur
;
}
else
if
(
klassOop
!=
null
)
{
}
else
if
(
klassOop
!=
null
)
{
Oop
obj
=
heap
.
newOop
(
cur
.
addOffsetToAsOopHandle
(
0
));
Oop
obj
=
heap
.
newOop
(
cur
.
addOffsetToAsOopHandle
(
0
));
long
objectSize
=
obj
.
getObjectSize
();
long
objectSize
=
obj
.
getObjectSize
();
cur
=
cur
.
addOffsetTo
(
adjustObjectSizeInBytes
(
objectSize
));
cur
=
cur
.
addOffsetTo
(
adjustObjectSizeInBytes
(
objectSize
));
}
else
{
// FIXME: need to do a better job here.
// can I use bitMap here?
//Find the object size using Printezis bits and skip over
long
size
=
collector
().
blockSizeUsingPrintezisBits
(
cur
);
if
(
size
==
-
1
)
{
System
.
err
.
println
(
"Printezis bits not set..."
);
break
;
}
cur
=
cur
.
addOffsetTo
(
adjustObjectSizeInBytes
(
size
));
}
}
}
}
return
res
;
return
res
;
...
...
agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java
浏览文件 @
dca1970a
...
@@ -63,7 +63,7 @@ public class FreeChunk extends VMObject {
...
@@ -63,7 +63,7 @@ public class FreeChunk extends VMObject {
public
long
size
()
{
public
long
size
()
{
if
(
VM
.
getVM
().
isCompressedOopsEnabled
())
{
if
(
VM
.
getVM
().
isCompressedOopsEnabled
())
{
Mark
mark
=
new
Mark
(
sizeField
.
getValue
(
addr
));
Mark
mark
=
new
Mark
(
addr
.
addOffsetTo
(
sizeField
.
getOffset
()
));
return
mark
.
getSize
();
return
mark
.
getSize
();
}
else
{
}
else
{
Address
size
=
sizeField
.
getValue
(
addr
);
Address
size
=
sizeField
.
getValue
(
addr
);
...
@@ -83,7 +83,7 @@ public class FreeChunk extends VMObject {
...
@@ -83,7 +83,7 @@ public class FreeChunk extends VMObject {
public
boolean
isFree
()
{
public
boolean
isFree
()
{
if
(
VM
.
getVM
().
isCompressedOopsEnabled
())
{
if
(
VM
.
getVM
().
isCompressedOopsEnabled
())
{
Mark
mark
=
new
Mark
(
sizeField
.
getValue
(
addr
));
Mark
mark
=
new
Mark
(
addr
.
addOffsetTo
(
sizeField
.
getOffset
()
));
return
mark
.
isCmsFreeChunk
();
return
mark
.
isCmsFreeChunk
();
}
else
{
}
else
{
Address
prev
=
prevField
.
getValue
(
addr
);
Address
prev
=
prevField
.
getValue
(
addr
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录