рдореИрдВ рдЖрдЬ рд╕реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЕрд╕рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЬрд╛рд╡рд╛ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рдерд╛ ... рдФрд░ рд╣рдо рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рд╣реА рдердХ рдЧрдП рдФрд░ рдЦреБрд╢ рд╣реЛ рдЧрдПред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреМрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд╣рд╛рдВ, рд╢рд╛рдпрдж рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ JDK8 рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ рджреБрдГрд╕реНрд╡рдкреНрди рднрдпрд╛рд╡рд╣рддрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИ, рд▓реЗрдЦ рдХреЛ рддрддреНрдХрд╛рд▓ рдмрдВрдж рдХрд░реЗрдВред
рддреАрди рд╕рдорд╕реНрдпрд╛рдПрдВ:
- рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ ( рд╕реНрддрд░ рдПрдХ )
рд╕реНрдХрд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЙрдмрд╛рдК рд╣рд┐рд╕реНрд╕рд╛ред рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ; - рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ ( рд╕реНрддрд░ рджреЛ )
рдпрд╣ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрд▓рддрд┐рдпреЛрдВ, рдиреЗрдХреНрд░реЛрдореЗрдВрд╕реА, рдиреЗрдХреНрд░реЛрдлрд┐рд▓рд┐рдпрд╛ рдХреЗ рдХреБрдЫ рдЬреЛрдбрд╝реЗ рд╣реИрдВ, рдЬреЛ рдмреАрдПрд╕рдбреА рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдпрд╣ рдЬреЗрдбреАрдХреЗ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпреЛрдВ рд╣реИред - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдпрд╣ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдкрдкрдбрд╝реА рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ
рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдпрд╛рд╣реБ, JVM рдкрдкрдбрд╝реА рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛, рдЪрд▓реЛ рдЗрд╕реЗ рд▓рд╛рдд рдорд╛рд░реЛ!
рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЬреАрд╡рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде, рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдмрд╣реБрдд рд╕рд╛рд░реЗ C ++ рд╣реЛрдВрдЧреЗ, рдХреЛрдИ рдЬрд╛рд╡рд╛ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЕрдВрдд рдореЗрдВ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡реЗрдж рдиреЗ рдХреЗрд╡рд▓ C ++ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ ...
рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
рдЬрд┐рд╕рдиреЗ рднреА рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдЬрд╛рд╡рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u cd jdk8u sh ./get_source.sh 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
(рдореЗрд░реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд╕ "рдореБрдЭреЗ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рджреЗ рд╕рдХреЗрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдкреИрджрд╛ рди рдХрд░реЗрдВ)
рдмреЗрд╢рдХ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдирдХреА рддрд░реАрдХреЗ рд╕реЗред
рдкрд╣рд▓рд╛ рдЧреЛрддрд╛ рд╕реНрддрд░
рдЖрдЗрдП рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
/home/me/git/jdk8u/hotspot/src/os/linux/vm/os_linux.inline.hpp:127:18: warning: 'int readdir_r(DIR*, dirent*, dirent**)' is deprecated [-Wdeprecated-declarations] if((status = ::readdir_r(dirp, dbuf, &p)) != 0) { ^~~~~~~~~
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
$ g++ --version g++ (Ubuntu 7.3.0-16ubuntu3) 7.3.0 Copyright (C) 2017 Free Software Foundation, Inc.
рд╕рдВрдХрд▓рдХ рдкрд╣рд▓реЗ рддрд╛рдЬрдЧреА рдирд╣реАрдВ рд╣реИ, 8.2 рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реА ++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрде рдореЗрдВ gcc рдФрд░ clang рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд╣реАрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рд░рди- -Werror
("рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА -Werror
") рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдлрд┐рд░ рдЕрдиреНрдп рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреЛрдб рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдПрдХ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ CXX_FLAGS рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╣реА рд╕реНрддрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИред
export CXX_FLAGS=-Wno-error=deprecated-declarations -Wno-error-deprecated-declarations
рдФрд░ рдлрд┐рд░ рд╣рдо рдЕрджреНрднреБрдд рджреЗрдЦрддреЗ рд╣реИрдВ:
Ignoring CXXFLAGS found in environment. Use --with-extra-cxxflags
рдареАрдХ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ! рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:
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
рдФрд░ рддреНрд░реБрдЯрд┐ рд╡рд╣реА рд░рд╣рддреА рд╣реИ!
рд╣рдо рднрд╛рд░реА рддреЛрдкрдЦрд╛рдиреЗ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ: рд╕реНрд░реЛрдд рдХреЛрдбред
grep -rl "Werror" .
рдХрд┐рд╕реА рднреА рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдЯреЛрдкреА рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдмрд╛рд╣рд░ рдЧрд┐рд░ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рд╕рд╛рд░реНрдердХ рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЭрд▓рдХ рд╣реЛрддреА рд╣реИ:
./common/autoconf/flags.m4 ./hotspot/make/bsd/makefiles/gcc.make ./hotspot/make/solaris/makefiles/gcc.make ./hotspot/make/aix/makefiles/xlc.make
flags.m4
рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ "CXXFLAGS рдХреА рдЕрдирджреЗрдЦреА" рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рдзреНрд╡рдЬ CCXX_FLGS
(рд╣рд╛рдБ, рджреЛ рдЕрдХреНрд╖рд░ C) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓рд╛ рд╕рдВрджреЗрд╢ рдкрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рддреБрд░рдВрдд CFLAGS
рдмрдЬрд╛рдп рдФрд░ XX_FLAGS
рдмрдЬрд╛рдп рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ! рджреЛ рддрдереНрдп рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ:
- рдпрд╣ рдзреНрд╡рдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕рд╛рд░реНрдердХ рдФрд░ рд╕рдВрджрд┐рдЧреНрдз рд░реВрдк рд╕реЗ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ:
рдпрд╣ рд╕рд╡рд╛рд▓ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛, рдЭрдВрдбреЗ рдЖрдо рд╣реИрдВ? рд╕рдЪ?
рд╣рдо рд▓реЛрдХрддрдВрддреНрд░ рдФрд░ рдЕрдзрд┐рдирд╛рдпрдХрд╡рд╛рджреА рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдирд╣реАрдВ рдЦреЗрд▓реЗрдВрдЧреЗ - ("рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ"):
CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -w -ffreestanding -fno-builtin -Wno-parentheses -Wno-unused -Wno-unused-parameter -Wformat=2 \
рдФрд░ - рдЪреАрдпрд░реНрд╕! - рдкрд╣рд▓реА рдЧрд▓рддреА рд╣рдо рдкрд░ рд╣реБрдИред рд╡рд╣ рдЕрдм рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реЛрдЧрд╛ред
рджреВрд╕рд░рд╛ рдЧреЛрддрд╛ рд╕реНрддрд░
рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЕрдиреНрдп рдирдП рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдвреЗрд░ рдореЗрдВ рдЧрд┐рд░ рд░рд╣рд╛ рд╣реИ!
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ -w
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдП?
Google рдХреЗ рд╕рд╣реА рд╕рд╡рд╛рд▓ ("рдХреНрдпреЛрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП cxx рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ?") рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдмрдЧ рдкреЗрдЬ рдкрд░ рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ --with-extra-cxxflags рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ" ( JDK-815367 )ред
рдХреМрди рд╕рд╛ рд╡рд╛рджрд╛ JDK 12. рдореЗрдВ рддрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрджреНрднреБрдд - рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рд▓реНрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ!
рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЕрдкрдиреА рдЖрд╕реНрддреАрди рдКрдкрд░ рд░реЛрд▓ рдХрд░реЗрдВ рдФрд░ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░реЗрдВ!
рддреНрд░реБрдЯрд┐ 1.xn [12]
dependencies.cpp: In function 'static void Dependencies::write_dependency_to(xmlStream*, Dependencies::DepType, GrowableArray<Dependencies::DepArgument>*, Klass*)': dependencies.cpp:498:6: error: '%d' 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]
рдЦреИрд░, рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рд╕реМ рдкрд╛рдЙрдВрдб, рдХрд┐рд╕реА рдиреЗ "рдЖрдИ рдПрдо рд▓рдХреА!" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдмрдлрд░ рдХреА рдЧрдгрдирд╛ рдХреАред рдЧреВрдЧрд▓ рдореЗрдВред
рд▓реЗрдХрд┐рди рдЖрдк рдХреИрд╕реЗ рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рддрдиреА рдЬрд░реВрд░рдд рд╣реИ? рдиреАрдЪреЗ рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╢реЛрдзрди рд╣реИ:
stdio2.h:34:43: note: '__builtin___sprintf_chk' output between 3 and 12 bytes into a destination of size 10 __bos (__s), __fmt, __va_arg_pack ());
рд╕реНрдерд┐рддрд┐ 12 рдХреБрдЫ рд╕рд╛рд░реНрдердХ рд▓рдЧрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЕрдм рдЖрдк рдЧрдВрджреЗ рдкреИрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдореЗрдВ рдЯреВрдЯ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо dependencies.cpp
рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВред dependencies.cpp
рдФрд░ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:
DepArgument arg = args->at(j); if (j == 1) { if (arg.is_oop()) { xtty->object("x", arg.oop_value()); } else { xtty->object("x", arg.metadata_value()); } } else { char xn[10]; sprintf(xn, "x%d", j); if (arg.is_oop()) { xtty->object(xn, arg.oop_value()); } else { xtty->object(xn, arg.metadata_value()); } }
рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд░реЗрдЦрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
char xn[10]; sprintf(xn, "x%d", j);
рд╣рдо 10 рд╕реЗ 12 рдмрджрд▓рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ ... рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд▓реА рдЧрдИ рд╣реИ!
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдореИрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реА рдЪрддреБрд░ рд╣реВрдВ рдФрд░ рд╕рднреА рд╕рдордп рдХреЗ рдмрдЧ рдХреЛ рддрдп рдХрд░рддрд╛ рд╣реВрдВ? рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ, рд╣рдо рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреЗ рдореЗрдЧрд╛рдкреИрдЪ рдХреЛ Google рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ: char xn[12];
рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ ... рд╣рд╛рдБ, рдпрд╣ рд╕рд╣реА рд╣реИред рд╡реНрд▓рд╛рджрд┐рдореАрд░ JDK-8184309 , рд╡реНрд▓рд╛рджрд┐рдореАрд░ рдЗрд╡рд╛рдиреЛрд╡ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд, рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рдХреЗ рдлрд┐рдХреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ JDK 10 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ nifiga рдХреЛ jdk8u рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред
рддреНрд░реБрдЯрд┐ 2. рд╕реНрдЯреНрд░реИрдореНрдк
fprofiler.cpp: In member function 'void ThreadProfiler::vm_update(TickPosition)': /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; }
рдкрд┐рдЫрд▓реЗ рдХрдбрд╝рд╡реЗ рдЕрдиреБрднрд╡ рд╕реЗ рддрдВрдЧ рдЖрдХрд░, рд╣рдо рддреБрд░рдВрдд рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдбреАрдХреЗ 11 рдореЗрдВ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдХреНрдпрд╛ рд╣реИ рдФрд░ ... рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рднреА рдХреБрдЫ refactoring рд╕реЗ рдЧреБрдЬрд░рд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЖрдк рд╣рдорд╕реЗ рджреВрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ!
рдХреЛрдИ рднреА рдЬрд╛рд╡реЗрдж рдЕрдкрдиреА рдЖрддреНрдорд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдиреЗрдХреНрд░реЛрдордиреНрдЯ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдПрдХ рдиреЗрдХреНрд░реЛрдлрд╛рдЗрд▓ рднреАред рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╡рд╣рд╛рдБ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкрд░рд┐рд╖рдж рд╣реЛрдЧреА!
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдореГрддрдХреЛрдВ рдХреА рдЖрддреНрдорд╛ рд╕реЗ рдЕрдкреАрд▓ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдирдХреА рдореГрддреНрдпреБ рдХрдм рд╣реБрдИ:
$ 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
рдЕрдм рдЖрдкрдХреЛ рдЙрдирдХреА рдореГрддреНрдпреБ рдХрд╛ рдХрд╛рд░рдг рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
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
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣рддреНрдпрд╛рд░рд╛ рд╣реИ: gziemski ред рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдЙрд╕рдиреЗ рдЗрд╕ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреНрдпреЛрдВ рдирд┐рдХрд╛рд▓рд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд┐рдЯ рдХреЗ рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯрд┐рдХрдЯ рдореЗрдВ рд╡рд╕рд╛ рдкрд░ рдЬрд╛рдПрдВред рдпрд╣ JDK-8173715 рд╣реИ :
FlatProfiler рдирд┐рдХрд╛рд▓реЗрдВ:
рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рддрдХрдиреАрдХ рдЕрдм рдЙрдкрдпреЛрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреАрд╕реА рдХреЗ рд▓рд┐рдП рд░реВрдЯ рд╕реНрдХреИрдирд┐рдВрдЧ рдХрд╛ рдПрдХ рд╕реНрд░реЛрдд рд╣реИред
рд╢рд┐рд╣ рдмреАрд╕ рдХреЗ рд▓рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдм рд╣рдо рд▓рд╛рд╢ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рд╣реИрдВ рддрд╛рдХрд┐ рдирд┐рд░реНрдорд╛рдг рд╣реЛ рд╕рдХреЗред рдЬреЛ рдЗрддрдирд╛ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ OpenJDK рдХреЗ рд╣рдорд╛рд░реЗ рдиреЗрдХреНрд░реЛрдорд╛рдВрдЯрд░ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдиреЗ рднреА рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
рдЖрдЗрдП рдорд░реЗ рд╣реБрдП рдЖрджрдореА рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╝рд┐рдВрджрд╛ рдХрд░реЗрдВ рдФрд░ рдЙрд╕рд╕реЗ рдпрд╣ рдкреВрдЫрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЙрд╕реЗ рдЖрдЦрд┐рд░ рдХреНрдпрд╛ рдпрд╛рдж рдерд╛ред рд╡рд╣ рд╕рдВрд╢реЛрдзрди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореГрдд рдерд╛ 47106, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрд╢реЛрдзрди рдореЗрдВ рдПрдХ рдХрдо рд╣реИ - рдпрд╣ "рдкрд╣рд▓реЗ рд╕реЗ рдПрдХ рд╕реЗрдХрдВрдб" рд╣реИ:
hg cat "~/git/jdk11/hotspot/src/share/vm/runtime/fprofiler.cpp" -r 47105 > ~/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
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, return strcmp(name, _name) == 0;
рд╕рдВрдмрдВрдз рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ return strcmp(name, _name) == 0;
рдирд╣реАрдВ рдореЗрдВред рдПрдХ рдХреБрдВрдж рддреЗрдЬ рд╡рд╕реНрддреБ (рдЖрд░рдПрдо рдЙрдкрдпреЛрдЧрд┐рддрд╛) рдХреЗ рд╕рд╛рде рдПрдХ рдЭрдЯрдХрд╛ рд╕реЗ рд░реЛрдЧреА рдХреА рдореГрддреНрдпреБ рд╣реЛ рдЧрдИ, рд▓реЗрдХрд┐рди рдореГрддреНрдпреБ рдХреЗ рд╕рдордп рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреАрдорд╛рд░ рдерд╛ред
рдЖрдЗрдП рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рд░ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рдХреЛрдб рд▓реЗрдЦрдХ рд╣рдореЗрдВ рдХреНрдпрд╛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:
const char *name() const { return _name; } bool is_compiled() const { return true; } bool vm_match(const char* name) const { return strcmp(name, _name) == 0; }
рдЕрдм рдереЛрдбрд╝рд╛ рджрд░реНрд╢рдиред
рдЦрдВрдб 7.1.4 рдореЗрдВ C11 рдорд╛рдирдХ, "рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ", рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рддрд╛ рд╣реИ:
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдердиреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддрдм рддрдХ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рдЕрдиреНрдпрдерд╛ рд╡рд░реНрдгрд┐рдд рди рд╣реЛ: рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рддрд░реНрдХ рдЕрдорд╛рдиреНрдп рдорд╛рди (рдЬреИрд╕реЗ [...] рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ [...]] [...], рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред
рдпрд╣реА рд╣реИ, рдЕрдм рдкреВрд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ "рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ" ред strcmp
рдЦрдВрдб рдореЗрдВ strcmp
рдХреЗ рд╡рд░реНрдгрди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдЕрдиреБрднрд╛рдЧ рдирд╣реАрдВ рд╣реИред
рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред
рдмреЗрд╢рдХ, рдЖрдк рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рдеред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдЬреЛ рдпреВрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБ рд╢реВрдиреНрдп dereferencing рдХреЗ рд▓рд┐рдП SIGSERV рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдПрдХ рд╣реИрдХ рдкреНрд░реЗрдореА рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЛрдИ рдХрд╣реЗрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рдореВрд░реНрдЦ рд╣реИрдВ, рдХрд┐ рдЖрдк рдЬреАрд╕реАрд╕реА 7.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреАрд╕реАрд╕реА 4 рдореЗрдВ рд╕рдм рдХреБрдЫ рдЗрдХрдЯреНрдард╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░! = рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ! = рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░рд┐рднрд╛рд╖рд┐рддред рдпрд╣ рдкрд┐рдЫрд▓реЗ рджреЛ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рд╕рдВрдХрд▓рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЫрдареЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдпреВрдмреА рдпреВрдмреА рдерд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдЗрд╕ рдЬрдЯрд┐рд▓ рджрд╛рд░реНрд╢рдирд┐рдХ рдкреНрд░рд╢реНрди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреБрдЦреА рд╣реЛ рдЧрдпрд╛ (рдХреНрдпрд╛ рдореБрдЭреЗ рдЕрдкрдиреА рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП) рдЬрдм рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдЪреНрдЫреЗ рд╣реАрд░реЛ рд╣рдореЗрд╢рд╛ рдШреВрдорддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рдпреВрдмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рджрд░реНрд╢рди рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣рд╛рдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдкрд░ рдирд╣реАрдВ рдХрд┐ рд╕реБрдмрд╣ рддрдХ рдЙрдирдХреА рдорд░рдореНрдордд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рддрдереНрдп рдкрд░ рдирд╣реАрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреБрдЯрд┐рд▓ рд╣рд╛рдереЛрдВ рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рд╕реЗ рднреА рдХрдо рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: jdk8u рдореЗрдВ рдЕрдВрддрд┐рдо рдкреИрдЪ 6 рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рдерд╛, рдФрд░ рдпрд╣ рдирдП рдЯреИрдЧ рдХрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдорд░реНрдЬ рдерд╛ред
рдЬрд╝рд░рд╛ рд╕реЛрдЪрд┐рдП рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╣ рд╕рдм рдЬреЛ рд╣рдорд╛рд░реЗ рдФрд░ рдЙрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмреАрдЪ рдЦрдбрд╝рд╛ рд╣реИ, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ, рдЬрд┐рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд░рд┐рд╡рд┐рдпрд╛ рдХреЗ рд╡рд┐рдЪрд░ рдЧреЗрд░рд╛рд▓реНрдЯ рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдерд╛:
"рдмреБрд░рд╛рдИ рдмреБрд░рд╛рдИ рд╣реИ, Stregobor," рдЪреБрдбрд╝реИрд▓ рдиреЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдХрд╣рд╛, рдЙрда рд░рд╣рд╛ рд╣реИред - рдЫреЛрдЯреЗ, рдмрдбрд╝реЗ, рдФрд╕рдд - рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рдЕрдиреБрдкрд╛рдд рдордирдорд╛рдирд╛ рд╣реИ, рдФрд░ рд╕реАрдорд╛рдПрдВ рдзреБрдВрдзрд▓реА рд╣реИрдВред рдореИрдВ рдПрдХ рдкрд╡рд┐рддреНрд░ рдзрд░реНрдордкрд░рд╛рдпрдг рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реВрдБ, рди рдХреЗрд╡рд▓ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдПрдХ рдмреБрд░рд╛рдИ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдЪреБрдирдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
- Z┼Вo to z┼Вo, Stregoborze - rzek┼В powa wnie wied┼║min wstaj zcред - рдорд┐рдВрдЬрд╝реНрдЬрд╝реЗ, рд╡рд┐рдХреНрд╕рдЬрд╝реЗ, ,rednie, wszystko jedno, proporcje spor umowne рдПрдХ рдЧреНрд░реЗрдирд╛рдЗрдЯ рдЬрдЯрд╛рд░реНрдЯред рдиреА рдЬреЗрд╕реНрдЯреЗрдо ─Еwi─Еtobliwym pustelnikiem, nie samo dobro czyni┼Вem w ciyciuред рдПрд▓реЗ рдЬреЗрдПрд▓реА рдореИрдо рд╡рд╛рдпрдмрд┐рдПрд░реЙрд╡ рдкреЛрдореАzyрдбрдЬрд╝реА рдЬреЗрдбреЗрдирд┐рдо рдЬрд╝рд╛рд▓рдо рдП рдбреНрд░рд┐рдЧреНрдо, рдЯреВ рд╡реЛрд▓, рдиреА рд╡реЗрдпрдмрд┐рдПрд░ рд╡реЗрдХреНрд▓реЗред
рдпрд╣ рдж рд▓рд╛рд╕реНрдЯ рд╡рд┐рд╢ рдХрд╛ рдПрдХ рдЙрджреНрдзрд░рдг рд╣реИ, рдЬреЛ рдПрдХ рдХрд╣рд╛рдиреА рд╣реИ рдЬрд┐рд╕реЗ рд▓реЗрд╡рд░ рдПрд╡рд┐рд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЧреЗрд░рд╛рд▓реНрдЯ рд▓рдЧрднрдЧ рдХрднреА рднреА рдПрдХ рддрдЯрд╕реНрде рдЪрд░рд┐рддреНрд░ рдХреА рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛ рд╕рдХрддрд╛ рдерд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдЕрд░рд╛рдЬрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдорд░ рдЧрдпрд╛ред
рддреЛ рдЪрд▓рд┐рдП рдХрдо рдмреБрд░рд╛рдИ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗред
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣ рдирд┐рдХрд╛рд╕ рджреЗрдЦ рд▓рд┐рдпрд╛ рдерд╛:
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
рдЗрди рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдкрд░, рдореИрдВрдиреЗ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдЪреЗрд╣рд░реЗ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рджреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рд╕рдВрд╕реНрдХреГрддрд┐ рдореЗрдВ рдЕрдВрддрд░ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд┐рдпрд╛:
BSD рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдФрд░ рдкрд╕рдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреА рд╣реИ:
# Compiler warnings are treated as errors ifneq ($(COMPILER_WARNINGS_FATAL),false) WARNINGS_ARE_ERRORS = -Werror endif
GNU / Linux рдПрдХ рд╕рддреНрддрд╛рд╡рд╛рджреА рд╢реБрджреНрдзрддрд╛рд╡рд╛рджреА рд╢рд╛рд╕рди рд╣реИ:
рдЦреИрд░, рдпрд╣ XX_FLAGS
рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, XX_FLAGS
рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдЪрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ! рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ рдЬреЛ рдКрдкрд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдареАрдХ рд╣реИ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ WARNINGS_ARE_ERRORS
рдХреЗ рдореВрд▓реНрдп рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдХрдо рд╢рдХреНрддрд┐рд╢рд╛рд▓реА -w
ред рдЖрдк рдХреИрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдПрд▓реЛрди рдорд╕реНрдХ?
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдХреЛрдб рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдЬреАрдм, рдмрд╣реБрдд рдмреБрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рд╣реЛрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ctrl + C рджрдмрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ...
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрдХрдЯреНрдард╛ рд╣реБрдЖ рдФрд░ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдЖрдИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХреАред рдлрд┐рд░ рднреА, рд░рд╛рдд, рдореЗрд░реА рдЖрдБрдЦреЗрдВ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдореИрдВ рд░реЗрдлреНрд░рд┐рдЬрд░реЗрдЯрд░ рд╕реЗ рдКрд░реНрдЬрд╛ рдХреЗ рдЪрд╛рд░ рдбрд┐рдмреНрдмреЗ - рдЕрдВрддрд┐рдо рдЙрдкрд╛рдп рддрдХ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ред
рдкрдкрдбрд╝реА рдореЗрдВ рдЧрд┐рд░рддрд╛ рд╣реИ
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдИ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдЙрддреНрдкрдиреНрди рд╣реБрдП рд╣реИрдВ, рд╣рдо рдорд╣рд╛рди рд╣реИрдВред
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдлрд┐рдирд┐рд╢ рд▓рд╛рдЗрди рдкрд░ рдЖ рдЧрдПред рдпрд╛ рдирд╣реАрдВ рдЖрдпрд╛?
рд╣рдорд╛рд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╣рд┐рдд рд╣реИ:
export JAVA_HOME=~/git/jdk8u/build/linux-x86_64-normal-server-fastdebug/jdk export PATH=$JAVA_HOME/bin:$PATH
рдЬрдм рдЖрдк java
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдЙрдирдХреЗ рд▓рд┐рдП - рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЙрд╕реА рд╕рдордп, рдПрд▓реЗрдХреНрд╕ рдХреЗ рдкрд╛рд╕ рдбреЗрдмрд┐рдпрди 9.5 рд╣реИ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдмрдВрдЯреВ рд╣реИред рдЬреАрд╕реАрд╕реА рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг, рджреЛ рдЕрд▓рдЧ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рд╕реНрдЯред рдореИрдВ strcmp рдореИрдиреБрдЕрд▓ рдкреИрдЪ рдФрд░ рдХреБрдЫ рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЛрд╖ рдордЬрд╝рд╛рдХ рд╣реИ, рдПрд▓реЗрдХреНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ?
рдпрд╣ рдХрд╣рд╛рдиреА рдПрдХ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рдХреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рд╕реАрдзреЗ рд╢реБрд╖реНрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдХрднреА рдирд╣реАрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╕рдВрджреАрджрд╛ C ++ pogromists рдиреЗ рдлрд┐рд░ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╣рд╛рдВ рдпрд╣ рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдХрд▓рдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпреВрдмреА рд╣рдореЗрд╢рд╛ рдпреВрдмреА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрдХрд▓рдХ рдХреЗ рдПрдХ рдЬреНрдЮрд╛рдд рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рднреА рдЗрд╕реЗ рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ)
рдПрдХ рдЬрдЧрд╣ рдкрд░ рд╣рдо рдПрдХ рдЕрдВрдбрд░-рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдордд рдкреВрдЫреЛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ, рд╕рдм рдХреБрдЫ рдЬрдЯрд┐рд▓ рд╣реИред
рдПрдХ рдЬрд╛рд╡рд┐рд╕реНрдЯрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рд╕реЗ рд╕реАрдзреЗ рдПрдХ рд▓рд┐рдВрдХ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдирд┐рд░реНрдорд╛рдгрд╛рдзреАрди рд╡рд░реНрдЧ рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЕрджреНрднреБрдд C ++ рднрд╛рд╖рд╛ рд╕рднреА рдпрд╛ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддреА рд╣реИред рдореИрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЫрджреНрдо рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦреВрдВрдЧрд╛:
class A { A() { _b.Show(); } private: static B _b; }; A a; BA::_b; int main() { }
рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдмрдЧ рд╣реИ!
рдпрджрд┐ рдЖрдк C ++ 98 [class.cdtor] рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
рдЧреИрд░-рдкреАрдУрдбреА рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП ... рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ ... рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдЧреИрд░-рд╕реНрдерд┐рд░ рд╕рджрд╕реНрдп рдпрд╛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рдиреЗ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЬреАрд╕реАрд╕реА (рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ 7.3) рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдХрд░, "рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдбреЗрдб рд╕реНрдЯреЛрд░ рдПрд▓рд┐рдорд┐рдиреЗрд╢рди" рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬреЛ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдХреЗрд╡рд▓ рдЙрд╕рдХреЗ рдЬреАрд╡рди рдХрд╛рд▓ рдХреЗ рджреМрд░рд╛рди рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬреАрд╡рди рдХрд╛рд▓ рдХреЗ рдмрд╛рд╣рд░ рд╕рдм рдХреБрдЫ рдЦрд╛рдВрд╕реА рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╛рдзрд╛рди рдирдИ рдЖрд╢рд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдФрд░ рдкреБрд░рд╛рдиреЗ рдЬреАрд╕реАрд╕реА рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ:
CFLAGS += -fno-strict-aliasing -fno-lifetime-dse -fno-delete-null-pointer-checks
рдЗрд╕реЗ рд▓реЗрдХрд░ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдЪрд▓ рд░рд╣реА рд╣реИ ред
рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд░реНрдЪрд╛ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрд╕реЗ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред
рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ ./hotspot/make/linux/makefiles/gcc.make
рдЬреЛрдбрд╝реЗрдВ, рдлрд┐рд░ рд╕реЗ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдкреЛрд╖рд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:
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)
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдкрдиреЗ рд╢рд╛рдпрдж рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реЛрдЧрд╛: "рдЬрд╛рд╡рд╛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд░рдХ рд╣реИ, рдХреЛрдб рдореЗрдВ рдХрдЪрд░рд╛ рд╣реИ, рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИред"
рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ! рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдУрдкрдирдЬреЗрдбрдХреЗ рдХреЗ рд╣рдорд╛рд░реЗ рджреЛрд╕реНрдд, рдиреЗрдХреНрд░реЛрдореИрдВрдХрд░реНрд╕ рдХрд┐рд╕ рднрдпрд╛рдирдХ рдмреБрд░рд╛рдИ рд╕реЗ рд╣рдореЗрдВ рдмрдЪрд╛рдП рд╣реБрдП рд╣реИрдВред
рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реА ++ рдХрд╛ рд░рд╣рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдпреВрдмреА рдХреЗ рд╕рд╛рде рдХрд╛рдВрдкрдирд╛ рдФрд░ рд╕рдВрдХрд▓рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЛ рд╕реАрдЦрдирд╛, рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдерд┐рд░ рд╣реИ, рдФрд░ рдЕрдЬрд╝реБрд▓, рдЬреИрд╕реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдмрд┐рд▓реНрдб рдкрд░ рд╣реИред рд░реЗрдб рд╣реИрдЯ рдФрд░ рдУрд░реЗрдХрд▓ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдХреНрд░рд╕реНрдЯ рдореЗрдВ рджреМрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдХреЗрд╡рд▓ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реА рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ jdk8u рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ JDK 8 рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд▓рд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрднреА рдФрд░ рдЕрднреА рдкреИрдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рд╣рдореЗрдВ JDK 11 рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рднреА, 2018 рдореЗрдВ JDK 8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IMHO рд╣реИ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЕрдЪреНрдЫреЗ рдЬреАрд╡рди рд╕реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛, рдФрд░ рдЖрдк рдЬреЗрдбреАрдХреЗ 11 рдФрд░ рдЬреЗрдбреАрдХреЗ 12 рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ рдХрдИ рдФрд░ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрд╣рд╛рдирд┐рдпрд╛рдБ рдкрдврд╝реЗрдВрдЧреЗред
рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдмрд╛рдК рдкрд╛рда рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :-)
рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд╛ рдорд┐рдирдЯред рдЬреЛрдХрд░ 2018 рд╕рдореНрдореЗрд▓рди рдмрд╣реБрдд рдЬрд▓реНрдж рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ рдЬрд╛рд╡рд╛ рдФрд░ рдЬреЗрд╡реАрдПрдо рдореЗрдВ рдХрдИ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реЛрдВрдЧреЗред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╡рдХреНрддрд╛рдУрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рджреЗрдЦреЗрдВред рдореИрдВ рд╡рд╣рд╛рдВ рднреА рд░рд╣реВрдВрдЧрд╛, рдЬреАрд╡рди рдФрд░ рдУрдкрдирдЬреЗрдбрдХреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рдирд╛ рдФрд░ рдкреАрд╕рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред