changeset 9294:d975dfffada6

Merge
author andrew
date Tue, 04 Feb 2020 02:11:25 +0000
parents 95bccc5efc6a 6021152f9ff3
children 6c72644277a6 2e9728044507
files .hgtags THIRD_PARTY_README
diffstat 9 files changed, 480 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Mon Jan 27 05:10:29 2020 +0000
+++ b/.hgtags	Tue Feb 04 02:11:25 2020 +0000
@@ -1296,3 +1296,4 @@
 7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-ga
 8c0733543544bbcd32c4404630d764d280299056 jdk8u252-b00
 a67e9c6edcdd73cb860a16990f0905e102c282d7 jdk8u252-b01
+5bd3b8c0555292a967ea3b4c39a220d0c2cf40ad jdk8u252-b02
--- a/THIRD_PARTY_README	Mon Jan 27 05:10:29 2020 +0000
+++ b/THIRD_PARTY_README	Tue Feb 04 02:11:25 2020 +0000
@@ -1712,10 +1712,9 @@
 
 --- begin of LICENSE ---
 
- Mesa 3-D graphics library
- Version:  5.0
-
- Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
+ 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"),
@@ -1730,9 +1729,118 @@
  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
- BRIAN PAUL 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.
+ 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
+
+ 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
+ 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.
+ 
+ *****************************************************************************
+
+----
+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 ---
 
--- a/make/windows/build.make	Mon Jan 27 05:10:29 2020 +0000
+++ b/make/windows/build.make	Tue Feb 04 02:11:25 2020 +0000
@@ -280,7 +280,7 @@
 	@ echo HS_COMPANY=$(COMPANY_NAME)			>> $@
 	@ echo HS_FILEDESC=$(HS_FILEDESC)			>> $@
 	@ echo HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)		>> $@
-	@ echo VENDOR=$(VENDOR)					>> $@
+	@ echo VENDOR=$(COMPANY_NAME)				>> $@
 	@ echo VENDOR_URL=$(VENDOR_URL)				>> $@
 	@ echo VENDOR_URL_BUG=$(VENDOR_URL_BUG)			>> $@
 	@ echo VENDOR_URL_VM_BUG=$(VENDOR_URL_VM_BUG)		>> $@
--- a/make/windows/makefiles/compile.make	Mon Jan 27 05:10:29 2020 +0000
+++ b/make/windows/makefiles/compile.make	Tue Feb 04 02:11:25 2020 +0000
@@ -346,7 +346,7 @@
 	 /D "HS_BUILD_ID=$(HS_BUILD_ID)" \
 	 /D "JDK_VER=$(JDK_VER)" \
 	 /D "JDK_DOTVER=$(JDK_DOTVER)" \
-	 /D "HS_COMPANY=$(HS_COMPANY)" \
+	 /D "HS_COMPANY=$(COMPANY_NAME)" \
 	 /D "HS_FILEDESC=$(HS_FILEDESC)" \
 	 /D "HS_COPYRIGHT=$(HS_COPYRIGHT)" \
 	 /D "HS_FNAME=$(HS_FNAME)" \
--- a/make/windows/makefiles/defs.make	Mon Jan 27 05:10:29 2020 +0000
+++ b/make/windows/makefiles/defs.make	Tue Feb 04 02:11:25 2020 +0000
@@ -157,6 +157,15 @@
 MAKE_ARGS += RM="$(RM)"
 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.
 ifeq ($(JVM_VARIANTS),)
   ifeq ($(ARCH_DATA_MODEL), 32)
--- a/make/windows/makefiles/vm.make	Mon Jan 27 05:10:29 2020 +0000
+++ b/make/windows/makefiles/vm.make	Tue Feb 04 02:11:25 2020 +0000
@@ -62,10 +62,6 @@
 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_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)
 
@@ -209,6 +205,14 @@
 bytecodeInterpreterWithChecks.obj: ..\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)\src\share\vm\runtime\vm_version.cpp
+        $(CXX) $(CXX_FLAGS) $(VERSION_CFLAGS) $(CXX_USE_PCH) /c $(WorkSpace)\src\share\vm\runtime\vm_version.cpp
+
+arguments.obj: $(WorkSpace)\src\share\vm\runtime\arguments.cpp
+        $(CXX) $(CXX_FLAGS) $(VERSION_CFLAGS) $(CXX_USE_PCH) /c $(WorkSpace)\src\share\vm\runtime\arguments.cpp
+
 # Default rules for the Virtual Machine
 {$(COMMONSRC)\share\vm\c1}.cpp.obj::
         $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
--- a/src/share/vm/opto/loopPredicate.cpp	Mon Jan 27 05:10:29 2020 +0000
+++ b/src/share/vm/opto/loopPredicate.cpp	Tue Feb 04 02:11:25 2020 +0000
@@ -502,7 +502,31 @@
     _lpt(lpt), _phase(lpt->_phase),
     _visited(area), _invariant(area), _stack(area, 10 /* guess */),
     _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
   void map_ctrl(Node* old, Node* n) {
--- a/src/share/vm/opto/node.cpp	Mon Jan 27 05:10:29 2020 +0000
+++ b/src/share/vm/opto/node.cpp	Tue Feb 04 02:11:25 2020 +0000
@@ -286,6 +286,10 @@
 #ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
 #pragma warning( disable:4355 ) // 'this' : used in base member initializer list
 #endif
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma GCC diagnostic ignored "-Wuninitialized"
+#endif
 
 // Out-of-line code from node constructors.
 // Executed only when extra debug info. is being passed around.
@@ -493,6 +497,10 @@
   _in[6] = n6; if (n6 != NULL) n6->add_out((Node *)this);
 }
 
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
 
 //------------------------------clone------------------------------------------
 // Clone a Node.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/compiler/loopopts/BadPredicateAfterPartialPeel.java	Tue Feb 04 02:11:25 2020 +0000
@@ -0,0 +1,312 @@
+/*
+ * 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
+        }
+    }
+}