Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
3fb5b44b
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3fb5b44b
编写于
6月 10, 2008
作者:
J
jcoomes
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
851ac153
4db5fe57
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
32 addition
and
12 deletion
+32
-12
src/share/vm/gc_implementation/shared/immutableSpace.cpp
src/share/vm/gc_implementation/shared/immutableSpace.cpp
+1
-1
src/share/vm/gc_implementation/shared/immutableSpace.hpp
src/share/vm/gc_implementation/shared/immutableSpace.hpp
+1
-1
src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp
src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp
+27
-6
src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp
src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp
+1
-1
src/share/vm/gc_implementation/shared/mutableSpace.cpp
src/share/vm/gc_implementation/shared/mutableSpace.cpp
+1
-1
src/share/vm/gc_implementation/shared/mutableSpace.hpp
src/share/vm/gc_implementation/shared/mutableSpace.hpp
+1
-1
src/share/vm/oops/methodDataOop.hpp
src/share/vm/oops/methodDataOop.hpp
+0
-1
未找到文件。
src/share/vm/gc_implementation/shared/immutableSpace.cpp
浏览文件 @
3fb5b44b
...
@@ -66,7 +66,7 @@ void ImmutableSpace::print() const {
...
@@ -66,7 +66,7 @@ void ImmutableSpace::print() const {
#endif
#endif
void
ImmutableSpace
::
verify
(
bool
allow_dirty
)
const
{
void
ImmutableSpace
::
verify
(
bool
allow_dirty
)
{
HeapWord
*
p
=
bottom
();
HeapWord
*
p
=
bottom
();
HeapWord
*
t
=
end
();
HeapWord
*
t
=
end
();
HeapWord
*
prev_p
=
NULL
;
HeapWord
*
prev_p
=
NULL
;
...
...
src/share/vm/gc_implementation/shared/immutableSpace.hpp
浏览文件 @
3fb5b44b
...
@@ -59,5 +59,5 @@ class ImmutableSpace: public CHeapObj {
...
@@ -59,5 +59,5 @@ class ImmutableSpace: public CHeapObj {
// Debugging
// Debugging
virtual
void
print
()
const
PRODUCT_RETURN
;
virtual
void
print
()
const
PRODUCT_RETURN
;
virtual
void
print_short
()
const
PRODUCT_RETURN
;
virtual
void
print_short
()
const
PRODUCT_RETURN
;
virtual
void
verify
(
bool
allow_dirty
)
const
;
virtual
void
verify
(
bool
allow_dirty
);
};
};
src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp
浏览文件 @
3fb5b44b
...
@@ -599,12 +599,28 @@ void MutableNUMASpace::initialize(MemRegion mr, bool clear_space) {
...
@@ -599,12 +599,28 @@ void MutableNUMASpace::initialize(MemRegion mr, bool clear_space) {
// Mark the the holes in chunks below the top() as invalid.
// Mark the the holes in chunks below the top() as invalid.
void
MutableNUMASpace
::
set_top
(
HeapWord
*
value
)
{
void
MutableNUMASpace
::
set_top
(
HeapWord
*
value
)
{
bool
found_top
=
false
;
bool
found_top
=
false
;
for
(
int
i
=
0
;
i
<
lgrp_spaces
()
->
length
();
i
++
)
{
for
(
int
i
=
0
;
i
<
lgrp_spaces
()
->
length
();)
{
LGRPSpace
*
ls
=
lgrp_spaces
()
->
at
(
i
);
LGRPSpace
*
ls
=
lgrp_spaces
()
->
at
(
i
);
MutableSpace
*
s
=
ls
->
space
();
MutableSpace
*
s
=
ls
->
space
();
HeapWord
*
top
=
MAX2
((
HeapWord
*
)
round_down
((
intptr_t
)
s
->
top
(),
page_size
()),
s
->
bottom
());
HeapWord
*
top
=
MAX2
((
HeapWord
*
)
round_down
((
intptr_t
)
s
->
top
(),
page_size
()),
s
->
bottom
());
if
(
s
->
contains
(
value
))
{
if
(
s
->
contains
(
value
))
{
// Check if setting the chunk's top to a given value would create a hole less than
// a minimal object; assuming that's not the last chunk in which case we don't care.
if
(
i
<
lgrp_spaces
()
->
length
()
-
1
)
{
size_t
remainder
=
pointer_delta
(
s
->
end
(),
value
);
const
size_t
minimal_object_size
=
oopDesc
::
header_size
();
if
(
remainder
<
minimal_object_size
&&
remainder
>
0
)
{
// Add a filler object of a minimal size, it will cross the chunk boundary.
SharedHeap
::
fill_region_with_object
(
MemRegion
(
value
,
minimal_object_size
));
value
+=
minimal_object_size
;
assert
(
!
s
->
contains
(
value
),
"Should be in the next chunk"
);
// Restart the loop from the same chunk, since the value has moved
// to the next one.
continue
;
}
}
if
(
!
os
::
numa_has_static_binding
()
&&
top
<
value
&&
top
<
s
->
end
())
{
if
(
!
os
::
numa_has_static_binding
()
&&
top
<
value
&&
top
<
s
->
end
())
{
ls
->
add_invalid_region
(
MemRegion
(
top
,
value
));
ls
->
add_invalid_region
(
MemRegion
(
top
,
value
));
}
}
...
@@ -620,6 +636,7 @@ void MutableNUMASpace::set_top(HeapWord* value) {
...
@@ -620,6 +636,7 @@ void MutableNUMASpace::set_top(HeapWord* value) {
s
->
set_top
(
s
->
end
());
s
->
set_top
(
s
->
end
());
}
}
}
}
i
++
;
}
}
MutableSpace
::
set_top
(
value
);
MutableSpace
::
set_top
(
value
);
}
}
...
@@ -700,12 +717,14 @@ HeapWord* MutableNUMASpace::cas_allocate(size_t size) {
...
@@ -700,12 +717,14 @@ HeapWord* MutableNUMASpace::cas_allocate(size_t size) {
MutableSpace
*
s
=
lgrp_spaces
()
->
at
(
i
)
->
space
();
MutableSpace
*
s
=
lgrp_spaces
()
->
at
(
i
)
->
space
();
HeapWord
*
p
=
s
->
cas_allocate
(
size
);
HeapWord
*
p
=
s
->
cas_allocate
(
size
);
if
(
p
!=
NULL
)
{
if
(
p
!=
NULL
)
{
size_t
remainder
=
pointer_delta
(
s
->
end
(),
p
);
size_t
remainder
=
pointer_delta
(
s
->
end
(),
p
+
size
);
if
(
remainder
<
(
size_t
)
oopDesc
::
header_size
()
&&
remainder
>
0
)
{
if
(
remainder
<
(
size_t
)
oopDesc
::
header_size
()
&&
remainder
>
0
)
{
if
(
s
->
cas_deallocate
(
p
,
size
))
{
if
(
s
->
cas_deallocate
(
p
,
size
))
{
// We were the last to allocate and created a fragment less than
// We were the last to allocate and created a fragment less than
// a minimal object.
// a minimal object.
p
=
NULL
;
p
=
NULL
;
}
else
{
guarantee
(
false
,
"Deallocation should always succeed"
);
}
}
}
}
}
}
...
@@ -761,10 +780,12 @@ void MutableNUMASpace::print_on(outputStream* st) const {
...
@@ -761,10 +780,12 @@ void MutableNUMASpace::print_on(outputStream* st) const {
}
}
}
}
void
MutableNUMASpace
::
verify
(
bool
allow_dirty
)
const
{
void
MutableNUMASpace
::
verify
(
bool
allow_dirty
)
{
for
(
int
i
=
0
;
i
<
lgrp_spaces
()
->
length
();
i
++
)
{
// This can be called after setting an arbitary value to the space's top,
lgrp_spaces
()
->
at
(
i
)
->
space
()
->
verify
(
allow_dirty
);
// so an object can cross the chunk boundary. We ensure the parsablity
}
// of the space and just walk the objects in linear fashion.
ensure_parsability
();
MutableSpace
::
verify
(
allow_dirty
);
}
}
// Scan pages and gather stats about page placement and size.
// Scan pages and gather stats about page placement and size.
...
...
src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp
浏览文件 @
3fb5b44b
...
@@ -192,7 +192,7 @@ class MutableNUMASpace : public MutableSpace {
...
@@ -192,7 +192,7 @@ class MutableNUMASpace : public MutableSpace {
// Debugging
// Debugging
virtual
void
print_on
(
outputStream
*
st
)
const
;
virtual
void
print_on
(
outputStream
*
st
)
const
;
virtual
void
print_short_on
(
outputStream
*
st
)
const
;
virtual
void
print_short_on
(
outputStream
*
st
)
const
;
virtual
void
verify
(
bool
allow_dirty
)
const
;
virtual
void
verify
(
bool
allow_dirty
);
virtual
void
set_top
(
HeapWord
*
value
);
virtual
void
set_top
(
HeapWord
*
value
);
};
};
src/share/vm/gc_implementation/shared/mutableSpace.cpp
浏览文件 @
3fb5b44b
...
@@ -118,7 +118,7 @@ void MutableSpace::print_on(outputStream* st) const {
...
@@ -118,7 +118,7 @@ void MutableSpace::print_on(outputStream* st) const {
bottom
(),
top
(),
end
());
bottom
(),
top
(),
end
());
}
}
void
MutableSpace
::
verify
(
bool
allow_dirty
)
const
{
void
MutableSpace
::
verify
(
bool
allow_dirty
)
{
HeapWord
*
p
=
bottom
();
HeapWord
*
p
=
bottom
();
HeapWord
*
t
=
top
();
HeapWord
*
t
=
top
();
HeapWord
*
prev_p
=
NULL
;
HeapWord
*
prev_p
=
NULL
;
...
...
src/share/vm/gc_implementation/shared/mutableSpace.hpp
浏览文件 @
3fb5b44b
...
@@ -98,5 +98,5 @@ class MutableSpace: public ImmutableSpace {
...
@@ -98,5 +98,5 @@ class MutableSpace: public ImmutableSpace {
virtual
void
print_on
(
outputStream
*
st
)
const
;
virtual
void
print_on
(
outputStream
*
st
)
const
;
virtual
void
print_short
()
const
;
virtual
void
print_short
()
const
;
virtual
void
print_short_on
(
outputStream
*
st
)
const
;
virtual
void
print_short_on
(
outputStream
*
st
)
const
;
virtual
void
verify
(
bool
allow_dirty
)
const
;
virtual
void
verify
(
bool
allow_dirty
);
};
};
src/share/vm/oops/methodDataOop.hpp
浏览文件 @
3fb5b44b
...
@@ -158,7 +158,6 @@ public:
...
@@ -158,7 +158,6 @@ public:
assert
(
ProfileTraps
,
"used only under +ProfileTraps"
);
assert
(
ProfileTraps
,
"used only under +ProfileTraps"
);
uint
old_flags
=
(
_header
.
_struct
.
_flags
&
flag_mask
);
uint
old_flags
=
(
_header
.
_struct
.
_flags
&
flag_mask
);
_header
.
_struct
.
_flags
=
(
new_state
<<
trap_shift
)
|
old_flags
;
_header
.
_struct
.
_flags
=
(
new_state
<<
trap_shift
)
|
old_flags
;
assert
(
trap_state
()
==
new_state
,
"sanity"
);
}
}
u1
flags
()
{
u1
flags
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录