Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
68d11eab
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看板
提交
68d11eab
编写于
8月 17, 2012
作者:
A
amurillo
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
04cd771f
7c307afe
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
81 addition
and
45 deletion
+81
-45
make/jprt.properties
make/jprt.properties
+18
-18
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+16
-4
src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
+32
-7
src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+3
-2
src/share/vm/gc_implementation/parNew/parNewGeneration.hpp
src/share/vm/gc_implementation/parNew/parNewGeneration.hpp
+2
-2
src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp
src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp
+3
-5
src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp
src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp
+3
-3
src/share/vm/memory/tenuredGeneration.cpp
src/share/vm/memory/tenuredGeneration.cpp
+2
-2
src/share/vm/precompiled/precompiled.hpp
src/share/vm/precompiled/precompiled.hpp
+2
-2
未找到文件。
make/jprt.properties
浏览文件 @
68d11eab
...
@@ -54,77 +54,77 @@ jprt.sync.push=false
...
@@ -54,77 +54,77 @@ jprt.sync.push=false
# Define the Solaris platforms we want for the various releases
# Define the Solaris platforms we want for the various releases
jprt.my.solaris.sparc.jdk8
=
solaris_sparc_5.10
jprt.my.solaris.sparc.jdk8
=
solaris_sparc_5.10
jprt.my.solaris.sparc.jdk7
=
solaris_sparc_5.10
jprt.my.solaris.sparc.jdk7
=
solaris_sparc_5.10
jprt.my.solaris.sparc.jdk7u
6
=
${jprt.my.solaris.sparc.jdk7}
jprt.my.solaris.sparc.jdk7u
8
=
${jprt.my.solaris.sparc.jdk7}
jprt.my.solaris.sparc
=
${jprt.my.solaris.sparc.${jprt.tools.default.release}}
jprt.my.solaris.sparc
=
${jprt.my.solaris.sparc.${jprt.tools.default.release}}
jprt.my.solaris.sparcv9.jdk8
=
solaris_sparcv9_5.10
jprt.my.solaris.sparcv9.jdk8
=
solaris_sparcv9_5.10
jprt.my.solaris.sparcv9.jdk7
=
solaris_sparcv9_5.10
jprt.my.solaris.sparcv9.jdk7
=
solaris_sparcv9_5.10
jprt.my.solaris.sparcv9.jdk7u
6
=
${jprt.my.solaris.sparcv9.jdk7}
jprt.my.solaris.sparcv9.jdk7u
8
=
${jprt.my.solaris.sparcv9.jdk7}
jprt.my.solaris.sparcv9
=
${jprt.my.solaris.sparcv9.${jprt.tools.default.release}}
jprt.my.solaris.sparcv9
=
${jprt.my.solaris.sparcv9.${jprt.tools.default.release}}
jprt.my.solaris.i586.jdk8
=
solaris_i586_5.10
jprt.my.solaris.i586.jdk8
=
solaris_i586_5.10
jprt.my.solaris.i586.jdk7
=
solaris_i586_5.10
jprt.my.solaris.i586.jdk7
=
solaris_i586_5.10
jprt.my.solaris.i586.jdk7u
6
=
${jprt.my.solaris.i586.jdk7}
jprt.my.solaris.i586.jdk7u
8
=
${jprt.my.solaris.i586.jdk7}
jprt.my.solaris.i586
=
${jprt.my.solaris.i586.${jprt.tools.default.release}}
jprt.my.solaris.i586
=
${jprt.my.solaris.i586.${jprt.tools.default.release}}
jprt.my.solaris.x64.jdk8
=
solaris_x64_5.10
jprt.my.solaris.x64.jdk8
=
solaris_x64_5.10
jprt.my.solaris.x64.jdk7
=
solaris_x64_5.10
jprt.my.solaris.x64.jdk7
=
solaris_x64_5.10
jprt.my.solaris.x64.jdk7u
6
=
${jprt.my.solaris.x64.jdk7}
jprt.my.solaris.x64.jdk7u
8
=
${jprt.my.solaris.x64.jdk7}
jprt.my.solaris.x64
=
${jprt.my.solaris.x64.${jprt.tools.default.release}}
jprt.my.solaris.x64
=
${jprt.my.solaris.x64.${jprt.tools.default.release}}
jprt.my.linux.i586.jdk8
=
linux_i586_2.6
jprt.my.linux.i586.jdk8
=
linux_i586_2.6
jprt.my.linux.i586.jdk7
=
linux_i586_2.6
jprt.my.linux.i586.jdk7
=
linux_i586_2.6
jprt.my.linux.i586.jdk7u
6
=
${jprt.my.linux.i586.jdk7}
jprt.my.linux.i586.jdk7u
8
=
${jprt.my.linux.i586.jdk7}
jprt.my.linux.i586
=
${jprt.my.linux.i586.${jprt.tools.default.release}}
jprt.my.linux.i586
=
${jprt.my.linux.i586.${jprt.tools.default.release}}
jprt.my.linux.x64.jdk8
=
linux_x64_2.6
jprt.my.linux.x64.jdk8
=
linux_x64_2.6
jprt.my.linux.x64.jdk7
=
linux_x64_2.6
jprt.my.linux.x64.jdk7
=
linux_x64_2.6
jprt.my.linux.x64.jdk7u
6
=
${jprt.my.linux.x64.jdk7}
jprt.my.linux.x64.jdk7u
8
=
${jprt.my.linux.x64.jdk7}
jprt.my.linux.x64
=
${jprt.my.linux.x64.${jprt.tools.default.release}}
jprt.my.linux.x64
=
${jprt.my.linux.x64.${jprt.tools.default.release}}
jprt.my.linux.ppc.jdk8
=
linux_ppc_2.6
jprt.my.linux.ppc.jdk8
=
linux_ppc_2.6
jprt.my.linux.ppc.jdk7
=
linux_ppc_2.6
jprt.my.linux.ppc.jdk7
=
linux_ppc_2.6
jprt.my.linux.ppc.jdk7u
6
=
${jprt.my.linux.ppc.jdk7}
jprt.my.linux.ppc.jdk7u
8
=
${jprt.my.linux.ppc.jdk7}
jprt.my.linux.ppc
=
${jprt.my.linux.ppc.${jprt.tools.default.release}}
jprt.my.linux.ppc
=
${jprt.my.linux.ppc.${jprt.tools.default.release}}
jprt.my.linux.ppcv2.jdk8
=
linux_ppcv2_2.6
jprt.my.linux.ppcv2.jdk8
=
linux_ppcv2_2.6
jprt.my.linux.ppcv2.jdk7
=
linux_ppcv2_2.6
jprt.my.linux.ppcv2.jdk7
=
linux_ppcv2_2.6
jprt.my.linux.ppcv2.jdk7u
6
=
${jprt.my.linux.ppcv2.jdk7}
jprt.my.linux.ppcv2.jdk7u
8
=
${jprt.my.linux.ppcv2.jdk7}
jprt.my.linux.ppcv2
=
${jprt.my.linux.ppcv2.${jprt.tools.default.release}}
jprt.my.linux.ppcv2
=
${jprt.my.linux.ppcv2.${jprt.tools.default.release}}
jprt.my.linux.ppcsflt.jdk8
=
linux_ppcsflt_2.6
jprt.my.linux.ppcsflt.jdk8
=
linux_ppcsflt_2.6
jprt.my.linux.ppcsflt.jdk7
=
linux_ppcsflt_2.6
jprt.my.linux.ppcsflt.jdk7
=
linux_ppcsflt_2.6
jprt.my.linux.ppcsflt.jdk7u
6
=
${jprt.my.linux.ppcsflt.jdk7}
jprt.my.linux.ppcsflt.jdk7u
8
=
${jprt.my.linux.ppcsflt.jdk7}
jprt.my.linux.ppcsflt
=
${jprt.my.linux.ppcsflt.${jprt.tools.default.release}}
jprt.my.linux.ppcsflt
=
${jprt.my.linux.ppcsflt.${jprt.tools.default.release}}
jprt.my.linux.armvfp.jdk8
=
linux_armvfp_2.6
jprt.my.linux.armvfp.jdk8
=
linux_armvfp_2.6
jprt.my.linux.armvfp.jdk7
=
linux_armvfp_2.6
jprt.my.linux.armvfp.jdk7
=
linux_armvfp_2.6
jprt.my.linux.armvfp.jdk7u
6
=
${jprt.my.linux.armvfp.jdk7}
jprt.my.linux.armvfp.jdk7u
8
=
${jprt.my.linux.armvfp.jdk7}
jprt.my.linux.armvfp
=
${jprt.my.linux.armvfp.${jprt.tools.default.release}}
jprt.my.linux.armvfp
=
${jprt.my.linux.armvfp.${jprt.tools.default.release}}
jprt.my.linux.armv6.jdk8
=
linux_armv6_2.6
jprt.my.linux.armv6.jdk8
=
linux_armv6_2.6
jprt.my.linux.armv6.jdk7
=
linux_armv6_2.6
jprt.my.linux.armv6.jdk7
=
linux_armv6_2.6
jprt.my.linux.armv6.jdk7u
6
=
${jprt.my.linux.armv6.jdk7}
jprt.my.linux.armv6.jdk7u
8
=
${jprt.my.linux.armv6.jdk7}
jprt.my.linux.armv6
=
${jprt.my.linux.armv6.${jprt.tools.default.release}}
jprt.my.linux.armv6
=
${jprt.my.linux.armv6.${jprt.tools.default.release}}
jprt.my.linux.armsflt.jdk8
=
linux_armsflt_2.6
jprt.my.linux.armsflt.jdk8
=
linux_armsflt_2.6
jprt.my.linux.armsflt.jdk7
=
linux_armsflt_2.6
jprt.my.linux.armsflt.jdk7
=
linux_armsflt_2.6
jprt.my.linux.armsflt.jdk7u
6
=
${jprt.my.linux.armsflt.jdk7}
jprt.my.linux.armsflt.jdk7u
8
=
${jprt.my.linux.armsflt.jdk7}
jprt.my.linux.armsflt
=
${jprt.my.linux.armsflt.${jprt.tools.default.release}}
jprt.my.linux.armsflt
=
${jprt.my.linux.armsflt.${jprt.tools.default.release}}
jprt.my.macosx.x64.jdk8
=
macosx_x64_10.7
jprt.my.macosx.x64.jdk8
=
macosx_x64_10.7
jprt.my.macosx.x64.jdk7
=
macosx_x64_10.7
jprt.my.macosx.x64.jdk7
=
macosx_x64_10.7
jprt.my.macosx.x64.jdk7u
6
=
${jprt.my.macosx.x64.jdk7}
jprt.my.macosx.x64.jdk7u
8
=
${jprt.my.macosx.x64.jdk7}
jprt.my.macosx.x64
=
${jprt.my.macosx.x64.${jprt.tools.default.release}}
jprt.my.macosx.x64
=
${jprt.my.macosx.x64.${jprt.tools.default.release}}
jprt.my.windows.i586.jdk8
=
windows_i586_5.1
jprt.my.windows.i586.jdk8
=
windows_i586_5.1
jprt.my.windows.i586.jdk7
=
windows_i586_5.1
jprt.my.windows.i586.jdk7
=
windows_i586_5.1
jprt.my.windows.i586.jdk7u
6
=
${jprt.my.windows.i586.jdk7}
jprt.my.windows.i586.jdk7u
8
=
${jprt.my.windows.i586.jdk7}
jprt.my.windows.i586
=
${jprt.my.windows.i586.${jprt.tools.default.release}}
jprt.my.windows.i586
=
${jprt.my.windows.i586.${jprt.tools.default.release}}
jprt.my.windows.x64.jdk8
=
windows_x64_5.2
jprt.my.windows.x64.jdk8
=
windows_x64_5.2
jprt.my.windows.x64.jdk7
=
windows_x64_5.2
jprt.my.windows.x64.jdk7
=
windows_x64_5.2
jprt.my.windows.x64.jdk7u
6
=
${jprt.my.windows.x64.jdk7}
jprt.my.windows.x64.jdk7u
8
=
${jprt.my.windows.x64.jdk7}
jprt.my.windows.x64
=
${jprt.my.windows.x64.${jprt.tools.default.release}}
jprt.my.windows.x64
=
${jprt.my.windows.x64.${jprt.tools.default.release}}
# Standard list of jprt build targets for this source tree
# Standard list of jprt build targets for this source tree
...
@@ -159,7 +159,7 @@ jprt.build.targets.all=${jprt.build.targets.standard}, \
...
@@ -159,7 +159,7 @@ jprt.build.targets.all=${jprt.build.targets.standard}, \
jprt.build.targets.jdk8
=
${jprt.build.targets.all}
jprt.build.targets.jdk8
=
${jprt.build.targets.all}
jprt.build.targets.jdk7
=
${jprt.build.targets.all}
jprt.build.targets.jdk7
=
${jprt.build.targets.all}
jprt.build.targets.jdk7u
6
=
${jprt.build.targets.all}
jprt.build.targets.jdk7u
8
=
${jprt.build.targets.all}
jprt.build.targets
=
${jprt.build.targets.${jprt.tools.default.release}}
jprt.build.targets
=
${jprt.build.targets.${jprt.tools.default.release}}
# Subset lists of test targets for this source tree
# Subset lists of test targets for this source tree
...
@@ -452,7 +452,7 @@ jprt.test.targets.embedded= \
...
@@ -452,7 +452,7 @@ jprt.test.targets.embedded= \
jprt.test.targets.jdk8
=
${jprt.test.targets.standard}
jprt.test.targets.jdk8
=
${jprt.test.targets.standard}
jprt.test.targets.jdk7
=
${jprt.test.targets.standard}
jprt.test.targets.jdk7
=
${jprt.test.targets.standard}
jprt.test.targets.jdk7u
6
=
${jprt.test.targets.jdk7}
jprt.test.targets.jdk7u
8
=
${jprt.test.targets.jdk7}
jprt.test.targets
=
${jprt.test.targets.${jprt.tools.default.release}}
jprt.test.targets
=
${jprt.test.targets.${jprt.tools.default.release}}
# The default test/Makefile targets that should be run
# The default test/Makefile targets that should be run
...
@@ -512,7 +512,7 @@ jprt.make.rule.test.targets.embedded = \
...
@@ -512,7 +512,7 @@ jprt.make.rule.test.targets.embedded = \
jprt.make.rule.test.targets.jdk8
=
${jprt.make.rule.test.targets.standard}
jprt.make.rule.test.targets.jdk8
=
${jprt.make.rule.test.targets.standard}
jprt.make.rule.test.targets.jdk7
=
${jprt.make.rule.test.targets.standard}
jprt.make.rule.test.targets.jdk7
=
${jprt.make.rule.test.targets.standard}
jprt.make.rule.test.targets.jdk7u
6
=
${jprt.make.rule.test.targets.jdk7}
jprt.make.rule.test.targets.jdk7u
8
=
${jprt.make.rule.test.targets.jdk7}
jprt.make.rule.test.targets
=
${jprt.make.rule.test.targets.${jprt.tools.default.release}}
jprt.make.rule.test.targets
=
${jprt.make.rule.test.targets.${jprt.tools.default.release}}
# 7155453: Work-around to prevent popups on OSX from blocking test completion
# 7155453: Work-around to prevent popups on OSX from blocking test completion
...
...
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
浏览文件 @
68d11eab
...
@@ -1891,6 +1891,8 @@ G1CollectedHeap::G1CollectedHeap(G1CollectorPolicy* policy_) :
...
@@ -1891,6 +1891,8 @@ G1CollectedHeap::G1CollectedHeap(G1CollectorPolicy* policy_) :
_young_list
(
new
YoungList
(
this
)),
_young_list
(
new
YoungList
(
this
)),
_gc_time_stamp
(
0
),
_gc_time_stamp
(
0
),
_retained_old_gc_alloc_region
(
NULL
),
_retained_old_gc_alloc_region
(
NULL
),
_survivor_plab_stats
(
YoungPLABSize
,
PLABWeight
),
_old_plab_stats
(
OldPLABSize
,
PLABWeight
),
_expand_heap_after_alloc_failure
(
true
),
_expand_heap_after_alloc_failure
(
true
),
_surviving_young_words
(
NULL
),
_surviving_young_words
(
NULL
),
_old_marking_cycles_started
(
0
),
_old_marking_cycles_started
(
0
),
...
@@ -4099,17 +4101,22 @@ size_t G1CollectedHeap::desired_plab_sz(GCAllocPurpose purpose)
...
@@ -4099,17 +4101,22 @@ size_t G1CollectedHeap::desired_plab_sz(GCAllocPurpose purpose)
size_t
gclab_word_size
;
size_t
gclab_word_size
;
switch
(
purpose
)
{
switch
(
purpose
)
{
case
GCAllocForSurvived
:
case
GCAllocForSurvived
:
gclab_word_size
=
YoungPLABSize
;
gclab_word_size
=
_survivor_plab_stats
.
desired_plab_sz
()
;
break
;
break
;
case
GCAllocForTenured
:
case
GCAllocForTenured
:
gclab_word_size
=
OldPLABSize
;
gclab_word_size
=
_old_plab_stats
.
desired_plab_sz
()
;
break
;
break
;
default:
default:
assert
(
false
,
"unknown GCAllocPurpose"
);
assert
(
false
,
"unknown GCAllocPurpose"
);
gclab_word_size
=
OldPLABSize
;
gclab_word_size
=
_old_plab_stats
.
desired_plab_sz
()
;
break
;
break
;
}
}
return
gclab_word_size
;
// Prevent humongous PLAB sizes for two reasons:
// * PLABs are allocated using a similar paths as oops, but should
// never be in a humongous region
// * Allowing humongous PLABs needlessly churns the region free lists
return
MIN2
(
_humongous_object_threshold_in_words
,
gclab_word_size
);
}
}
void
G1CollectedHeap
::
init_mutator_alloc_region
()
{
void
G1CollectedHeap
::
init_mutator_alloc_region
()
{
...
@@ -4165,6 +4172,11 @@ void G1CollectedHeap::release_gc_alloc_regions() {
...
@@ -4165,6 +4172,11 @@ void G1CollectedHeap::release_gc_alloc_regions() {
// want either way so no reason to check explicitly for either
// want either way so no reason to check explicitly for either
// condition.
// condition.
_retained_old_gc_alloc_region
=
_old_gc_alloc_region
.
release
();
_retained_old_gc_alloc_region
=
_old_gc_alloc_region
.
release
();
if
(
ResizePLAB
)
{
_survivor_plab_stats
.
adjust_desired_plab_sz
();
_old_plab_stats
.
adjust_desired_plab_sz
();
}
}
}
void
G1CollectedHeap
::
abandon_gc_alloc_regions
()
{
void
G1CollectedHeap
::
abandon_gc_alloc_regions
()
{
...
...
src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
浏览文件 @
68d11eab
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
#include "gc_implementation/g1/heapRegionSeq.hpp"
#include "gc_implementation/g1/heapRegionSeq.hpp"
#include "gc_implementation/g1/heapRegionSets.hpp"
#include "gc_implementation/g1/heapRegionSets.hpp"
#include "gc_implementation/shared/hSpaceCounters.hpp"
#include "gc_implementation/shared/hSpaceCounters.hpp"
#include "gc_implementation/
parNew
/parGCAllocBuffer.hpp"
#include "gc_implementation/
shared
/parGCAllocBuffer.hpp"
#include "memory/barrierSet.hpp"
#include "memory/barrierSet.hpp"
#include "memory/memRegion.hpp"
#include "memory/memRegion.hpp"
#include "memory/sharedHeap.hpp"
#include "memory/sharedHeap.hpp"
...
@@ -278,10 +278,33 @@ private:
...
@@ -278,10 +278,33 @@ private:
// survivor objects.
// survivor objects.
SurvivorGCAllocRegion
_survivor_gc_alloc_region
;
SurvivorGCAllocRegion
_survivor_gc_alloc_region
;
// PLAB sizing policy for survivors.
PLABStats
_survivor_plab_stats
;
// Alloc region used to satisfy allocation requests by the GC for
// Alloc region used to satisfy allocation requests by the GC for
// old objects.
// old objects.
OldGCAllocRegion
_old_gc_alloc_region
;
OldGCAllocRegion
_old_gc_alloc_region
;
// PLAB sizing policy for tenured objects.
PLABStats
_old_plab_stats
;
PLABStats
*
stats_for_purpose
(
GCAllocPurpose
purpose
)
{
PLABStats
*
stats
=
NULL
;
switch
(
purpose
)
{
case
GCAllocForSurvived
:
stats
=
&
_survivor_plab_stats
;
break
;
case
GCAllocForTenured
:
stats
=
&
_old_plab_stats
;
break
;
default:
assert
(
false
,
"unrecognized GCAllocPurpose"
);
}
return
stats
;
}
// The last old region we allocated to during the last GC.
// The last old region we allocated to during the last GC.
// Typically, it is not full so we should re-use it during the next GC.
// Typically, it is not full so we should re-use it during the next GC.
HeapRegion
*
_retained_old_gc_alloc_region
;
HeapRegion
*
_retained_old_gc_alloc_region
;
...
@@ -314,7 +337,7 @@ private:
...
@@ -314,7 +337,7 @@ private:
G1MonitoringSupport
*
_g1mm
;
G1MonitoringSupport
*
_g1mm
;
// Determines PLAB size for a particular allocation purpose.
// Determines PLAB size for a particular allocation purpose.
s
tatic
s
ize_t
desired_plab_sz
(
GCAllocPurpose
purpose
);
size_t
desired_plab_sz
(
GCAllocPurpose
purpose
);
// Outside of GC pauses, the number of bytes used in all regions other
// Outside of GC pauses, the number of bytes used in all regions other
// than the current allocation region.
// than the current allocation region.
...
@@ -1811,19 +1834,19 @@ public:
...
@@ -1811,19 +1834,19 @@ public:
}
}
HeapWord
*
allocate_slow
(
GCAllocPurpose
purpose
,
size_t
word_sz
)
{
HeapWord
*
allocate_slow
(
GCAllocPurpose
purpose
,
size_t
word_sz
)
{
HeapWord
*
obj
=
NULL
;
HeapWord
*
obj
=
NULL
;
size_t
gclab_word_size
=
_g1h
->
desired_plab_sz
(
purpose
);
size_t
gclab_word_size
=
_g1h
->
desired_plab_sz
(
purpose
);
if
(
word_sz
*
100
<
gclab_word_size
*
ParallelGCBufferWastePct
)
{
if
(
word_sz
*
100
<
gclab_word_size
*
ParallelGCBufferWastePct
)
{
G1ParGCAllocBuffer
*
alloc_buf
=
alloc_buffer
(
purpose
);
G1ParGCAllocBuffer
*
alloc_buf
=
alloc_buffer
(
purpose
);
assert
(
gclab_word_size
==
alloc_buf
->
word_sz
(),
"dynamic resizing is not supported"
);
add_to_alloc_buffer_waste
(
alloc_buf
->
words_remaining
());
add_to_alloc_buffer_waste
(
alloc_buf
->
words_remaining
());
alloc_buf
->
retire
(
false
,
false
);
alloc_buf
->
flush_stats_and_retire
(
_g1h
->
stats_for_purpose
(
purpose
),
false
/* end_of_gc */
,
false
/* retain */
);
HeapWord
*
buf
=
_g1h
->
par_allocate_during_gc
(
purpose
,
gclab_word_size
);
HeapWord
*
buf
=
_g1h
->
par_allocate_during_gc
(
purpose
,
gclab_word_size
);
if
(
buf
==
NULL
)
return
NULL
;
// Let caller handle allocation failure.
if
(
buf
==
NULL
)
return
NULL
;
// Let caller handle allocation failure.
// Otherwise.
// Otherwise.
alloc_buf
->
set_word_size
(
gclab_word_size
);
alloc_buf
->
set_buf
(
buf
);
alloc_buf
->
set_buf
(
buf
);
obj
=
alloc_buf
->
allocate
(
word_sz
);
obj
=
alloc_buf
->
allocate
(
word_sz
);
...
@@ -1908,7 +1931,9 @@ public:
...
@@ -1908,7 +1931,9 @@ public:
for
(
int
ap
=
0
;
ap
<
GCAllocPurposeCount
;
++
ap
)
{
for
(
int
ap
=
0
;
ap
<
GCAllocPurposeCount
;
++
ap
)
{
size_t
waste
=
_alloc_buffers
[
ap
]
->
words_remaining
();
size_t
waste
=
_alloc_buffers
[
ap
]
->
words_remaining
();
add_to_alloc_buffer_waste
(
waste
);
add_to_alloc_buffer_waste
(
waste
);
_alloc_buffers
[
ap
]
->
retire
(
true
,
false
);
_alloc_buffers
[
ap
]
->
flush_stats_and_retire
(
_g1h
->
stats_for_purpose
((
GCAllocPurpose
)
ap
),
true
/* end_of_gc */
,
false
/* retain */
);
}
}
}
}
...
...
src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
浏览文件 @
68d11eab
...
@@ -24,11 +24,11 @@
...
@@ -24,11 +24,11 @@
#include "precompiled.hpp"
#include "precompiled.hpp"
#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
#include "gc_implementation/parNew/parGCAllocBuffer.hpp"
#include "gc_implementation/parNew/parNewGeneration.hpp"
#include "gc_implementation/parNew/parNewGeneration.hpp"
#include "gc_implementation/parNew/parOopClosures.inline.hpp"
#include "gc_implementation/parNew/parOopClosures.inline.hpp"
#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
#include "gc_implementation/shared/adaptiveSizePolicy.hpp"
#include "gc_implementation/shared/ageTable.hpp"
#include "gc_implementation/shared/ageTable.hpp"
#include "gc_implementation/shared/parGCAllocBuffer.hpp"
#include "gc_implementation/shared/spaceDecorator.hpp"
#include "gc_implementation/shared/spaceDecorator.hpp"
#include "memory/defNewGeneration.inline.hpp"
#include "memory/defNewGeneration.inline.hpp"
#include "memory/genCollectedHeap.hpp"
#include "memory/genCollectedHeap.hpp"
...
@@ -453,7 +453,8 @@ void ParScanThreadStateSet::flush()
...
@@ -453,7 +453,8 @@ void ParScanThreadStateSet::flush()
// retire the last buffer.
// retire the last buffer.
par_scan_state
.
to_space_alloc_buffer
()
->
par_scan_state
.
to_space_alloc_buffer
()
->
flush_stats_and_retire
(
_gen
.
plab_stats
(),
flush_stats_and_retire
(
_gen
.
plab_stats
(),
false
/* !retain */
);
true
/* end_of_gc */
,
false
/* retain */
);
// Every thread has its own age table. We need to merge
// Every thread has its own age table. We need to merge
// them all into one.
// them all into one.
...
...
src/share/vm/gc_implementation/parNew/parNewGeneration.hpp
浏览文件 @
68d11eab
/*
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
2
, Oracle and/or its affiliates. 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
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARNEWGENERATION_HPP
#ifndef SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARNEWGENERATION_HPP
#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARNEWGENERATION_HPP
#define SHARE_VM_GC_IMPLEMENTATION_PARNEW_PARNEWGENERATION_HPP
#include "gc_implementation/
parNew
/parGCAllocBuffer.hpp"
#include "gc_implementation/
shared
/parGCAllocBuffer.hpp"
#include "memory/defNewGeneration.hpp"
#include "memory/defNewGeneration.hpp"
#include "utilities/taskqueue.hpp"
#include "utilities/taskqueue.hpp"
...
...
src/share/vm/gc_implementation/
parNew
/parGCAllocBuffer.cpp
→
src/share/vm/gc_implementation/
shared
/parGCAllocBuffer.cpp
浏览文件 @
68d11eab
/*
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
2
, Oracle and/or its affiliates. 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
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
*/
*/
#include "precompiled.hpp"
#include "precompiled.hpp"
#include "gc_implementation/
parNew
/parGCAllocBuffer.hpp"
#include "gc_implementation/
shared
/parGCAllocBuffer.hpp"
#include "memory/sharedHeap.hpp"
#include "memory/sharedHeap.hpp"
#include "oops/arrayOop.hpp"
#include "oops/arrayOop.hpp"
#include "oops/oop.inline.hpp"
#include "oops/oop.inline.hpp"
...
@@ -110,9 +110,7 @@ void PLABStats::adjust_desired_plab_sz() {
...
@@ -110,9 +110,7 @@ void PLABStats::adjust_desired_plab_sz() {
plab_sz
=
align_object_size
(
plab_sz
);
plab_sz
=
align_object_size
(
plab_sz
);
// Latch the result
// Latch the result
if
(
PrintPLAB
)
gclog_or_tty
->
print
(
" desired_plab_sz = %d) "
,
plab_sz
);
if
(
PrintPLAB
)
gclog_or_tty
->
print
(
" desired_plab_sz = %d) "
,
plab_sz
);
if
(
ResizePLAB
)
{
_desired_plab_sz
=
plab_sz
;
_desired_plab_sz
=
plab_sz
;
}
// Now clear the accumulators for next round:
// Now clear the accumulators for next round:
// note this needs to be fixed in the case where we
// note this needs to be fixed in the case where we
// are retaining across scavenges. FIX ME !!! XXX
// are retaining across scavenges. FIX ME !!! XXX
...
...
src/share/vm/gc_implementation/
parNew
/parGCAllocBuffer.hpp
→
src/share/vm/gc_implementation/
shared
/parGCAllocBuffer.hpp
浏览文件 @
68d11eab
/*
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
2
, Oracle and/or its affiliates. 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
...
@@ -121,14 +121,14 @@ public:
...
@@ -121,14 +121,14 @@ public:
// Flush the stats supporting ergonomic sizing of PLAB's
// Flush the stats supporting ergonomic sizing of PLAB's
void
flush_stats
(
PLABStats
*
stats
);
void
flush_stats
(
PLABStats
*
stats
);
void
flush_stats_and_retire
(
PLABStats
*
stats
,
bool
retain
)
{
void
flush_stats_and_retire
(
PLABStats
*
stats
,
bool
end_of_gc
,
bool
retain
)
{
// We flush the stats first in order to get a reading of
// We flush the stats first in order to get a reading of
// unused space in the last buffer.
// unused space in the last buffer.
if
(
ResizePLAB
)
{
if
(
ResizePLAB
)
{
flush_stats
(
stats
);
flush_stats
(
stats
);
}
}
// Retire the last allocation buffer.
// Retire the last allocation buffer.
retire
(
true
,
retain
);
retire
(
end_of_gc
,
retain
);
}
}
// Force future allocations to fail and queries for contains()
// Force future allocations to fail and queries for contains()
...
...
src/share/vm/memory/tenuredGeneration.cpp
浏览文件 @
68d11eab
/*
/*
* Copyright (c) 2001, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 201
2
, Oracle and/or its affiliates. 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
...
@@ -23,8 +23,8 @@
...
@@ -23,8 +23,8 @@
*/
*/
#include "precompiled.hpp"
#include "precompiled.hpp"
#include "gc_implementation/parNew/parGCAllocBuffer.hpp"
#include "gc_implementation/shared/collectorCounters.hpp"
#include "gc_implementation/shared/collectorCounters.hpp"
#include "gc_implementation/shared/parGCAllocBuffer.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/blockOffsetTable.inline.hpp"
#include "memory/blockOffsetTable.inline.hpp"
#include "memory/generation.inline.hpp"
#include "memory/generation.inline.hpp"
...
...
src/share/vm/precompiled/precompiled.hpp
浏览文件 @
68d11eab
/*
/*
* Copyright (c) 2010, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 201
2
, Oracle and/or its affiliates. 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
...
@@ -306,7 +306,6 @@
...
@@ -306,7 +306,6 @@
# include "gc_implementation/g1/g1_specialized_oop_closures.hpp"
# include "gc_implementation/g1/g1_specialized_oop_closures.hpp"
# include "gc_implementation/g1/ptrQueue.hpp"
# include "gc_implementation/g1/ptrQueue.hpp"
# include "gc_implementation/g1/satbQueue.hpp"
# include "gc_implementation/g1/satbQueue.hpp"
# include "gc_implementation/parNew/parGCAllocBuffer.hpp"
# include "gc_implementation/parNew/parOopClosures.hpp"
# include "gc_implementation/parNew/parOopClosures.hpp"
# include "gc_implementation/parallelScavenge/objectStartArray.hpp"
# include "gc_implementation/parallelScavenge/objectStartArray.hpp"
# include "gc_implementation/parallelScavenge/parMarkBitMap.hpp"
# include "gc_implementation/parallelScavenge/parMarkBitMap.hpp"
...
@@ -322,6 +321,7 @@
...
@@ -322,6 +321,7 @@
# include "gc_implementation/parallelScavenge/psYoungGen.hpp"
# include "gc_implementation/parallelScavenge/psYoungGen.hpp"
# include "gc_implementation/shared/gcAdaptivePolicyCounters.hpp"
# include "gc_implementation/shared/gcAdaptivePolicyCounters.hpp"
# include "gc_implementation/shared/gcPolicyCounters.hpp"
# include "gc_implementation/shared/gcPolicyCounters.hpp"
# include "gc_implementation/shared/parGCAllocBuffer.hpp"
#endif // SERIALGC
#endif // SERIALGC
#endif // !DONT_USE_PRECOMPILED_HEADER
#endif // !DONT_USE_PRECOMPILED_HEADER
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录