Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
01fb8f26
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看板
提交
01fb8f26
编写于
12月 08, 2013
作者:
M
mgronlun
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
d699ae08
4c1c0e75
变更
54
隐藏空白更改
内联
并排
Showing
54 changed file
with
124 addition
and
152 deletion
+124
-152
.hgtags
.hgtags
+2
-0
agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java
...n/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java
+4
-4
agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java
...s/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java
+8
-1
make/hotspot_version
make/hotspot_version
+1
-1
src/cpu/sparc/vm/vm_version_sparc.cpp
src/cpu/sparc/vm/vm_version_sparc.cpp
+21
-6
src/cpu/sparc/vm/vm_version_sparc.hpp
src/cpu/sparc/vm/vm_version_sparc.hpp
+7
-1
src/cpu/x86/vm/c1_Runtime1_x86.cpp
src/cpu/x86/vm/c1_Runtime1_x86.cpp
+11
-18
src/cpu/x86/vm/macroAssembler_x86.cpp
src/cpu/x86/vm/macroAssembler_x86.cpp
+18
-34
src/share/vm/gc_implementation/shared/markSweep.cpp
src/share/vm/gc_implementation/shared/markSweep.cpp
+0
-19
src/share/vm/gc_implementation/shared/markSweep.hpp
src/share/vm/gc_implementation/shared/markSweep.hpp
+0
-2
src/share/vm/gc_implementation/shared/markSweep.inline.hpp
src/share/vm/gc_implementation/shared/markSweep.inline.hpp
+5
-0
src/share/vm/oops/instanceKlass.cpp
src/share/vm/oops/instanceKlass.cpp
+0
-1
src/share/vm/oops/instanceMirrorKlass.cpp
src/share/vm/oops/instanceMirrorKlass.cpp
+7
-12
src/share/vm/oops/objArrayKlass.cpp
src/share/vm/oops/objArrayKlass.cpp
+0
-1
src/share/vm/opto/c2_globals.hpp
src/share/vm/opto/c2_globals.hpp
+1
-1
src/share/vm/runtime/arguments.cpp
src/share/vm/runtime/arguments.cpp
+0
-12
test/compiler/intrinsics/mathexact/AddExactICondTest.java
test/compiler/intrinsics/mathexact/AddExactICondTest.java
+1
-1
test/compiler/intrinsics/mathexact/AddExactIConstantTest.java
.../compiler/intrinsics/mathexact/AddExactIConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/AddExactILoadTest.java
test/compiler/intrinsics/mathexact/AddExactILoadTest.java
+1
-1
test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java
...iler/intrinsics/mathexact/AddExactILoopDependentTest.java
+1
-1
test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java
...mpiler/intrinsics/mathexact/AddExactINonConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java
test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java
+1
-1
test/compiler/intrinsics/mathexact/AddExactLConstantTest.java
.../compiler/intrinsics/mathexact/AddExactLConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java
...mpiler/intrinsics/mathexact/AddExactLNonConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/CompareTest.java
test/compiler/intrinsics/mathexact/CompareTest.java
+1
-1
test/compiler/intrinsics/mathexact/DecExactITest.java
test/compiler/intrinsics/mathexact/DecExactITest.java
+1
-1
test/compiler/intrinsics/mathexact/DecExactLTest.java
test/compiler/intrinsics/mathexact/DecExactLTest.java
+2
-2
test/compiler/intrinsics/mathexact/GVNTest.java
test/compiler/intrinsics/mathexact/GVNTest.java
+1
-1
test/compiler/intrinsics/mathexact/IncExactITest.java
test/compiler/intrinsics/mathexact/IncExactITest.java
+1
-1
test/compiler/intrinsics/mathexact/IncExactLTest.java
test/compiler/intrinsics/mathexact/IncExactLTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactICondTest.java
test/compiler/intrinsics/mathexact/MulExactICondTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactIConstantTest.java
.../compiler/intrinsics/mathexact/MulExactIConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactILoadTest.java
test/compiler/intrinsics/mathexact/MulExactILoadTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java
...iler/intrinsics/mathexact/MulExactILoopDependentTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java
...mpiler/intrinsics/mathexact/MulExactINonConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java
test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactLConstantTest.java
.../compiler/intrinsics/mathexact/MulExactLConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java
...mpiler/intrinsics/mathexact/MulExactLNonConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/NegExactIConstantTest.java
.../compiler/intrinsics/mathexact/NegExactIConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/NegExactILoadTest.java
test/compiler/intrinsics/mathexact/NegExactILoadTest.java
+1
-1
test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java
...iler/intrinsics/mathexact/NegExactILoopDependentTest.java
+1
-1
test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java
...mpiler/intrinsics/mathexact/NegExactINonConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/NegExactLConstantTest.java
.../compiler/intrinsics/mathexact/NegExactLConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java
...mpiler/intrinsics/mathexact/NegExactLNonConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/NestedMathExactTest.java
test/compiler/intrinsics/mathexact/NestedMathExactTest.java
+1
-1
test/compiler/intrinsics/mathexact/SplitThruPhiTest.java
test/compiler/intrinsics/mathexact/SplitThruPhiTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactICondTest.java
test/compiler/intrinsics/mathexact/SubExactICondTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactIConstantTest.java
.../compiler/intrinsics/mathexact/SubExactIConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactILoadTest.java
test/compiler/intrinsics/mathexact/SubExactILoadTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java
...iler/intrinsics/mathexact/SubExactILoopDependentTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java
...mpiler/intrinsics/mathexact/SubExactINonConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java
test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactLConstantTest.java
.../compiler/intrinsics/mathexact/SubExactLConstantTest.java
+1
-1
test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java
...mpiler/intrinsics/mathexact/SubExactLNonConstantTest.java
+1
-1
未找到文件。
.hgtags
浏览文件 @
01fb8f26
...
...
@@ -399,3 +399,5 @@ f573d00213b7170c2ff856f9cd83cd148437f5b9 jdk8-b117
abad3b2d905d9e1ad767c94baa94aba6ed5b207b hs25-b60
c9f439732b18ea16f7e65815327d5ea7092cc258 jdk8-b118
b2426da30009cd3069d03de073f351e6432c7682 hs25-b61
ce42d815dd2130250acf6132b51b624001638f0d jdk8-b119
05fedd51e40da22c9460bf17c7185889e435db3d hs25-b62
agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java
浏览文件 @
01fb8f26
...
...
@@ -103,14 +103,14 @@ public class G1HeapRegionTable extends VMObject {
@Override
public
void
remove
()
{
/* not supported */
}
HeapRegionIterator
(
Address
addr
)
{
HeapRegionIterator
(
long
committedLength
)
{
index
=
0
;
length
=
length
()
;
length
=
committedLength
;
}
}
public
Iterator
<
HeapRegion
>
heapRegionIterator
()
{
return
new
HeapRegionIterator
(
addr
);
public
Iterator
<
HeapRegion
>
heapRegionIterator
(
long
committedLength
)
{
return
new
HeapRegionIterator
(
committedLength
);
}
public
G1HeapRegionTable
(
Address
addr
)
{
...
...
agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java
浏览文件 @
01fb8f26
...
...
@@ -42,6 +42,8 @@ import sun.jvm.hotspot.types.TypeDataBase;
public
class
HeapRegionSeq
extends
VMObject
{
// G1HeapRegionTable _regions
static
private
long
regionsFieldOffset
;
// uint _committed_length
static
private
CIntegerField
committedLengthField
;
static
{
VM
.
registerVMInitializedObserver
(
new
Observer
()
{
...
...
@@ -55,6 +57,7 @@ public class HeapRegionSeq extends VMObject {
Type
type
=
db
.
lookupType
(
"HeapRegionSeq"
);
regionsFieldOffset
=
type
.
getField
(
"_regions"
).
getOffset
();
committedLengthField
=
type
.
getCIntegerField
(
"_committed_length"
);
}
private
G1HeapRegionTable
regions
()
{
...
...
@@ -67,8 +70,12 @@ public class HeapRegionSeq extends VMObject {
return
regions
().
length
();
}
public
long
committedLength
()
{
return
committedLengthField
.
getValue
(
addr
);
}
public
Iterator
<
HeapRegion
>
heapRegionIterator
()
{
return
regions
().
heapRegionIterator
();
return
regions
().
heapRegionIterator
(
committedLength
()
);
}
public
HeapRegionSeq
(
Address
addr
)
{
...
...
make/hotspot_version
浏览文件 @
01fb8f26
...
...
@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2013
HS_MAJOR_VER=25
HS_MINOR_VER=0
HS_BUILD_NUMBER=6
2
HS_BUILD_NUMBER=6
3
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
...
...
src/cpu/sparc/vm/vm_version_sparc.cpp
浏览文件 @
01fb8f26
...
...
@@ -89,6 +89,27 @@ void VM_Version::initialize() {
_supports_cx8
=
has_v9
();
_supports_atomic_getset4
=
true
;
// swap instruction
// There are Fujitsu Sparc64 CPUs which support blk_init as well so
// we have to take this check out of the 'is_niagara()' block below.
if
(
has_blk_init
())
{
// When using CMS or G1, we cannot use memset() in BOT updates
// because the sun4v/CMT version in libc_psr uses BIS which
// exposes "phantom zeros" to concurrent readers. See 6948537.
if
(
FLAG_IS_DEFAULT
(
UseMemSetInBOT
)
&&
(
UseConcMarkSweepGC
||
UseG1GC
))
{
FLAG_SET_DEFAULT
(
UseMemSetInBOT
,
false
);
}
// Issue a stern warning if the user has explicitly set
// UseMemSetInBOT (it is known to cause issues), but allow
// use for experimentation and debugging.
if
(
UseConcMarkSweepGC
||
UseG1GC
)
{
if
(
UseMemSetInBOT
)
{
assert
(
!
FLAG_IS_DEFAULT
(
UseMemSetInBOT
),
"Error"
);
warning
(
"Experimental flag -XX:+UseMemSetInBOT is known to cause instability"
" on sun4v; please understand that you are using at your own risk!"
);
}
}
}
if
(
is_niagara
())
{
// Indirect branch is the same cost as direct
if
(
FLAG_IS_DEFAULT
(
UseInlineCaches
))
{
...
...
@@ -98,12 +119,6 @@ void VM_Version::initialize() {
if
(
FLAG_IS_DEFAULT
(
OptoLoopAlignment
))
{
FLAG_SET_DEFAULT
(
OptoLoopAlignment
,
4
);
}
// When using CMS or G1, we cannot use memset() in BOT updates
// because the sun4v/CMT version in libc_psr uses BIS which
// exposes "phantom zeros" to concurrent readers. See 6948537.
if
(
FLAG_IS_DEFAULT
(
UseMemSetInBOT
)
&&
(
UseConcMarkSweepGC
||
UseG1GC
))
{
FLAG_SET_DEFAULT
(
UseMemSetInBOT
,
false
);
}
#ifdef _LP64
// 32-bit oops don't make sense for the 64-bit VM on sparc
// since the 32-bit VM has the same registers and smaller objects.
...
...
src/cpu/sparc/vm/vm_version_sparc.hpp
浏览文件 @
01fb8f26
...
...
@@ -94,7 +94,13 @@ protected:
static
bool
is_M_family
(
int
features
)
{
return
(
features
&
M_family_m
)
!=
0
;
}
static
bool
is_T_family
(
int
features
)
{
return
(
features
&
T_family_m
)
!=
0
;
}
static
bool
is_niagara
()
{
return
is_T_family
(
_features
);
}
DEBUG_ONLY
(
static
bool
is_niagara
(
int
features
)
{
return
(
features
&
sun4v_m
)
!=
0
;
}
)
#ifdef ASSERT
static
bool
is_niagara
(
int
features
)
{
// 'sun4v_m' may be defined on both Sun/Oracle Sparc CPUs as well as
// on Fujitsu Sparc64 CPUs, but only Sun/Oracle Sparcs can be 'niagaras'.
return
(
features
&
sun4v_m
)
!=
0
&&
(
features
&
sparc64_family_m
)
==
0
;
}
#endif
// Returns true if it is niagara1 (T1).
static
bool
is_T1_model
(
int
features
)
{
return
is_T_family
(
features
)
&&
((
features
&
T1_model_m
)
!=
0
);
}
...
...
src/cpu/x86/vm/c1_Runtime1_x86.cpp
浏览文件 @
01fb8f26
...
...
@@ -1719,10 +1719,12 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
BarrierSet
*
bs
=
Universe
::
heap
()
->
barrier_set
();
CardTableModRefBS
*
ct
=
(
CardTableModRefBS
*
)
bs
;
assert
(
sizeof
(
*
ct
->
byte_map_base
)
==
sizeof
(
jbyte
),
"adjust this code"
);
Label
done
;
Label
runtime
;
// At this point we know new_value is non-NULL and the new_value crosses reg
sion
.
// At this point we know new_value is non-NULL and the new_value crosses reg
ions
.
// Must check to see if card is already dirty
const
Register
thread
=
NOT_LP64
(
rax
)
LP64_ONLY
(
r15_thread
);
...
...
@@ -1735,26 +1737,17 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
__
push
(
rax
);
__
push
(
rcx
);
NOT_LP64
(
__
get_thread
(
thread
);)
ExternalAddress
cardtable
((
address
)
ct
->
byte_map_base
);
assert
(
sizeof
(
*
ct
->
byte_map_base
)
==
sizeof
(
jbyte
),
"adjust this code"
);
const
Register
cardtable
=
rax
;
const
Register
card_addr
=
rcx
;
#ifdef _LP64
const
Register
tmp
=
rscratch1
;
f
.
load_argument
(
0
,
card_addr
);
__
shrq
(
card_addr
,
CardTableModRefBS
::
card_shift
);
__
lea
(
tmp
,
cardtable
);
// get the address of the card
__
addq
(
card_addr
,
tmp
);
#else
const
Register
card_index
=
rcx
;
f
.
load_argument
(
0
,
card_index
);
__
shrl
(
card_index
,
CardTableModRefBS
::
card_shift
);
__
shrptr
(
card_addr
,
CardTableModRefBS
::
card_shift
);
// Do not use ExternalAddress to load 'byte_map_base', since 'byte_map_base' is NOT
// a valid address and therefore is not properly handled by the relocation code.
__
movptr
(
cardtable
,
(
intptr_t
)
ct
->
byte_map_base
);
__
addptr
(
card_addr
,
cardtable
);
Address
index
(
noreg
,
card_index
,
Address
::
times_1
);
__
leal
(
card_addr
,
__
as_Address
(
ArrayAddress
(
cardtable
,
index
)));
#endif
NOT_LP64
(
__
get_thread
(
thread
);)
__
cmpb
(
Address
(
card_addr
,
0
),
(
int
)
G1SATBCardTableModRefBS
::
g1_young_card_val
());
__
jcc
(
Assembler
::
equal
,
done
);
...
...
src/cpu/x86/vm/macroAssembler_x86.cpp
浏览文件 @
01fb8f26
...
...
@@ -3354,6 +3354,8 @@ void MacroAssembler::g1_write_barrier_post(Register store_addr,
BarrierSet
*
bs
=
Universe
::
heap
()
->
barrier_set
();
CardTableModRefBS
*
ct
=
(
CardTableModRefBS
*
)
bs
;
assert
(
sizeof
(
*
ct
->
byte_map_base
)
==
sizeof
(
jbyte
),
"adjust this code"
);
Label
done
;
Label
runtime
;
...
...
@@ -3371,28 +3373,16 @@ void MacroAssembler::g1_write_barrier_post(Register store_addr,
// storing region crossing non-NULL, is card already dirty?
ExternalAddress
cardtable
((
address
)
ct
->
byte_map_base
);
assert
(
sizeof
(
*
ct
->
byte_map_base
)
==
sizeof
(
jbyte
),
"adjust this code"
);
#ifdef _LP64
const
Register
card_addr
=
tmp
;
const
Register
cardtable
=
tmp2
;
movq
(
card_addr
,
store_addr
);
shrq
(
card_addr
,
CardTableModRefBS
::
card_shift
);
lea
(
tmp2
,
cardtable
);
movptr
(
card_addr
,
store_addr
);
shrptr
(
card_addr
,
CardTableModRefBS
::
card_shift
);
// Do not use ExternalAddress to load 'byte_map_base', since 'byte_map_base' is NOT
// a valid address and therefore is not properly handled by the relocation code.
movptr
(
cardtable
,
(
intptr_t
)
ct
->
byte_map_base
);
addptr
(
card_addr
,
cardtable
);
// get the address of the card
addq
(
card_addr
,
tmp2
);
#else
const
Register
card_index
=
tmp
;
movl
(
card_index
,
store_addr
);
shrl
(
card_index
,
CardTableModRefBS
::
card_shift
);
Address
index
(
noreg
,
card_index
,
Address
::
times_1
);
const
Register
card_addr
=
tmp
;
lea
(
card_addr
,
as_Address
(
ArrayAddress
(
cardtable
,
index
)));
#endif
cmpb
(
Address
(
card_addr
,
0
),
(
int
)
G1SATBCardTableModRefBS
::
g1_young_card_val
());
jcc
(
Assembler
::
equal
,
done
);
...
...
@@ -3416,7 +3406,7 @@ void MacroAssembler::g1_write_barrier_post(Register store_addr,
movq
(
Address
(
tmp2
,
0
),
card_addr
);
#else
addl
(
tmp2
,
queue_index
);
movl
(
Address
(
tmp2
,
0
),
card_
index
);
movl
(
Address
(
tmp2
,
0
),
card_
addr
);
#endif
jmp
(
done
);
...
...
@@ -3468,25 +3458,19 @@ void MacroAssembler::store_check_part_2(Register obj) {
// The calculation for byte_map_base is as follows:
// byte_map_base = _byte_map - (uintptr_t(low_bound) >> card_shift);
// So this essentially converts an address to a displacement and
// it will never need to be relocated. On 64bit however the value may be too
// large for a 32bit displacement
// So this essentially converts an address to a displacement and it will
// never need to be relocated. On 64bit however the value may be too
// large for a 32bit displacement.
intptr_t
disp
=
(
intptr_t
)
ct
->
byte_map_base
;
if
(
is_simm32
(
disp
))
{
Address
cardtable
(
noreg
,
obj
,
Address
::
times_1
,
disp
);
movb
(
cardtable
,
0
);
}
else
{
// By doing it as an ExternalAddress disp could be converted to a rip-relative
// displacement and done in a single instruction given favorable mapping and
// a smarter version of as_Address. Worst case it is two instructions which
// is no worse off then loading disp into a register and doing as a simple
// Address() as above.
// We can't do as ExternalAddress as the only style since if disp == 0 we'll
// assert since NULL isn't acceptable in a reloci (see 6644928). In any case
// in some cases we'll get a single instruction version.
ExternalAddress
cardtable
((
address
)
disp
);
// By doing it as an ExternalAddress 'disp' could be converted to a rip-relative
// displacement and done in a single instruction given favorable mapping and a
// smarter version of as_Address. However, 'ExternalAddress' generates a relocation
// entry and that entry is not properly handled by the relocation code.
AddressLiteral
cardtable
((
address
)
ct
->
byte_map_base
,
relocInfo
::
none
);
Address
index
(
noreg
,
obj
,
Address
::
times_1
);
movb
(
as_Address
(
ArrayAddress
(
cardtable
,
index
)),
0
);
}
...
...
src/share/vm/gc_implementation/shared/markSweep.cpp
浏览文件 @
01fb8f26
...
...
@@ -66,29 +66,10 @@ void MarkSweep::AdjustKlassClosure::do_klass(Klass* klass) {
klass
->
oops_do
(
&
MarkSweep
::
adjust_pointer_closure
);
}
void
MarkSweep
::
follow_klass
(
Klass
*
klass
)
{
ClassLoaderData
*
cld
=
klass
->
class_loader_data
();
// The actual processing of the klass is done when we
// traverse the list of Klasses in the class loader data.
MarkSweep
::
follow_class_loader
(
cld
);
}
void
MarkSweep
::
adjust_klass
(
Klass
*
klass
)
{
ClassLoaderData
*
cld
=
klass
->
class_loader_data
();
// The actual processing of the klass is done when we
// traverse the list of Klasses in the class loader data.
MarkSweep
::
adjust_class_loader
(
cld
);
}
void
MarkSweep
::
follow_class_loader
(
ClassLoaderData
*
cld
)
{
cld
->
oops_do
(
&
MarkSweep
::
mark_and_push_closure
,
&
MarkSweep
::
follow_klass_closure
,
true
);
}
void
MarkSweep
::
adjust_class_loader
(
ClassLoaderData
*
cld
)
{
cld
->
oops_do
(
&
MarkSweep
::
adjust_pointer_closure
,
&
MarkSweep
::
adjust_klass_closure
,
true
);
}
void
MarkSweep
::
follow_stack
()
{
do
{
while
(
!
_marking_stack
.
is_empty
())
{
...
...
src/share/vm/gc_implementation/shared/markSweep.hpp
浏览文件 @
01fb8f26
...
...
@@ -172,10 +172,8 @@ class MarkSweep : AllStatic {
static
void
follow_stack
();
// Empty marking stack.
static
void
follow_klass
(
Klass
*
klass
);
static
void
adjust_klass
(
Klass
*
klass
);
static
void
follow_class_loader
(
ClassLoaderData
*
cld
);
static
void
adjust_class_loader
(
ClassLoaderData
*
cld
);
static
void
preserve_mark
(
oop
p
,
markOop
mark
);
// Save the mark word so it can be restored later
...
...
src/share/vm/gc_implementation/shared/markSweep.inline.hpp
浏览文件 @
01fb8f26
...
...
@@ -44,6 +44,11 @@ inline void MarkSweep::mark_object(oop obj) {
}
}
inline
void
MarkSweep
::
follow_klass
(
Klass
*
klass
)
{
oop
op
=
klass
->
klass_holder
();
MarkSweep
::
mark_and_push
(
&
op
);
}
template
<
class
T
>
inline
void
MarkSweep
::
follow_root
(
T
*
p
)
{
assert
(
!
Universe
::
heap
()
->
is_in_reserved
(
p
),
"roots shouldn't be things within the heap"
);
...
...
src/share/vm/oops/instanceKlass.cpp
浏览文件 @
01fb8f26
...
...
@@ -2180,7 +2180,6 @@ int InstanceKlass::oop_adjust_pointers(oop obj) {
obj
,
\
MarkSweep
::
adjust_pointer
(
p
),
\
assert_is_in
)
MarkSweep
::
adjust_klass
(
obj
->
klass
());
return
size
;
}
...
...
src/share/vm/oops/instanceMirrorKlass.cpp
浏览文件 @
01fb8f26
...
...
@@ -155,7 +155,13 @@ void InstanceMirrorKlass::oop_follow_contents(oop obj) {
// Follow the klass field in the mirror.
Klass
*
klass
=
java_lang_Class
::
as_Klass
(
obj
);
if
(
klass
!=
NULL
)
{
MarkSweep
::
follow_klass
(
klass
);
// For anonymous classes we need to handle the class loader data,
// otherwise it won't be claimed and can be unloaded.
if
(
klass
->
oop_is_instance
()
&&
InstanceKlass
::
cast
(
klass
)
->
is_anonymous
())
{
MarkSweep
::
follow_class_loader
(
klass
->
class_loader_data
());
}
else
{
MarkSweep
::
follow_klass
(
klass
);
}
}
else
{
// If klass is NULL then this a mirror for a primitive type.
// We don't have to follow them, since they are handled as strong
...
...
@@ -196,17 +202,6 @@ int InstanceMirrorKlass::oop_adjust_pointers(oop obj) {
int
size
=
oop_size
(
obj
);
InstanceKlass
::
oop_adjust_pointers
(
obj
);
// Follow the klass field in the mirror.
Klass
*
klass
=
java_lang_Class
::
as_Klass
(
obj
);
if
(
klass
!=
NULL
)
{
MarkSweep
::
adjust_klass
(
klass
);
}
else
{
// If klass is NULL then this a mirror for a primitive type.
// We don't have to follow them, since they are handled as strong
// roots in Universe::oops_do.
assert
(
java_lang_Class
::
is_primitive
(
obj
),
"Sanity check"
);
}
InstanceMirrorKlass_OOP_ITERATE
(
\
start_of_static_fields
(
obj
),
java_lang_Class
::
static_oop_field_count
(
obj
),
\
MarkSweep
::
adjust_pointer
(
p
),
\
...
...
src/share/vm/oops/objArrayKlass.cpp
浏览文件 @
01fb8f26
...
...
@@ -569,7 +569,6 @@ int ObjArrayKlass::oop_adjust_pointers(oop obj) {
// Get size before changing pointers.
// Don't call size() or oop_size() since that is a virtual call.
int
size
=
a
->
object_size
();
MarkSweep
::
adjust_klass
(
a
->
klass
());
ObjArrayKlass_OOP_ITERATE
(
a
,
p
,
MarkSweep
::
adjust_pointer
(
p
))
return
size
;
}
...
...
src/share/vm/opto/c2_globals.hpp
浏览文件 @
01fb8f26
...
...
@@ -637,7 +637,7 @@
diagnostic(bool, OptimizeExpensiveOps, true, \
"Find best control for expensive operations") \
\
product(bool, UseMathExactIntrinsics, true,
\
experimental(bool, UseMathExactIntrinsics, false,
\
"Enables intrinsification of various java.lang.Math functions") \
\
experimental(bool, ReplaceInParentMaps, false, \
...
...
src/share/vm/runtime/arguments.cpp
浏览文件 @
01fb8f26
...
...
@@ -2278,18 +2278,6 @@ bool Arguments::check_vm_args_consistency() {
status
=
status
&&
verify_percentage
(
MarkSweepDeadRatio
,
"MarkSweepDeadRatio"
);
status
=
status
&&
verify_min_value
(
MarkSweepAlwaysCompactCount
,
1
,
"MarkSweepAlwaysCompactCount"
);
#ifdef SPARC
if
(
UseConcMarkSweepGC
||
UseG1GC
)
{
// Issue a stern warning if the user has explicitly set
// UseMemSetInBOT (it is known to cause issues), but allow
// use for experimentation and debugging.
if
(
VM_Version
::
is_sun4v
()
&&
UseMemSetInBOT
)
{
assert
(
!
FLAG_IS_DEFAULT
(
UseMemSetInBOT
),
"Error"
);
warning
(
"Experimental flag -XX:+UseMemSetInBOT is known to cause instability"
" on sun4v; please understand that you are using at your own risk!"
);
}
}
#endif // SPARC
if
(
PrintNMTStatistics
)
{
#if INCLUDE_NMT
...
...
test/compiler/intrinsics/mathexact/AddExactICondTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8024924
* @summary Test non constant addExact
* @compile AddExactICondTest.java
* @run main AddExactICondTest
* @run main AddExactICondTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/AddExactIConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8024924
* @summary Test constant addExact
* @compile AddExactIConstantTest.java Verify.java
* @run main AddExactIConstantTest
* @run main AddExactIConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/AddExactILoadTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8024924
* @summary Test non constant addExact
* @compile AddExactILoadTest.java Verify.java
* @run main AddExactILoadTest
* @run main AddExactILoadTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8024924
* @summary Test non constant addExact
* @compile AddExactILoopDependentTest.java Verify.java
* @run main AddExactILoopDependentTest
* @run main AddExactILoopDependentTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8024924
* @summary Test non constant addExact
* @compile AddExactINonConstantTest.java Verify.java
* @run main AddExactINonConstantTest
* @run main AddExactINonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8025657
* @summary Test repeating addExact
* @compile AddExactIRepeatTest.java Verify.java
* @run main AddExactIRepeatTest
* @run main AddExactIRepeatTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/AddExactLConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test constant addExact
* @compile AddExactLConstantTest.java Verify.java
* @run main AddExactLConstantTest
* @run main AddExactLConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test non constant addExact
* @compile AddExactLNonConstantTest.java Verify.java
* @run main AddExactLNonConstantTest
* @run main AddExactLNonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/CompareTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026722
* @summary Verify that the compare after addExact is a signed compare
* @compile CompareTest.java
* @run main CompareTest
* @run main CompareTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/DecExactITest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test decrementExact
* @compile DecExactITest.java Verify.java
* @run main DecExactITest
* @run main DecExactITest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/DecExactLTest.java
浏览文件 @
01fb8f26
...
...
@@ -25,8 +25,8 @@
* @test
* @bug 8026844
* @summary Test decrementExact
* @compile DecExact
I
Test.java Verify.java
* @run main DecExact
ITest
* @compile DecExact
L
Test.java Verify.java
* @run main DecExact
LTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/GVNTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8028207
* @summary Verify that GVN doesn't mess up the two addExacts
* @compile GVNTest.java
* @run main GVNTest
* @run main GVNTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/IncExactITest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test incrementExact
* @compile IncExactITest.java Verify.java
* @run main IncExactITest
* @run main IncExactITest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/IncExactLTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test incrementExact
* @compile IncExactLTest.java Verify.java
* @run main IncExactLTest
* @run main IncExactLTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/MulExactICondTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test multiplyExact as condition
* @compile MulExactICondTest.java
* @run main MulExactICondTest
* @run main MulExactICondTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/MulExactIConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test constant multiplyExact
* @compile MulExactIConstantTest.java Verify.java
* @run main MulExactIConstantTest
* @run main MulExactIConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/MulExactILoadTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test multiplyExact
* @compile MulExactILoadTest.java Verify.java
* @run main MulExactILoadTest
* @run main MulExactILoadTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test loop dependent multiplyExact
* @compile MulExactILoopDependentTest.java Verify.java
* @run main MulExactILoopDependentTest
* @run main MulExactILoopDependentTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
public
class
MulExactILoopDependentTest
{
...
...
test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test non constant multiplyExact
* @compile MulExactINonConstantTest.java Verify.java
* @run main MulExactINonConstantTest
* @run main MulExactINonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test repeating multiplyExact
* @compile MulExactIRepeatTest.java Verify.java
* @run main MulExactIRepeatTest
* @run main MulExactIRepeatTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/MulExactLConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test constant mulExact
* @compile MulExactLConstantTest.java Verify.java
* @run main MulExactLConstantTest
* @run main MulExactLConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test non constant mulExact
* @compile MulExactLNonConstantTest.java Verify.java
* @run main MulExactLNonConstantTest
* @run main MulExactLNonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/NegExactIConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test constant negExact
* @compile NegExactIConstantTest.java Verify.java
* @run main NegExactIConstantTest
* @run main NegExactIConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/NegExactILoadTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test negExact
* @compile NegExactILoadTest.java Verify.java
* @run main NegExactILoadTest
* @run main NegExactILoadTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test negExact loop dependent
* @compile NegExactILoopDependentTest.java Verify.java
* @run main NegExactILoopDependentTest
* @run main NegExactILoopDependentTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
public
class
NegExactILoopDependentTest
{
...
...
test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test non constant negExact
* @compile NegExactINonConstantTest.java Verify.java
* @run main NegExactINonConstantTest
* @run main NegExactINonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/NegExactLConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test constant negExact
* @compile NegExactLConstantTest.java Verify.java
* @run main NegExactLConstantTest
* @run main NegExactLConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test constant negExact
* @compile NegExactLNonConstantTest.java Verify.java
* @run main NegExactLNonConstantTest
* @run main NegExactLNonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/NestedMathExactTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8027444
* @summary Test nested loops
* @compile NestedMathExactTest.java
* @run main NestedMathExactTest
* @run main NestedMathExactTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SplitThruPhiTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8028198
* @summary Verify that split through phi does the right thing
* @compile SplitThruPhiTest.java
* @run main SplitThruPhiTest
* @run main SplitThruPhiTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactICondTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test subtractExact as condition
* @compile SubExactICondTest.java Verify.java
* @run main SubExactICondTest
* @run main SubExactICondTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactIConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test constant subtractExact
* @compile SubExactIConstantTest.java Verify.java
* @run main SubExactIConstantTest
* @run main SubExactIConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactILoadTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test non constant subtractExact
* @compile SubExactILoadTest.java Verify.java
* @run main SubExactILoadTest
* @run main SubExactILoadTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test non constant subtractExact
* @compile SubExactILoopDependentTest.java Verify.java
* @run main SubExactILoopDependentTest
* @run main SubExactILoopDependentTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test non constant subtractExact
* @compile SubExactINonConstantTest.java Verify.java
* @run main SubExactINonConstantTest
* @run main SubExactINonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java
浏览文件 @
01fb8f26
...
...
@@ -26,7 +26,7 @@
* @bug 8026844
* @summary Test repeating subtractExact
* @compile SubExactIRepeatTest.java Verify.java
* @run main SubExactIRepeatTest
* @run main SubExactIRepeatTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactLConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -27,7 +27,7 @@
* @bug 8027353
* @summary Test constant subtractExact
* @compile SubExactLConstantTest.java Verify.java
* @run main SubExactLConstantTest
* @run main SubExactLConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java
浏览文件 @
01fb8f26
...
...
@@ -27,7 +27,7 @@
* @bug 8027353
* @summary Test non constant subtractExact
* @compile SubExactLNonConstantTest.java Verify.java
* @run main SubExactLNonConstantTest
* @run main SubExactLNonConstantTest
-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
*
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录