{"id":289207,"date":"2018-09-10T18:15:03","date_gmt":"2018-09-10T14:15:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=289207"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2018-09-10T14:15:03","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=289207","title":{"rendered":"\u041e \u0441\u0431\u043e\u0440\u043a\u0435 JDK 8 \u043d\u0430 Ubuntu, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u0434\u0430 Hotspot \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u0441\u0451 \u0432\u0430\u043b\u044f\u0442 \u043d\u0430 C++"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p>\u0425\u043e\u0442\u0435\u043b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0441\u043f\u0430\u0442\u044c, \u043d\u043e \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u0412 \u0422\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f Java\u2026 \u0438 \u043c\u044b \u043e\u0447\u043d\u0443\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432, \u0443\u0441\u0442\u0430\u0432\u0448\u0438\u0435 \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ti\/ov\/lf\/tiovlf2wctfucdlsql2-avqmkwe.png\">  <\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d? \u0414\u0430, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043d\u0438\u043a\u043e\u043c\u0443, \u043a\u0440\u043e\u043c\u0435 \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 JDK8 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u044e\u0431\u0438\u0442 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0448\u043c\u0430\u0440\u043d\u044b\u0435 \u0443\u0436\u0430\u0441\u044b. \u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0432\u0430\u0441 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e \u0441\u0440\u043e\u0447\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0442\u0440\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\n<p>\u041d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f (<a href=\"#one\">\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0435\u0440\u0432\u044b\u0439<\/a>)<br \/>  \u041e\u0447\u0435\u043d\u044c \u0441\u043a\u0443\u0447\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u041d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u0439;<\/p>\n<p>  <\/li>\n<li>\n<p>\u041d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f (<a href=\"#two\">\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u0442\u043e\u0440\u043e\u0439<\/a>)<br \/>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0435\u043a\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u044f, \u043d\u0435\u043a\u0440\u043e\u0444\u0438\u043b\u0438\u044f, \u0432 \u0447\u0451\u043c BSD \u043b\u0443\u0447\u0448\u0435 GNU\/Linux \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 JDK.<\/p>\n<p>  <\/li>\n<li>\n<p>\u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, <a href=\"#three\">\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043a\u043e\u0440\u043a\u0443<\/a><br \/>  \u0411\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0419\u0430\u0445\u0443\u0443\u0443, JVM \u0443\u043f\u0430\u043b\u0430 \u0432 \u043a\u043e\u0440\u043a\u0443, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0438\u043d\u0430\u0442\u044c \u0435\u0451 \u043d\u043e\u0433\u0430\u043c\u0438!<\/p>\n<p>  <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0445\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u043c\u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 \u043e \u0436\u0438\u0437\u043d\u0438. <\/p>\n<p>  <\/p>\n<p>\u0411\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e C++, \u043a\u043e\u0434\u0430 \u043d\u0430 Java \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435. \u041b\u044e\u0431\u043e\u0439 \u0434\u0436\u0430\u0432\u0438\u0441\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 C++\u2026<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"ne-sobiraetsya\">\u041d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f<\/h1>\n<p>  <\/p>\n<p>\u041a\u0442\u043e \u0445\u043e\u0442\u044c \u0440\u0430\u0437 \u0441\u043e\u0431\u0438\u0440\u0430\u043b Java, \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">hg clone http:\/\/hg.openjdk.java.net\/jdk8u\/jdk8u cd jdk8u  sh .\/configure \\  --with-debug-level=fastdebug \\  --with-target-bits=64 \\  --with-native-debug-symbols=internal \\  --with-boot-jdk=\/home\/me\/opt\/jdk1.8.0_161  make images<\/code><\/pre>\n<p>  <\/p>\n<p>(\u0423 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u00abme\u00bb, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0442\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0442\u043e\u0440\u0436\u0435\u043d\u0438\u044f \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0441\u0432\u043e\u0438\u043c \u044e\u0437\u0435\u0440\u043d\u0435\u0439\u043c\u043e\u043c)<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u0438\u0447\u0451\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0446\u0438\u043d\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. <\/p>\n<p>  <\/p>\n<h2 id=\"pervyy-uroven-pogruzheniya\">\u041f\u0435\u0440\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>  <a name=\"one\"><\/a>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">\/home\/me\/git\/jdk8u\/hotspot\/src\/os\/linux\/vm\/os_linux.inline.hpp:127:18: warning: \u2018int readdir_r(DIR*, dirent*, dirent**)\u2019 is deprecated [-Wdeprecated-declarations]    if((status = ::readdir_r(dirp, dbuf, &amp;p)) != 0) {                   ^~~~~~~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043d\u0430\u0447\u0430\u043b\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0438, \u0443 \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p>  <\/p>\n<pre><code>$ g++ --version g++ (Ubuntu 7.3.0-16ubuntu3) 7.3.0 Copyright (C) 2017 Free Software Foundation, Inc.<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0432\u0435\u0436\u0435\u0441\u0442\u0438, \u043d\u0435 8.0, \u043d\u043e \u0438 \u044d\u0442\u043e\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b \u043f\u043e\u0434\u043e\u0439\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>C++ \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043b\u044e\u0431\u044f\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0444\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0443 \u043d\u0438\u0445. \u041e\u0431\u044b\u0447\u043d\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 gcc \u0438 clang \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043c\u044b\u0441\u043b\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u043f\u0435\u043d\u0434\u044e\u0440\u0438\u0442\u044c <code>-Werror<\/code> (\u00ab\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438\u00bb) \u0438 \u043f\u043e\u0442\u043e\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u0440\u043d\u0438\u043d\u0433\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u044d\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f, \u0438 \u044f\u0441\u043d\u043e, \u043a\u0430\u043a \u0435\u0451 \u0440\u0435\u0448\u0430\u0442\u044c. \u041d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f CXX_FLAGS, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0435\u0440\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0435\u0440\u0440\u043e\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">export CXX_FLAGS=-Wno-error=deprecated-declarations -Wno-error-deprecated-declarations<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0442\u0443\u0442 \u0436\u0435 \u0432\u0438\u0434\u0438\u043c \u0447\u0443\u0434\u0435\u0441\u043d\u043e\u0435:<\/p>\n<p>  <\/p>\n<pre><code>Ignoring CXXFLAGS found in environment. Use --with-extra-cxxflags<\/code><\/pre>\n<p>  <\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438, \u0432\u0441\u0451, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0448\u044c! \u041f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u043c configure \u043d\u0430 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">hg clone http:\/\/hg.openjdk.java.net\/jdk8u\/jdk8u cd jdk8u  sh .\/configure \\  --with-extra-cflags='-Wno-cpp -Wno-error=deprecated-declarations' \\  --with-extra-cxxflags='-Wno-cpp -Wno-error=deprecated-declarations' \\  --with-debug-level=fastdebug \\  --with-target-bits=64 \\  --with-native-debug-symbols=internal \\  --with-boot-jdk=\/home\/me\/opt\/jdk1.8.0_161  make images<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439!<br \/>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0442\u044f\u0436\u0435\u043b\u043e\u0439 \u0430\u0440\u0442\u0438\u043b\u043b\u0435\u0440\u0438\u0438: \u0433\u0440\u0435\u043f\u0443 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432.<\/p>\n<p>  <\/p>\n<pre><code>grep -rl \"Werror\" .<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u044f\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0448\u043b\u044f\u043f\u044b, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u0441\u043a\u0438 \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code>.\/common\/autoconf\/flags.m4 .\/hotspot\/make\/bsd\/makefiles\/gcc.make .\/hotspot\/make\/solaris\/makefiles\/gcc.make .\/hotspot\/make\/aix\/makefiles\/xlc.make<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e <code>flags.m4<\/code> \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e \u00abIgnoring CXXFLAGS\u00bb \u0438 \u0431\u043e\u043b\u0435\u0435 \u043c\u0430\u0442\u0451\u0440\u044b\u0439 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u044b\u0439 \u0444\u043b\u0430\u0433 <code>CCXX_FLGS<\/code> (\u0434\u0430, \u0434\u0432\u0435 \u0431\u0443\u043a\u0432\u044b C), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0440\u0430\u0437\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0432\u043c\u0435\u0441\u0442\u043e <code>CFLAGS<\/code>, \u0438 \u0432\u043c\u0435\u0441\u0442\u043e <code>\u0421XX_FLAGS<\/code>. \u0423\u0434\u043e\u0431\u043d\u043e! \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0434\u0432\u0430 \u0444\u0430\u043a\u0442\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u042d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b configure;<\/li>\n<li>\u0412 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">  # Setup compiler\/platform specific flags to CFLAGS_JDK,   # CXXFLAGS_JDK and CCXXFLAGS_JDK (common to C and CXX?)   if test \"x$TOOLCHAIN_TYPE\" = xgcc; then     # these options are used for both C and C++ compiles     CCXXFLAGS_JDK=\"$CCXXFLAGS $CCXXFLAGS_JDK -Wall -Wno-parentheses -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \\         -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE\"<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043c\u0438\u043b\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u0430 \u0447\u0442\u043e, \u0444\u043b\u0430\u0433\u0438 \u043e\u0431\u0449\u0438\u0435? \u041f\u0440\u0430\u0432\u0434\u0430?<\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u044e \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0430\u0440\u043d\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u043c \u0442\u0443\u0434\u0430 <code>-w<\/code> (\u00ab\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a\u00bb):<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">    CCXXFLAGS_JDK=\"$CCXXFLAGS $CCXXFLAGS_JDK -w -ffreestanding -fno-builtin -Wno-parentheses -Wno-unused -Wno-unused-parameter -Wformat=2 \\<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u2014 \u0443\u0440\u0430! \u2014 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438. \u041e\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0435\u043f\u043e\u0440\u0442\u0438\u0442\u0441\u044f, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b.<\/p>\n<p>  <\/p>\n<h2 id=\"vtoroy-uroven-pogruzheniya\">\u0412\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>  <a name=\"two\"><\/a>  <\/p>\n<p>\u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043a\u0443\u0447\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0441\u0442! <\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u0448 <code>-w<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432\u043e \u0432\u0441\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438. \u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u0439\u043a\u0444\u0430\u0439\u043b\u044b \u0438 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c\u0441\u044f. \u041d\u0435\u0443\u0436\u0442\u043e \u043e \u043d\u0451\u043c \u0437\u0430\u0431\u044b\u043b\u0438?<\/p>\n<p>  <\/p>\n<p>\u0417\u043d\u0430\u044f \u0432\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a \u0433\u0443\u0433\u043b\u0443 (\u00ab\u043f\u043e\u0447\u0435\u043c\u0443 cxx \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u0441\u0431\u043e\u0440\u043a\u0438?!\u00bb), \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0431\u0430\u0433\u0430 \u0441 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <strong>\u00abconfigure &#8212;with-extra-cxxflags doesn&#8217;t affect hotspot\u00bb<\/strong> (<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8156967\">JDK-8156967<\/a>).<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0449\u0430\u044e\u0442 \u043f\u043e\u0444\u0438\u043a\u0441\u0438\u0442\u044c \u0432 JDK 12. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c. \u0427\u0443\u0434\u0435\u0441\u043d\u043e \u2014 \u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0431\u043e\u0440\u043a\u0435!<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0438\u0434\u0435\u044f \u2014 \u043d\u0443 \u0447\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0441\u0443\u0447\u0438\u043c \u0440\u0443\u043a\u0430\u0432\u0430 \u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0438!<\/p>\n<p>  <\/p>\n<h2 id=\"oshibka-1-xn12\">\u041e\u0448\u0438\u0431\u043a\u0430 1. xn[12]<\/h2>\n<p>  <\/p>\n<pre><code>dependencies.cpp: In function \u2018static void Dependencies::write_dependency_to(xmlStream*, Dependencies::DepType, GrowableArray&lt;Dependencies::DepArgument&gt;*, Klass*)\u2019:  dependencies.cpp:498:6: error: \u2018%d\u2019 directive writing between 1 and 10 bytes into a region of size 9 [-Werror=format-overflow=]  void Dependencies::write_dependency_to(xmlStream* xtty,       ^~~~~~~~~~~~  dependencies.cpp:498:6: note: directive argument in the range [0, 2147483647]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e, \u043d\u0430\u043c, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043d\u0443\u0436\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u043e\u043d. \u0421\u0442\u043e \u043f\u0443\u0434\u043e\u0432 \u043a\u0442\u043e-\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b \u0431\u0443\u0444\u0435\u0440 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u041c\u043d\u0435 \u041f\u043e\u0432\u0435\u0437\u0451\u0442!\u00bb \u0432 \u0433\u0443\u0433\u043b\u0435. <\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043a\u0430\u043a \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0434\u043e? \u041d\u0438\u0436\u0435 \u0435\u0441\u0442\u044c \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code>stdio2.h:34:43: note: \u2018__builtin___sprintf_chk\u2019 output between 3 and 12 bytes into a destination of size 10        __bos (__s), __fmt, __va_arg_pack ());<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0437\u0438\u0446\u0438\u044f 12 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0447\u0442\u043e-\u0442\u043e \u0441\u0442\u043e\u044f\u0449\u0435\u0435, \u0441 \u0447\u0435\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u043b\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0433\u0440\u044f\u0437\u043d\u044b\u043c\u0438 \u043d\u043e\u0433\u0430\u043c\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a.<\/p>\n<p>  <\/p>\n<p>\u041b\u0435\u0437\u0435\u043c \u0432 <code>dependencies.cpp<\/code> \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">DepArgument arg = args-&gt;at(j); if (j == 1) {   if (arg.is_oop()) {     xtty-&gt;object(\"x\", arg.oop_value());   } else {     xtty-&gt;object(\"x\", arg.metadata_value());   } } else {   char xn[10]; sprintf(xn, \"x%d\", j);   if (arg.is_oop()) {     xtty-&gt;object(xn, arg.oop_value());   } else {     xtty-&gt;object(xn, arg.metadata_value());   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443: <\/p>\n<p>  <\/p>\n<pre><code>char xn[10]; sprintf(xn, \"x%d\", j);<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u0435\u043d\u044f\u0435\u043c 10 \u043d\u0430 12, \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u2026 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0448\u043b\u0430!<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043d\u0435\u0443\u0436\u0435\u043b\u0438 \u044f \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u043e\u0439 \u0443\u043c\u043d\u044b\u0439 \u0438 \u043f\u043e\u0447\u0438\u043d\u0438\u043b \u0431\u0430\u0433\u0443 \u0432\u0441\u0435\u0445 \u0432\u0440\u0435\u043c\u0451\u043d \u0438 \u043d\u0430\u0440\u043e\u0434\u043e\u0432? \u041d\u0435 \u0432\u043e\u043f\u0440\u043e\u0441, \u043e\u043f\u044f\u0442\u044c \u0432\u0431\u0438\u0432\u0430\u0435\u043c \u0432 \u0433\u0443\u0433\u043b \u043d\u0430\u0448 \u043c\u0435\u0433\u0430\u043f\u0430\u0442\u0447: <code>char xn[12];<\/code><\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u0438\u0434\u0438\u043c\u2026 \u0434\u0430, \u0432\u0441\u0451 \u0432\u0435\u0440\u043d\u043e. \u0411\u0430\u0433 <a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8184309\">JDK-8184309<\/a>, \u0437\u0430\u0440\u0435\u0432\u044c\u044e\u0435\u043d\u043d\u044b\u0439 \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440\u043e\u043c \u0418\u0432\u0430\u043d\u043e\u0432\u044b\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. <\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0441\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 JDK 10 \u0438 \u043d\u0438\u0444\u0438\u0433\u0430 \u043d\u0435 \u0431\u044d\u043a\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0432 jdk8u. \u042d\u0442\u043e \u043a \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0436\u0430\u0432\u044b.<\/p>\n<p>  <\/p>\n<h2 id=\"oshibka-2-strcmp\">\u041e\u0448\u0438\u0431\u043a\u0430 2. strcmp<\/h2>\n<p>  <\/p>\n<pre><code>fprofiler.cpp: In member function \u2018void ThreadProfiler::vm_update(TickPosition)\u2019: \/home\/me\/git\/jdk8ut\/hotspot\/src\/share\/vm\/runtime\/fprofiler.cpp:638:56: error: argument 1 null where non-null expected [-Werror=nonnull]    bool vm_match(const char* name) const { return strcmp(name, _name) == 0; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c \u0433\u043e\u0440\u044c\u043a\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c, \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0438\u0434\u0451\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 JDK 11. \u0418\u2026 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0442\u0430\u043c \u043d\u0435\u0442. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043b\u0430\u0441\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0443.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043e\u0442 \u043d\u0430\u0441 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0443\u0439\u0434\u0451\u0448\u044c! <\/p>\n<p>  <\/p>\n<p>\u041b\u044e\u0431\u043e\u0439 \u0434\u0436\u0430\u0432\u0438\u0441\u0442 \u2014 \u0432 \u0434\u0443\u0448\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043a\u0440\u043e\u043c\u0430\u043d\u0442, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435\u043a\u0440\u043e\u0444\u0438\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u041d\u0415\u041a\u0420\u041e\u041c\u0410\u041d\u0422\u0418\u042f \u0412 \u0414\u0415\u0419\u0421\u0422\u0412\u0418\u0418!<\/p>\n<p>  <\/p>\n<p>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0437\u0437\u0432\u0430\u0442\u044c \u043a \u0434\u0443\u0448\u0435 \u043c\u0451\u0440\u0442\u0432\u043e\u0433\u043e \u0438 \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0443\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code>$ hg log --template \"File(s) deleted in rev {rev}: {file_dels % '\\n  {file}'}\\n\\n\" -r 'removes(\"**\/fprofiler.cpp\")'  File(s) deleted in rev 47106:    hotspot\/src\/share\/vm\/runtime\/fprofiler.cpp   hotspot\/src\/share\/vm\/runtime\/fprofiler.hpp   hotspot\/test\/runtime\/MinimalVM\/Xprof.java<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0435\u0433\u043e \u0433\u0438\u0431\u0435\u043b\u0438:<\/p>\n<p>  <\/p>\n<pre><code>hg log -r 47106 changeset:   47106:bed18a111b90 parent:      47104:6bdc0c9c44af user:        gziemski date:        Thu Aug 31 20:26:53 2017 -0500 summary:     8173715: Remove FlatProfiler <\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0443\u0431\u0438\u0439\u0446\u0430: <strong>gziemski<\/strong>. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043c, \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043f\u0440\u0438\u0431\u0438\u043b \u044d\u0442\u043e\u0442 \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 \u0436\u0438\u0440\u0443 \u0432 \u0442\u0438\u043a\u0435\u0442, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 summary \u043a\u043e\u043c\u043c\u0438\u0442\u0430. \u042d\u0442\u043e <a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8173715\">JDK-8173715<\/a>:<\/p>\n<p>  <\/p>\n<p>Remove FlatProfiler:<br \/>  We assume that this technology is no longer in use and is a source of root scanning for the GC. <\/p>\n<p>  <\/p>\n<p>\u0417\u0430-\u0448\u0438-\u0431\u0438\u0441\u044c. \u041f\u043e \u0441\u0443\u0442\u0438, \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c \u0442\u0440\u0443\u043f \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u0438\u043b\u0434 \u0441\u043e\u0431\u0440\u0430\u043b\u0441\u044f. \u041a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0430\u0448\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0438-\u043d\u0435\u043a\u0440\u043e\u043c\u0430\u043d\u0442\u044b \u0438\u0437 OpenJDK \u0437\u0430\u0431\u0440\u043e\u0441\u0438\u043b\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0438\u043c \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u0430 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0441\u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c. \u041e\u043d \u0431\u044b\u043b \u0443\u0436\u0435 \u043c\u0451\u0440\u0442\u0432 \u0432 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 47106, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0443 \u043c\u0435\u043d\u044c\u0448\u0435 \u2014 \u044d\u0442\u043e \u00ab\u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0434\u043e\u00bb:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">hg cat \"~\/git\/jdk11\/hotspot\/src\/share\/vm\/runtime\/fprofiler.cpp\" -r 47105 &gt; ~\/tmp\/fprofiler_new.cpp  cp ~\/git\/jdk8u\/hotspot\/src\/share\/vm\/runtime\/fprofiler.cpp ~\/tmp\/fprofiler_old.cpp  cd ~\/tmp  diff fprofiler_old.cpp fprofiler_new.cpp<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0430\u0441\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f <code>return strcmp(name, _name) == 0;<\/code> \u0432 \u0434\u0438\u0444\u0444\u0435 \u043d\u0435\u0442. \u041f\u043e\u0446\u0438\u0435\u043d\u0442 \u0443\u043c\u0435\u0440 \u043e\u0442 \u0443\u0434\u0430\u0440\u0430 \u0442\u0443\u043f\u044b\u043c \u043e\u0441\u0442\u0440\u044b\u043c \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u043c (\u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 rm), \u043d\u043e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043c\u0435\u0440\u0442\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b \u043d\u0435\u0438\u0437\u043b\u0435\u0447\u0438\u043c\u043e \u0431\u043e\u043b\u0435\u043d.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u043e\u043f\u043d\u0435\u043c \u0432 \u0441\u0443\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0447\u0442\u043e \u043a\u0430\u043a \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u043c \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  const char *name()    const { return _name; }   bool is_compiled()    const { return true; }    bool vm_match(const char* name) const { return strcmp(name, _name) == 0; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 C11 \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 7.1.4, \u00abUse of library functions\u00bb, \u044f\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442:<\/p>\n<p>  <\/p>\n<blockquote><p>Each of the following statements applies unless explicitly stated otherwise in the detailed descriptions that follow: If an argument to a function has an invalid value (such as [&#8230;] a null pointer [&#8230;]) [&#8230;], the behavior is undefined.<\/p><\/blockquote>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0442\u043e\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u043d\u0435\u043a\u043e\u0435 <em>\u00abexplicitly stated otherwise\u00bb<\/em>. \u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 <code>strcmp<\/code> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 7.24.4 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u0434\u043b\u044f \u0432\u0430\u0441 \u043d\u0435\u0442. <\/p>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0437\u0434\u0435\u0441\u044c \u0438\u043c\u0435\u0435\u043c undefined behavior. <\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430, \u043e\u043a\u0440\u0443\u0436\u0438\u0432 \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439. \u041d\u043e \u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 UB \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0433\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0433\u0435\u043d\u0435\u0440\u044f\u0442 \u043d\u0430 \u0434\u0435\u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u0438\u043d\u0433 \u043d\u0443\u043b\u044f SIGSERV, \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0445\u0430\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e \u0437\u0430\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f, \u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u0430\u0445\u043d\u0443\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043a\u0442\u043e-\u0442\u043e \u0441\u043a\u0430\u0436\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u044b \u0441\u0430\u043c \u0441\u0435\u0431\u0435 \u0434\u0443\u0440\u0430\u043a, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c GCC 7.3, \u0430 \u0432\u043e\u0442 \u0432 GCC 4 \u0442\u043e\u0447\u043d\u043e \u0431\u044b \u0432\u0441\u0435 \u0441\u043e\u0431\u0440\u0430\u043b\u043e\u0441\u044c. \u041d\u043e \u0432\u0435\u0434\u044c undefined behavior != unspecified != implementation defined. \u042d\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0434\u0432\u0443\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0441\u0442\u0430\u0440\u043e\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0435. \u0410 UB \u0438 \u0432 \u0448\u0435\u0441\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u044b\u043b UB.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435, \u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u0437\u0433\u0440\u0443\u0441\u0442\u043d\u0443\u043b \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0441\u043a\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c (\u043b\u0435\u0437\u0442\u044c \u043b\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u043a\u043e\u0434), \u043a\u043e\u0433\u0434\u0430 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u043b \u2014 \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/p>\n<p>  <\/p>\n<h1 id=\"est-drugoy-put\">\u0415\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0443\u0442\u044c<\/h1>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0433\u0435\u0440\u043e\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0434\u0443\u0442 \u0432 \u043e\u0431\u0445\u043e\u0434. <\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0442\u0432\u043b\u0435\u0447\u044c\u0441\u044f \u043e\u0442 \u043d\u0430\u0448\u0435\u0439 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438 \u043f\u0440\u043e UB, \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0442\u0430\u043c \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e. \u041d\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c \u0434\u043e \u0443\u0442\u0440\u0430. \u041d\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043a\u0440\u0438\u0432\u044b\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0435 \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0443. \u0415\u0449\u0435 \u043c\u0435\u043d\u0435\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0443\u0442 \u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c: \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u0442\u0447 \u0432 jdk8u \u0431\u044b\u043b 6 \u043d\u0435\u0434\u0435\u043b\u044c \u043d\u0430\u0437\u0430\u0434, \u0438 \u044d\u0442\u043e \u0431\u044b\u043b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0440\u0434\u0436 \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u044d\u0433\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u0434 \u0432\u044b\u0448\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0412\u0441\u0451, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043c\u0435\u0436\u0434\u0443 \u043d\u0430\u043c\u0438 \u0438 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c, \u2014 \u043d\u0435\u043a\u0438\u0439 warning, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u0442 \u043a\u0430\u043a error \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0431\u0430\u0433\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0431\u043e\u0440\u043a\u0438. \u041d\u043e \u0432\u0435\u0434\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0445\u0430\u0447\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412\u0435\u0434\u044c\u043c\u0430\u043a \u0413\u0435\u0440\u0430\u043b\u044c\u0442 \u0438\u0437 \u0420\u0438\u0432\u0438\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043a\u043e\u0433\u0434\u0430-\u0442\u043e:<\/p>\n<p>  <\/p>\n<blockquote><p>\u2014 \u0417\u043b\u043e \u2014 \u044d\u0442\u043e \u0437\u043b\u043e, \u0421\u0442\u0440\u0435\u0433\u043e\u0431\u043e\u0440, \u2014 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u0432\u0435\u0434\u044c\u043c\u0430\u043a, \u0432\u0441\u0442\u0430\u0432\u0430\u044f. \u2014 \u041c\u0435\u043d\u044c\u0448\u0435\u0435, \u0431\u043e\u0301\u043b\u044c\u0448\u0435\u0435, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u2014 \u0432\u0441\u0451 \u0435\u0434\u0438\u043d\u043e, \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u044b, \u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0430\u0437\u043c\u044b\u0442\u044b. \u042f \u043d\u0435 \u0441\u0432\u044f\u0442\u043e\u0439 \u043e\u0442\u0448\u0435\u043b\u044c\u043d\u0438\u043a, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0434\u043e\u0431\u0440\u043e \u0442\u0432\u043e\u0440\u0438\u043b \u0432 \u0436\u0438\u0437\u043d\u0438. \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043e\u0434\u043d\u0438\u043c \u0437\u043b\u043e\u043c \u0438 \u0434\u0440\u0443\u0433\u0438\u043c, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435.<\/p>\n<p>  \u2014 Z\u0142o to z\u0142o, Stregoborze \u2014 rzek\u0142 powa\u017cnie wied\u017amin wstaj\u0105c. \u2014 Mniejsze, wi\u0119ksze, \u015brednie, wszystko jedno, proporcje s\u0105 umowne a granice zatarte. Nie jestem \u015bwi\u0105tobliwym pustelnikiem, nie samo dobro czyni\u0142em w \u017cyciu. Ale je\u017celi mam wybiera\u0107 pomi\u0119dzy jednym z\u0142em a drugim, to wol\u0119 nie wybiera\u0107 wcale.<\/p><\/blockquote>\n<p>\u042d\u0442\u043e \u0446\u0438\u0442\u0430\u0442\u0430 \u0438\u0437 \u043a\u043d\u0438\u0433\u0438 \u00ab\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435\u00bb, \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u00ab\u041c\u0435\u043d\u044c\u0448\u0435\u0435 \u0437\u043b\u043e\u00bb. \u041c\u044b-\u0442\u043e \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0413\u0435\u0440\u0430\u043b\u044c\u0442 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043c\u043e\u0433 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u044b\u0433\u0440\u0430\u0442\u044c \u0440\u043e\u043b\u044c \u0438\u0441\u0442\u0438\u043d\u043d\u043e-\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u0438 \u0434\u0430\u0436\u0435 \u0443\u043c\u0435\u0440 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0445\u0430\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438-\u0434\u043e\u0431\u0440\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435-\u043a\u0430 \u0437\u0430\u0448\u043a\u0432\u0430\u0440\u0438\u043c\u0441\u044f \u043e\u0431 \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u0437\u043b\u043e. \u041f\u043e\u0445\u0430\u0447\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u044b \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0445\u043b\u043e\u043f:<\/p>\n<p>  <\/p>\n<pre><code>grep -rl \"Werror\" .  .\/common\/autoconf\/flags.m4 .\/hotspot\/make\/linux\/makefiles\/gcc.make .\/hotspot\/make\/bsd\/makefiles\/gcc.make .\/hotspot\/make\/solaris\/makefiles\/gcc.make .\/hotspot\/make\/aix\/makefiles\/xlc.make<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0434\u0432\u0430 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430, \u044f \u0440\u0430\u0437\u0431\u0438\u043b \u0432\u0441\u0451 \u043b\u0438\u0446\u043e \u0444\u0435\u0439\u0441\u043f\u0430\u043b\u043c\u043e\u043c \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043b \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u0432 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u0435 \u0434\u0432\u0443\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c:<\/p>\n<p>  <\/p>\n<p>BSD \u2014 \u044d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0441\u0432\u043e\u0431\u043e\u0434\u0435 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0432\u044b\u0431\u043e\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code># Compiler warnings are treated as errors ifneq ($(COMPILER_WARNINGS_FATAL),false)   WARNINGS_ARE_ERRORS = -Werror endif<\/code><\/pre>\n<p>  <\/p>\n<p>GNU\/Linux \u2014 \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0430\u0440\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u0443\u0440\u0438\u0441\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code># Compiler warnings are treated as errors WARNINGS_ARE_ERRORS = -Werror<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443 \u0435\u0449\u0451 \u0431\u044b \u043e\u043d\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0432 linux \u0447\u0435\u0440\u0435\u0437 <code>\u0421\u0421XX_FLAGS<\/code>, \u044d\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 <code>WARNINGS_ARE_ERRORS<\/code> \u0431\u043b\u0438\u0437\u043a\u043e \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f! \u0412 \u0431\u0438\u043b\u0434\u0435 \u0434\u043b\u044f GNU\/Linux \u0443 \u043d\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u0432\u044b\u0431\u043e\u0440\u0430, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c \u0441\u0432\u044b\u0448\u0435 \u0434\u0435\u0444\u043e\u043b\u0442\u0430\u043c.<\/p>\n<p>  <\/p>\n<p>\u041d\u0443 \u0438\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0449\u0435 \u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>WARNINGS_ARE_ERRORS<\/code> \u043d\u0430 \u043a\u0440\u0430\u0442\u043a\u043e\u0435, \u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043c\u043e\u0449\u043d\u043e\u0435 <code>-w<\/code>. \u041a\u0430\u043a \u0442\u0435\u0431\u0435 \u0442\u0430\u043a\u043e\u0435, \u0418\u043b\u043e\u043d \u041c\u0430\u0441\u043a?<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u044e\u0449\u0443\u044e \u043c\u0438\u043c\u043e \u043a\u0443\u0447\u0443 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445, \u0436\u0443\u0442\u043a\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u043b\u043e \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0430\u0436\u0430\u0442\u044c ctrl+C \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u041d\u043e \u043d\u0435\u0442, \u043d\u0435\u043b\u044c\u0437\u044f, \u043d\u0435\u043b\u044c\u0437\u044f\u2026<\/p>\n<p>  <\/p>\n<p>\u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u0441\u043e\u0431\u0440\u0430\u043b\u043e\u0441\u044c \u0438 \u043d\u0435 \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0425\u043e\u0442\u044f \u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0440\u0435\u0448\u0438\u043b\u0441\u044f \u043d\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0412\u0441\u0435-\u0442\u0430\u043a\u0438 \u043d\u043e\u0447\u044c, \u0433\u043b\u0430\u0437\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441\u043b\u0438\u043f\u0430\u0442\u044c\u0441\u044f, \u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c\u0443 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0443 \u2014 \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u0431\u0430\u043d\u043a\u0430\u043c \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u043a\u0430 \u0438\u0437 \u0445\u043e\u043b\u043e\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430 \u2014 \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h1 id=\"padaet-v-korku\">\u041f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043a\u043e\u0440\u043a\u0443<\/h1>\n<p>  <a name=\"three\"><\/a>  <\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u044d\u043a\u0437\u0435\u0448\u043d\u0438\u043a\u0438, \u043c\u044b \u043c\u043e\u043b\u043e\u0434\u0446\u044b.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u043e\u0442 \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0444\u0438\u043d\u0438\u0448\u0443. \u0418\u043b\u0438 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0438?<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0448\u0430 \u0441\u0431\u043e\u0440\u043a\u0430 \u043b\u0435\u0436\u0438\u0442 \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043f\u0443\u0442\u0438:<\/p>\n<p>  <\/p>\n<pre><code>export JAVA_HOME=~\/git\/jdk8u\/build\/linux-x86_64-normal-server-fastdebug\/jdk  export PATH=$JAVA_HOME\/bin:$PATH<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b <code>java<\/code> \u043e\u043d \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043a\u043e\u0440\u043a\u0443. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u2014 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/n2\/3p\/ep\/n23pepls-unfomopiqb1zgkx5eq.png\">  <\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u0410\u043b\u0435\u043a\u0441\u0430 \u2014 Debian 9.5, \u0430 \u0443 \u043c\u0435\u043d\u044f \u2014 Ubuntu. \u0414\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0438 GCC, \u0434\u0432\u0435 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0449\u0438\u0435 \u043a\u043e\u0440\u043a\u0438. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u0432\u0438\u043d\u043d\u044b\u0435 \u0448\u0430\u043b\u043e\u0441\u0442\u0438 \u0441 \u0440\u0443\u0447\u043d\u044b\u043c \u043f\u0430\u0442\u0447\u0435\u043c strcmp \u0438 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442, \u0443 \u0410\u043b\u0435\u043a\u0441\u0430 \u2014 \u043d\u0435\u0442. \u0412 \u0447\u0451\u043c \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430, \u043d\u043e \u0442\u0443\u0442 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0441\u0443\u0445\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c, \u0438\u043d\u0430\u0447\u0435 \u044f \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043d\u0435 \u0434\u043e\u043f\u0438\u0448\u0443 \u043d\u0438\u043a\u043e\u0433\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0448\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 C++-\u043f\u043e\u0433\u0440\u043e\u043c\u0438\u0441\u0442\u044b \u043e\u043f\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 undefined behavior. <\/p>\n<p>  <\/p>\n<p>(\u041f\u0440\u0438\u0447\u0435\u043c \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e UB \u2014 \u0432\u0441\u0435\u0433\u0434\u0430 UB, \u0434\u0430\u0436\u0435 \u043d\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f)<\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u0442\u0430\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a \u043f\u043e\u043b\u044e \u043d\u0435\u0434\u043e\u0441\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0438 \u0432\u0441\u0451 \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f. \u041d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435, \u043a\u0430\u043a \u0442\u0430\u043a \u0432\u044b\u0448\u043b\u043e, \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0434\u0436\u0430\u0432\u0438\u0441\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u0434\u043e\u0441\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0432 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u0439 \u044f\u0437\u044b\u043a C++ \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0451 \u0438\u043b\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0451. \u0417\u0430\u043f\u0438\u0448\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u043a\u0438\u043c \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class A {   A()   {     _b.Show();   } private:    static B _b;  };  A a; B A::_b;  int main() { }<\/code><\/pre>\n<p>  <\/p>\n<p>Have a nice debug!<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0430 C++98 [class.cdtor]:<\/p>\n<p>  <\/p>\n<blockquote><p>For an object of non-POD class type\u2026 before the constructor begins execution\u2026 referring to any non-static member or base class of the object results in undefined behavior<\/p><\/blockquote>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 GCC \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u0438 (\u0430 \u0443 \u043c\u0435\u043d\u044f 7.3) \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u00ablifetime dead store elimination\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0445\u043e\u0434\u0435 \u0435\u0433\u043e \u043b\u0430\u0439\u0444\u0442\u0430\u0439\u043c\u0430, \u0430 \u0432\u043d\u0435 \u043b\u0430\u0439\u0444\u0442\u0430\u0439\u043c\u0430 \u0432\u0441\u0451 \u0432\u044b\u043a\u0430\u0448\u0438\u0432\u0430\u0435\u0442. <\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 GCC:<\/p>\n<p>  <\/p>\n<pre><code>CFLAGS += -fno-strict-aliasing -fno-lifetime-dse -fno-delete-null-pointer-checks<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e \u044d\u0442\u043e <a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=1306558\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0435\u0441\u0442\u044c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435.<br \/>  \u041f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c \u044d\u0442\u043e \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442. \u041d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0441\u043b\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u0438 \u043e\u043f\u0446\u0438\u0438 \u0432 \u043d\u0430\u0448 <code>.\/hotspot\/make\/linux\/makefiles\/gcc.make<\/code>, \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0449\u0451 \u0440\u0430\u0437 \u0438 \u0432\u0438\u0434\u0438\u043c \u0437\u0430\u0432\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438:<\/p>\n<p>  <\/p>\n<pre><code>t$ ~\/git\/jdk8u\/build\/linux-x86_64-normal-server-fastdebug\/jdk\/bin\/java -version openjdk version \"1.8.0-internal-fastdebug\" OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-me_2018_09_10_08_14-b00) OpenJDK 64-Bit Server VM (build 25.71-b00-fastdebug, mixed mode)<\/code><\/pre>\n<p>  <\/p>\n<h1 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0412\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439: \u00abJava \u2014 \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0430\u0434, \u0432 \u043a\u043e\u0434\u0435 \u043c\u0443\u0441\u043e\u0440, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u0442, \u0432\u0441\u0451 \u043f\u043b\u043e\u0445\u043e\u00bb.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a! \u041d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e \u0437\u043b\u0430 \u0445\u0440\u0430\u043d\u044f\u0442 \u043d\u0430\u0441 \u043d\u0430\u0448\u0438 \u0434\u0440\u0443\u0437\u044c\u044f, \u043d\u0435\u043a\u0440\u043e\u043c\u0430\u043d\u0442\u044b \u0438\u0437 OpenJDK. <\/p>\n<p>  <\/p>\n<p>\u0418 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0436\u0438\u0442\u044c \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f C++, \u0434\u0440\u043e\u0436\u0430\u0442\u044c \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e UB \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Java \u2014 \u0431\u0435\u0437\u0443\u043c\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439, \u0430 \u043d\u0430 \u0431\u0438\u043b\u0434\u0430\u0445, \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Azul, Red Hat \u0438 Oracle, \u0432\u0440\u044f\u0434 \u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0440\u043a\u0443 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435.<\/p>\n<p>  <\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u2014 \u0441\u043a\u043e\u0440\u0435\u0439 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u0440\u0438\u043c\u0443\u0442 \u0432 jdk8u. \u041c\u044b \u0432\u0437\u044f\u043b\u0438 JDK 8 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u0440\u043e\u0449\u0435 \u0435\u0433\u043e \u0437\u0430\u043f\u0430\u0442\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441, \u0430 \u0441 JDK 11 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 2018 \u0433\u043e\u0434\u0443 JDK 8 \u2014 \u0438\u043c\u0445\u043e, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0438 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u043d\u0435 \u043e\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0436\u0438\u0437\u043d\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043d\u0430\u0448\u0430 \u0436\u0438\u0437\u043d\u044c \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u0441\u044f, \u0438 \u0432\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0435\u0449\u0451 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u0439 \u0438\u0437 \u043c\u0438\u0440\u0430 JDK 11 \u0438 JDK 12.<\/p>\n<p>  <\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0443\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u0441\u0442\u043e\u043b\u044c \u0437\u0430\u043d\u0443\u0434\u043d\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0442\u0443 \u0431\u0435\u0437 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \ud83d\ude42<\/p>\n<p>  <\/p>\n<blockquote><p>\u041c\u0438\u043d\u0443\u0442\u043a\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b. \u0421\u043e\u0432\u0441\u0435\u043c \u0441\u043a\u043e\u0440\u043e \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f Joker 2018, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e Java \u0438 JVM. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432 \u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/jokerconf.com\/#schedule\">\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a>. \u042f \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0443, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u0442\u0435\u0440\u0435\u0442\u044c \u0437\u0430 \u0436\u0438\u0437\u043d\u044c \u0438 OpenJDK.<\/p><\/blockquote>\n<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/post\/422861\/\"> https:\/\/habr.com\/post\/422861\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p>\u0425\u043e\u0442\u0435\u043b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0441\u043f\u0430\u0442\u044c, \u043d\u043e \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u0412 \u0422\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f Java\u2026 \u0438 \u043c\u044b \u043e\u0447\u043d\u0443\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432, \u0443\u0441\u0442\u0430\u0432\u0448\u0438\u0435 \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ti\/ov\/lf\/tiovlf2wctfucdlsql2-avqmkwe.png\">  <\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d? \u0414\u0430, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043d\u0438\u043a\u043e\u043c\u0443, \u043a\u0440\u043e\u043c\u0435 \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 JDK8 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u044e\u0431\u0438\u0442 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0448\u043c\u0430\u0440\u043d\u044b\u0435 \u0443\u0436\u0430\u0441\u044b. \u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0432\u0430\u0441 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e \u0441\u0440\u043e\u0447\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0442\u0440\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\n<p>\u041d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f (<a href=\"#one\">\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0435\u0440\u0432\u044b\u0439<\/a>)<br \/>  \u041e\u0447\u0435\u043d\u044c \u0441\u043a\u0443\u0447\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u041d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u0439;<\/p>\n<p>  <\/li>\n<li>\n<p>\u041d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f (<a href=\"#two\">\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u0442\u043e\u0440\u043e\u0439<\/a>)<br \/>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0435\u043a\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u044f, \u043d\u0435\u043a\u0440\u043e\u0444\u0438\u043b\u0438\u044f, \u0432 \u0447\u0451\u043c BSD \u043b\u0443\u0447\u0448\u0435 GNU\/Linux \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 JDK.<\/p>\n<p>  <\/li>\n<li>\n<p>\u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, <a href=\"#three\">\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043a\u043e\u0440\u043a\u0443<\/a><br \/>  \u0411\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0419\u0430\u0445\u0443\u0443\u0443, JVM \u0443\u043f\u0430\u043b\u0430 \u0432 \u043a\u043e\u0440\u043a\u0443, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0438\u043d\u0430\u0442\u044c \u0435\u0451 \u043d\u043e\u0433\u0430\u043c\u0438!<\/p>\n<p>  <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0445\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u043c\u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438 \u043e \u0436\u0438\u0437\u043d\u0438. <\/p>\n<p>  <\/p>\n<p>\u0411\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e C++, \u043a\u043e\u0434\u0430 \u043d\u0430 Java \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435. \u041b\u044e\u0431\u043e\u0439 \u0434\u0436\u0430\u0432\u0438\u0441\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 C++\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-289207","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/289207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=289207"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/289207\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=289207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=289207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=289207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}