Merge

Tue, 04 Feb 2020 02:11:25 +0000

author
andrew
date
Tue, 04 Feb 2020 02:11:25 +0000
changeset 9829
d975dfffada6
parent 9822
95bccc5efc6a
parent 9828
6021152f9ff3
child 9831
2e9728044507

Merge

.hgtags file | annotate | diff | comparison | revisions
THIRD_PARTY_README file | annotate | diff | comparison | revisions
     1.1 --- a/.hgtags	Mon Jan 27 05:10:29 2020 +0000
     1.2 +++ b/.hgtags	Tue Feb 04 02:11:25 2020 +0000
     1.3 @@ -1296,3 +1296,4 @@
     1.4  7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-ga
     1.5  8c0733543544bbcd32c4404630d764d280299056 jdk8u252-b00
     1.6  a67e9c6edcdd73cb860a16990f0905e102c282d7 jdk8u252-b01
     1.7 +5bd3b8c0555292a967ea3b4c39a220d0c2cf40ad jdk8u252-b02
     2.1 --- a/THIRD_PARTY_README	Mon Jan 27 05:10:29 2020 +0000
     2.2 +++ b/THIRD_PARTY_README	Tue Feb 04 02:11:25 2020 +0000
     2.3 @@ -1712,10 +1712,9 @@
     2.4  
     2.5  --- begin of LICENSE ---
     2.6  
     2.7 - Mesa 3-D graphics library
     2.8 - Version:  5.0
     2.9 -
    2.10 - Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
    2.11 + Mesa 3-D Graphics Library v19.2.1
    2.12 +
    2.13 + Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
    2.14  
    2.15   Permission is hereby granted, free of charge, to any person obtaining a
    2.16   copy of this software and associated documentation files (the "Software"),
    2.17 @@ -1730,9 +1729,118 @@
    2.18   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    2.19   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    2.20   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    2.21 - BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
    2.22 - AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    2.23 - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    2.24 + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    2.25 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    2.26 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    2.27 + SOFTWARE.
    2.28 +
    2.29 +Attention, Contributors
    2.30 +
    2.31 +When contributing to the Mesa project you must agree to the licensing terms
    2.32 +of the component to which you're contributing.
    2.33 +The following section lists the primary components of the Mesa distribution
    2.34 +and their respective licenses.
    2.35 +Mesa Component Licenses
    2.36 +
    2.37 +
    2.38 +
    2.39 +Component         Location               License
    2.40 +------------------------------------------------------------------
    2.41 +Main Mesa code    src/mesa/              MIT
    2.42 +Device drivers    src/mesa/drivers/*     MIT, generally
    2.43 +
    2.44 +Gallium code      src/gallium/           MIT
    2.45 +
    2.46 +Ext headers       GL/glext.h             Khronos
    2.47 +                  GL/glxext.h            Khronos
    2.48 +                  GL/wglext.h            Khronos
    2.49 +                  KHR/khrplatform.h      Khronos
    2.50 +
    2.51 +*****************************************************************************
    2.52 +
    2.53 +----
    2.54 +include/GL/gl.h :
    2.55 +
    2.56 +
    2.57 + Mesa 3-D graphics library
    2.58 +
    2.59 + Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
    2.60 + Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
    2.61 +
    2.62 + Permission is hereby granted, free of charge, to any person obtaining a
    2.63 + copy of this software and associated documentation files (the "Software"),
    2.64 + to deal in the Software without restriction, including without limitation
    2.65 + the rights to use, copy, modify, merge, publish, distribute, sublicense,
    2.66 + and/or sell copies of the Software, and to permit persons to whom the
    2.67 + Software is furnished to do so, subject to the following conditions:
    2.68 +
    2.69 + The above copyright notice and this permission notice shall be included
    2.70 + in all copies or substantial portions of the Software.
    2.71 +
    2.72 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    2.73 + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    2.74 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    2.75 + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
    2.76 + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
    2.77 + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    2.78 + OTHER DEALINGS IN THE SOFTWARE.
    2.79 + 
    2.80 + *****************************************************************************
    2.81 +
    2.82 +----
    2.83 +include/GL/glext.h
    2.84 +include/GL/glxext.h
    2.85 +include/GL/wglxext.h :
    2.86 +
    2.87 +
    2.88 + Copyright (c) 2013 - 2018 The Khronos Group Inc.
    2.89 +
    2.90 + Permission is hereby granted, free of charge, to any person obtaining a
    2.91 + copy of this software and/or associated documentation files (the
    2.92 + "Materials"), to deal in the Materials without restriction, including
    2.93 + without limitation the rights to use, copy, modify, merge, publish,
    2.94 + distribute, sublicense, and/or sell copies of the Materials, and to
    2.95 + permit persons to whom the Materials are furnished to do so, subject to
    2.96 + the following conditions:
    2.97 +
    2.98 + The above copyright notice and this permission notice shall be included
    2.99 + in all copies or substantial portions of the Materials.
   2.100 +
   2.101 + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   2.102 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   2.103 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   2.104 + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   2.105 + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   2.106 + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   2.107 + MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
   2.108 +
   2.109 + *****************************************************************************
   2.110 +
   2.111 +----
   2.112 +include/KHR/khrplatform.h :
   2.113 +
   2.114 + Copyright (c) 2008 - 2018 The Khronos Group Inc.
   2.115 +
   2.116 + Permission is hereby granted, free of charge, to any person obtaining a
   2.117 + copy of this software and/or associated documentation files (the
   2.118 + "Materials"), to deal in the Materials without restriction, including
   2.119 + without limitation the rights to use, copy, modify, merge, publish,
   2.120 + distribute, sublicense, and/or sell copies of the Materials, and to
   2.121 + permit persons to whom the Materials are furnished to do so, subject to
   2.122 + the following conditions:
   2.123 +
   2.124 + The above copyright notice and this permission notice shall be included
   2.125 + in all copies or substantial portions of the Materials.
   2.126 +
   2.127 + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   2.128 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   2.129 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   2.130 + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   2.131 + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   2.132 + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   2.133 + MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
   2.134 +
   2.135 + *****************************************************************************
   2.136  
   2.137  --- end of LICENSE ---
   2.138  
     3.1 --- a/make/windows/build.make	Mon Jan 27 05:10:29 2020 +0000
     3.2 +++ b/make/windows/build.make	Tue Feb 04 02:11:25 2020 +0000
     3.3 @@ -280,7 +280,7 @@
     3.4  	@ echo HS_COMPANY=$(COMPANY_NAME)			>> $@
     3.5  	@ echo HS_FILEDESC=$(HS_FILEDESC)			>> $@
     3.6  	@ echo HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)		>> $@
     3.7 -	@ echo VENDOR=$(VENDOR)					>> $@
     3.8 +	@ echo VENDOR=$(COMPANY_NAME)				>> $@
     3.9  	@ echo VENDOR_URL=$(VENDOR_URL)				>> $@
    3.10  	@ echo VENDOR_URL_BUG=$(VENDOR_URL_BUG)			>> $@
    3.11  	@ echo VENDOR_URL_VM_BUG=$(VENDOR_URL_VM_BUG)		>> $@
     4.1 --- a/make/windows/makefiles/compile.make	Mon Jan 27 05:10:29 2020 +0000
     4.2 +++ b/make/windows/makefiles/compile.make	Tue Feb 04 02:11:25 2020 +0000
     4.3 @@ -346,7 +346,7 @@
     4.4  	 /D "HS_BUILD_ID=$(HS_BUILD_ID)" \
     4.5  	 /D "JDK_VER=$(JDK_VER)" \
     4.6  	 /D "JDK_DOTVER=$(JDK_DOTVER)" \
     4.7 -	 /D "HS_COMPANY=$(HS_COMPANY)" \
     4.8 +	 /D "HS_COMPANY=$(COMPANY_NAME)" \
     4.9  	 /D "HS_FILEDESC=$(HS_FILEDESC)" \
    4.10  	 /D "HS_COPYRIGHT=$(HS_COPYRIGHT)" \
    4.11  	 /D "HS_FNAME=$(HS_FNAME)" \
     5.1 --- a/make/windows/makefiles/defs.make	Mon Jan 27 05:10:29 2020 +0000
     5.2 +++ b/make/windows/makefiles/defs.make	Tue Feb 04 02:11:25 2020 +0000
     5.3 @@ -157,6 +157,15 @@
     5.4  MAKE_ARGS += RM="$(RM)"
     5.5  MAKE_ARGS += ZIPEXE=$(ZIPEXE)
     5.6  
     5.7 +MAKE_ARGS += COMPANY_NAME="$(COMPANY_NAME)"
     5.8 +MAKE_ARGS += VENDOR_URL=$(VENDOR_URL)
     5.9 +MAKE_ARGS += VENDOR_URL_BUG=$(VENDOR_URL_BUG)
    5.10 +MAKE_ARGS += VENDOR_URL_VM_BUG=$(VENDOR_URL_VM_BUG)
    5.11 +ifneq ($(VERSION_CFLAGS),)
    5.12 +  # transform syntax from -DProp='"Value"' to /D "Prop=\"Value\"" for Windows build
    5.13 +  MAKE_ARGS += VERSION_CFLAGS="$(subst -D,/D \",$(subst ',,$(subst '$() $(),\"$() $(),$(subst ",\\\",$(VERSION_CFLAGS)))))\""
    5.14 +endif
    5.15 +
    5.16  # On 32 bit windows we build server and client, on 64 bit just server.
    5.17  ifeq ($(JVM_VARIANTS),)
    5.18    ifeq ($(ARCH_DATA_MODEL), 32)
     6.1 --- a/make/windows/makefiles/vm.make	Mon Jan 27 05:10:29 2020 +0000
     6.2 +++ b/make/windows/makefiles/vm.make	Tue Feb 04 02:11:25 2020 +0000
     6.3 @@ -62,10 +62,6 @@
     6.4  CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_TARGET=\"$(BUILD_FLAVOR)\""
     6.5  CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_USER=\"$(BuildUser)\""
     6.6  CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_VM_DISTRO=\"$(HOTSPOT_VM_DISTRO)\""
     6.7 -CXX_FLAGS=$(CXX_FLAGS) /D "VENDOR=\"$(COMPANY_NAME)\""
     6.8 -CXX_FLAGS=$(CXX_FLAGS) /D "VENDOR_URL=\"$(VENDOR_URL)\""
     6.9 -CXX_FLAGS=$(CXX_FLAGS) /D "VENDOR_URL_BUG=\"$(VENDOR_URL_BUG)\""
    6.10 -CXX_FLAGS=$(CXX_FLAGS) /D "VENDOR_URL_VM_BUG=\"$(VENDOR_URL_VM_BUG)\""
    6.11  
    6.12  CXX_FLAGS=$(CXX_FLAGS) $(CXX_INCLUDE_DIRS)
    6.13  
    6.14 @@ -209,6 +205,14 @@
    6.15  bytecodeInterpreterWithChecks.obj: ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp
    6.16          $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp
    6.17  
    6.18 +#files compiled with version flags
    6.19 +
    6.20 +vm_version.obj: $(WorkSpace)\src\share\vm\runtime\vm_version.cpp
    6.21 +        $(CXX) $(CXX_FLAGS) $(VERSION_CFLAGS) $(CXX_USE_PCH) /c $(WorkSpace)\src\share\vm\runtime\vm_version.cpp
    6.22 +
    6.23 +arguments.obj: $(WorkSpace)\src\share\vm\runtime\arguments.cpp
    6.24 +        $(CXX) $(CXX_FLAGS) $(VERSION_CFLAGS) $(CXX_USE_PCH) /c $(WorkSpace)\src\share\vm\runtime\arguments.cpp
    6.25 +
    6.26  # Default rules for the Virtual Machine
    6.27  {$(COMMONSRC)\share\vm\c1}.cpp.obj::
    6.28          $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
     7.1 --- a/src/share/vm/opto/loopPredicate.cpp	Mon Jan 27 05:10:29 2020 +0000
     7.2 +++ b/src/share/vm/opto/loopPredicate.cpp	Tue Feb 04 02:11:25 2020 +0000
     7.3 @@ -502,7 +502,31 @@
     7.4      _lpt(lpt), _phase(lpt->_phase),
     7.5      _visited(area), _invariant(area), _stack(area, 10 /* guess */),
     7.6      _clone_visited(area), _old_new(area)
     7.7 -  {}
     7.8 +  {
     7.9 +    Node* head = _lpt->_head;
    7.10 +    Node* entry = head->in(LoopNode::EntryControl);
    7.11 +    if (entry->outcnt() != 1) {
    7.12 +      // If a node is pinned between the predicates and the loop
    7.13 +      // entry, we won't be able to move any node in the loop that
    7.14 +      // depends on it above it in a predicate. Mark all those nodes
    7.15 +      // as non loop invariatnt.
    7.16 +      Unique_Node_List wq;
    7.17 +      wq.push(entry);
    7.18 +      for (uint next = 0; next < wq.size(); ++next) {
    7.19 +        Node *n = wq.at(next);
    7.20 +        for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) {
    7.21 +          Node* u = n->fast_out(i);
    7.22 +          if (!u->is_CFG()) {
    7.23 +            Node* c = _phase->get_ctrl(u);
    7.24 +            if (_lpt->is_member(_phase->get_loop(c)) || _phase->is_dominator(c, head)) {
    7.25 +              _visited.set(u->_idx);
    7.26 +              wq.push(u);
    7.27 +            }
    7.28 +          }
    7.29 +        }
    7.30 +      }
    7.31 +    }
    7.32 +  }
    7.33  
    7.34    // Map old to n for invariance computation and clone
    7.35    void map_ctrl(Node* old, Node* n) {
     8.1 --- a/src/share/vm/opto/node.cpp	Mon Jan 27 05:10:29 2020 +0000
     8.2 +++ b/src/share/vm/opto/node.cpp	Tue Feb 04 02:11:25 2020 +0000
     8.3 @@ -286,6 +286,10 @@
     8.4  #ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
     8.5  #pragma warning( disable:4355 ) // 'this' : used in base member initializer list
     8.6  #endif
     8.7 +#ifdef __clang__
     8.8 +#pragma clang diagnostic push
     8.9 +#pragma GCC diagnostic ignored "-Wuninitialized"
    8.10 +#endif
    8.11  
    8.12  // Out-of-line code from node constructors.
    8.13  // Executed only when extra debug info. is being passed around.
    8.14 @@ -493,6 +497,10 @@
    8.15    _in[6] = n6; if (n6 != NULL) n6->add_out((Node *)this);
    8.16  }
    8.17  
    8.18 +#ifdef __clang__
    8.19 +#pragma clang diagnostic pop
    8.20 +#endif
    8.21 +
    8.22  
    8.23  //------------------------------clone------------------------------------------
    8.24  // Clone a Node.
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/test/compiler/loopopts/BadPredicateAfterPartialPeel.java	Tue Feb 04 02:11:25 2020 +0000
     9.3 @@ -0,0 +1,312 @@
     9.4 +/*
     9.5 + * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
     9.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     9.7 + *
     9.8 + * This code is free software; you can redistribute it and/or modify it
     9.9 + * under the terms of the GNU General Public License version 2 only, as
    9.10 + * published by the Free Software Foundation.
    9.11 + *
    9.12 + * This code is distributed in the hope that it will be useful, but WITHOUT
    9.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    9.14 + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    9.15 + * version 2 for more details (a copy is included in the LICENSE file that
    9.16 + * accompanied this code).
    9.17 + *
    9.18 + * You should have received a copy of the GNU General Public License version
    9.19 + * 2 along with this work; if not, write to the Free Software Foundation,
    9.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    9.21 + *
    9.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    9.23 + * or visit www.oracle.com if you need additional information or have any
    9.24 + * questions.
    9.25 + *
    9.26 + */
    9.27 +
    9.28 +/**
    9.29 + * @test
    9.30 + * @bug 8146792
    9.31 + * @summary Predicate moved after partial peel may lead to broken graph
    9.32 + * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:CompileOnly=BadPredicateAfterPartialPeel::m -XX:CompileCommand=dontinline,BadPredicateAfterPartialPeel::not_inlined* -XX:CompileCommand=quiet BadPredicateAfterPartialPeel
    9.33 + *
    9.34 + */
    9.35 +
    9.36 +public class BadPredicateAfterPartialPeel {
    9.37 +
    9.38 +    static void not_inlined1() {}
    9.39 +    static void not_inlined4() {}
    9.40 +
    9.41 +    static int m_helper(int i, int i3, int i4) {
    9.42 +        return i3 == 4 ? i4 : i;
    9.43 +    }
    9.44 +
    9.45 +    static float[] array = new float[1000];
    9.46 +    static int[] array2 = new int[1000];
    9.47 +
    9.48 +    boolean flag;
    9.49 +    int j;
    9.50 +
    9.51 +    static void m(BadPredicateAfterPartialPeel o1, BadPredicateAfterPartialPeel o2, BadPredicateAfterPartialPeel o, int i4) {
    9.52 +        int i1 = 1;
    9.53 +
    9.54 +        // To delay partial peeling to the loop opts pass right before CCP
    9.55 +        int i2 = 0;
    9.56 +        for (; i2 < 10; i2 += i1);
    9.57 +        i2 = i2 / 10;
    9.58 +
    9.59 +        // Simplified during CCP:
    9.60 +        int i3 = 2;
    9.61 +        for (; i3 < 4; i3 *= 2);
    9.62 +
    9.63 +        // Loop is partial peeled right before CCP
    9.64 +        int i = 0;
    9.65 +        boolean b = true;
    9.66 +
    9.67 +        not_inlined1();
    9.68 +
    9.69 +        array[0] = -1;
    9.70 +        do {
    9.71 +            // peeled section starts here
    9.72 +            o.flag = false;
    9.73 +            o.j = 0;
    9.74 +
    9.75 +            if (b) {
    9.76 +                // The following store will be pinned between
    9.77 +                // predicates and the loop after partial peeling. All
    9.78 +                // control flow will be optimized out and so nothing
    9.79 +                // will prevent predicates from being moved out the
    9.80 +                // loop.
    9.81 +                array[i] = 0;
    9.82 +            }
    9.83 +            if (array[0] != 0) {
    9.84 +            }
    9.85 +            if (i >= 10) {
    9.86 +                // peeled section ends here
    9.87 +                return;
    9.88 +            }
    9.89 +            i += i2;
    9.90 +            b = false;
    9.91 +            int i5 = m_helper(i, i3, i4); // This will be simpliflied during CCP
    9.92 +            if (array[i5] != 0) { // and this will become a predicate
    9.93 +            }
    9.94 +            if (o2.flag) {
    9.95 +            }
    9.96 +            // A bunch of stuff to grow loop body size and prevent peeling:
    9.97 +            array2[0] = 0;
    9.98 +            array2[1] = 0;
    9.99 +            array2[2] = 0;
   9.100 +            array2[3] = 0;
   9.101 +            array2[4] = 0;
   9.102 +            array2[5] = 0;
   9.103 +            array2[6] = 0;
   9.104 +            array2[7] = 0;
   9.105 +            array2[8] = 0;
   9.106 +            array2[9] = 0;
   9.107 +            array2[10] = 0;
   9.108 +            array2[11] = 0;
   9.109 +            array2[12] = 0;
   9.110 +            array2[13] = 0;
   9.111 +            array2[14] = 0;
   9.112 +            array2[15] = 0;
   9.113 +            array2[16] = 0;
   9.114 +            array2[17] = 0;
   9.115 +            array2[18] = 0;
   9.116 +            array2[19] = 0;
   9.117 +            array2[20] = 0;
   9.118 +            array2[21] = 0;
   9.119 +            array2[22] = 0;
   9.120 +            array2[23] = 0;
   9.121 +            array2[24] = 0;
   9.122 +            array2[25] = 0;
   9.123 +            array2[26] = 0;
   9.124 +            array2[27] = 0;
   9.125 +            array2[28] = 0;
   9.126 +            array2[29] = 0;
   9.127 +            array2[30] = 0;
   9.128 +            array2[31] = 0;
   9.129 +            array2[32] = 0;
   9.130 +            array2[33] = 0;
   9.131 +            array2[34] = 0;
   9.132 +            array2[35] = 0;
   9.133 +            array2[36] = 0;
   9.134 +            array2[37] = 0;
   9.135 +            array2[38] = 0;
   9.136 +            array2[39] = 0;
   9.137 +            array2[40] = 0;
   9.138 +            array2[41] = 0;
   9.139 +            array2[42] = 0;
   9.140 +            array2[43] = 0;
   9.141 +            array2[44] = 0;
   9.142 +            array2[45] = 0;
   9.143 +            array2[46] = 0;
   9.144 +            array2[47] = 0;
   9.145 +            array2[48] = 0;
   9.146 +            array2[49] = 0;
   9.147 +            array2[50] = 0;
   9.148 +            array2[51] = 0;
   9.149 +            array2[52] = 0;
   9.150 +            array2[53] = 0;
   9.151 +            array2[54] = 0;
   9.152 +            array2[55] = 0;
   9.153 +            array2[56] = 0;
   9.154 +            array2[57] = 0;
   9.155 +            array2[58] = 0;
   9.156 +            array2[59] = 0;
   9.157 +            array2[60] = 0;
   9.158 +            array2[61] = 0;
   9.159 +            array2[62] = 0;
   9.160 +            array2[63] = 0;
   9.161 +            array2[64] = 0;
   9.162 +            array2[65] = 0;
   9.163 +            array2[66] = 0;
   9.164 +            array2[67] = 0;
   9.165 +            array2[68] = 0;
   9.166 +            array2[69] = 0;
   9.167 +            array2[70] = 0;
   9.168 +            array2[71] = 0;
   9.169 +            array2[72] = 0;
   9.170 +            array2[73] = 0;
   9.171 +            array2[74] = 0;
   9.172 +            array2[75] = 0;
   9.173 +            array2[76] = 0;
   9.174 +            array2[77] = 0;
   9.175 +            array2[78] = 0;
   9.176 +            array2[79] = 0;
   9.177 +            array2[80] = 0;
   9.178 +            array2[81] = 0;
   9.179 +            array2[82] = 0;
   9.180 +            array2[83] = 0;
   9.181 +            array2[84] = 0;
   9.182 +            array2[85] = 0;
   9.183 +            array2[86] = 0;
   9.184 +            array2[87] = 0;
   9.185 +            array2[88] = 0;
   9.186 +            array2[89] = 0;
   9.187 +            array2[90] = 0;
   9.188 +            array2[91] = 0;
   9.189 +            array2[92] = 0;
   9.190 +            array2[93] = 0;
   9.191 +            array2[94] = 0;
   9.192 +            array2[95] = 0;
   9.193 +            array2[96] = 0;
   9.194 +            array2[97] = 0;
   9.195 +            array2[98] = 0;
   9.196 +            array2[99] = 0;
   9.197 +
   9.198 +            array2[100] = 0;
   9.199 +            array2[101] = 0;
   9.200 +            array2[102] = 0;
   9.201 +            array2[103] = 0;
   9.202 +            array2[104] = 0;
   9.203 +            array2[105] = 0;
   9.204 +            array2[106] = 0;
   9.205 +            array2[107] = 0;
   9.206 +            array2[108] = 0;
   9.207 +            array2[109] = 0;
   9.208 +            array2[110] = 0;
   9.209 +            array2[111] = 0;
   9.210 +            array2[112] = 0;
   9.211 +            array2[113] = 0;
   9.212 +            array2[114] = 0;
   9.213 +            array2[115] = 0;
   9.214 +            array2[116] = 0;
   9.215 +            array2[117] = 0;
   9.216 +            array2[118] = 0;
   9.217 +            array2[119] = 0;
   9.218 +            array2[120] = 0;
   9.219 +            array2[121] = 0;
   9.220 +            array2[122] = 0;
   9.221 +            array2[123] = 0;
   9.222 +            array2[124] = 0;
   9.223 +            array2[125] = 0;
   9.224 +            array2[126] = 0;
   9.225 +            array2[127] = 0;
   9.226 +            array2[128] = 0;
   9.227 +            array2[129] = 0;
   9.228 +            array2[130] = 0;
   9.229 +            array2[131] = 0;
   9.230 +            array2[132] = 0;
   9.231 +            array2[133] = 0;
   9.232 +            array2[134] = 0;
   9.233 +            array2[135] = 0;
   9.234 +            array2[136] = 0;
   9.235 +            array2[137] = 0;
   9.236 +            array2[138] = 0;
   9.237 +            array2[139] = 0;
   9.238 +            array2[140] = 0;
   9.239 +            array2[141] = 0;
   9.240 +            array2[142] = 0;
   9.241 +            array2[143] = 0;
   9.242 +            array2[144] = 0;
   9.243 +            array2[145] = 0;
   9.244 +            array2[146] = 0;
   9.245 +            array2[147] = 0;
   9.246 +            array2[148] = 0;
   9.247 +            array2[149] = 0;
   9.248 +            array2[150] = 0;
   9.249 +            array2[151] = 0;
   9.250 +            array2[152] = 0;
   9.251 +            array2[153] = 0;
   9.252 +            array2[154] = 0;
   9.253 +            array2[155] = 0;
   9.254 +            array2[156] = 0;
   9.255 +            array2[157] = 0;
   9.256 +            array2[158] = 0;
   9.257 +            array2[159] = 0;
   9.258 +            array2[160] = 0;
   9.259 +            array2[161] = 0;
   9.260 +            array2[162] = 0;
   9.261 +            array2[163] = 0;
   9.262 +            array2[164] = 0;
   9.263 +            array2[165] = 0;
   9.264 +            array2[166] = 0;
   9.265 +            array2[167] = 0;
   9.266 +            array2[168] = 0;
   9.267 +            array2[169] = 0;
   9.268 +            array2[170] = 0;
   9.269 +            array2[171] = 0;
   9.270 +            array2[172] = 0;
   9.271 +            array2[173] = 0;
   9.272 +            array2[174] = 0;
   9.273 +            array2[175] = 0;
   9.274 +            array2[176] = 0;
   9.275 +            array2[177] = 0;
   9.276 +            array2[178] = 0;
   9.277 +            array2[179] = 0;
   9.278 +            array2[180] = 0;
   9.279 +            array2[181] = 0;
   9.280 +            array2[182] = 0;
   9.281 +            array2[183] = 0;
   9.282 +            array2[184] = 0;
   9.283 +            array2[185] = 0;
   9.284 +            array2[186] = 0;
   9.285 +            array2[187] = 0;
   9.286 +            array2[188] = 0;
   9.287 +            array2[189] = 0;
   9.288 +            array2[190] = 0;
   9.289 +            array2[191] = 0;
   9.290 +            array2[192] = 0;
   9.291 +            array2[193] = 0;
   9.292 +            array2[194] = 0;
   9.293 +            array2[195] = 0;
   9.294 +            array2[196] = 0;
   9.295 +            array2[197] = 0;
   9.296 +            array2[198] = 0;
   9.297 +            array2[199] = 0;
   9.298 +            if (o1.j >= 20) {
   9.299 +                break;
   9.300 +            }
   9.301 +            o1.j++;
   9.302 +        } while(true);
   9.303 +        not_inlined4();
   9.304 +    }
   9.305 +
   9.306 +    static public void main(String[] args) {
   9.307 +        BadPredicateAfterPartialPeel o1 = new BadPredicateAfterPartialPeel();
   9.308 +        BadPredicateAfterPartialPeel o2 = new BadPredicateAfterPartialPeel();
   9.309 +        for (int i = 0; i < 20000; i++) {
   9.310 +            o1.j = 0;
   9.311 +            m(o1, o2, o2, 0);
   9.312 +            m_helper(i, 2, i); // pollute profile
   9.313 +        }
   9.314 +    }
   9.315 +}

mercurial