Merge

Sun, 02 Jul 2017 22:31:51 -0700

author
asaha
date
Sun, 02 Jul 2017 22:31:51 -0700
changeset 8981
1ba859a58587
parent 8962
8aa5e0006ee3
parent 8980
8c937a2e846e
child 8984
7c2285d86b8d

Merge

.hgtags file | annotate | diff | comparison | revisions
THIRD_PARTY_README file | annotate | diff | comparison | revisions
src/share/vm/prims/jni.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/.hgtags	Mon Jun 12 13:58:09 2017 -0400
     1.2 +++ b/.hgtags	Sun Jul 02 22:31:51 2017 -0700
     1.3 @@ -965,7 +965,26 @@
     1.4  56e71d16083904ceddfdd1d66312582a42781646 jdk8u131-b09
     1.5  1da23ae49386608550596502d90a381ee6c1dfaa jdk8u131-b10
     1.6  829ea9b92cda9545652f1b309f56c57383024ebb jdk8u131-b11
     1.7 +41e0713bcca27cef5d6a9afd44c7ca4811937713 jdk8u131-b31
     1.8 +e318654a4fa352a06935dd56eebf88ae387b31f9 jdk8u131-b32
     1.9 +32998fc932dc58c6bbac185cc17d2752fa6dba4c jdk8u131-b33
    1.10 +50b3fa6791f46bc582528bdc7f6311b3b6832c51 jdk8u131-b34
    1.11  692bc6b674dcab72453de08ee9da0856a7e41c0f jdk8u141-b00
    1.12  0cee0db0180b64655751e7058c251103f9660f85 jdk8u141-b01
    1.13 +82435799636c8b50a090aebcb5af49946afa7bb5 jdk8u141-b02
    1.14 +678f11cc769eb79d35d49a94c769304df67a9cef jdk8u141-b03
    1.15 +62b0b4a31b44e8b159bff106c04ecfabc9d78d9b jdk8u141-b04
    1.16 +53a48dc8e4418ed422c69361193add798cb4ed55 jdk8u141-b05
    1.17 +4b7067065b0ad08c41a6334b44877319cbb2de54 jdk8u141-b06
    1.18 +42f196fd7c589e439c4e6d86b7d845ff024cfe45 jdk8u141-b07
    1.19 +37ba410ffd431c76961255b87398f6ace7b6794f jdk8u141-b08
    1.20 +b23c5879a33cf2c2e7c3e2cdfb0285bb7e64198e jdk8u141-b09
    1.21 +1a3f8a55df45dd79cb566d172e925faa464534f0 jdk8u141-b10
    1.22 +de803a292be4add77fd8a1e034481f0692c89f95 jdk8u141-b11
    1.23 +d6e7c7d2c6f69906b4cb643a6813eccba0de988f jdk8u141-b12
    1.24 +df6af363337eff5b22ae7940b0981231fdf5dfb4 jdk8u141-b13
    1.25 +3a1543e089c32592be9c201c6e021295fbf5fdc1 jdk8u141-b14
    1.26  2d5100bddeb80cf767485b787fc3051311e3d7b9 jdk8u151-b00
    1.27 +596b584c68b73ec635347807571463580deb955f jdk8u151-b01
    1.28 +1f6f436360d5cd375b806aec1c78abb8fcb4e5f6 jdk8u151-b02
    1.29  02d5e7b64b288429f3836dcfb8ac304774775965 jdk8u161-b00
     2.1 --- a/THIRD_PARTY_README	Mon Jun 12 13:58:09 2017 -0400
     2.2 +++ b/THIRD_PARTY_README	Sun Jul 02 22:31:51 2017 -0700
     2.3 @@ -7,7 +7,7 @@
     2.4  
     2.5  --- begin of LICENSE ---
     2.6  
     2.7 -Copyright (c) 2000-2011 France Télécom
     2.8 +Copyright (c) 2000-2011 France T??l??com
     2.9  All rights reserved.
    2.10  
    2.11  Redistribution and use in source and binary forms, with or without
    2.12 @@ -285,13 +285,53 @@
    2.13  form with the JDK 8 and OpenJDK 8 source distributions, and as object code in
    2.14  the JRE 8 & JDK 8 runtimes.
    2.15  
    2.16 -In the case of the JRE 8 & JDK 8 runtimes, the terms of the Oracle license do
    2.17 +In the case of the JRE & JDK runtimes, the terms of the Oracle license do
    2.18  NOT apply to the Elliptic Curve Cryptography library; it is licensed under the
    2.19  following license, separately from Oracle's JDK & JRE.  If you do not wish to
    2.20 -install the Elliptic Curve Cryptography library, you may delete the library
    2.21 -named libsunec.so (on Solaris and Linux systems) or sunec.dll (on Windows
    2.22 -systems) from the JRE bin directory reserved for native libraries.
    2.23 -
    2.24 +install the Elliptic Curve Cryptography library, you may delete the
    2.25 +Elliptic Curve Cryptography library:
    2.26 +   - On Solaris and Linux systems: delete $(JAVA_HOME)/lib/libsunec.so
    2.27 +   - On Windows systems: delete $(JAVA_HOME)\bin\sunec.dll
    2.28 +   - On Mac systems, delete:
    2.29 +      for JRE: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/libsunec.dylib
    2.30 +      for JDK: $(JAVA_HOME)/jre/lib/libsunec.dylib
    2.31 +
    2.32 +Written Offer for ECC Source Code
    2.33 +  For third party technology that you receive from Oracle in binary form 
    2.34 +  which is licensed under an open source license that gives you the right
    2.35 +  to receive the source code for that binary, you can obtain a copy of 
    2.36 +  the applicable source code from this page:
    2.37 +     http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/tip/src/share/native/sun/security/ec/impl
    2.38 +
    2.39 +  If the source code for the technology was not provided to you with the 
    2.40 +  binary, you can also receive a copy of the source code on physical 
    2.41 +  media by submitting a written request to:
    2.42 +
    2.43 +     Oracle America, Inc.
    2.44 +     Attn: Associate General Counsel,
    2.45 +     Development and Engineering Legal
    2.46 +     500 Oracle Parkway, 10th Floor
    2.47 +     Redwood Shores, CA 94065
    2.48 +
    2.49 +  Or, you may send an email to Oracle using the form at:
    2.50 +     http://www.oracle.com/goto/opensourcecode/request
    2.51 +
    2.52 +  Your request should include:
    2.53 +    - The name of the component or binary file(s) for which you are requesting 
    2.54 +      the source code
    2.55 +    - The name and version number of the Oracle product containing the binary
    2.56 +    - The date you received the Oracle product
    2.57 +    - Your name
    2.58 +    - Your company name (if applicable)
    2.59 +    - Your return mailing address and email and
    2.60 +    - A telephone number in the event we need to reach you.
    2.61 +
    2.62 +  We may charge you a fee to cover the cost of physical media and processing. 
    2.63 +  Your request must be sent (i) within three (3) years of the date you 
    2.64 +  received the Oracle product that included the component or binary 
    2.65 +  file(s) that are the subject of your request, or (ii) in the case of 
    2.66 +  code licensed under the GPL v3, for as long as Oracle offers spare 
    2.67 +  parts or customer support for that product model.
    2.68  
    2.69  --- begin of LICENSE ---
    2.70  
    2.71 @@ -809,7 +849,7 @@
    2.72  --- begin of LICENSE ---
    2.73  
    2.74  Copyright notice
    2.75 -Copyright © 2011 Ecma International
    2.76 +Copyright ?? 2011 Ecma International
    2.77  Ecma International
    2.78  Rue du Rhone 114
    2.79  CH-1204 Geneva
    2.80 @@ -870,70 +910,13 @@
    2.81  OF SUCH DAMAGE.
    2.82  --- end of LICENSE ---
    2.83  
    2.84 -%% This notice is provided with respect to Dynalink library which is included
    2.85 -with the Nashorn technology.
    2.86 -
    2.87 ---- begin of LICENSE ---
    2.88 -Copyright (c) 2009-2013, Attila Szegedi
    2.89 -
    2.90 -Redistribution and use in source and binary forms, with or without
    2.91 -modification, are permitted provided that the following conditions are
    2.92 -met:
    2.93 -* Redistributions of source code must retain the above copyright
    2.94 -  notice, this list of conditions and the following disclaimer.
    2.95 -* Redistributions in binary form must reproduce the above copyright
    2.96 -  notice, this list of conditions and the following disclaimer in the
    2.97 -  documentation and/or other materials provided with the distribution.
    2.98 -* Neither the name of the copyright holder nor the names of
    2.99 -  contributors may be used to endorse or promote products derived from
   2.100 -  this software without specific prior written permission.
   2.101 -
   2.102 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   2.103 -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   2.104 -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
   2.105 -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
   2.106 -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   2.107 -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   2.108 -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   2.109 -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   2.110 -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   2.111 -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   2.112 -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   2.113 ---- end of LICENSE ---
   2.114 -
   2.115 -%% This notice is provided with respect to Joni library which is included
   2.116 -with the Nashorn technology.
   2.117 -
   2.118 ---- begin of LICENSE ---
   2.119 -Permission is hereby granted, free of charge, to any person obtaining a copy of
   2.120 -this software and associated documentation files (the "Software"), to deal in
   2.121 -the Software without restriction, including without limitation the rights to
   2.122 -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
   2.123 -of the Software, and to permit persons to whom the Software is furnished to do
   2.124 -so, subject to the following conditions:
   2.125 -
   2.126 -The above copyright notice and this permission notice shall be included in all
   2.127 -copies or substantial portions of the Software.
   2.128 -
   2.129 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   2.130 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   2.131 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   2.132 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   2.133 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   2.134 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
   2.135 -SOFTWARE.
   2.136 -
   2.137 ---- end of LICENSE ---
   2.138 -
   2.139 --------------------------------------------------------------------------------
   2.140 -
   2.141  %% This notice is provided with respect to FontConfig 2.5, which may be 
   2.142  included with JRE 8, JDK 8, and OpenJDK 8 source distributions on
   2.143  Linux and Solaris.
   2.144  
   2.145  --- begin of LICENSE ---
   2.146  
   2.147 -Copyright © 2001,2003 Keith Packard
   2.148 +Copyright ?? 2001,2003 Keith Packard
   2.149  
   2.150  Permission to use, copy, modify, distribute, and sell this software and its
   2.151  documentation for any purpose is hereby granted without fee, provided that the
   2.152 @@ -956,6 +939,74 @@
   2.153  
   2.154  -------------------------------------------------------------------------------
   2.155  
   2.156 +%% This notice is provided with respect to freebXML Registry 3.0 & 3.1,
   2.157 +which may be included with JRE 8, JDK 8, and OpenJDK 8.
   2.158 +
   2.159 +--- begin of LICENSE ---
   2.160 +
   2.161 +freebxml:  Copyright (c) 2001 freebxml.org.  All rights reserved.
   2.162 +
   2.163 +The names "The freebXML Registry Project" and "freebxml Software
   2.164 +Foundation" must not be used to endorse or promote products derived
   2.165 +from this software or be used in a product name without prior
   2.166 +written permission. For written permission, please contact
   2.167 +ebxmlrr-team@lists.sourceforge.net.
   2.168 +
   2.169 +This software consists of voluntary contributions made by many individuals
   2.170 +on behalf of the the freebxml Software Foundation. For more information on
   2.171 +the freebxml Software Foundation, please see <http://www.freebxml.org/>.
   2.172 +
   2.173 +This product includes software developed by the Apache Software Foundation
   2.174 +(http://www.apache.org/).
   2.175 +
   2.176 +The freebxml License, Version 1.1 5
   2.177 +Copyright (c) 2001 freebxml.org. All rights reserved.
   2.178 +
   2.179 +Redistribution and use in source and binary forms, with or without
   2.180 +modification, are permitted provided that the following conditions
   2.181 +are met:
   2.182 +
   2.183 + 1. Redistributions of source code must retain the above copyright
   2.184 +    notice, this list of conditions and the following disclaimer.
   2.185 +
   2.186 + 2. Redistributions in binary form must reproduce the above copyright
   2.187 +    notice, this list of conditions and the following disclaimer in
   2.188 +    the documentation and/or other materials provided with the
   2.189 +    distribution.
   2.190 +
   2.191 + 3. The end-user documentation included with the redistribution, if
   2.192 +    any, must include the following acknowlegement:
   2.193 +       "This product includes software developed by
   2.194 +        freebxml.org (http://www.freebxml.org/)."
   2.195 +    Alternately, this acknowlegement may appear in the software itself,
   2.196 +    if and wherever such third-party acknowlegements normally appear.
   2.197 +
   2.198 + 4. The names "The freebXML Registry Project", "freebxml Software
   2.199 +    Foundation" must not be used to endorse or promote products derived
   2.200 +    from this software without prior written permission. For written
   2.201 +    permission, please contact ebxmlrr-team@lists.sourceforge.net.
   2.202 +
   2.203 + 5. Products derived from this software may not be called "freebxml",
   2.204 +    "freebXML Registry" nor may freebxml" appear in their names without
   2.205 +    prior written permission of the freebxml Group.
   2.206 +
   2.207 +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   2.208 +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   2.209 +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   2.210 +DISCLAIMED.  IN NO EVENT SHALL THE freebxml SOFTWARE FOUNDATION OR
   2.211 +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   2.212 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   2.213 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   2.214 +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   2.215 +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   2.216 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   2.217 +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   2.218 +SUCH DAMAGE.
   2.219 +
   2.220 +--- end of LICENSE ---
   2.221 +
   2.222 +-------------------------------------------------------------------------------
   2.223 +
   2.224  %% This notice is provided with respect to IAIK PKCS#11 Wrapper, 
   2.225  which may be included with JRE 8, JDK 8, and OpenJDK 8.
   2.226  
   2.227 @@ -1083,6 +1134,47 @@
   2.228  
   2.229  --------------------------------------------------------------------------------
   2.230  
   2.231 +%% This notice is provided with respect to Jing 20030619, which may 
   2.232 +be included with JRE 8, JDK 8, and OpenJDK 8.
   2.233 +
   2.234 +--- begin of LICENSE  ---
   2.235 +
   2.236 +Copyright (c) 2001-2003 Thai Open Source Software Center Ltd All
   2.237 +rights reserved.
   2.238 +
   2.239 +Redistribution and use in source and binary forms, with or without
   2.240 +modification, are permitted provided that the following conditions
   2.241 +are met:
   2.242 +
   2.243 +Redistributions of source code must retain the above copyright
   2.244 +notice, this list of conditions and the following disclaimer.
   2.245 +
   2.246 +Redistributions in binary form must reproduce the above copyright
   2.247 +notice, this list of conditions and the following disclaimer in the
   2.248 +documentation and/or other materials provided with the distribution.
   2.249 +
   2.250 +Neither the name of the Thai Open Source Software Center Ltd nor
   2.251 +the names of its contributors may be used to endorse or promote
   2.252 +products derived from this software without specific prior written
   2.253 +permission.
   2.254 +
   2.255 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   2.256 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   2.257 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
   2.258 +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   2.259 +REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   2.260 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   2.261 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   2.262 +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   2.263 +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   2.264 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   2.265 +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   2.266 +SUCH DAMAGE.
   2.267 +
   2.268 +--- end of LICENSE  ---
   2.269 +
   2.270 +--------------------------------------------------------------------------------
   2.271 +
   2.272  %% This notice is provided with respect to Joni v1.1.9, which may be 
   2.273  included with JRE 8, JDK 8, and OpenJDK 8.
   2.274  
   2.275 @@ -1215,7 +1307,7 @@
   2.276  
   2.277  -------------------------------------------------------------------------------
   2.278  
   2.279 -%% Portions Copyright Eastman Kodak Company 1992
   2.280 +%% Portions Copyright Eastman Kodak Company 1991-2003
   2.281  
   2.282  -------------------------------------------------------------------------------
   2.283  
   2.284 @@ -1339,8 +1431,8 @@
   2.285  
   2.286  -------------------------------------------------------------------------------
   2.287  
   2.288 -%% This notice is provided with respect to GIFLIB 5.1.1 & libungif 4.1.3, which may be 
   2.289 -included with JRE 8, JDK 8, and OpenJDK 8.
   2.290 +%% This notice is provided with respect to GIFLIB 5.1.1 & libungif 4.1.3, 
   2.291 +which may be included with JRE 8, JDK 8, and OpenJDK 8.
   2.292  
   2.293  --- begin of LICENSE ---
   2.294  
   2.295 @@ -1972,67 +2064,45 @@
   2.296  
   2.297  -------------------------------------------------------------------------------
   2.298  
   2.299 -%% This notice is provided with respect to SAX 2.0.1, which may be included 
   2.300 -with JRE 8, JDK 8, and OpenJDK 8.
   2.301 -
   2.302 ---- begin of LICENSE ---
   2.303 -
   2.304 - SAX is free!
   2.305 -
   2.306 - In fact, it's not possible to own a license to SAX, since it's been placed in
   2.307 - the public domain.
   2.308 -
   2.309 - No Warranty
   2.310 -
   2.311 - Because SAX is released to the public domain, there is no warranty for the
   2.312 - design or for the software implementation, to the extent permitted by
   2.313 - applicable law. Except when otherwise stated in writing the copyright holders
   2.314 - and/or other parties provide SAX "as is" without warranty of any kind, either
   2.315 - expressed or implied, including, but not limited to, the implied warranties
   2.316 - of merchantability and fitness for a particular purpose. The entire risk as
   2.317 - to the quality and performance of SAX is with you. Should SAX prove
   2.318 - defective, you assume the cost of all necessary servicing, repair or
   2.319 - correction.
   2.320 -
   2.321 - In no event unless required by applicable law or agreed to in writing will
   2.322 - any copyright holder, or any other party who may modify and/or redistribute
   2.323 - SAX, be liable to you for damages, including any general, special, incidental
   2.324 - or consequential damages arising out of the use or inability to use SAX
   2.325 - (including but not limited to loss of data or data being rendered inaccurate
   2.326 - or losses sustained by you or third parties or a failure of the SAX to
   2.327 - operate with any other programs), even if such holder or other party has been
   2.328 - advised of the possibility of such damages.
   2.329 -
   2.330 - Copyright Disclaimers 
   2.331 -
   2.332 - This page includes statements to that effect by David Megginson, who would
   2.333 - have been able to claim copyright for the original work.  SAX 1.0
   2.334 -
   2.335 - Version 1.0 of the Simple API for XML (SAX), created collectively by the
   2.336 - membership of the XML-DEV mailing list, is hereby released into the public
   2.337 - domain.
   2.338 -
   2.339 - No one owns SAX: you may use it freely in both commercial and non-commercial
   2.340 - applications, bundle it with your software distribution, include it on a
   2.341 - CD-ROM, list the source code in a book, mirror the documentation at your own
   2.342 - web site, or use it in any other way you see fit.
   2.343 -
   2.344 - David Megginson, sax@megginson.com
   2.345 - 1998-05-11
   2.346 -
   2.347 - SAX 2.0 
   2.348 -
   2.349 - I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and
   2.350 - release all of the SAX 2.0 source code, compiled code, and documentation
   2.351 - contained in this distribution into the Public Domain. SAX comes with NO
   2.352 - WARRANTY or guarantee of fitness for any purpose.
   2.353 -
   2.354 - David Megginson, david@megginson.com
   2.355 - 2000-05-05
   2.356 -
   2.357 ---- end of LICENSE ---
   2.358 -
   2.359 --------------------------------------------------------------------------------
   2.360 +%% This notice is provided with respect to Relax NG Datatype 1.0, which 
   2.361 +may be included with JRE 8, JDK 8, and OpenJDK 8.  
   2.362 +
   2.363 +--- begin of LICENSE  ---
   2.364 +
   2.365 +Copyright (c) 2005, 2010 Thai Open Source Software Center Ltd
   2.366 +All rights reserved.
   2.367 +
   2.368 +Redistribution and use in source and binary forms, with or without
   2.369 +modification, are permitted provided that the following conditions are
   2.370 +met:
   2.371 +
   2.372 +    Redistributions of source code must retain the above copyright
   2.373 +    notice, this list of conditions and the following disclaimer.
   2.374 +
   2.375 +    Redistributions in binary form must reproduce the above copyright
   2.376 +    notice, this list of conditions and the following disclaimer in
   2.377 +    the documentation and/or other materials provided with the
   2.378 +    distribution.
   2.379 +
   2.380 +    Neither the names of the copyright holders nor the names of its
   2.381 +    contributors may be used to endorse or promote products derived
   2.382 +    from this software without specific prior written permission.
   2.383 +
   2.384 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   2.385 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   2.386 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   2.387 +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
   2.388 +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   2.389 +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   2.390 +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   2.391 +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   2.392 +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   2.393 +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   2.394 +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   2.395 +
   2.396 +--- end of LICENSE  ---
   2.397 +
   2.398 +--------------------------------------------------------------------------------
   2.399  
   2.400  %% This notice is provided with respect to SoftFloat version 2b, which may be 
   2.401  included with JRE 8, JDK 8, and OpenJDK 8 on Linux/ARM.
   2.402 @@ -2142,16 +2212,16 @@
   2.403  Unicode Terms of Use
   2.404  
   2.405  For the general privacy policy governing access to this site, see the Unicode
   2.406 -Privacy Policy. For trademark usage, see the Unicode® Consortium Name and
   2.407 +Privacy Policy. For trademark usage, see the Unicode?? Consortium Name and
   2.408  Trademark Usage Policy.
   2.409  
   2.410  A. Unicode Copyright.
   2.411 -   1. Copyright © 1991-2013 Unicode, Inc. All rights reserved.
   2.412 +   1. Copyright ?? 1991-2013 Unicode, Inc. All rights reserved.
   2.413  
   2.414     2. Certain documents and files on this website contain a legend indicating
   2.415        that "Modification is permitted." Any person is hereby authorized,
   2.416        without fee, to modify such documents and files to create derivative
   2.417 -      works conforming to the Unicode® Standard, subject to Terms and
   2.418 +      works conforming to the Unicode?? Standard, subject to Terms and
   2.419        Conditions herein.
   2.420  
   2.421      3. Any person is hereby authorized, without fee, to view, use, reproduce,
   2.422 @@ -2217,14 +2287,14 @@
   2.423  
   2.424  E.Trademarks & Logos.
   2.425     1. The Unicode Word Mark and the Unicode Logo are trademarks of Unicode,
   2.426 -      Inc.  “The Unicode Consortium” and “Unicode, Inc.” are trade names of
   2.427 +      Inc.  ???The Unicode Consortium??? and ???Unicode, Inc.??? are trade names of
   2.428        Unicode, Inc.  Use of the information and materials found on this
   2.429 -      website indicates your acknowledgement of Unicode, Inc.’s exclusive
   2.430 +      website indicates your acknowledgement of Unicode, Inc.???s exclusive
   2.431        worldwide rights in the Unicode Word Mark, the Unicode Logo, and the
   2.432        Unicode trade names.
   2.433  
   2.434 -   2. The Unicode Consortium Name and Trademark Usage Policy (“Trademark
   2.435 -      Policy”) are incorporated herein by reference and you agree to abide by
   2.436 +   2. The Unicode Consortium Name and Trademark Usage Policy (???Trademark
   2.437 +      Policy???) are incorporated herein by reference and you agree to abide by
   2.438        the provisions of the Trademark Policy, which may be changed from time
   2.439        to time in the sole discretion of Unicode, Inc.
   2.440  
   2.441 @@ -2247,12 +2317,12 @@
   2.442  
   2.443     2. Modification by Unicode.  Unicode shall have the right to modify this
   2.444        Agreement at any time by posting it to this site. The user may not
   2.445 -      assign any part of this Agreement without Unicode’s prior written
   2.446 +      assign any part of this Agreement without Unicode???s prior written
   2.447        consent.
   2.448  
   2.449     3. Taxes. The user agrees to pay any taxes arising from access to this
   2.450        website or use of the information herein, except for those based on
   2.451 -      Unicode’s net income.
   2.452 +      Unicode???s net income.
   2.453  
   2.454     4. Severability.  If any provision of this Agreement is declared invalid or
   2.455        unenforceable, the remaining provisions of this Agreement shall remain
   2.456 @@ -2281,7 +2351,7 @@
   2.457  
   2.458  COPYRIGHT AND PERMISSION NOTICE
   2.459  
   2.460 -Copyright © 1991-2012 Unicode, Inc. All rights reserved. Distributed under the
   2.461 +Copyright ?? 1991-2012 Unicode, Inc. All rights reserved. Distributed under the
   2.462  Terms of Use in http://www.unicode.org/copyright.html.
   2.463  
   2.464  Permission is hereby granted, free of charge, to any person obtaining a copy
   2.465 @@ -2518,26 +2588,66 @@
   2.466  
   2.467  --- begin of LICENSE ---
   2.468  
   2.469 -          Licenses
   2.470 -The X.Org Foundation March 2004
   2.471 -
   2.472 -1. Introduction
   2.473 -
   2.474 -The X.org Foundation X Window System distribution is a compilation of code and
   2.475 -documentation from many sources. This document is intended primarily as a
   2.476 -guide to the licenses used in the distribution: you must check each file
   2.477 -and/or package for precise redistribution terms. None-the-less, this summary
   2.478 -may be useful to many users. No software incorporating the XFree86 1.1 license
   2.479 -has been incorporated.
   2.480 -
   2.481 -This document is based on the compilation from XFree86.
   2.482 -
   2.483 -2. XFree86 License
   2.484 -
   2.485 -XFree86 code without an explicit copyright is covered by the following
   2.486 -copyright/license:
   2.487 -
   2.488 -Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
   2.489 +This is the copyright for the files in src/solaris/native/sun/awt: list.h, 
   2.490 +multiVis.h, wsutils.h, list.c, multiVis.c
   2.491 +Copyright (c) 1994 Hewlett-Packard Co.
   2.492 +Copyright (c) 1996 X Consortium
   2.493 +
   2.494 +Permission is hereby granted, free of charge, to any person obtaining
   2.495 +a copy of this software and associated documentation files (the
   2.496 +"Software"), to deal in the Software without restriction, including
   2.497 +without limitation the rights to use, copy, modify, merge, publish,
   2.498 +distribute, sublicense, and sell copies of the Software, and to
   2.499 +permit persons to whom the Software is furnished to do so, subject to
   2.500 +the following conditions:
   2.501 +
   2.502 +The above copyright notice and this permission notice shall be included
   2.503 +in all copies or substantial portions of the Software.
   2.504 +
   2.505 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   2.506 +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   2.507 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   2.508 +IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
   2.509 +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
   2.510 +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
   2.511 +OTHER DEALINGS IN THE SOFTWARE.
   2.512 +
   2.513 +Except as contained in this notice, the name of the X Consortium shall
   2.514 +not be used in advertising or otherwise to promote the sale, use or
   2.515 +other dealings in this Software without prior written authorization
   2.516 +from the X Consortium.
   2.517 +___________________________
   2.518 +The files in motif/lib/Xm/util included this copyright:mkdirhier.man,
   2.519 +xmkmf.man, chownxterm.c, makeg.man, mergelib.cpp, lndir.man, makestrs.man, 
   2.520 +checktree.c, lndir.c, makestrs.c
   2.521 +Copyright (c) 1993, 1994 X Consortium
   2.522 +
   2.523 +Permission is hereby granted, free of charge, to any person obtaining a
   2.524 +copy of this software and associated documentation files (the "Software"),
   2.525 +to deal in the Software without restriction, including without limitation
   2.526 +the rights to use, copy, modify, merge, publish, distribute, sublicense,
   2.527 +and/or sell copies of the Software, and to permit persons to whom the
   2.528 +Software furnished to do so, subject to the following conditions:
   2.529 +
   2.530 +The above copyright notice and this permission notice shall be included in
   2.531 +all copies or substantial portions of the Software.
   2.532 +
   2.533 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   2.534 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   2.535 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
   2.536 +THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
   2.537 +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
   2.538 +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
   2.539 +SOFTWARE.
   2.540 +
   2.541 +Except as contained in this notice, the name of the X Consortium shall not
   2.542 +be used in advertising or otherwise to promote the sale, use or other
   2.543 +dealing in this Software without prior written authorization from the
   2.544 +X Consortium.
   2.545 +_____________________________
   2.546 +Xmos_r.h:
   2.547 +/*
   2.548 +Copyright (c) 1996 X Consortium
   2.549  
   2.550  Permission is hereby granted, free of charge, to any person obtaining a copy
   2.551  of this software and associated documentation files (the "Software"), to deal
   2.552 @@ -2546,773 +2656,153 @@
   2.553  copies of the Software, and to permit persons to whom the Software is
   2.554  furnished to do so, subject to the following conditions:
   2.555  
   2.556 -The above copyright notice and this permission notice shall be included in all
   2.557 -copies or substantial portions of the Software.
   2.558 +The above copyright notice and this permission notice shall be included in
   2.559 +all copies or substantial portions of the Software.
   2.560  
   2.561  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   2.562  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   2.563  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   2.564 -XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
   2.565 -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   2.566 +X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
   2.567 +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   2.568  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   2.569  
   2.570 -Except as contained in this notice, the name of the XFree86 Project shall not
   2.571 -be used in advertising or otherwise to promote the sale, use or other dealings
   2.572 -in this Software without prior written authorization from the XFree86 Project.
   2.573 -
   2.574 -3. Other Licenses
   2.575 -
   2.576 -Portions of code are covered by the following licenses/copyrights. See
   2.577 -individual files for the copyright dates.
   2.578 -
   2.579 -3.1. X/MIT Copyrights
   2.580 -
   2.581 -3.1.1. X Consortium
   2.582 -
   2.583 -Copyright (C) <date> X Consortium
   2.584 -
   2.585 -Permission is hereby granted, free of charge, to any person obtaining a copy
   2.586 -of this software and associated documentation files (the "Software"), to deal
   2.587 -in the Software without restriction, including without limitation the rights
   2.588 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   2.589 -copies of the Software, and to permit persons to whom the Software is
   2.590 -furnished to do so, subject to the following conditions:
   2.591 -
   2.592 -The above copyright notice and this permission notice shall be included in all
   2.593 -copies or substantial portions of the Software.
   2.594 -
   2.595 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   2.596 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   2.597 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X
   2.598 -CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
   2.599 -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
   2.600 -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   2.601 -
   2.602  Except as contained in this notice, the name of the X Consortium shall not be
   2.603 -used in advertising or otherwise to promote the sale, use or other dealings in
   2.604 -this Software without prior written authorization from the X Consortium.
   2.605 -
   2.606 -X Window System is a trademark of X Consortium, Inc.
   2.607 -
   2.608 -3.1.2. The Open Group
   2.609 -
   2.610 -Copyright <date> The Open Group
   2.611 -
   2.612 -Permission to use, copy, modify, distribute, and sell this software and its
   2.613 -documentation for any purpose is hereby granted without fee, provided that the
   2.614 -above copyright notice appear in all copies and that both that copyright
   2.615 -notice and this permission notice appear in supporting documentation.
   2.616 -
   2.617 -The above copyright notice and this permission notice shall be included in all
   2.618 -copies or substantial portions of the Software.
   2.619 +used in advertising or otherwise to promote the sale, use or other dealings
   2.620 +in this Software without prior written authorization from the X Consortium.
   2.621 +*/
   2.622 +
   2.623 +_____________________________
   2.624 +Copyright notice for extutil.h:
   2.625 +Copyright 1989, 1998 The Open Group
   2.626 +
   2.627 +All Rights Reserved.
   2.628 +
   2.629 +The above copyright notice and this permission notice shall be included in
   2.630 +all copies or substantial portions of the Software.
   2.631  
   2.632  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   2.633  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   2.634  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   2.635 -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
   2.636 -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
   2.637 -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   2.638 +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
   2.639 +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   2.640 +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   2.641  
   2.642  Except as contained in this notice, the name of The Open Group shall not be
   2.643 -used in advertising or otherwise to promote the sale, use or other dealings in
   2.644 -this Software without prior written authorization from The Open Group.  3.2.
   2.645 -Berkeley-based copyrights:
   2.646 -
   2.647 -o
   2.648 -3.2.1. General
   2.649 -
   2.650 -Redistribution and use in source and binary forms, with or without
   2.651 -modification, are permitted provided that the following conditions are met:
   2.652 -
   2.653 -   1. Redistributions of source code must retain the above copyright notice,
   2.654 -   this list of conditions and the following disclaimer.
   2.655 -
   2.656 -   2. Redistributions in binary form must reproduce the above copyright
   2.657 -   notice, this list of conditions and the following disclaimer in the
   2.658 -   documentation and/or other materials provided with the distribution.
   2.659 -
   2.660 -   3. The name of the author may not be used to endorse or promote products
   2.661 -   derived from this software without specific prior written permission.
   2.662 -
   2.663 -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
   2.664 -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   2.665 -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
   2.666 -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   2.667 -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   2.668 -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   2.669 -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   2.670 -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   2.671 -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   2.672 -POSSIBILITY OF SUCH DAMAGE.  3.2.2. UCB/LBL
   2.673 -
   2.674 -Copyright (c) 1993 The Regents of the University of California. All rights
   2.675 -reserved.
   2.676 -
   2.677 -This software was developed by the Computer Systems Engineering group at
   2.678 -Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to
   2.679 -Berkeley.
   2.680 -
   2.681 -All advertising materials mentioning features or use of this software must
   2.682 -display the following acknowledgement: This product includes software
   2.683 -developed by the University of California, Lawrence Berkeley Laboratory.
   2.684 -
   2.685 -Redistribution and use in source and binary forms, with or without
   2.686 -modification, are permitted provided that the following conditions are met:
   2.687 -
   2.688 -   1. Redistributions of source code must retain the above copyright notice,
   2.689 -   this list of conditions and the following disclaimer.
   2.690 -
   2.691 -   2. Redistributions in binary form must reproduce the above copyright
   2.692 -   notice, this list of conditions and the following disclaimer in the
   2.693 -   documentation and/or other materials provided with the distribution.
   2.694 -
   2.695 -   3. All advertising materials mentioning features or use of this software
   2.696 -   must display the following acknowledgement: This product includes software
   2.697 -   developed by the University of California, Berkeley and its contributors.
   2.698 -
   2.699 -   4. Neither the name of the University nor the names of its contributors may
   2.700 -   be used to endorse or promote products derived from this software without
   2.701 -   specific prior written permission.
   2.702 -
   2.703 -THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
   2.704 -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   2.705 -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   2.706 -DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
   2.707 -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   2.708 -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   2.709 -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   2.710 -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   2.711 -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   2.712 -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  3.2.3. The
   2.713 -NetBSD Foundation, Inc.
   2.714 -
   2.715 -Copyright (c) 2003 The NetBSD Foundation, Inc. All rights reserved.
   2.716 -
   2.717 -This code is derived from software contributed to The NetBSD Foundation by Ben
   2.718 -Collver <collver1@attbi.com>
   2.719 -
   2.720 -Redistribution and use in source and binary forms, with or without
   2.721 -modification, are permitted provided that the following conditions are met:
   2.722 -
   2.723 -   1. Redistributions of source code must retain the above copyright notice,
   2.724 -   this list of conditions and the following disclaimer.
   2.725 -
   2.726 -   2. Redistributions in binary form must reproduce the above copyright
   2.727 -   notice, this list of conditions and the following disclaimer in the
   2.728 -   documentation and/or other materials provided with the distribution.
   2.729 -
   2.730 -   3. All advertising materials mentioning features or use of this software
   2.731 -   must display the following acknowledgement: This product includes software
   2.732 -   developed by the NetBSD Foundation, Inc. and its contributors.
   2.733 -
   2.734 -   4. Neither the name of The NetBSD Foundation nor the names of its
   2.735 -   contributors may be used to endorse or promote products derived from this
   2.736 -   software without specific prior written permission.
   2.737 -
   2.738 -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS ``AS
   2.739 -IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   2.740 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   2.741 -DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
   2.742 -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   2.743 -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   2.744 -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   2.745 -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   2.746 -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   2.747 -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  3.2.4. Theodore
   2.748 -Ts'o.
   2.749 -
   2.750 -Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All rights
   2.751 -reserved.
   2.752 -
   2.753 -Redistribution and use in source and binary forms, with or without
   2.754 -modification, are permitted provided that the following conditions are met:
   2.755 -
   2.756 -   1. Redistributions of source code must retain the above copyright notice,
   2.757 -   and the entire permission notice in its entirety, including the disclaimer
   2.758 -   of warranties.
   2.759 -
   2.760 -   2. Redistributions in binary form must reproduce the above copyright
   2.761 -   notice, this list of conditions and the following disclaimer in the
   2.762 -   documentation and/or other materials provided with the distribution.
   2.763 -
   2.764 -   3. he name of the author may not be used to endorse or promote products
   2.765 -   derived from this software without specific prior written permission.
   2.766 -
   2.767 -THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
   2.768 -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   2.769 -FITNESS FOR A PARTICULAR PURPOSE, ALL OF WHICH ARE HEREBY DISCLAIMED. IN NO
   2.770 -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   2.771 -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   2.772 -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   2.773 -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   2.774 -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   2.775 -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE
   2.776 -POSSIBILITY OF SUCH DAMAGE.  3.2.5. Theo de Raadt and Damien Miller
   2.777 -
   2.778 -Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. Copyright (c)
   2.779 -2001-2002 Damien Miller. All rights reserved.
   2.780 -
   2.781 -Redistribution and use in source and binary forms, with or without
   2.782 -modification, are permitted provided that the following conditions are met:
   2.783 -
   2.784 -   1. Redistributions of source code must retain the above copyright notice,
   2.785 -   this list of conditions and the following disclaimer.
   2.786 -
   2.787 -   2. Redistributions in binary form must reproduce the above copyright
   2.788 -   notice, this list of conditions and the following disclaimer in the
   2.789 -   documentation and/or other materials provided with the distribution.
   2.790 -
   2.791 -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
   2.792 -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   2.793 -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
   2.794 -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   2.795 -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   2.796 -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   2.797 -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   2.798 -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   2.799 -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   2.800 -POSSIBILITY OF SUCH DAMAGE.  3.2.6. Todd C. Miller
   2.801 -
   2.802 -Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
   2.803 -
   2.804 -Permission to use, copy, modify, and distribute this software for any purpose
   2.805 -with or without fee is hereby granted, provided that the above copyright
   2.806 -notice and this permission notice appear in all copies.
   2.807 -
   2.808 -THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL WARRANTIES
   2.809 -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   2.810 -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE FOR
   2.811 -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   2.812 -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
   2.813 -OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
   2.814 -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  3.2.7. Thomas
   2.815 -Winischhofer
   2.816 -
   2.817 -Copyright (C) 2001-2004 Thomas Winischhofer
   2.818 -
   2.819 -Redistribution and use in source and binary forms, with or without
   2.820 -modification, are permitted provided that the following conditions are met:
   2.821 -
   2.822 -   1. Redistributions of source code must retain the above copyright notice,
   2.823 -   this list of conditions and the following disclaimer.
   2.824 -
   2.825 -   2. Redistributions in binary form must reproduce the above copyright
   2.826 -   notice, this list of conditions and the following disclaimer in the
   2.827 -   documentation and/or other materials provided with the distribution.
   2.828 -
   2.829 -   3. The name of the author may not be used to endorse or promote products
   2.830 -   derived from this software without specific prior written permission.
   2.831 -
   2.832 -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   2.833 -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   2.834 -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
   2.835 -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   2.836 -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   2.837 -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   2.838 -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   2.839 -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   2.840 -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   2.841 -POSSIBILITY OF SUCH DAMAGE.  3.3. NVIDIA Corp
   2.842 -
   2.843 -Copyright (c) 1996 NVIDIA, Corp. All rights reserved.
   2.844 -
   2.845 -NOTICE TO USER: The source code is copyrighted under U.S. and international
   2.846 -laws. NVIDIA, Corp. of Sunnyvale, California owns the copyright and as design
   2.847 -patents pending on the design and interface of the NV chips. Users and
   2.848 -possessors of this source code are hereby granted a nonexclusive, royalty-free
   2.849 -copyright and design patent license to use this code in individual and
   2.850 -commercial software.
   2.851 -
   2.852 -Any use of this source code must include, in the user documentation and
   2.853 -internal comments to the code, notices to the end user as follows:
   2.854 -
   2.855 -Copyright (c) 1996 NVIDIA, Corp. NVIDIA design patents pending in the U.S. and
   2.856 -foreign countries.
   2.857 -
   2.858 -NVIDIA, CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
   2.859 -CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
   2.860 -WARRANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO
   2.861 -THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
   2.862 -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE
   2.863 -FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
   2.864 -DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   2.865 -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
   2.866 -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE.  3.4. GLX Public
   2.867 -License
   2.868 -
   2.869 -GLX PUBLIC LICENSE (Version 1.0 (2/11/99)) ("License")
   2.870 -
   2.871 -Subject to any third party claims, Silicon Graphics, Inc. ("SGI") hereby
   2.872 -grants permission to Recipient (defined below), under Recipient's copyrights
   2.873 -in the Original Software (defined below), to use, copy, modify, merge,
   2.874 -publish, distribute, sublicense and/or sell copies of Subject Software
   2.875 -(defined below), and to permit persons to whom the Subject Software is
   2.876 -furnished in accordance with this License to do the same, subject to all of
   2.877 -the following terms and conditions, which Recipient accepts by engaging in any
   2.878 -such use, copying, modifying, merging, publishing, distributing, sublicensing
   2.879 -or selling:
   2.880 -
   2.881 -1. Definitions.
   2.882 -
   2.883 -    (a) "Original Software" means source code of computer software code which
   2.884 -    is described in Exhibit A as Original Software.
   2.885 -
   2.886 -    (b) "Modifications" means any addition to or deletion from the substance
   2.887 -    or structure of either the Original Software or any previous
   2.888 -    Modifications. When Subject Software is released as a series of files, a
   2.889 -    Modification means (i) any addition to or deletion from the contents of a
   2.890 -    file containing Original Software or previous Modifications and (ii) any
   2.891 -    new file that contains any part of the Original Code or previous
   2.892 -    Modifications.
   2.893 -
   2.894 -    (c) "Subject Software" means the Original Software or Modifications or the
   2.895 -    combination of the Original Software and Modifications, or portions of any
   2.896 -    of the foregoing.
   2.897 -
   2.898 -    (d) "Recipient" means an individual or a legal entity exercising rights
   2.899 -    under, and complying with all of the terms of, this License. For legal
   2.900 -    entities, "Recipient" includes any entity which controls, is controlled
   2.901 -    by, or is under common control with Recipient. For purposes of this
   2.902 -    definition, "control" of an entity means (a) the power, direct or
   2.903 -    indirect, to direct or manage such entity, or (b) ownership of fifty
   2.904 -    percent (50%) or more of the outstanding shares or beneficial ownership of
   2.905 -    such entity.
   2.906 -
   2.907 -2. Redistribution of Source Code Subject to These Terms. Redistributions of
   2.908 -Subject Software in source code form must retain the notice set forth in
   2.909 -Exhibit A, below, in every file. A copy of this License must be included in
   2.910 -any documentation for such Subject Software where the recipients' rights
   2.911 -relating to Subject Software are described. Recipient may distribute the
   2.912 -source code version of Subject Software under a license of Recipient's choice,
   2.913 -which may contain terms different from this License, provided that (i)
   2.914 -Recipient is in compliance with the terms of this License, and (ii) the
   2.915 -license terms include this Section 2 and Sections 3, 4, 7, 8, 10, 12 and 13 of
   2.916 -this License, which terms may not be modified or superseded by any other terms
   2.917 -of such license. If Recipient distributes the source code version under a
   2.918 -different license Recipient must make it absolutely clear that any terms which
   2.919 -differ from this License are offered by Recipient alone, not by SGI. Recipient
   2.920 -hereby agrees to indemnify SGI for any liability incurred by SGI as a result
   2.921 -of any such terms Recipient offers.
   2.922 -
   2.923 -3. Redistribution in Executable Form. The notice set forth in Exhibit A must
   2.924 -be conspicuously included in any notice in an executable version of Subject
   2.925 -Software, related documentation or collateral in which Recipient describes the
   2.926 -user's rights relating to the Subject Software. Recipient may distribute the
   2.927 -executable version of Subject Software under a license of Recipient's choice,
   2.928 -which may contain terms different from this License, provided that (i)
   2.929 -Recipient is in compliance with the terms of this License, and (ii) the
   2.930 -license terms include this Section 3 and Sections 4, 7, 8, 10, 12 and 13 of
   2.931 -this License, which terms may not be modified or superseded by any other terms
   2.932 -of such license. If Recipient distributes the executable version under a
   2.933 -different license Recipient must make it absolutely clear that any terms which
   2.934 -differ from this License are offered by Recipient alone, not by SGI. Recipient
   2.935 -hereby agrees to indemnify SGI for any liability incurred by SGI as a result
   2.936 -of any such terms Recipient offers.
   2.937 -
   2.938 -4. Termination. This License and the rights granted hereunder will terminate
   2.939 -automatically if Recipient fails to comply with terms herein and fails to cure
   2.940 -such breach within 30 days of the breach. Any sublicense to the Subject
   2.941 -Software which is properly granted shall survive any termination of this
   2.942 -License absent termination by the terms of such sublicense. Provisions which,
   2.943 -by their nature, must remain in effect beyond the termination of this License
   2.944 -shall survive.
   2.945 -
   2.946 -5. No Trademark Rights. This License does not grant any rights to use any
   2.947 -trade name, trademark or service mark whatsoever. No trade name, trademark or
   2.948 -service mark of SGI may be used to endorse or promote products derived from
   2.949 -the Subject Software without prior written permission of SGI.
   2.950 -
   2.951 -6. No Other Rights. This License does not grant any rights with respect to the
   2.952 -OpenGL API or to any software or hardware implementation thereof or to any
   2.953 -other software whatsoever, nor shall any other rights or licenses not
   2.954 -expressly granted hereunder arise by implication, estoppel or otherwise with
   2.955 -respect to the Subject Software. Title to and ownership of the Original
   2.956 -Software at all times remains with SGI. All rights in the Original Software
   2.957 -not expressly granted under this License are reserved.
   2.958 -
   2.959 -7. Compliance with Laws; Non-Infringement. Recipient shall comply with all
   2.960 -applicable laws and regulations in connection with use and distribution of the
   2.961 -Subject Software, including but not limited to, all export and import control
   2.962 -laws and regulations of the U.S. government and other countries. Recipient may
   2.963 -not distribute Subject Software that (i) in any way infringes (directly or
   2.964 -contributorily) the rights (including patent, copyright, trade secret,
   2.965 -trademark or other intellectual property rights of any kind) of any other
   2.966 -person or entity or (ii) breaches any representation or warranty, express,
   2.967 -implied or statutory, which under any applicable law it might be deemed to
   2.968 -have been distributed.
   2.969 -
   2.970 -8. Claims of Infringement. If Recipient at any time has knowledge of any one
   2.971 -or more third party claims that reproduction, modification, use, distribution,
   2.972 -import or sale of Subject Software (including particular functionality or code
   2.973 -incorporated in Subject Software) infringes the third party's intellectual
   2.974 -property rights, Recipient must place in a well-identified web page bearing
   2.975 -the title "LEGAL" a description of each such claim and a description of the
   2.976 -party making each such claim in sufficient detail that a user of the Subject
   2.977 -Software will know whom to contact regarding the claim. Also, upon gaining
   2.978 -such knowledge of any such claim, Recipient must conspicuously include the URL
   2.979 -for such web page in the Exhibit A notice required under Sections 2 and 3,
   2.980 -above, and in the text of any related documentation, license agreement or
   2.981 -collateral in which Recipient describes end user's rights relating to the
   2.982 -Subject Software. If Recipient obtains such knowledge after it makes Subject
   2.983 -Software available to any other person or entity, Recipient shall take other
   2.984 -steps (such as notifying appropriate mailing lists or newsgroups) reasonably
   2.985 -calculated to inform those who received the Subject Software that new
   2.986 -knowledge has been obtained.
   2.987 -
   2.988 -9. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
   2.989 -WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
   2.990 -LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS,
   2.991 -MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON- INFRINGING. SGI ASSUMES NO
   2.992 -RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
   2.993 -PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY
   2.994 -SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
   2.995 -ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
   2.996 -HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
   2.997 -
   2.998 -10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY,
   2.999 -WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY),
  2.1000 -CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY
  2.1001 -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
  2.1002 -CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
  2.1003 -STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
  2.1004 -COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
  2.1005 -THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY
  2.1006 -TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO
  2.1007 -THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT
  2.1008 -ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
  2.1009 -THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT.
  2.1010 -
  2.1011 -11. Indemnity. Recipient shall be solely responsible for damages arising,
  2.1012 -directly or indirectly, out of its utilization of rights under this License.
  2.1013 -Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from
  2.1014 -and against any loss, liability, damages, costs or expenses (including the
  2.1015 -payment of reasonable attorneys fees) arising out of Recipient's use,
  2.1016 -modification, reproduction and distribution of the Subject Software or out of
  2.1017 -any representation or warranty made by Recipient.
  2.1018 -
  2.1019 -12. U.S. Government End Users. The Subject Software is a "commercial item"
  2.1020 -consisting of "commercial computer software" as such terms are defined in
  2.1021 -title 48 of the Code of Federal Regulations and all U.S. Government End Users
  2.1022 -acquire only the rights set forth in this License and are subject to the terms
  2.1023 -of this License.
  2.1024 -
  2.1025 -13. Miscellaneous. This License represents the complete agreement concerning
  2.1026 -subject matter hereof. If any provision of this License is held to be
  2.1027 -unenforceable, such provision shall be reformed so as to achieve as nearly as
  2.1028 -possible the same economic effect as the original provision and the remainder
  2.1029 -of this License will remain in effect. This License shall be governed by and
  2.1030 -construed in accordance with the laws of the United States and the State of
  2.1031 -California as applied to agreements entered into and to be performed entirely
  2.1032 -within California between California residents. Any litigation relating to
  2.1033 -this License shall be subject to the exclusive jurisdiction of the Federal
  2.1034 -Courts of the Northern District of California (or, absent subject matter
  2.1035 -jurisdiction in such courts, the courts of the State of California), with
  2.1036 -venue lying exclusively in Santa Clara County, California, with the losing
  2.1037 -party responsible for costs, including without limitation, court costs and
  2.1038 -reasonable attorneys fees and expenses. The application of the United Nations
  2.1039 -Convention on Contracts for the International Sale of Goods is expressly
  2.1040 -excluded. Any law or regulation which provides that the language of a contract
  2.1041 -shall be construed against the drafter shall not apply to this License.
  2.1042 -
  2.1043 -Exhibit A
  2.1044 -
  2.1045 -The contents of this file are subject to Sections 2, 3, 4, 7, 8, 10, 12 and 13
  2.1046 -of the GLX Public License Version 1.0 (the "License"). You may not use this
  2.1047 -file except in compliance with those sections of the License. You may obtain a
  2.1048 -copy of the License at Silicon Graphics, Inc., attn: Legal Services, 2011 N.
  2.1049 -Shoreline Blvd., Mountain View, CA 94043 or at
  2.1050 -http://www.sgi.com/software/opensource/glx/license.html.
  2.1051 -
  2.1052 -Software distributed under the License is distributed on an "AS IS" basis. ALL
  2.1053 -WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
  2.1054 -WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON-
  2.1055 -INFRINGEMENT. See the License for the specific language governing rights and
  2.1056 -limitations under the License.
  2.1057 -
  2.1058 -The Original Software is GLX version 1.2 source code, released February, 1999.
  2.1059 -The developer of the Original Software is Silicon Graphics, Inc. Those
  2.1060 -portions of the Subject Software created by Silicon Graphics, Inc. are
  2.1061 -Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.  3.5. CID
  2.1062 -Font Code Public License
  2.1063 -
  2.1064 -CID FONT CODE PUBLIC LICENSE (Version 1.0 (3/31/99))("License")
  2.1065 -
  2.1066 -Subject to any applicable third party claims, Silicon Graphics, Inc. ("SGI")
  2.1067 -hereby grants permission to Recipient (defined below), under SGI's copyrights
  2.1068 -in the Original Software (defined below), to use, copy, modify, merge,
  2.1069 -publish, distribute, sublicense and/or sell copies of Subject Software
  2.1070 -(defined below) in both source code and executable form, and to permit persons
  2.1071 -to whom the Subject Software is furnished in accordance with this License to
  2.1072 -do the same, subject to all of the following terms and conditions, which
  2.1073 -Recipient accepts by engaging in any such use, copying, modifying, merging,
  2.1074 -publication, distributing, sublicensing or selling:
  2.1075 -
  2.1076 -1. Definitions.
  2.1077 -
  2.1078 -    a. "Original Software" means source code of computer software code that is
  2.1079 -    described in Exhibit A as Original Software.
  2.1080 -
  2.1081 -    b. "Modifications" means any addition to or deletion from the substance or
  2.1082 -    structure of either the Original Software or any previous Modifications.
  2.1083 -    When Subject Software is released as a series of files, a Modification
  2.1084 -    means (i) any addition to or deletion from the contents of a file
  2.1085 -    containing Original Software or previous Modifications and (ii) any new
  2.1086 -    file that contains any part of the Original Code or previous
  2.1087 -    Modifications.
  2.1088 -
  2.1089 -    c. "Subject Software" means the Original Software or Modifications or the
  2.1090 -    combination of the Original Software and Modifications, or portions of any
  2.1091 -    of the foregoing.
  2.1092 -
  2.1093 -    d. "Recipient" means an individual or a legal entity exercising rights
  2.1094 -    under the terms of this License. For legal entities, "Recipient" includes
  2.1095 -    any entity that controls, is controlled by, or is under common control
  2.1096 -    with Recipient. For purposes of this definition, "control" of an entity
  2.1097 -    means (i) the power, direct or indirect, to direct or manage such entity,
  2.1098 -    or (ii) ownership of fifty percent (50%) or more of the outstanding shares
  2.1099 -    or beneficial ownership of such entity.
  2.1100 -
  2.1101 -    e. "Required Notice" means the notice set forth in Exhibit A to this
  2.1102 -    License.
  2.1103 -
  2.1104 -    f. "Accompanying Technology" means any software or other technology that
  2.1105 -    is not a Modification and that is distributed or made publicly available
  2.1106 -    by Recipient with the Subject Software. Separate software files that do
  2.1107 -    not contain any Original Software or any previous Modification shall not
  2.1108 -    be deemed a Modification, even if such software files are aggregated as
  2.1109 -    part of a product, or in any medium of storage, with any file that does
  2.1110 -    contain Original Software or any previous Modification.
  2.1111 -
  2.1112 -2. License Terms. All distribution of the Subject Software must be made
  2.1113 -subject to the terms of this License. A copy of this License and the Required
  2.1114 -Notice must be included in any documentation for Subject Software where
  2.1115 -Recipient's rights relating to Subject Software and/or any Accompanying
  2.1116 -Technology are described. Distributions of Subject Software in source code
  2.1117 -form must also include the Required Notice in every file distributed. In
  2.1118 -addition, a ReadMe file entitled "Important Legal Notice" must be distributed
  2.1119 -with each distribution of one or more files that incorporate Subject Software.
  2.1120 -That file must be included with distributions made in both source code and
  2.1121 -executable form. A copy of the License and the Required Notice must be
  2.1122 -included in that file. Recipient may distribute Accompanying Technology under
  2.1123 -a license of Recipient's choice, which may contain terms different from this
  2.1124 -License, provided that (i) Recipient is in compliance with the terms of this
  2.1125 -License, (ii) such other license terms do not modify or supersede the terms of
  2.1126 -this License as applicable to the Subject Software, (iii) Recipient hereby
  2.1127 -indemnifies SGI for any liability incurred by SGI as a result of the
  2.1128 -distribution of Accompanying Technology or the use of other license terms.
  2.1129 -
  2.1130 -3. Termination. This License and the rights granted hereunder will terminate
  2.1131 -automatically if Recipient fails to comply with terms herein and fails to cure
  2.1132 -such breach within 30 days of the breach. Any sublicense to the Subject
  2.1133 -Software that is properly granted shall survive any termination of this
  2.1134 -License absent termination by the terms of such sublicense. Provisions which,
  2.1135 -by their nature, must remain in effect beyond the termination of this License
  2.1136 -shall survive.
  2.1137 -
  2.1138 -4. Trademark Rights. This License does not grant any rights to use any trade
  2.1139 -name, trademark or service mark whatsoever. No trade name, trademark or
  2.1140 -service mark of SGI may be used to endorse or promote products derived from or
  2.1141 -incorporating any Subject Software without prior written permission of SGI.
  2.1142 -
  2.1143 -5. No Other Rights. No rights or licenses not expressly granted hereunder
  2.1144 -shall arise by implication, estoppel or otherwise. Title to and ownership of
  2.1145 -the Original Software at all times remains with SGI. All rights in the
  2.1146 -Original Software not expressly granted under this License are reserved.
  2.1147 -
  2.1148 -6. Compliance with Laws; Non-Infringement. Recipient shall comply with all
  2.1149 -applicable laws and regulations in connection with use and distribution of the
  2.1150 -Subject Software, including but not limited to, all export and import control
  2.1151 -laws and regulations of the U.S. government and other countries. Recipient may
  2.1152 -not distribute Subject Software that (i) in any way infringes (directly or
  2.1153 -contributorily) the rights (including patent, copyright, trade secret,
  2.1154 -trademark or other intellectual property rights of any kind) of any other
  2.1155 -person or entity, or (ii) breaches any representation or warranty, express,
  2.1156 -implied or statutory, which under any applicable law it might be deemed to
  2.1157 -have been distributed.
  2.1158 -
  2.1159 -7. Claims of Infringement. If Recipient at any time has knowledge of any one
  2.1160 -or more third party claims that reproduction, modification, use, distribution,
  2.1161 -import or sale of Subject Software (including particular functionality or code
  2.1162 -incorporated in Subject Software) infringes the third party's intellectual
  2.1163 -property rights, Recipient must place in a well-identified web page bearing
  2.1164 -the title "LEGAL" a description of each such claim and a description of the
  2.1165 -party making each such claim in sufficient detail that a user of the Subject
  2.1166 -Software will know whom to contact regarding the claim. Also, upon gaining
  2.1167 -such knowledge of any such claim, Recipient must conspicuously include the URL
  2.1168 -for such web page in the Required Notice, and in the text of any related
  2.1169 -documentation, license agreement or collateral in which Recipient describes
  2.1170 -end user's rights relating to the Subject Software. If Recipient obtains such
  2.1171 -knowledge after it makes Subject Software available to any other person or
  2.1172 -entity, Recipient shall take other steps (such as notifying appropriate
  2.1173 -mailing lists or newsgroups) reasonably calculated to provide such knowledge
  2.1174 -to those who received the Subject Software.
  2.1175 -
  2.1176 -8. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
  2.1177 -WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
  2.1178 -LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS,
  2.1179 -MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. SGI ASSUMES NO
  2.1180 -RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
  2.1181 -PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY
  2.1182 -SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
  2.1183 -ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
  2.1184 -HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
  2.1185 -
  2.1186 -9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY,
  2.1187 -WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY),
  2.1188 -CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY CLAIM,
  2.1189 -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  2.1190 -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SUBJECT SOFTWARE OR
  2.1191 -THE USE OR OTHER DEALINGS IN THE SUBJECT SOFTWARE. SOME JURISDICTIONS DO NOT
  2.1192 -ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO THIS EXCLUSION AND
  2.1193 -LIMITATION MAY NOT APPLY TO RECIPIENT TO THE EXTENT SO DISALLOWED.
  2.1194 -
  2.1195 -10. Indemnity. Recipient shall be solely responsible for damages arising,
  2.1196 -directly or indirectly, out of its utilization of rights under this License.
  2.1197 -Recipient will defend, indemnify and hold SGI and its successors and assigns
  2.1198 -harmless from and against any loss, liability, damages, costs or expenses
  2.1199 -(including the payment of reasonable attorneys fees) arising out of
  2.1200 -(Recipient's use, modification, reproduction and distribution of the Subject
  2.1201 -Software or out of any representation or warranty made by Recipient.
  2.1202 -
  2.1203 -11. U.S. Government End Users. The Subject Software is a "commercial item"
  2.1204 -consisting of "commercial computer software" as such terms are defined in
  2.1205 -title 48 of the Code of Federal Regulations and all U.S. Government End Users
  2.1206 -acquire only the rights set forth in this License and are subject to the terms
  2.1207 -of this License.
  2.1208 -
  2.1209 -12. Miscellaneous. This License represents the complete agreement concerning
  2.1210 -subject matter hereof. If any provision of this License is held to be
  2.1211 -unenforceable by any judicial or administrative authority having proper
  2.1212 -jurisdiction with respect thereto, such provision shall be reformed so as to
  2.1213 -achieve as nearly as possible the same economic effect as the original
  2.1214 -provision and the remainder of this License will remain in effect. This
  2.1215 -License shall be governed by and construed in accordance with the laws of the
  2.1216 -United States and the State of California as applied to agreements entered
  2.1217 -into and to be performed entirely within California between California
  2.1218 -residents. Any litigation relating to this License shall be subject to the
  2.1219 -exclusive jurisdiction of the Federal Courts of the Northern District of
  2.1220 -California (or, absent subject matter jurisdiction in such courts, the courts
  2.1221 -of the State of California), with venue lying exclusively in Santa Clara
  2.1222 -County, California, with the losing party responsible for costs, including
  2.1223 -without limitation, court costs and reasonable attorneys fees and expenses.
  2.1224 -The application of the United Nations Convention on Contracts for the
  2.1225 -International Sale of Goods is expressly excluded. Any law or regulation that
  2.1226 -provides that the language of a contract shall be construed against the
  2.1227 -drafter shall not apply to this License.
  2.1228 -
  2.1229 -Exhibit A
  2.1230 -
  2.1231 -Copyright (c) 1994-1999 Silicon Graphics, Inc.
  2.1232 -
  2.1233 -The contents of this file are subject to the CID Font Code Public License
  2.1234 -Version 1.0 (the "License"). You may not use this file except in compliance
  2.1235 -with the License. You may obtain a copy of the License at Silicon Graphics,
  2.1236 -Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
  2.1237 -or at http://www.sgi.com/software/opensource/cid/license.html
  2.1238 -
  2.1239 -Software distributed under the License is distributed on an "AS IS" basis. ALL
  2.1240 -WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
  2.1241 -WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF
  2.1242 -NON-INFRINGEMENT. See the License for the specific language governing rights
  2.1243 -and limitations under the License.
  2.1244 -
  2.1245 -The Original Software (as defined in the License) is CID font code that was
  2.1246 -developed by Silicon Graphics, Inc. Those portions of the Subject Software (as
  2.1247 -defined in the License) that were created by Silicon Graphics, Inc. are
  2.1248 -Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved.
  2.1249 -
  2.1250 -[NOTE: When using this text in connection with Subject Software delivered
  2.1251 -solely in object code form, Recipient may replace the words "this file" with
  2.1252 -"this software" in both the first and second sentences.] 3.6. Bitstream Vera
  2.1253 -Fonts Copyright
  2.1254 -
  2.1255 -The fonts have a generous copyright, allowing derivative works (as long as
  2.1256 -"Bitstream" or "Vera" are not in the names), and full redistribution (so long
  2.1257 -as they are not *sold* by themselves). They can be be bundled, redistributed
  2.1258 -and sold with any software.
  2.1259 -
  2.1260 -The fonts are distributed under the following copyright:
  2.1261 -
  2.1262 -Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a
  2.1263 -trademark of Bitstream, Inc.
  2.1264 -
  2.1265 -Permission is hereby granted, free of charge, to any person obtaining a copy
  2.1266 -of the fonts accompanying this license ("Fonts") and associated documentation
  2.1267 -files (the "Font Software"), to reproduce and distribute the Font Software,
  2.1268 -including without limitation the rights to use, copy, merge, publish,
  2.1269 -distribute, and/or sell copies of the Font Software, and to permit persons to
  2.1270 -whom the Font Software is furnished to do so, subject to the following
  2.1271 -conditions:
  2.1272 -
  2.1273 -The above copyright and trademark notices and this permission notice shall be
  2.1274 -included in all copies of one or more of the Font Software typefaces.
  2.1275 -
  2.1276 -The Font Software may be modified, altered, or added to, and in particular the
  2.1277 -designs of glyphs or characters in the Fonts may be modified and additional
  2.1278 -glyphs or characters may be added to the Fonts, only if the fonts are renamed
  2.1279 -to names not containing either the words "Bitstream" or the word "Vera".
  2.1280 -
  2.1281 -This License becomes null and void to the extent applicable to Fonts or Font
  2.1282 -Software that has been modified and is distributed under the "Bitstream Vera"
  2.1283 -names.
  2.1284 -
  2.1285 -The Font Software may be sold as part of a larger software package but no copy
  2.1286 -of one or more of the Font Software typefaces may be sold by itself.
  2.1287 -
  2.1288 -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  2.1289 -OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
  2.1290 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
  2.1291 -TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION
  2.1292 -BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
  2.1293 -SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION
  2.1294 -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO
  2.1295 -USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
  2.1296 -
  2.1297 -Except as contained in this notice, the names of Gnome, the Gnome Foundation,
  2.1298 -and Bitstream Inc., shall not be used in advertising or otherwise to promote
  2.1299 -the sale, use or other dealings in this Font Software without prior written
  2.1300 -authorization from the Gnome Foundation or Bitstream Inc., respectively. For
  2.1301 -further information, contact: fonts at gnome dot org.  3.7. Bigelow & Holmes
  2.1302 -Inc and URW++ GmbH Luxi font license
  2.1303 -
  2.1304 -Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font instruction
  2.1305 -code copyright (c) 2001 by URW++ GmbH. All Rights Reserved. Luxi is a
  2.1306 -registered trademark of Bigelow & Holmes Inc.
  2.1307 -
  2.1308 -Permission is hereby granted, free of charge, to any person obtaining a copy
  2.1309 -of these Fonts and associated documentation files (the "Font Software"), to
  2.1310 -deal in the Font Software, including without limitation the rights to use,
  2.1311 -copy, merge, publish, distribute, sublicense, and/or sell copies of the Font
  2.1312 -Software, and to permit persons to whom the Font Software is furnished to do
  2.1313 -so, subject to the following conditions:
  2.1314 -
  2.1315 -The above copyright and trademark notices and this permission notice shall be
  2.1316 -included in all copies of one or more of the Font Software.
  2.1317 -
  2.1318 -The Font Software may not be modified, altered, or added to, and in particular
  2.1319 -the designs of glyphs or characters in the Fonts may not be modified nor may
  2.1320 -additional glyphs or characters be added to the Fonts. This License becomes
  2.1321 -null and void when the Fonts or Font Software have been modified.
  2.1322 -
  2.1323 -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  2.1324 -OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
  2.1325 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
  2.1326 -TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & HOLMES INC. OR URW++
  2.1327 -GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY
  2.1328 -GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN
  2.1329 -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
  2.1330 -INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT
  2.1331 +used in advertising or otherwise to promote the sale, use or other dealings
  2.1332 +in this Software without prior written authorization from The Open Group.
  2.1333 +*
  2.1334 +* Author: Jim Fulton, MIT The Open Group
  2.1335 +*
  2.1336 +* Xlib Extension-Writing Utilities
  2.1337 +*
  2.1338 +* This package contains utilities for writing the client API for various
  2.1339 +* protocol extensions. THESE INTERFACES ARE NOT PART OF THE X STANDARD AND
  2.1340 +* ARE SUBJECT TO CHANGE!
  2.1341 +*/
  2.1342 +
  2.1343 +_____________________________
  2.1344 +Copyright notice for HPkeysym.h:
  2.1345 +/*
  2.1346 +
  2.1347 +Copyright 1987, 1998 The Open Group
  2.1348 +
  2.1349 +All Rights Reserved.
  2.1350 +
  2.1351 +The above copyright notice and this permission notice shall be included
  2.1352 +in all copies or substantial portions of the Software.
  2.1353 +
  2.1354 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  2.1355 +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  2.1356 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  2.1357 +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
  2.1358 +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  2.1359 +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  2.1360 +OTHER DEALINGS IN THE SOFTWARE.
  2.1361 +
  2.1362 +Except as contained in this notice, the name of The Open Group shall
  2.1363 +not be used in advertising or otherwise to promote the sale, use or
  2.1364 +other dealings in this Software without prior written authorization
  2.1365 +from The Open Group.
  2.1366 +
  2.1367 +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
  2.1368 +
  2.1369 +All Rights Reserved
  2.1370 +
  2.1371 +Permission to use, copy, modify, and distribute this software and its
  2.1372 +documentation for any purpose and without fee is hereby granted,
  2.1373 +provided that the above copyright notice appear in all copies and that
  2.1374 +both that copyright notice and this permission notice appear in
  2.1375 +supporting documentation, and that the names of Hewlett Packard
  2.1376 +or Digital not be
  2.1377 +used in advertising or publicity pertaining to distribution of the
  2.1378 +software without specific, written prior permission.
  2.1379 +
  2.1380 +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  2.1381 +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  2.1382 +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  2.1383 +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  2.1384 +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  2.1385 +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  2.1386  SOFTWARE.
  2.1387  
  2.1388 -Except as contained in this notice, the names of Bigelow & Holmes Inc. and
  2.1389 -URW++ GmbH. shall not be used in advertising or otherwise to promote the sale,
  2.1390 -use or other dealings in this Font Software without prior written
  2.1391 -authorization from Bigelow & Holmes Inc. and URW++ GmbH.
  2.1392 -
  2.1393 -For further information, contact:
  2.1394 -
  2.1395 -info@urwpp.de or design@bigelowandholmes.com
  2.1396 -
  2.1397 +HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD
  2.1398 +TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  2.1399 +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  2.1400 +PURPOSE. Hewlett-Packard shall not be liable for errors
  2.1401 +contained herein or direct, indirect, special, incidental or
  2.1402 +consequential damages in connection with the furnishing,
  2.1403 +performance, or use of this material.
  2.1404 +
  2.1405 +*/
  2.1406 +_____________________________________
  2.1407 +Copyright notice in keysym2ucs.h:
  2.1408 +
  2.1409 +Copyright 1987, 1994, 1998 The Open Group
  2.1410 +
  2.1411 +Permission to use, copy, modify, distribute, and sell this software and its
  2.1412 +documentation for any purpose is hereby granted without fee, provided that
  2.1413 +the above copyright notice appear in all copies and that both that
  2.1414 +copyright notice and this permission notice appear in supporting
  2.1415 +documentation.
  2.1416 +
  2.1417 +The above copyright notice and this permission notice shall be included
  2.1418 +in all copies or substantial portions of the Software.
  2.1419 +
  2.1420 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  2.1421 +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  2.1422 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  2.1423 +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
  2.1424 +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  2.1425 +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  2.1426 +OTHER DEALINGS IN THE SOFTWARE.
  2.1427 +
  2.1428 +Except as contained in this notice, the name of The Open Group shall
  2.1429 +not be used in advertising or otherwise to promote the sale, use or
  2.1430 +other dealings in this Software without prior written authorization
  2.1431 +from The Open Group.
  2.1432 +
  2.1433 +
  2.1434 +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts
  2.1435 +
  2.1436 +All Rights Reserved
  2.1437 +
  2.1438 +Permission to use, copy, modify, and distribute this software and its
  2.1439 +documentation for any purpose and without fee is hereby granted,
  2.1440 +provided that the above copyright notice appear in all copies and that
  2.1441 +both that copyright notice and this permission notice appear in
  2.1442 +supporting documentation, and that the name of Digital not be
  2.1443 +used in advertising or publicity pertaining to distribution of the
  2.1444 +software without specific, written prior permission.
  2.1445 +
  2.1446 +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  2.1447 +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  2.1448 +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  2.1449 +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  2.1450 +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  2.1451 +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  2.1452 +SOFTWARE.
  2.1453 +
  2.1454 +*/
  2.1455  
  2.1456  --- end of LICENSE ---
  2.1457  
  2.1458 @@ -3325,7 +2815,7 @@
  2.1459  
  2.1460    version 1.2.11, January 15th, 2017
  2.1461  
  2.1462 -  Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
  2.1463 +  Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
  2.1464  
  2.1465    This software is provided 'as-is', without any express or implied
  2.1466    warranty.  In no event will the authors be held liable for any damages
  2.1467 @@ -3361,7 +2851,6 @@
  2.1468    Apache Xalan-Java 2.7.1 
  2.1469    Apache Xerces Java 2.10.0 
  2.1470    Apache XML Resolver 1.1 
  2.1471 -  Dynalink 0.5
  2.1472  
  2.1473  
  2.1474  --- begin of LICENSE ---
     3.1 --- a/src/cpu/sparc/vm/vm_version_sparc.cpp	Mon Jun 12 13:58:09 2017 -0400
     3.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.cpp	Sun Jul 02 22:31:51 2017 -0700
     3.3 @@ -236,7 +236,7 @@
     3.4    assert((OptoLoopAlignment % relocInfo::addr_unit()) == 0, "alignment is not a multiple of NOP size");
     3.5  
     3.6    char buf[512];
     3.7 -  jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
     3.8 +  jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
     3.9                 (has_v9() ? ", v9" : (has_v8() ? ", v8" : "")),
    3.10                 (has_hardware_popc() ? ", popc" : ""),
    3.11                 (has_vis1() ? ", vis1" : ""),
    3.12 @@ -249,6 +249,7 @@
    3.13                 (has_sha256() ? ", sha256" : ""),
    3.14                 (has_sha512() ? ", sha512" : ""),
    3.15                 (is_ultra3() ? ", ultra3" : ""),
    3.16 +               (has_sparc5_instr() ? ", sparc5" : ""),
    3.17                 (is_sun4v() ? ", sun4v" : ""),
    3.18                 (is_niagara_plus() ? ", niagara_plus" : (is_niagara() ? ", niagara" : "")),
    3.19                 (is_sparc64() ? ", sparc64" : ""),
    3.20 @@ -364,6 +365,7 @@
    3.21  
    3.22  #ifndef PRODUCT
    3.23    if (PrintMiscellaneous && Verbose) {
    3.24 +    tty->print_cr("L1 data cache line size: %u", L1_data_cache_line_size());
    3.25      tty->print_cr("L2 data cache line size: %u", L2_data_cache_line_size());
    3.26      tty->print("Allocation");
    3.27      if (AllocatePrefetchStyle <= 0) {
    3.28 @@ -447,9 +449,10 @@
    3.29  
    3.30  unsigned int VM_Version::calc_parallel_worker_threads() {
    3.31    unsigned int result;
    3.32 -  if (is_M_series()) {
    3.33 -    // for now, use same gc thread calculation for M-series as for niagara-plus
    3.34 -    // in future, we may want to tweak parameters for nof_parallel_worker_thread
    3.35 +  if (is_M_series() || is_S_series()) {
    3.36 +    // for now, use same gc thread calculation for M-series and S-series as for
    3.37 +    // niagara-plus. In future, we may want to tweak parameters for
    3.38 +    // nof_parallel_worker_thread
    3.39      result = nof_parallel_worker_threads(5, 16, 8);
    3.40    } else if (is_niagara_plus()) {
    3.41      result = nof_parallel_worker_threads(5, 16, 8);
    3.42 @@ -458,3 +461,37 @@
    3.43    }
    3.44    return result;
    3.45  }
    3.46 +
    3.47 +
    3.48 +int VM_Version::parse_features(const char* implementation) {
    3.49 +  int features = unknown_m;
    3.50 +  // Convert to UPPER case before compare.
    3.51 +  char* impl = os::strdup(implementation);
    3.52 +
    3.53 +  for (int i = 0; impl[i] != 0; i++)
    3.54 +    impl[i] = (char)toupper((uint)impl[i]);
    3.55 +
    3.56 +  if (strstr(impl, "SPARC64") != NULL) {
    3.57 +    features |= sparc64_family_m;
    3.58 +  } else if (strstr(impl, "SPARC-M") != NULL) {
    3.59 +    // M-series SPARC is based on T-series.
    3.60 +    features |= (M_family_m | T_family_m);
    3.61 +  } else if (strstr(impl, "SPARC-S") != NULL) {
    3.62 +    // S-series SPARC is based on T-series.
    3.63 +    features |= (S_family_m | T_family_m);
    3.64 +  } else if (strstr(impl, "SPARC-T") != NULL) {
    3.65 +    features |= T_family_m;
    3.66 +    if (strstr(impl, "SPARC-T1") != NULL) {
    3.67 +      features |= T1_model_m;
    3.68 +    }
    3.69 +  } else if (strstr(impl, "SUN4V-CPU") != NULL) {
    3.70 +    // Generic or migration class LDOM
    3.71 +    features |= T_family_m;
    3.72 +  } else {
    3.73 +#ifndef PRODUCT
    3.74 +    warning("Failed to parse CPU implementation = '%s'", impl);
    3.75 +#endif
    3.76 +  }
    3.77 +  os::free((void*)impl);
    3.78 +  return features;
    3.79 +}
     4.1 --- a/src/cpu/sparc/vm/vm_version_sparc.hpp	Mon Jun 12 13:58:09 2017 -0400
     4.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp	Sun Jul 02 22:31:51 2017 -0700
     4.3 @@ -47,13 +47,14 @@
     4.4      cbcond_instructions  = 13,
     4.5      sparc64_family       = 14,
     4.6      M_family             = 15,
     4.7 -    T_family             = 16,
     4.8 -    T1_model             = 17,
     4.9 -    sparc5_instructions  = 18,
    4.10 -    aes_instructions     = 19,
    4.11 -    sha1_instruction     = 20,
    4.12 -    sha256_instruction   = 21,
    4.13 -    sha512_instruction   = 22
    4.14 +    S_family             = 16,
    4.15 +    T_family             = 17,
    4.16 +    T1_model             = 18,
    4.17 +    sparc5_instructions  = 19,
    4.18 +    aes_instructions     = 20,
    4.19 +    sha1_instruction     = 21,
    4.20 +    sha256_instruction   = 22,
    4.21 +    sha512_instruction   = 23
    4.22    };
    4.23  
    4.24    enum Feature_Flag_Set {
    4.25 @@ -76,6 +77,7 @@
    4.26      cbcond_instructions_m   = 1 << cbcond_instructions,
    4.27      sparc64_family_m        = 1 << sparc64_family,
    4.28      M_family_m              = 1 << M_family,
    4.29 +    S_family_m              = 1 << S_family,
    4.30      T_family_m              = 1 << T_family,
    4.31      T1_model_m              = 1 << T1_model,
    4.32      sparc5_instructions_m   = 1 << sparc5_instructions,
    4.33 @@ -105,6 +107,7 @@
    4.34  
    4.35    // Returns true if the platform is in the niagara line (T series)
    4.36    static bool is_M_family(int features) { return (features & M_family_m) != 0; }
    4.37 +  static bool is_S_family(int features) { return (features & S_family_m) != 0; }
    4.38    static bool is_T_family(int features) { return (features & T_family_m) != 0; }
    4.39    static bool is_niagara() { return is_T_family(_features); }
    4.40  #ifdef ASSERT
    4.41 @@ -119,7 +122,7 @@
    4.42    static bool is_T1_model(int features) { return is_T_family(features) && ((features & T1_model_m) != 0); }
    4.43  
    4.44    static int maximum_niagara1_processor_count() { return 32; }
    4.45 -
    4.46 +  static int parse_features(const char* implementation);
    4.47  public:
    4.48    // Initialization
    4.49    static void initialize();
    4.50 @@ -152,6 +155,7 @@
    4.51    static bool is_niagara_plus()         { return is_T_family(_features) && !is_T1_model(_features); }
    4.52  
    4.53    static bool is_M_series()             { return is_M_family(_features); }
    4.54 +  static bool is_S_series()             { return is_S_family(_features); }
    4.55    static bool is_T4()                   { return is_T_family(_features) && has_cbcond(); }
    4.56    static bool is_T7()                   { return is_T_family(_features) && has_sparc5_instr(); }
    4.57  
     5.1 --- a/src/cpu/x86/vm/vm_version_x86.cpp	Mon Jun 12 13:58:09 2017 -0400
     5.2 +++ b/src/cpu/x86/vm/vm_version_x86.cpp	Sun Jul 02 22:31:51 2017 -0700
     5.3 @@ -406,6 +406,8 @@
     5.4    _stepping = 0;
     5.5    _cpuFeatures = 0;
     5.6    _logical_processors_per_package = 1;
     5.7 +  // i486 internal cache is both I&D and has a 16-byte line size
     5.8 +  _L1_data_cache_line_size = 16;
     5.9  
    5.10    if (!Use486InstrsOnly) {
    5.11      // Get raw processor info
    5.12 @@ -424,6 +426,7 @@
    5.13        // Logical processors are only available on P4s and above,
    5.14        // and only if hyperthreading is available.
    5.15        _logical_processors_per_package = logical_processor_count();
    5.16 +      _L1_data_cache_line_size = L1_line_size();
    5.17      }
    5.18    }
    5.19  
    5.20 @@ -1034,6 +1037,7 @@
    5.21    if (PrintMiscellaneous && Verbose) {
    5.22      tty->print_cr("Logical CPUs per core: %u",
    5.23                    logical_processors_per_package());
    5.24 +    tty->print_cr("L1 data cache line size: %u", L1_data_cache_line_size());
    5.25      tty->print("UseSSE=%d", (int) UseSSE);
    5.26      if (UseAVX > 0) {
    5.27        tty->print("  UseAVX=%d", (int) UseAVX);
     6.1 --- a/src/cpu/x86/vm/vm_version_x86.hpp	Mon Jun 12 13:58:09 2017 -0400
     6.2 +++ b/src/cpu/x86/vm/vm_version_x86.hpp	Sun Jul 02 22:31:51 2017 -0700
     6.3 @@ -1,5 +1,5 @@
     6.4  /*
     6.5 - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
     6.6 + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
     6.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     6.8   *
     6.9   * This code is free software; you can redistribute it and/or modify it
    6.10 @@ -595,7 +595,7 @@
    6.11      return (result == 0 ? 1 : result);
    6.12    }
    6.13  
    6.14 -  static intx prefetch_data_size()  {
    6.15 +  static intx L1_line_size()  {
    6.16      intx result = 0;
    6.17      if (is_intel()) {
    6.18        result = (_cpuid_info.dcp_cpuid4_ebx.bits.L1_line_size + 1);
    6.19 @@ -607,6 +607,10 @@
    6.20      return result;
    6.21    }
    6.22  
    6.23 +  static intx prefetch_data_size()  {
    6.24 +    return L1_line_size();
    6.25 +  }
    6.26 +
    6.27    //
    6.28    // Feature identification
    6.29    //
     7.1 --- a/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp	Mon Jun 12 13:58:09 2017 -0400
     7.2 +++ b/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp	Sun Jul 02 22:31:51 2017 -0700
     7.3 @@ -262,6 +262,7 @@
     7.4  
     7.5  // We need to keep these here as long as we have to build on Solaris
     7.6  // versions before 10.
     7.7 +
     7.8  #ifndef SI_ARCHITECTURE_32
     7.9  #define SI_ARCHITECTURE_32      516     /* basic 32-bit SI_ARCHITECTURE */
    7.10  #endif
    7.11 @@ -270,231 +271,233 @@
    7.12  #define SI_ARCHITECTURE_64      517     /* basic 64-bit SI_ARCHITECTURE */
    7.13  #endif
    7.14  
    7.15 -static void do_sysinfo(int si, const char* string, int* features, int mask) {
    7.16 -  char   tmp;
    7.17 -  size_t bufsize = sysinfo(si, &tmp, 1);
    7.18 +#ifndef SI_CPUBRAND
    7.19 +#define SI_CPUBRAND             523     /* return cpu brand string */
    7.20 +#endif
    7.21  
    7.22 -  // All SI defines used below must be supported.
    7.23 -  guarantee(bufsize != -1, "must be supported");
    7.24 +class Sysinfo {
    7.25 +  char* _string;
    7.26 +public:
    7.27 +  Sysinfo(int si) : _string(NULL) {
    7.28 +    char   tmp;
    7.29 +    size_t bufsize = sysinfo(si, &tmp, 1);
    7.30  
    7.31 -  char* buf = (char*) malloc(bufsize);
    7.32 +    if (bufsize != -1) {
    7.33 +      char* buf = (char*) os::malloc(bufsize, mtInternal);
    7.34 +      if (buf != NULL) {
    7.35 +        if (sysinfo(si, buf, bufsize) == bufsize) {
    7.36 +          _string = buf;
    7.37 +        } else {
    7.38 +          os::free(buf);
    7.39 +        }
    7.40 +      }
    7.41 +     }
    7.42 +   }
    7.43  
    7.44 -  if (buf == NULL)
    7.45 -    return;
    7.46 -
    7.47 -  if (sysinfo(si, buf, bufsize) == bufsize) {
    7.48 -    // Compare the string.
    7.49 -    if (strcmp(buf, string) == 0) {
    7.50 -      *features |= mask;
    7.51 +  ~Sysinfo() {
    7.52 +    if (_string != NULL) {
    7.53 +      os::free(_string);
    7.54      }
    7.55    }
    7.56  
    7.57 -  free(buf);
    7.58 -}
    7.59 +  const char* value() const {
    7.60 +    return _string;
    7.61 +  }
    7.62 +
    7.63 +  bool valid() const {
    7.64 +    return _string != NULL;
    7.65 +  }
    7.66 +
    7.67 +  bool match(const char* s) const {
    7.68 +    return valid() ? strcmp(_string, s) == 0 : false;
    7.69 +  }
    7.70 +
    7.71 +  bool match_substring(const char* s) const {
    7.72 +    return valid() ? strstr(_string, s) != NULL : false;
    7.73 +  }
    7.74 +};
    7.75 +
    7.76 +class Sysconf {
    7.77 +  int _value;
    7.78 +public:
    7.79 +  Sysconf(int sc) : _value(-1) {
    7.80 +    _value = sysconf(sc);
    7.81 +  }
    7.82 +  bool valid() const {
    7.83 +    return _value != -1;
    7.84 +  }
    7.85 +  int value() const {
    7.86 +    return _value;
    7.87 +  }
    7.88 +};
    7.89 +
    7.90 +
    7.91 +#ifndef _SC_DCACHE_LINESZ
    7.92 +#define _SC_DCACHE_LINESZ       508     /* Data cache line size */
    7.93 +#endif
    7.94 +
    7.95 +#ifndef _SC_L2CACHE_LINESZ
    7.96 +#define _SC_L2CACHE_LINESZ      527     /* Size of L2 cache line */
    7.97 +#endif
    7.98 +
    7.99  
   7.100  int VM_Version::platform_features(int features) {
   7.101 -  // getisax(2), SI_ARCHITECTURE_32, and SI_ARCHITECTURE_64 are
   7.102 -  // supported on Solaris 10 and later.
   7.103 -  if (os::Solaris::supports_getisax()) {
   7.104 +  assert(os::Solaris::supports_getisax(), "getisax() must be available");
   7.105  
   7.106 -    // Check 32-bit architecture.
   7.107 -    do_sysinfo(SI_ARCHITECTURE_32, "sparc", &features, v8_instructions_m);
   7.108 +  // Check 32-bit architecture.
   7.109 +  if (Sysinfo(SI_ARCHITECTURE_32).match("sparc")) {
   7.110 +    features |= v8_instructions_m;
   7.111 +  }
   7.112  
   7.113 -    // Check 64-bit architecture.
   7.114 -    do_sysinfo(SI_ARCHITECTURE_64, "sparcv9", &features, generic_v9_m);
   7.115 +  // Check 64-bit architecture.
   7.116 +  if (Sysinfo(SI_ARCHITECTURE_64).match("sparcv9")) {
   7.117 +    features |= generic_v9_m;
   7.118 +  }
   7.119  
   7.120 -    // Extract valid instruction set extensions.
   7.121 -    uint_t avs[2];
   7.122 -    uint_t avn = os::Solaris::getisax(avs, 2);
   7.123 -    assert(avn <= 2, "should return two or less av's");
   7.124 -    uint_t av = avs[0];
   7.125 +  // Extract valid instruction set extensions.
   7.126 +  uint_t avs[2];
   7.127 +  uint_t avn = os::Solaris::getisax(avs, 2);
   7.128 +  assert(avn <= 2, "should return two or less av's");
   7.129 +  uint_t av = avs[0];
   7.130  
   7.131  #ifndef PRODUCT
   7.132 -    if (PrintMiscellaneous && Verbose) {
   7.133 -      tty->print("getisax(2) returned: " PTR32_FORMAT, av);
   7.134 -      if (avn > 1) {
   7.135 -        tty->print(", " PTR32_FORMAT, avs[1]);
   7.136 -      }
   7.137 -      tty->cr();
   7.138 +  if (PrintMiscellaneous && Verbose) {
   7.139 +    tty->print("getisax(2) returned: " PTR32_FORMAT, av);
   7.140 +    if (avn > 1) {
   7.141 +      tty->print(", " PTR32_FORMAT, avs[1]);
   7.142      }
   7.143 +    tty->cr();
   7.144 +  }
   7.145  #endif
   7.146  
   7.147 -    if (av & AV_SPARC_MUL32)  features |= hardware_mul32_m;
   7.148 -    if (av & AV_SPARC_DIV32)  features |= hardware_div32_m;
   7.149 -    if (av & AV_SPARC_FSMULD) features |= hardware_fsmuld_m;
   7.150 -    if (av & AV_SPARC_V8PLUS) features |= v9_instructions_m;
   7.151 -    if (av & AV_SPARC_POPC)   features |= hardware_popc_m;
   7.152 -    if (av & AV_SPARC_VIS)    features |= vis1_instructions_m;
   7.153 -    if (av & AV_SPARC_VIS2)   features |= vis2_instructions_m;
   7.154 -    if (avn > 1) {
   7.155 -      uint_t av2 = avs[1];
   7.156 +  if (av & AV_SPARC_MUL32)  features |= hardware_mul32_m;
   7.157 +  if (av & AV_SPARC_DIV32)  features |= hardware_div32_m;
   7.158 +  if (av & AV_SPARC_FSMULD) features |= hardware_fsmuld_m;
   7.159 +  if (av & AV_SPARC_V8PLUS) features |= v9_instructions_m;
   7.160 +  if (av & AV_SPARC_POPC)   features |= hardware_popc_m;
   7.161 +  if (av & AV_SPARC_VIS)    features |= vis1_instructions_m;
   7.162 +  if (av & AV_SPARC_VIS2)   features |= vis2_instructions_m;
   7.163 +  if (avn > 1) {
   7.164 +    uint_t av2 = avs[1];
   7.165  #ifndef AV2_SPARC_SPARC5
   7.166  #define AV2_SPARC_SPARC5 0x00000008 /* The 29 new fp and sub instructions */
   7.167  #endif
   7.168 -      if (av2 & AV2_SPARC_SPARC5)       features |= sparc5_instructions_m;
   7.169 -    }
   7.170 +    if (av2 & AV2_SPARC_SPARC5)       features |= sparc5_instructions_m;
   7.171 +  }
   7.172  
   7.173 -    // Next values are not defined before Solaris 10
   7.174 -    // but Solaris 8 is used for jdk6 update builds.
   7.175 +  // We only build on Solaris 10 and up, but some of the values below
   7.176 +  // are not defined on all versions of Solaris 10, so we define them,
   7.177 +  // if necessary.
   7.178  #ifndef AV_SPARC_ASI_BLK_INIT
   7.179  #define AV_SPARC_ASI_BLK_INIT 0x0080  /* ASI_BLK_INIT_xxx ASI */
   7.180  #endif
   7.181 -    if (av & AV_SPARC_ASI_BLK_INIT) features |= blk_init_instructions_m;
   7.182 +  if (av & AV_SPARC_ASI_BLK_INIT) features |= blk_init_instructions_m;
   7.183  
   7.184  #ifndef AV_SPARC_FMAF
   7.185  #define AV_SPARC_FMAF 0x0100        /* Fused Multiply-Add */
   7.186  #endif
   7.187 -    if (av & AV_SPARC_FMAF)         features |= fmaf_instructions_m;
   7.188 +  if (av & AV_SPARC_FMAF)         features |= fmaf_instructions_m;
   7.189  
   7.190  #ifndef AV_SPARC_FMAU
   7.191 -#define    AV_SPARC_FMAU    0x0200  /* Unfused Multiply-Add */
   7.192 +#define AV_SPARC_FMAU    0x0200  /* Unfused Multiply-Add */
   7.193  #endif
   7.194 -    if (av & AV_SPARC_FMAU)         features |= fmau_instructions_m;
   7.195 +  if (av & AV_SPARC_FMAU)         features |= fmau_instructions_m;
   7.196  
   7.197  #ifndef AV_SPARC_VIS3
   7.198 -#define    AV_SPARC_VIS3    0x0400  /* VIS3 instruction set extensions */
   7.199 +#define AV_SPARC_VIS3    0x0400  /* VIS3 instruction set extensions */
   7.200  #endif
   7.201 -    if (av & AV_SPARC_VIS3)         features |= vis3_instructions_m;
   7.202 +  if (av & AV_SPARC_VIS3)         features |= vis3_instructions_m;
   7.203  
   7.204  #ifndef AV_SPARC_CBCOND
   7.205  #define AV_SPARC_CBCOND 0x10000000  /* compare and branch instrs supported */
   7.206  #endif
   7.207 -    if (av & AV_SPARC_CBCOND)       features |= cbcond_instructions_m;
   7.208 +  if (av & AV_SPARC_CBCOND)       features |= cbcond_instructions_m;
   7.209  
   7.210  #ifndef AV_SPARC_AES
   7.211  #define AV_SPARC_AES 0x00020000  /* aes instrs supported */
   7.212  #endif
   7.213 -    if (av & AV_SPARC_AES)       features |= aes_instructions_m;
   7.214 +  if (av & AV_SPARC_AES)       features |= aes_instructions_m;
   7.215  
   7.216  #ifndef AV_SPARC_SHA1
   7.217  #define AV_SPARC_SHA1   0x00400000  /* sha1 instruction supported */
   7.218  #endif
   7.219 -    if (av & AV_SPARC_SHA1)         features |= sha1_instruction_m;
   7.220 +  if (av & AV_SPARC_SHA1)         features |= sha1_instruction_m;
   7.221  
   7.222  #ifndef AV_SPARC_SHA256
   7.223  #define AV_SPARC_SHA256 0x00800000  /* sha256 instruction supported */
   7.224  #endif
   7.225 -    if (av & AV_SPARC_SHA256)       features |= sha256_instruction_m;
   7.226 +  if (av & AV_SPARC_SHA256)       features |= sha256_instruction_m;
   7.227  
   7.228  #ifndef AV_SPARC_SHA512
   7.229  #define AV_SPARC_SHA512 0x01000000  /* sha512 instruction supported */
   7.230  #endif
   7.231 -    if (av & AV_SPARC_SHA512)       features |= sha512_instruction_m;
   7.232 +  if (av & AV_SPARC_SHA512)       features |= sha512_instruction_m;
   7.233  
   7.234 +  // Determine the machine type.
   7.235 +  if (Sysinfo(SI_MACHINE).match("sun4v")) {
   7.236 +    features |= sun4v_m;
   7.237 +  }
   7.238 +
   7.239 +  // If SI_CPUBRAND works, that means Solaris 12 API to get the cache line sizes
   7.240 +  // is available to us as well
   7.241 +  Sysinfo cpu_info(SI_CPUBRAND);
   7.242 +  bool use_solaris_12_api = cpu_info.valid();
   7.243 +  const char* impl;
   7.244 +  int impl_m = 0;
   7.245 +  if (use_solaris_12_api) {
   7.246 +    impl = cpu_info.value();
   7.247 +#ifndef PRODUCT
   7.248 +  if (PrintMiscellaneous && Verbose) {
   7.249 +    tty->print_cr("Parsing CPU implementation from %s", impl);
   7.250 +  }
   7.251 +#endif
   7.252 +    impl_m = parse_features(impl);
   7.253    } else {
   7.254 -    // getisax(2) failed, use the old legacy code.
   7.255 +    // Otherwise use kstat to determine the machine type.
   7.256 +    kstat_ctl_t* kc = kstat_open();
   7.257 +    if (kc != NULL) {
   7.258 +      kstat_t* ksp = kstat_lookup(kc, (char*)"cpu_info", -1, NULL);
   7.259 +      if (ksp != NULL) {
   7.260 +        if (kstat_read(kc, ksp, NULL) != -1 && ksp->ks_data != NULL) {
   7.261 +          kstat_named_t* knm = (kstat_named_t *)ksp->ks_data;
   7.262 +          for (int i = 0; i < ksp->ks_ndata; i++) {
   7.263 +            if (strcmp((const char*)&(knm[i].name), "implementation") == 0) {
   7.264 +              impl = KSTAT_NAMED_STR_PTR(&knm[i]);
   7.265  #ifndef PRODUCT
   7.266 -    if (PrintMiscellaneous && Verbose)
   7.267 -      tty->print_cr("getisax(2) is not supported.");
   7.268 +              if (PrintMiscellaneous && Verbose) {
   7.269 +                tty->print_cr("Parsing CPU implementation from %s", impl);
   7.270 +              }
   7.271  #endif
   7.272 -
   7.273 -    char   tmp;
   7.274 -    size_t bufsize = sysinfo(SI_ISALIST, &tmp, 1);
   7.275 -    char*  buf     = (char*) malloc(bufsize);
   7.276 -
   7.277 -    if (buf != NULL) {
   7.278 -      if (sysinfo(SI_ISALIST, buf, bufsize) == bufsize) {
   7.279 -        // Figure out what kind of sparc we have
   7.280 -        char *sparc_string = strstr(buf, "sparc");
   7.281 -        if (sparc_string != NULL) {              features |= v8_instructions_m;
   7.282 -          if (sparc_string[5] == 'v') {
   7.283 -            if (sparc_string[6] == '8') {
   7.284 -              if (sparc_string[7] == '-') {      features |= hardware_mul32_m;
   7.285 -                                                 features |= hardware_div32_m;
   7.286 -              } else if (sparc_string[7] == 'p') features |= generic_v9_m;
   7.287 -              else                               features |= generic_v8_m;
   7.288 -            } else if (sparc_string[6] == '9')   features |= generic_v9_m;
   7.289 +              impl_m = parse_features(impl);
   7.290 +              break;
   7.291 +            }
   7.292            }
   7.293          }
   7.294 -
   7.295 -        // Check for visualization instructions
   7.296 -        char *vis = strstr(buf, "vis");
   7.297 -        if (vis != NULL) {                       features |= vis1_instructions_m;
   7.298 -          if (vis[3] == '2')                     features |= vis2_instructions_m;
   7.299 -        }
   7.300        }
   7.301 -      free(buf);
   7.302 +      kstat_close(kc);
   7.303      }
   7.304    }
   7.305 +  assert(impl_m != 0, err_msg("Unknown CPU implementation %s", impl));
   7.306 +  features |= impl_m;
   7.307  
   7.308 -  // Determine the machine type.
   7.309 -  do_sysinfo(SI_MACHINE, "sun4v", &features, sun4v_m);
   7.310 +  bool is_sun4v = (features & sun4v_m) != 0;
   7.311 +  if (use_solaris_12_api && is_sun4v) {
   7.312 +    // If Solaris 12 API is supported and it's sun4v use sysconf() to get the cache line sizes
   7.313 +    Sysconf l1_dcache_line_size(_SC_DCACHE_LINESZ);
   7.314 +    if (l1_dcache_line_size.valid()) {
   7.315 +      _L1_data_cache_line_size =  l1_dcache_line_size.value();
   7.316 +    }
   7.317  
   7.318 -  {
   7.319 -    // Using kstat to determine the machine type.
   7.320 -    kstat_ctl_t* kc = kstat_open();
   7.321 -    kstat_t* ksp = kstat_lookup(kc, (char*)"cpu_info", -1, NULL);
   7.322 -    const char* implementation = "UNKNOWN";
   7.323 -    if (ksp != NULL) {
   7.324 -      if (kstat_read(kc, ksp, NULL) != -1 && ksp->ks_data != NULL) {
   7.325 -        kstat_named_t* knm = (kstat_named_t *)ksp->ks_data;
   7.326 -        for (int i = 0; i < ksp->ks_ndata; i++) {
   7.327 -          if (strcmp((const char*)&(knm[i].name),"implementation") == 0) {
   7.328 -#ifndef KSTAT_DATA_STRING
   7.329 -#define KSTAT_DATA_STRING   9
   7.330 -#endif
   7.331 -            if (knm[i].data_type == KSTAT_DATA_CHAR) {
   7.332 -              // VM is running on Solaris 8 which does not have value.str.
   7.333 -              implementation = &(knm[i].value.c[0]);
   7.334 -            } else if (knm[i].data_type == KSTAT_DATA_STRING) {
   7.335 -              // VM is running on Solaris 10.
   7.336 -#ifndef KSTAT_NAMED_STR_PTR
   7.337 -              // Solaris 8 was used to build VM, define the structure it misses.
   7.338 -              struct str_t {
   7.339 -                union {
   7.340 -                  char *ptr;     /* NULL-term string */
   7.341 -                  char __pad[8]; /* 64-bit padding */
   7.342 -                } addr;
   7.343 -                uint32_t len;    /* # bytes for strlen + '\0' */
   7.344 -              };
   7.345 -#define KSTAT_NAMED_STR_PTR(knptr) (( (str_t*)&((knptr)->value) )->addr.ptr)
   7.346 -#endif
   7.347 -              implementation = KSTAT_NAMED_STR_PTR(&knm[i]);
   7.348 -            }
   7.349 -#ifndef PRODUCT
   7.350 -            if (PrintMiscellaneous && Verbose) {
   7.351 -              tty->print_cr("cpu_info.implementation: %s", implementation);
   7.352 -            }
   7.353 -#endif
   7.354 -            // Convert to UPPER case before compare.
   7.355 -            char* impl = strdup(implementation);
   7.356 -
   7.357 -            for (int i = 0; impl[i] != 0; i++)
   7.358 -              impl[i] = (char)toupper((uint)impl[i]);
   7.359 -            if (strstr(impl, "SPARC64") != NULL) {
   7.360 -              features |= sparc64_family_m;
   7.361 -            } else if (strstr(impl, "SPARC-M") != NULL) {
   7.362 -              // M-series SPARC is based on T-series.
   7.363 -              features |= (M_family_m | T_family_m);
   7.364 -            } else if (strstr(impl, "SPARC-T") != NULL) {
   7.365 -              features |= T_family_m;
   7.366 -              if (strstr(impl, "SPARC-T1") != NULL) {
   7.367 -                features |= T1_model_m;
   7.368 -              }
   7.369 -            } else {
   7.370 -              if (strstr(impl, "SPARC") == NULL) {
   7.371 -#ifndef PRODUCT
   7.372 -                // kstat on Solaris 8 virtual machines (branded zones)
   7.373 -                // returns "(unsupported)" implementation.
   7.374 -                warning("kstat cpu_info implementation = '%s', should contain SPARC", impl);
   7.375 -#endif
   7.376 -                implementation = "SPARC";
   7.377 -              }
   7.378 -            }
   7.379 -            free((void*)impl);
   7.380 -            break;
   7.381 -          }
   7.382 -        } // for(
   7.383 -      }
   7.384 +    Sysconf l2_dcache_line_size(_SC_L2CACHE_LINESZ);
   7.385 +    if (l2_dcache_line_size.valid()) {
   7.386 +      _L2_data_cache_line_size = l2_dcache_line_size.value();
   7.387      }
   7.388 -    assert(strcmp(implementation, "UNKNOWN") != 0,
   7.389 -           "unknown cpu info (changed kstat interface?)");
   7.390 -    kstat_close(kc);
   7.391 +  } else {
   7.392 +    // Otherwise figure out the cache line sizes using PICL
   7.393 +    bool is_fujitsu = (features & sparc64_family_m) != 0;
   7.394 +    PICL picl(is_fujitsu, is_sun4v);
   7.395 +    _L1_data_cache_line_size = picl.L1_data_cache_line_size();
   7.396 +    _L2_data_cache_line_size = picl.L2_data_cache_line_size();
   7.397    }
   7.398 -
   7.399 -  // Figure out cache line sizes using PICL
   7.400 -  PICL picl((features & sparc64_family_m) != 0, (features & sun4v_m) != 0);
   7.401 -  _L2_data_cache_line_size = picl.L2_data_cache_line_size();
   7.402 -
   7.403    return features;
   7.404  }
     8.1 --- a/src/share/vm/classfile/classLoaderData.cpp	Mon Jun 12 13:58:09 2017 -0400
     8.2 +++ b/src/share/vm/classfile/classLoaderData.cpp	Sun Jul 02 22:31:51 2017 -0700
     8.3 @@ -1,5 +1,5 @@
     8.4  /*
     8.5 - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
     8.6 + * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
     8.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     8.8   *
     8.9   * This code is free software; you can redistribute it and/or modify it
    8.10 @@ -78,7 +78,7 @@
    8.11    // The null-class-loader should always be kept alive.
    8.12    _keep_alive(is_anonymous || h_class_loader.is_null()),
    8.13    _metaspace(NULL), _unloading(false), _klasses(NULL),
    8.14 -  _claimed(0), _jmethod_ids(NULL), _handles(NULL), _deallocate_list(NULL),
    8.15 +  _claimed(0), _jmethod_ids(NULL), _handles(), _deallocate_list(NULL),
    8.16    _next(NULL), _dependencies(dependencies),
    8.17    _metaspace_lock(new Mutex(Monitor::leaf+1, "Metaspace allocation lock", true)) {
    8.18      // empty
    8.19 @@ -96,6 +96,45 @@
    8.20    _list_head = oopFactory::new_objectArray(2, CHECK);
    8.21  }
    8.22  
    8.23 +ClassLoaderData::ChunkedHandleList::~ChunkedHandleList() {
    8.24 +  Chunk* c = _head;
    8.25 +  while (c != NULL) {
    8.26 +    Chunk* next = c->_next;
    8.27 +    delete c;
    8.28 +    c = next;
    8.29 +  }
    8.30 +}
    8.31 +
    8.32 +oop* ClassLoaderData::ChunkedHandleList::add(oop o) {
    8.33 +  if (_head == NULL || _head->_size == Chunk::CAPACITY) {
    8.34 +    Chunk* next = new Chunk(_head);
    8.35 +    OrderAccess::release_store_ptr(&_head, next);
    8.36 +  }
    8.37 +  oop* handle = &_head->_data[_head->_size];
    8.38 +  *handle = o;
    8.39 +  OrderAccess::release_store(&_head->_size, _head->_size + 1);
    8.40 +  return handle;
    8.41 +}
    8.42 +
    8.43 +inline void ClassLoaderData::ChunkedHandleList::oops_do_chunk(OopClosure* f, Chunk* c, const juint size) {
    8.44 +  for (juint i = 0; i < size; i++) {
    8.45 +    if (c->_data[i] != NULL) {
    8.46 +      f->do_oop(&c->_data[i]);
    8.47 +    }
    8.48 +  }
    8.49 +}
    8.50 +
    8.51 +void ClassLoaderData::ChunkedHandleList::oops_do(OopClosure* f) {
    8.52 +  Chunk* head = (Chunk*) OrderAccess::load_ptr_acquire(&_head);
    8.53 +  if (head != NULL) {
    8.54 +    // Must be careful when reading size of head
    8.55 +    oops_do_chunk(f, head, OrderAccess::load_acquire(&head->_size));
    8.56 +    for (Chunk* c = head->_next; c != NULL; c = c->_next) {
    8.57 +      oops_do_chunk(f, c, c->_size);
    8.58 +    }
    8.59 +  }
    8.60 +}
    8.61 +
    8.62  bool ClassLoaderData::claim() {
    8.63    if (_claimed == 1) {
    8.64      return false;
    8.65 @@ -111,7 +150,7 @@
    8.66  
    8.67    f->do_oop(&_class_loader);
    8.68    _dependencies.oops_do(f);
    8.69 -  _handles->oops_do(f);
    8.70 +  _handles.oops_do(f);
    8.71    if (klass_closure != NULL) {
    8.72      classes_do(klass_closure);
    8.73    }
    8.74 @@ -342,11 +381,6 @@
    8.75      _metaspace = NULL;
    8.76      // release the metaspace
    8.77      delete m;
    8.78 -    // release the handles
    8.79 -    if (_handles != NULL) {
    8.80 -      JNIHandleBlock::release_block(_handles);
    8.81 -      _handles = NULL;
    8.82 -    }
    8.83    }
    8.84  
    8.85    // Clear all the JNI handles for methods
    8.86 @@ -406,15 +440,9 @@
    8.87    return _metaspace;
    8.88  }
    8.89  
    8.90 -JNIHandleBlock* ClassLoaderData::handles() const           { return _handles; }
    8.91 -void ClassLoaderData::set_handles(JNIHandleBlock* handles) { _handles = handles; }
    8.92 -
    8.93  jobject ClassLoaderData::add_handle(Handle h) {
    8.94    MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
    8.95 -  if (handles() == NULL) {
    8.96 -    set_handles(JNIHandleBlock::allocate_block());
    8.97 -  }
    8.98 -  return handles()->allocate_handle(h());
    8.99 +  return (jobject) _handles.add(h());
   8.100  }
   8.101  
   8.102  // Add this metadata pointer to be freed when it's safe.  This is only during
   8.103 @@ -479,7 +507,6 @@
   8.104        p2i(class_loader() != NULL ? class_loader()->klass() : NULL), loader_name());
   8.105    if (claimed()) out->print(" claimed ");
   8.106    if (is_unloading()) out->print(" unloading ");
   8.107 -  out->print(" handles " INTPTR_FORMAT, p2i(handles()));
   8.108    out->cr();
   8.109    if (metaspace_or_null() != NULL) {
   8.110      out->print_cr("metaspace: " INTPTR_FORMAT, p2i(metaspace_or_null()));
     9.1 --- a/src/share/vm/classfile/classLoaderData.hpp	Mon Jun 12 13:58:09 2017 -0400
     9.2 +++ b/src/share/vm/classfile/classLoaderData.hpp	Sun Jul 02 22:31:51 2017 -0700
     9.3 @@ -1,5 +1,5 @@
     9.4  /*
     9.5 - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
     9.6 + * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
     9.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     9.8   *
     9.9   * This code is free software; you can redistribute it and/or modify it
    9.10 @@ -51,7 +51,6 @@
    9.11  
    9.12  class ClassLoaderData;
    9.13  class JNIMethodBlock;
    9.14 -class JNIHandleBlock;
    9.15  class Metadebug;
    9.16  
    9.17  // GC root for walking class loader data created
    9.18 @@ -145,6 +144,31 @@
    9.19      void oops_do(OopClosure* f);
    9.20    };
    9.21  
    9.22 +  class ChunkedHandleList VALUE_OBJ_CLASS_SPEC {
    9.23 +    struct Chunk : public CHeapObj<mtClass> {
    9.24 +      static const size_t CAPACITY = 32;
    9.25 +
    9.26 +      oop _data[CAPACITY];
    9.27 +      volatile juint _size;
    9.28 +      Chunk* _next;
    9.29 +
    9.30 +      Chunk(Chunk* c) : _next(c), _size(0) { }
    9.31 +    };
    9.32 +
    9.33 +    Chunk* _head;
    9.34 +
    9.35 +    void oops_do_chunk(OopClosure* f, Chunk* c, const juint size);
    9.36 +
    9.37 +   public:
    9.38 +    ChunkedHandleList() : _head(NULL) {}
    9.39 +    ~ChunkedHandleList();
    9.40 +
    9.41 +    // Only one thread at a time can add, guarded by ClassLoaderData::metaspace_lock().
    9.42 +    // However, multiple threads can execute oops_do concurrently with add.
    9.43 +    oop* add(oop o);
    9.44 +    void oops_do(OopClosure* f);
    9.45 +  };
    9.46 +
    9.47    friend class ClassLoaderDataGraph;
    9.48    friend class ClassLoaderDataGraphKlassIteratorAtomic;
    9.49    friend class ClassLoaderDataGraphMetaspaceIterator;
    9.50 @@ -169,7 +193,8 @@
    9.51                             // Has to be an int because we cas it.
    9.52    Klass* _klasses;         // The classes defined by the class loader.
    9.53  
    9.54 -  JNIHandleBlock* _handles; // Handles to constant pool arrays
    9.55 +  ChunkedHandleList _handles; // Handles to constant pool arrays, etc, which
    9.56 +                              // have the same life cycle of the corresponding ClassLoader.
    9.57  
    9.58    // These method IDs are created for the class loader and set to NULL when the
    9.59    // class loader is unloaded.  They are rarely freed, only for redefine classes
    9.60 @@ -196,9 +221,6 @@
    9.61  
    9.62    void set_metaspace(Metaspace* m) { _metaspace = m; }
    9.63  
    9.64 -  JNIHandleBlock* handles() const;
    9.65 -  void set_handles(JNIHandleBlock* handles);
    9.66 -
    9.67    Mutex* metaspace_lock() const { return _metaspace_lock; }
    9.68  
    9.69    // GC interface.
    10.1 --- a/src/share/vm/code/nmethod.cpp	Mon Jun 12 13:58:09 2017 -0400
    10.2 +++ b/src/share/vm/code/nmethod.cpp	Sun Jul 02 22:31:51 2017 -0700
    10.3 @@ -1151,6 +1151,7 @@
    10.4  // Clear ICStubs of all compiled ICs
    10.5  void nmethod::clear_ic_stubs() {
    10.6    assert_locked_or_safepoint(CompiledIC_lock);
    10.7 +  ResourceMark rm;
    10.8    RelocIterator iter(this);
    10.9    while(iter.next()) {
   10.10      if (iter.type() == relocInfo::virtual_call_type) {
    11.1 --- a/src/share/vm/opto/callnode.hpp	Mon Jun 12 13:58:09 2017 -0400
    11.2 +++ b/src/share/vm/opto/callnode.hpp	Sun Jul 02 22:31:51 2017 -0700
    11.3 @@ -449,8 +449,8 @@
    11.4    void delete_replaced_nodes() {
    11.5      _replaced_nodes.reset();
    11.6    }
    11.7 -  void apply_replaced_nodes() {
    11.8 -    _replaced_nodes.apply(this);
    11.9 +  void apply_replaced_nodes(uint idx) {
   11.10 +    _replaced_nodes.apply(this, idx);
   11.11    }
   11.12    void merge_replaced_nodes_with(SafePointNode* sfpt) {
   11.13      _replaced_nodes.merge_with(sfpt->_replaced_nodes);
    12.1 --- a/src/share/vm/opto/parse1.cpp	Mon Jun 12 13:58:09 2017 -0400
    12.2 +++ b/src/share/vm/opto/parse1.cpp	Sun Jul 02 22:31:51 2017 -0700
    12.3 @@ -1048,7 +1048,7 @@
    12.4          kit.make_dtrace_method_exit(method());
    12.5        }
    12.6        if (_replaced_nodes_for_exceptions) {
    12.7 -        kit.map()->apply_replaced_nodes();
    12.8 +        kit.map()->apply_replaced_nodes(_new_idx);
    12.9        }
   12.10        // Done with exception-path processing.
   12.11        ex_map = kit.make_exception_state(ex_oop);
   12.12 @@ -1069,7 +1069,7 @@
   12.13        _exits.add_exception_state(ex_map);
   12.14      }
   12.15    }
   12.16 -  _exits.map()->apply_replaced_nodes();
   12.17 +  _exits.map()->apply_replaced_nodes(_new_idx);
   12.18  }
   12.19  
   12.20  //-----------------------------create_entry_map-------------------------------
    13.1 --- a/src/share/vm/opto/replacednodes.cpp	Mon Jun 12 13:58:09 2017 -0400
    13.2 +++ b/src/share/vm/opto/replacednodes.cpp	Sun Jul 02 22:31:51 2017 -0700
    13.3 @@ -91,13 +91,17 @@
    13.4  }
    13.5  
    13.6  // Perfom node replacement (used when returning to caller)
    13.7 -void ReplacedNodes::apply(Node* n) {
    13.8 +void ReplacedNodes::apply(Node* n, uint idx) {
    13.9    if (is_empty()) {
   13.10      return;
   13.11    }
   13.12    for (int i = 0; i < _replaced_nodes->length(); i++) {
   13.13      ReplacedNode replaced = _replaced_nodes->at(i);
   13.14 -    n->replace_edge(replaced.initial(), replaced.improved());
   13.15 +    // Only apply if improved node was created in a callee to avoid
   13.16 +    // issues with irreducible loops in the caller
   13.17 +    if (replaced.improved()->_idx >= idx) {
   13.18 +      n->replace_edge(replaced.initial(), replaced.improved());
   13.19 +    }
   13.20    }
   13.21  }
   13.22  
    14.1 --- a/src/share/vm/opto/replacednodes.hpp	Mon Jun 12 13:58:09 2017 -0400
    14.2 +++ b/src/share/vm/opto/replacednodes.hpp	Sun Jul 02 22:31:51 2017 -0700
    14.3 @@ -71,7 +71,7 @@
    14.4    void record(Node* initial, Node* improved);
    14.5    void transfer_from(const ReplacedNodes& other, uint idx);
    14.6    void reset();
    14.7 -  void apply(Node* n);
    14.8 +  void apply(Node* n, uint idx);
    14.9    void merge_with(const ReplacedNodes& other);
   14.10    bool is_empty() const;
   14.11    void dump(outputStream *st) const;
    15.1 --- a/src/share/vm/prims/jni.cpp	Mon Jun 12 13:58:09 2017 -0400
    15.2 +++ b/src/share/vm/prims/jni.cpp	Sun Jul 02 22:31:51 2017 -0700
    15.3 @@ -5129,6 +5129,7 @@
    15.4      run_unit_test(TestKlass_test());
    15.5      run_unit_test(Test_linked_list());
    15.6      run_unit_test(TestChunkedList_test());
    15.7 +    run_unit_test(ObjectMonitor::sanity_checks());
    15.8  #if INCLUDE_VM_STRUCTS
    15.9      run_unit_test(VMStructs::test());
   15.10  #endif
    16.1 --- a/src/share/vm/runtime/objectMonitor.cpp	Mon Jun 12 13:58:09 2017 -0400
    16.2 +++ b/src/share/vm/runtime/objectMonitor.cpp	Sun Jul 02 22:31:51 2017 -0700
    16.3 @@ -2529,6 +2529,10 @@
    16.4    SETKNOB(FastHSSEC) ;
    16.5    #undef SETKNOB
    16.6  
    16.7 +  if (Knob_Verbose) {
    16.8 +    sanity_checks();
    16.9 +  }
   16.10 +
   16.11    if (os::is_MP()) {
   16.12       BackOffMask = (1 << Knob_SpinBackOff) - 1 ;
   16.13       if (Knob_ReportSettings) ::printf ("BackOffMask=%X\n", BackOffMask) ;
   16.14 @@ -2549,6 +2553,66 @@
   16.15    InitDone = 1 ;
   16.16  }
   16.17  
   16.18 +void ObjectMonitor::sanity_checks() {
   16.19 +  int error_cnt = 0;
   16.20 +  int warning_cnt = 0;
   16.21 +  bool verbose = Knob_Verbose != 0 NOT_PRODUCT(|| VerboseInternalVMTests);
   16.22 +
   16.23 +  if (verbose) {
   16.24 +    tty->print_cr("INFO: sizeof(ObjectMonitor)=" SIZE_FORMAT,
   16.25 +                  sizeof(ObjectMonitor));
   16.26 +  }
   16.27 +
   16.28 +  uint cache_line_size = VM_Version::L1_data_cache_line_size();
   16.29 +  if (verbose) {
   16.30 +    tty->print_cr("INFO: L1_data_cache_line_size=%u", cache_line_size);
   16.31 +  }
   16.32 +
   16.33 +  ObjectMonitor dummy;
   16.34 +  u_char *addr_begin  = (u_char*)&dummy;
   16.35 +  u_char *addr_header = (u_char*)&dummy._header;
   16.36 +  u_char *addr_owner  = (u_char*)&dummy._owner;
   16.37 +
   16.38 +  uint offset_header = (uint)(addr_header - addr_begin);
   16.39 +  if (verbose) tty->print_cr("INFO: offset(_header)=%u", offset_header);
   16.40 +
   16.41 +  uint offset_owner = (uint)(addr_owner - addr_begin);
   16.42 +  if (verbose) tty->print_cr("INFO: offset(_owner)=%u", offset_owner);
   16.43 +
   16.44 +  if ((uint)(addr_header - addr_begin) != 0) {
   16.45 +    tty->print_cr("ERROR: offset(_header) must be zero (0).");
   16.46 +    error_cnt++;
   16.47 +  }
   16.48 +
   16.49 +  if (cache_line_size != 0) {
   16.50 +    // We were able to determine the L1 data cache line size so
   16.51 +    // do some cache line specific sanity checks
   16.52 +
   16.53 +    if ((offset_owner - offset_header) < cache_line_size) {
   16.54 +      tty->print_cr("WARNING: the _header and _owner fields are closer "
   16.55 +                    "than a cache line which permits false sharing.");
   16.56 +      warning_cnt++;
   16.57 +    }
   16.58 +
   16.59 +    if ((sizeof(ObjectMonitor) % cache_line_size) != 0) {
   16.60 +      tty->print_cr("WARNING: ObjectMonitor size is not a multiple of "
   16.61 +                    "a cache line which permits false sharing.");
   16.62 +      warning_cnt++;
   16.63 +    }
   16.64 +  }
   16.65 +
   16.66 +  ObjectSynchronizer::sanity_checks(verbose, cache_line_size, &error_cnt,
   16.67 +                                    &warning_cnt);
   16.68 +
   16.69 +  if (verbose || error_cnt != 0 || warning_cnt != 0) {
   16.70 +    tty->print_cr("INFO: error_cnt=%d", error_cnt);
   16.71 +    tty->print_cr("INFO: warning_cnt=%d", warning_cnt);
   16.72 +  }
   16.73 +
   16.74 +  guarantee(error_cnt == 0,
   16.75 +            "Fatal error(s) found in ObjectMonitor::sanity_checks()");
   16.76 +}
   16.77 +
   16.78  #ifndef PRODUCT
   16.79  void ObjectMonitor::verify() {
   16.80  }
    17.1 --- a/src/share/vm/runtime/objectMonitor.hpp	Mon Jun 12 13:58:09 2017 -0400
    17.2 +++ b/src/share/vm/runtime/objectMonitor.hpp	Sun Jul 02 22:31:51 2017 -0700
    17.3 @@ -189,6 +189,8 @@
    17.4    bool      check(TRAPS);       // true if the thread owns the monitor.
    17.5    void      check_slow(TRAPS);
    17.6    void      clear();
    17.7 +  static void sanity_checks();  // public for -XX:+ExecuteInternalVMTests
    17.8 +                                // in PRODUCT for -XX:SyncKnobs=Verbose=1
    17.9  #ifndef PRODUCT
   17.10    void      verify();
   17.11    void      print();
   17.12 @@ -234,8 +236,6 @@
   17.13  
   17.14    // WARNING: this must be the very first word of ObjectMonitor
   17.15    // This means this class can't use any virtual member functions.
   17.16 -  // TODO-FIXME: assert that offsetof(_header) is 0 or get rid of the
   17.17 -  // implicit 0 offset in emitted code.
   17.18  
   17.19    volatile markOop   _header;       // displaced object header word - mark
   17.20    void*     volatile _object;       // backward object pointer - strong root
    18.1 --- a/src/share/vm/runtime/sweeper.cpp	Mon Jun 12 13:58:09 2017 -0400
    18.2 +++ b/src/share/vm/runtime/sweeper.cpp	Sun Jul 02 22:31:51 2017 -0700
    18.3 @@ -319,6 +319,7 @@
    18.4  }
    18.5  
    18.6  void NMethodSweeper::sweep_code_cache() {
    18.7 +  ResourceMark rm;
    18.8    Ticks sweep_start_counter = Ticks::now();
    18.9  
   18.10    _flushed_count                = 0;
   18.11 @@ -626,6 +627,7 @@
   18.12  // state of the code cache if it's requested.
   18.13  void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
   18.14    if (PrintMethodFlushing) {
   18.15 +    ResourceMark rm;
   18.16      stringStream s;
   18.17      // Dump code cache state into a buffer before locking the tty,
   18.18      // because log_state() will use locks causing lock conflicts.
   18.19 @@ -643,6 +645,7 @@
   18.20    }
   18.21  
   18.22    if (LogCompilation && (xtty != NULL)) {
   18.23 +    ResourceMark rm;
   18.24      stringStream s;
   18.25      // Dump code cache state into a buffer before locking the tty,
   18.26      // because log_state() will use locks causing lock conflicts.
    19.1 --- a/src/share/vm/runtime/synchronizer.cpp	Mon Jun 12 13:58:09 2017 -0400
    19.2 +++ b/src/share/vm/runtime/synchronizer.cpp	Sun Jul 02 22:31:51 2017 -0700
    19.3 @@ -437,19 +437,22 @@
    19.4  // Hash Code handling
    19.5  //
    19.6  // Performance concern:
    19.7 -// OrderAccess::storestore() calls release() which STs 0 into the global volatile
    19.8 -// OrderAccess::Dummy variable.  This store is unnecessary for correctness.
    19.9 -// Many threads STing into a common location causes considerable cache migration
   19.10 -// or "sloshing" on large SMP system.  As such, I avoid using OrderAccess::storestore()
   19.11 -// until it's repaired.  In some cases OrderAccess::fence() -- which incurs local
   19.12 -// latency on the executing processor -- is a better choice as it scales on SMP
   19.13 -// systems.  See http://blogs.sun.com/dave/entry/biased_locking_in_hotspot for a
   19.14 -// discussion of coherency costs.  Note that all our current reference platforms
   19.15 -// provide strong ST-ST order, so the issue is moot on IA32, x64, and SPARC.
   19.16 +// OrderAccess::storestore() calls release() which at one time stored 0
   19.17 +// into the global volatile OrderAccess::dummy variable. This store was
   19.18 +// unnecessary for correctness. Many threads storing into a common location
   19.19 +// causes considerable cache migration or "sloshing" on large SMP systems.
   19.20 +// As such, I avoided using OrderAccess::storestore(). In some cases
   19.21 +// OrderAccess::fence() -- which incurs local latency on the executing
   19.22 +// processor -- is a better choice as it scales on SMP systems.
   19.23 +//
   19.24 +// See http://blogs.oracle.com/dave/entry/biased_locking_in_hotspot for
   19.25 +// a discussion of coherency costs. Note that all our current reference
   19.26 +// platforms provide strong ST-ST order, so the issue is moot on IA32,
   19.27 +// x64, and SPARC.
   19.28  //
   19.29  // As a general policy we use "volatile" to control compiler-based reordering
   19.30 -// and explicit fences (barriers) to control for architectural reordering performed
   19.31 -// by the CPU(s) or platform.
   19.32 +// and explicit fences (barriers) to control for architectural reordering
   19.33 +// performed by the CPU(s) or platform.
   19.34  
   19.35  struct SharedGlobals {
   19.36      // These are highly shared mostly-read variables.
   19.37 @@ -1636,7 +1639,55 @@
   19.38  }
   19.39  
   19.40  //------------------------------------------------------------------------------
   19.41 -// Non-product code
   19.42 +// Debugging code
   19.43 +
   19.44 +void ObjectSynchronizer::sanity_checks(const bool verbose,
   19.45 +                                       const uint cache_line_size,
   19.46 +                                       int *error_cnt_ptr,
   19.47 +                                       int *warning_cnt_ptr) {
   19.48 +  u_char *addr_begin      = (u_char*)&GVars;
   19.49 +  u_char *addr_stwRandom  = (u_char*)&GVars.stwRandom;
   19.50 +  u_char *addr_hcSequence = (u_char*)&GVars.hcSequence;
   19.51 +
   19.52 +  if (verbose) {
   19.53 +    tty->print_cr("INFO: sizeof(SharedGlobals)=" SIZE_FORMAT,
   19.54 +                  sizeof(SharedGlobals));
   19.55 +  }
   19.56 +
   19.57 +  uint offset_stwRandom = (uint)(addr_stwRandom - addr_begin);
   19.58 +  if (verbose) tty->print_cr("INFO: offset(stwRandom)=%u", offset_stwRandom);
   19.59 +
   19.60 +  uint offset_hcSequence = (uint)(addr_hcSequence - addr_begin);
   19.61 +  if (verbose) {
   19.62 +    tty->print_cr("INFO: offset(_hcSequence)=%u", offset_hcSequence);
   19.63 +  }
   19.64 +
   19.65 +  if (cache_line_size != 0) {
   19.66 +    // We were able to determine the L1 data cache line size so
   19.67 +    // do some cache line specific sanity checks
   19.68 +
   19.69 +    if (offset_stwRandom < cache_line_size) {
   19.70 +      tty->print_cr("WARNING: the SharedGlobals.stwRandom field is closer "
   19.71 +                    "to the struct beginning than a cache line which permits "
   19.72 +                    "false sharing.");
   19.73 +      (*warning_cnt_ptr)++;
   19.74 +    }
   19.75 +
   19.76 +    if ((offset_hcSequence - offset_stwRandom) < cache_line_size) {
   19.77 +      tty->print_cr("WARNING: the SharedGlobals.stwRandom and "
   19.78 +                    "SharedGlobals.hcSequence fields are closer than a cache "
   19.79 +                    "line which permits false sharing.");
   19.80 +      (*warning_cnt_ptr)++;
   19.81 +    }
   19.82 +
   19.83 +    if ((sizeof(SharedGlobals) - offset_hcSequence) < cache_line_size) {
   19.84 +      tty->print_cr("WARNING: the SharedGlobals.hcSequence field is closer "
   19.85 +                    "to the struct end than a cache line which permits false "
   19.86 +                    "sharing.");
   19.87 +      (*warning_cnt_ptr)++;
   19.88 +    }
   19.89 +  }
   19.90 +}
   19.91  
   19.92  #ifndef PRODUCT
   19.93  
    20.1 --- a/src/share/vm/runtime/synchronizer.hpp	Mon Jun 12 13:58:09 2017 -0400
    20.2 +++ b/src/share/vm/runtime/synchronizer.hpp	Sun Jul 02 22:31:51 2017 -0700
    20.3 @@ -121,6 +121,9 @@
    20.4    static void oops_do(OopClosure* f);
    20.5  
    20.6    // debugging
    20.7 +  static void sanity_checks(const bool verbose,
    20.8 +                            const unsigned int cache_line_size,
    20.9 +                            int *error_cnt_ptr, int *warning_cnt_ptr);
   20.10    static void verify() PRODUCT_RETURN;
   20.11    static int  verify_objmon_isinpool(ObjectMonitor *addr) PRODUCT_RETURN0;
   20.12  
    21.1 --- a/src/share/vm/runtime/vm_version.cpp	Mon Jun 12 13:58:09 2017 -0400
    21.2 +++ b/src/share/vm/runtime/vm_version.cpp	Sun Jul 02 22:31:51 2017 -0700
    21.3 @@ -50,6 +50,7 @@
    21.4  bool Abstract_VM_Version::_supports_atomic_getadd4 = false;
    21.5  bool Abstract_VM_Version::_supports_atomic_getadd8 = false;
    21.6  unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U;
    21.7 +unsigned int Abstract_VM_Version::_L1_data_cache_line_size = 0;
    21.8  int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0;
    21.9  
   21.10  #ifndef HOTSPOT_RELEASE_VERSION
    22.1 --- a/src/share/vm/runtime/vm_version.hpp	Mon Jun 12 13:58:09 2017 -0400
    22.2 +++ b/src/share/vm/runtime/vm_version.hpp	Sun Jul 02 22:31:51 2017 -0700
    22.3 @@ -1,5 +1,5 @@
    22.4  /*
    22.5 - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
    22.6 + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
    22.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    22.8   *
    22.9   * This code is free software; you can redistribute it and/or modify it
   22.10 @@ -42,6 +42,7 @@
   22.11    static bool         _supports_atomic_getadd4;
   22.12    static bool         _supports_atomic_getadd8;
   22.13    static unsigned int _logical_processors_per_package;
   22.14 +  static unsigned int _L1_data_cache_line_size;
   22.15    static int          _vm_major_version;
   22.16    static int          _vm_minor_version;
   22.17    static int          _vm_build_number;
   22.18 @@ -114,6 +115,10 @@
   22.19      return _logical_processors_per_package;
   22.20    }
   22.21  
   22.22 +  static unsigned int L1_data_cache_line_size() {
   22.23 +    return _L1_data_cache_line_size;
   22.24 +  }
   22.25 +
   22.26    // Need a space at the end of TLAB for prefetch instructions
   22.27    // which may fault when accessing memory outside of heap.
   22.28    static int reserve_for_allocation_prefetch() {
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/test/compiler/c2/TestReplacedNodesOSR.java	Sun Jul 02 22:31:51 2017 -0700
    23.3 @@ -0,0 +1,86 @@
    23.4 +/*
    23.5 + * Copyright (c) 2017, Red Hat, Inc. All rights reserved.
    23.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    23.7 + *
    23.8 + * This code is free software; you can redistribute it and/or modify it
    23.9 + * under the terms of the GNU General Public License version 2 only, as
   23.10 + * published by the Free Software Foundation.
   23.11 + *
   23.12 + * This code is distributed in the hope that it will be useful, but WITHOUT
   23.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   23.14 + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   23.15 + * version 2 for more details (a copy is included in the LICENSE file that
   23.16 + * accompanied this code).
   23.17 + *
   23.18 + * You should have received a copy of the GNU General Public License version
   23.19 + * 2 along with this work; if not, write to the Free Software Foundation,
   23.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   23.21 + *
   23.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   23.23 + * or visit www.oracle.com if you need additional information or have any
   23.24 + * questions.
   23.25 + */
   23.26 +
   23.27 +/**
   23.28 + * @test
   23.29 + * @bug 8174164
   23.30 + * @summary SafePointNode::_replaced_nodes breaks with irreducible loops
   23.31 + * @run main/othervm -XX:-BackgroundCompilation TestReplacedNodesOSR
   23.32 + *
   23.33 + */
   23.34 +
   23.35 +public class TestReplacedNodesOSR {
   23.36 +
   23.37 +    static Object dummy;
   23.38 +
   23.39 +    static interface I {
   23.40 +    }
   23.41 +
   23.42 +    static class A implements I {
   23.43 +    }
   23.44 +
   23.45 +    static final class MyException extends Exception {
   23.46 +    }
   23.47 +
   23.48 +    static final A obj = new A();
   23.49 +    static I static_field() { return obj; }
   23.50 +
   23.51 +    // When OSR compiled, this method has an irreducible loop
   23.52 +    static void test(int v, MyException e) {
   23.53 +        int i = 0;
   23.54 +        for (;;) {
   23.55 +            if (i == 1000) {
   23.56 +                break;
   23.57 +            }
   23.58 +            try {
   23.59 +                if ((i%2) == 0) {
   23.60 +                    int j = 0;
   23.61 +                    for (;;) {
   23.62 +                        j++;
   23.63 +                        if (i+j != v) {
   23.64 +                            if (j == 1000) {
   23.65 +                                break;
   23.66 +                            }
   23.67 +                        } else {
   23.68 +                            A a = (A)static_field();
   23.69 +                            // replaced node recorded here
   23.70 +                            throw e;
   23.71 +                        }
   23.72 +                    }
   23.73 +                }
   23.74 +            } catch(MyException ex) {
   23.75 +            }
   23.76 +            i++;
   23.77 +            // replaced node applied on return of the method
   23.78 +            // replaced node used here
   23.79 +            dummy = static_field();
   23.80 +        }
   23.81 +    }
   23.82 +
   23.83 +
   23.84 +    static public void main(String[] args) {
   23.85 +        for (int i = 0; i < 1000; i++) {
   23.86 +            test(1100, new MyException());
   23.87 +        }
   23.88 +    }
   23.89 +}

mercurial