Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
2376a733
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看板
提交
2376a733
编写于
2月 04, 2020
作者:
A
andrew
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
a4d467b2
c0c5c939
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
478 addition
and
12 deletion
+478
-12
.hgtags
.hgtags
+1
-0
THIRD_PARTY_README
THIRD_PARTY_README
+113
-5
make/windows/build.make
make/windows/build.make
+1
-1
make/windows/makefiles/compile.make
make/windows/makefiles/compile.make
+1
-1
make/windows/makefiles/defs.make
make/windows/makefiles/defs.make
+9
-0
make/windows/makefiles/vm.make
make/windows/makefiles/vm.make
+8
-4
src/share/vm/opto/loopPredicate.cpp
src/share/vm/opto/loopPredicate.cpp
+25
-1
src/share/vm/opto/node.cpp
src/share/vm/opto/node.cpp
+8
-0
test/compiler/loopopts/BadPredicateAfterPartialPeel.java
test/compiler/loopopts/BadPredicateAfterPartialPeel.java
+312
-0
未找到文件。
.hgtags
浏览文件 @
2376a733
...
@@ -1296,3 +1296,4 @@ ee19c358e3b8deeda2f64d660a0870df7b1abd49 jdk8u242-b03
...
@@ -1296,3 +1296,4 @@ ee19c358e3b8deeda2f64d660a0870df7b1abd49 jdk8u242-b03
7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-ga
7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-ga
8c0733543544bbcd32c4404630d764d280299056 jdk8u252-b00
8c0733543544bbcd32c4404630d764d280299056 jdk8u252-b00
a67e9c6edcdd73cb860a16990f0905e102c282d7 jdk8u252-b01
a67e9c6edcdd73cb860a16990f0905e102c282d7 jdk8u252-b01
5bd3b8c0555292a967ea3b4c39a220d0c2cf40ad jdk8u252-b02
THIRD_PARTY_README
浏览文件 @
2376a733
...
@@ -1712,10 +1712,60 @@ which may be included with JRE 8, JDK 8, and OpenJDK 8 source distributions.
...
@@ -1712,10 +1712,60 @@ which may be included with JRE 8, JDK 8, and OpenJDK 8 source distributions.
--- begin of LICENSE ---
--- begin of LICENSE ---
Mesa 3-D Graphics Library v19.2.1
Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Attention, Contributors
When contributing to the Mesa project you must agree to the licensing terms
of the component to which you're contributing.
The following section lists the primary components of the Mesa distribution
and their respective licenses.
Mesa Component Licenses
Component Location License
------------------------------------------------------------------
Main Mesa code src/mesa/ MIT
Device drivers src/mesa/drivers/* MIT, generally
Gallium code src/gallium/ MIT
Ext headers GL/glext.h Khronos
GL/glxext.h Khronos
GL/wglext.h Khronos
KHR/khrplatform.h Khronos
*****************************************************************************
----
include/GL/gl.h :
Mesa 3-D graphics library
Mesa 3-D graphics library
Version: 5.0
Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
Copyright (C) 2009 VMware, Inc. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
copy of this software and associated documentation files (the "Software"),
...
@@ -1730,9 +1780,67 @@ which may be included with JRE 8, JDK 8, and OpenJDK 8 source distributions.
...
@@ -1730,9 +1780,67 @@ which may be included with JRE 8, JDK 8, and OpenJDK 8 source distributions.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*****************************************************************************
----
include/GL/glext.h
include/GL/glxext.h
include/GL/wglxext.h :
Copyright (c) 2013 - 2018 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Materials.
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*****************************************************************************
----
include/KHR/khrplatform.h :
Copyright (c) 2008 - 2018 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Materials.
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*****************************************************************************
--- end of LICENSE ---
--- end of LICENSE ---
...
...
make/windows/build.make
浏览文件 @
2376a733
...
@@ -280,7 +280,7 @@ $(variantDir)\local.make: checks
...
@@ -280,7 +280,7 @@ $(variantDir)\local.make: checks
@
echo
HS_COMPANY
=
$(COMPANY_NAME)
>>
$@
@
echo
HS_COMPANY
=
$(COMPANY_NAME)
>>
$@
@
echo
HS_FILEDESC
=
$(HS_FILEDESC)
>>
$@
@
echo
HS_FILEDESC
=
$(HS_FILEDESC)
>>
$@
@
echo
HOTSPOT_VM_DISTRO
=
$(HOTSPOT_VM_DISTRO)
>>
$@
@
echo
HOTSPOT_VM_DISTRO
=
$(HOTSPOT_VM_DISTRO)
>>
$@
@
echo
VENDOR
=
$(
VENDOR)
>>
$@
@
echo
VENDOR
=
$(
COMPANY_NAME)
>>
$@
@
echo
VENDOR_URL
=
$(VENDOR_URL)
>>
$@
@
echo
VENDOR_URL
=
$(VENDOR_URL)
>>
$@
@
echo
VENDOR_URL_BUG
=
$(VENDOR_URL_BUG)
>>
$@
@
echo
VENDOR_URL_BUG
=
$(VENDOR_URL_BUG)
>>
$@
@
echo
VENDOR_URL_VM_BUG
=
$(VENDOR_URL_VM_BUG)
>>
$@
@
echo
VENDOR_URL_VM_BUG
=
$(VENDOR_URL_VM_BUG)
>>
$@
...
...
make/windows/makefiles/compile.make
浏览文件 @
2376a733
...
@@ -346,7 +346,7 @@ RC_FLAGS=/D "HS_VER=$(HS_VER)" \
...
@@ -346,7 +346,7 @@ RC_FLAGS=/D "HS_VER=$(HS_VER)" \
/D
"HS_BUILD_ID=
$(HS_BUILD_ID)
"
\
/D
"HS_BUILD_ID=
$(HS_BUILD_ID)
"
\
/D
"JDK_VER=
$(JDK_VER)
"
\
/D
"JDK_VER=
$(JDK_VER)
"
\
/D
"JDK_DOTVER=
$(JDK_DOTVER)
"
\
/D
"JDK_DOTVER=
$(JDK_DOTVER)
"
\
/D
"HS_COMPANY=
$(
HS_COMPANY
)
"
\
/D
"HS_COMPANY=
$(
COMPANY_NAME
)
"
\
/D
"HS_FILEDESC=
$(HS_FILEDESC)
"
\
/D
"HS_FILEDESC=
$(HS_FILEDESC)
"
\
/D
"HS_COPYRIGHT=
$(HS_COPYRIGHT)
"
\
/D
"HS_COPYRIGHT=
$(HS_COPYRIGHT)
"
\
/D
"HS_FNAME=
$(HS_FNAME)
"
\
/D
"HS_FNAME=
$(HS_FNAME)
"
\
...
...
make/windows/makefiles/defs.make
浏览文件 @
2376a733
...
@@ -157,6 +157,15 @@ endif
...
@@ -157,6 +157,15 @@ endif
MAKE_ARGS
+=
RM
=
"
$(RM)
"
MAKE_ARGS
+=
RM
=
"
$(RM)
"
MAKE_ARGS
+=
ZIPEXE
=
$(ZIPEXE)
MAKE_ARGS
+=
ZIPEXE
=
$(ZIPEXE)
MAKE_ARGS
+=
COMPANY_NAME
=
"
$(COMPANY_NAME)
"
MAKE_ARGS
+=
VENDOR_URL
=
$(VENDOR_URL)
MAKE_ARGS
+=
VENDOR_URL_BUG
=
$(VENDOR_URL_BUG)
MAKE_ARGS
+=
VENDOR_URL_VM_BUG
=
$(VENDOR_URL_VM_BUG)
ifneq
($(VERSION_CFLAGS),)
# transform syntax from -DProp='"Value"' to /D "Prop=\"Value\"" for Windows build
MAKE_ARGS
+=
VERSION_CFLAGS
=
"
$(
subst
-D,/D
\"
,
$(
subst
',,
$(
subst
'
$
(
)
$
(
)
,
\"
$
(
)
$
(
)
,
$(
subst
"
,
\\\"
,
$(VERSION_CFLAGS)
))))
\"
"
endif
# On 32 bit windows we build server and client, on 64 bit just server.
# On 32 bit windows we build server and client, on 64 bit just server.
ifeq
($(JVM_VARIANTS),)
ifeq
($(JVM_VARIANTS),)
ifeq
($(ARCH_DATA_MODEL), 32)
ifeq
($(ARCH_DATA_MODEL), 32)
...
...
make/windows/makefiles/vm.make
浏览文件 @
2376a733
...
@@ -62,10 +62,6 @@ CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(HOTSPOT_LIB_ARCH)\""
...
@@ -62,10 +62,6 @@ CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(HOTSPOT_LIB_ARCH)\""
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"HOTSPOT_BUILD_TARGET=
\"
$(BUILD_FLAVOR)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"HOTSPOT_BUILD_TARGET=
\"
$(BUILD_FLAVOR)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"HOTSPOT_BUILD_USER=
\"
$(BuildUser)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"HOTSPOT_BUILD_USER=
\"
$(BuildUser)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"HOTSPOT_VM_DISTRO=
\"
$(HOTSPOT_VM_DISTRO)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"HOTSPOT_VM_DISTRO=
\"
$(HOTSPOT_VM_DISTRO)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"VENDOR=
\"
$(COMPANY_NAME)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"VENDOR_URL=
\"
$(VENDOR_URL)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"VENDOR_URL_BUG=
\"
$(VENDOR_URL_BUG)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
/D
"VENDOR_URL_VM_BUG=
\"
$(VENDOR_URL_VM_BUG)
\"
"
CXX_FLAGS
=
$(CXX_FLAGS)
$(CXX_INCLUDE_DIRS)
CXX_FLAGS
=
$(CXX_FLAGS)
$(CXX_INCLUDE_DIRS)
...
@@ -209,6 +205,14 @@ bytecodeInterpreter.obj: $(WorkSpace)\src\share\vm\interpreter\bytecodeInterpret
...
@@ -209,6 +205,14 @@ bytecodeInterpreter.obj: $(WorkSpace)\src\share\vm\interpreter\bytecodeInterpret
bytecodeInterpreterWithChecks.obj
:
..
\g
enerated
\j
vmtifiles
\b
ytecodeInterpreterWithChecks.cpp
bytecodeInterpreterWithChecks.obj
:
..
\g
enerated
\j
vmtifiles
\b
ytecodeInterpreterWithChecks.cpp
$(CXX)
$(CXX_FLAGS)
$(CXX_DONT_USE_PCH)
/c
..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp
$(CXX)
$(CXX_FLAGS)
$(CXX_DONT_USE_PCH)
/c
..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp
#files compiled with version flags
vm_version.obj
:
$(WorkSpace)
\s
rc
\s
hare
\v
m
\r
untime
\v
m_version.cpp
$(CXX)
$(CXX_FLAGS)
$(VERSION_CFLAGS)
$(CXX_USE_PCH)
/c
$(WorkSpace)\src\share\vm\runtime\vm_version.cpp
arguments.obj
:
$(WorkSpace)
\s
rc
\s
hare
\v
m
\r
untime
\a
rguments.cpp
$(CXX)
$(CXX_FLAGS)
$(VERSION_CFLAGS)
$(CXX_USE_PCH)
/c
$(WorkSpace)\src\share\vm\runtime\arguments.cpp
# Default rules for the Virtual Machine
# Default rules for the Virtual Machine
{$(COMMONSRC)\share\vm\c1}.cpp.obj
::
{$(COMMONSRC)\share\vm\c1}.cpp.obj
::
$(CXX)
$(CXX_FLAGS)
$(CXX_USE_PCH)
/c
$<
$(CXX)
$(CXX_FLAGS)
$(CXX_USE_PCH)
/c
$<
...
...
src/share/vm/opto/loopPredicate.cpp
浏览文件 @
2376a733
...
@@ -502,7 +502,31 @@ class Invariance : public StackObj {
...
@@ -502,7 +502,31 @@ class Invariance : public StackObj {
_lpt
(
lpt
),
_phase
(
lpt
->
_phase
),
_lpt
(
lpt
),
_phase
(
lpt
->
_phase
),
_visited
(
area
),
_invariant
(
area
),
_stack
(
area
,
10
/* guess */
),
_visited
(
area
),
_invariant
(
area
),
_stack
(
area
,
10
/* guess */
),
_clone_visited
(
area
),
_old_new
(
area
)
_clone_visited
(
area
),
_old_new
(
area
)
{}
{
Node
*
head
=
_lpt
->
_head
;
Node
*
entry
=
head
->
in
(
LoopNode
::
EntryControl
);
if
(
entry
->
outcnt
()
!=
1
)
{
// If a node is pinned between the predicates and the loop
// entry, we won't be able to move any node in the loop that
// depends on it above it in a predicate. Mark all those nodes
// as non loop invariatnt.
Unique_Node_List
wq
;
wq
.
push
(
entry
);
for
(
uint
next
=
0
;
next
<
wq
.
size
();
++
next
)
{
Node
*
n
=
wq
.
at
(
next
);
for
(
DUIterator_Fast
imax
,
i
=
n
->
fast_outs
(
imax
);
i
<
imax
;
i
++
)
{
Node
*
u
=
n
->
fast_out
(
i
);
if
(
!
u
->
is_CFG
())
{
Node
*
c
=
_phase
->
get_ctrl
(
u
);
if
(
_lpt
->
is_member
(
_phase
->
get_loop
(
c
))
||
_phase
->
is_dominator
(
c
,
head
))
{
_visited
.
set
(
u
->
_idx
);
wq
.
push
(
u
);
}
}
}
}
}
}
// Map old to n for invariance computation and clone
// Map old to n for invariance computation and clone
void
map_ctrl
(
Node
*
old
,
Node
*
n
)
{
void
map_ctrl
(
Node
*
old
,
Node
*
n
)
{
...
...
src/share/vm/opto/node.cpp
浏览文件 @
2376a733
...
@@ -286,6 +286,10 @@ void DUIterator_Last::verify_step(uint num_edges) {
...
@@ -286,6 +286,10 @@ void DUIterator_Last::verify_step(uint num_edges) {
#ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
#ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
#pragma warning( disable:4355 ) // 'this' : used in base member initializer list
#pragma warning( disable:4355 ) // 'this' : used in base member initializer list
#endif
#endif
#ifdef __clang__
#pragma clang diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
#endif
// Out-of-line code from node constructors.
// Out-of-line code from node constructors.
// Executed only when extra debug info. is being passed around.
// Executed only when extra debug info. is being passed around.
...
@@ -493,6 +497,10 @@ Node::Node(Node *n0, Node *n1, Node *n2, Node *n3,
...
@@ -493,6 +497,10 @@ Node::Node(Node *n0, Node *n1, Node *n2, Node *n3,
_in
[
6
]
=
n6
;
if
(
n6
!=
NULL
)
n6
->
add_out
((
Node
*
)
this
);
_in
[
6
]
=
n6
;
if
(
n6
!=
NULL
)
n6
->
add_out
((
Node
*
)
this
);
}
}
#ifdef __clang__
#pragma clang diagnostic pop
#endif
//------------------------------clone------------------------------------------
//------------------------------clone------------------------------------------
// Clone a Node.
// Clone a Node.
...
...
test/compiler/loopopts/BadPredicateAfterPartialPeel.java
0 → 100644
浏览文件 @
2376a733
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
/**
* @test
* @bug 8146792
* @summary Predicate moved after partial peel may lead to broken graph
* @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:CompileOnly=BadPredicateAfterPartialPeel::m -XX:CompileCommand=dontinline,BadPredicateAfterPartialPeel::not_inlined* -XX:CompileCommand=quiet BadPredicateAfterPartialPeel
*
*/
public
class
BadPredicateAfterPartialPeel
{
static
void
not_inlined1
()
{}
static
void
not_inlined4
()
{}
static
int
m_helper
(
int
i
,
int
i3
,
int
i4
)
{
return
i3
==
4
?
i4
:
i
;
}
static
float
[]
array
=
new
float
[
1000
];
static
int
[]
array2
=
new
int
[
1000
];
boolean
flag
;
int
j
;
static
void
m
(
BadPredicateAfterPartialPeel
o1
,
BadPredicateAfterPartialPeel
o2
,
BadPredicateAfterPartialPeel
o
,
int
i4
)
{
int
i1
=
1
;
// To delay partial peeling to the loop opts pass right before CCP
int
i2
=
0
;
for
(;
i2
<
10
;
i2
+=
i1
);
i2
=
i2
/
10
;
// Simplified during CCP:
int
i3
=
2
;
for
(;
i3
<
4
;
i3
*=
2
);
// Loop is partial peeled right before CCP
int
i
=
0
;
boolean
b
=
true
;
not_inlined1
();
array
[
0
]
=
-
1
;
do
{
// peeled section starts here
o
.
flag
=
false
;
o
.
j
=
0
;
if
(
b
)
{
// The following store will be pinned between
// predicates and the loop after partial peeling. All
// control flow will be optimized out and so nothing
// will prevent predicates from being moved out the
// loop.
array
[
i
]
=
0
;
}
if
(
array
[
0
]
!=
0
)
{
}
if
(
i
>=
10
)
{
// peeled section ends here
return
;
}
i
+=
i2
;
b
=
false
;
int
i5
=
m_helper
(
i
,
i3
,
i4
);
// This will be simpliflied during CCP
if
(
array
[
i5
]
!=
0
)
{
// and this will become a predicate
}
if
(
o2
.
flag
)
{
}
// A bunch of stuff to grow loop body size and prevent peeling:
array2
[
0
]
=
0
;
array2
[
1
]
=
0
;
array2
[
2
]
=
0
;
array2
[
3
]
=
0
;
array2
[
4
]
=
0
;
array2
[
5
]
=
0
;
array2
[
6
]
=
0
;
array2
[
7
]
=
0
;
array2
[
8
]
=
0
;
array2
[
9
]
=
0
;
array2
[
10
]
=
0
;
array2
[
11
]
=
0
;
array2
[
12
]
=
0
;
array2
[
13
]
=
0
;
array2
[
14
]
=
0
;
array2
[
15
]
=
0
;
array2
[
16
]
=
0
;
array2
[
17
]
=
0
;
array2
[
18
]
=
0
;
array2
[
19
]
=
0
;
array2
[
20
]
=
0
;
array2
[
21
]
=
0
;
array2
[
22
]
=
0
;
array2
[
23
]
=
0
;
array2
[
24
]
=
0
;
array2
[
25
]
=
0
;
array2
[
26
]
=
0
;
array2
[
27
]
=
0
;
array2
[
28
]
=
0
;
array2
[
29
]
=
0
;
array2
[
30
]
=
0
;
array2
[
31
]
=
0
;
array2
[
32
]
=
0
;
array2
[
33
]
=
0
;
array2
[
34
]
=
0
;
array2
[
35
]
=
0
;
array2
[
36
]
=
0
;
array2
[
37
]
=
0
;
array2
[
38
]
=
0
;
array2
[
39
]
=
0
;
array2
[
40
]
=
0
;
array2
[
41
]
=
0
;
array2
[
42
]
=
0
;
array2
[
43
]
=
0
;
array2
[
44
]
=
0
;
array2
[
45
]
=
0
;
array2
[
46
]
=
0
;
array2
[
47
]
=
0
;
array2
[
48
]
=
0
;
array2
[
49
]
=
0
;
array2
[
50
]
=
0
;
array2
[
51
]
=
0
;
array2
[
52
]
=
0
;
array2
[
53
]
=
0
;
array2
[
54
]
=
0
;
array2
[
55
]
=
0
;
array2
[
56
]
=
0
;
array2
[
57
]
=
0
;
array2
[
58
]
=
0
;
array2
[
59
]
=
0
;
array2
[
60
]
=
0
;
array2
[
61
]
=
0
;
array2
[
62
]
=
0
;
array2
[
63
]
=
0
;
array2
[
64
]
=
0
;
array2
[
65
]
=
0
;
array2
[
66
]
=
0
;
array2
[
67
]
=
0
;
array2
[
68
]
=
0
;
array2
[
69
]
=
0
;
array2
[
70
]
=
0
;
array2
[
71
]
=
0
;
array2
[
72
]
=
0
;
array2
[
73
]
=
0
;
array2
[
74
]
=
0
;
array2
[
75
]
=
0
;
array2
[
76
]
=
0
;
array2
[
77
]
=
0
;
array2
[
78
]
=
0
;
array2
[
79
]
=
0
;
array2
[
80
]
=
0
;
array2
[
81
]
=
0
;
array2
[
82
]
=
0
;
array2
[
83
]
=
0
;
array2
[
84
]
=
0
;
array2
[
85
]
=
0
;
array2
[
86
]
=
0
;
array2
[
87
]
=
0
;
array2
[
88
]
=
0
;
array2
[
89
]
=
0
;
array2
[
90
]
=
0
;
array2
[
91
]
=
0
;
array2
[
92
]
=
0
;
array2
[
93
]
=
0
;
array2
[
94
]
=
0
;
array2
[
95
]
=
0
;
array2
[
96
]
=
0
;
array2
[
97
]
=
0
;
array2
[
98
]
=
0
;
array2
[
99
]
=
0
;
array2
[
100
]
=
0
;
array2
[
101
]
=
0
;
array2
[
102
]
=
0
;
array2
[
103
]
=
0
;
array2
[
104
]
=
0
;
array2
[
105
]
=
0
;
array2
[
106
]
=
0
;
array2
[
107
]
=
0
;
array2
[
108
]
=
0
;
array2
[
109
]
=
0
;
array2
[
110
]
=
0
;
array2
[
111
]
=
0
;
array2
[
112
]
=
0
;
array2
[
113
]
=
0
;
array2
[
114
]
=
0
;
array2
[
115
]
=
0
;
array2
[
116
]
=
0
;
array2
[
117
]
=
0
;
array2
[
118
]
=
0
;
array2
[
119
]
=
0
;
array2
[
120
]
=
0
;
array2
[
121
]
=
0
;
array2
[
122
]
=
0
;
array2
[
123
]
=
0
;
array2
[
124
]
=
0
;
array2
[
125
]
=
0
;
array2
[
126
]
=
0
;
array2
[
127
]
=
0
;
array2
[
128
]
=
0
;
array2
[
129
]
=
0
;
array2
[
130
]
=
0
;
array2
[
131
]
=
0
;
array2
[
132
]
=
0
;
array2
[
133
]
=
0
;
array2
[
134
]
=
0
;
array2
[
135
]
=
0
;
array2
[
136
]
=
0
;
array2
[
137
]
=
0
;
array2
[
138
]
=
0
;
array2
[
139
]
=
0
;
array2
[
140
]
=
0
;
array2
[
141
]
=
0
;
array2
[
142
]
=
0
;
array2
[
143
]
=
0
;
array2
[
144
]
=
0
;
array2
[
145
]
=
0
;
array2
[
146
]
=
0
;
array2
[
147
]
=
0
;
array2
[
148
]
=
0
;
array2
[
149
]
=
0
;
array2
[
150
]
=
0
;
array2
[
151
]
=
0
;
array2
[
152
]
=
0
;
array2
[
153
]
=
0
;
array2
[
154
]
=
0
;
array2
[
155
]
=
0
;
array2
[
156
]
=
0
;
array2
[
157
]
=
0
;
array2
[
158
]
=
0
;
array2
[
159
]
=
0
;
array2
[
160
]
=
0
;
array2
[
161
]
=
0
;
array2
[
162
]
=
0
;
array2
[
163
]
=
0
;
array2
[
164
]
=
0
;
array2
[
165
]
=
0
;
array2
[
166
]
=
0
;
array2
[
167
]
=
0
;
array2
[
168
]
=
0
;
array2
[
169
]
=
0
;
array2
[
170
]
=
0
;
array2
[
171
]
=
0
;
array2
[
172
]
=
0
;
array2
[
173
]
=
0
;
array2
[
174
]
=
0
;
array2
[
175
]
=
0
;
array2
[
176
]
=
0
;
array2
[
177
]
=
0
;
array2
[
178
]
=
0
;
array2
[
179
]
=
0
;
array2
[
180
]
=
0
;
array2
[
181
]
=
0
;
array2
[
182
]
=
0
;
array2
[
183
]
=
0
;
array2
[
184
]
=
0
;
array2
[
185
]
=
0
;
array2
[
186
]
=
0
;
array2
[
187
]
=
0
;
array2
[
188
]
=
0
;
array2
[
189
]
=
0
;
array2
[
190
]
=
0
;
array2
[
191
]
=
0
;
array2
[
192
]
=
0
;
array2
[
193
]
=
0
;
array2
[
194
]
=
0
;
array2
[
195
]
=
0
;
array2
[
196
]
=
0
;
array2
[
197
]
=
0
;
array2
[
198
]
=
0
;
array2
[
199
]
=
0
;
if
(
o1
.
j
>=
20
)
{
break
;
}
o1
.
j
++;
}
while
(
true
);
not_inlined4
();
}
static
public
void
main
(
String
[]
args
)
{
BadPredicateAfterPartialPeel
o1
=
new
BadPredicateAfterPartialPeel
();
BadPredicateAfterPartialPeel
o2
=
new
BadPredicateAfterPartialPeel
();
for
(
int
i
=
0
;
i
<
20000
;
i
++)
{
o1
.
j
=
0
;
m
(
o1
,
o2
,
o2
,
0
);
m_helper
(
i
,
2
,
i
);
// pollute profile
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录