Mercurial > hg > icedtea8-forest > hotspot
changeset 10923:f79e943d15a7
Merge jdk8u292-b05
line wrap: on
line diff
--- a/.hgtags Mon Mar 01 20:02:58 2021 +0000 +++ b/.hgtags Sun Apr 25 18:18:49 2021 +0100 @@ -50,6 +50,7 @@ faf94d94786b621f8e13cbcc941ca69c6d967c3f jdk7-b73 f4b900403d6e4b0af51447bd13bbe23fe3a1dac7 jdk7-b74 d8dd291a362acb656026a9c0a9da48501505a1e7 jdk7-b75 +b4ab978ce52c41bb7e8ee86285e6c9f28122bbe1 icedtea7-1.12 9174bb32e934965288121f75394874eeb1fcb649 jdk7-b76 455105fc81d941482f8f8056afaa7aa0949c9300 jdk7-b77 e703499b4b51e3af756ae77c3d5e8b3058a14e4e jdk7-b78 @@ -87,6 +88,7 @@ 07226e9eab8f74b37346b32715f829a2ef2c3188 hs18-b01 e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b jdk7-b88 +a393ff93e7e54dd94cc4211892605a32f9c77dad icedtea7-1.13 15836273ac2494f36ef62088bc1cb6f3f011f565 jdk7-b89 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b hs18-b02 605c9707a766ff518cd841fc04f9bb4b36a3a30b jdk7-b90 @@ -160,6 +162,7 @@ b898f0fc3cedc972d884d31a751afd75969531cf hs21-b05 bd586e392d93b7ed7a1636dcc8da2b6a4203a102 jdk7-b136 bd586e392d93b7ed7a1636dcc8da2b6a4203a102 hs21-b06 +591c7dc0b2ee879f87a7b5519a5388e0d81520be icedtea-1.14 2dbcb4a4d8dace5fe78ceb563b134f1fb296cd8f jdk7-b137 2dbcb4a4d8dace5fe78ceb563b134f1fb296cd8f hs21-b07 0930dc920c185afbf40fed9a655290b8e5b16783 jdk7-b138 @@ -305,6 +308,7 @@ 990bbd393c239d95310ccc38094e57923bbf1d4a hs25-b14 e94068d4ff52849c8aa0786a53a59b63d1312a39 jdk8-b70 0847210f85480bf3848dc90bc2ab23c0a4791b55 jdk8-b71 +2c52e96f640d60368c2efd07e1acfe35ec3e0045 initial_upload d5cb5830f570d1304ea4b196dde672a291b55f29 jdk8-b72 1e129851479e4f5df439109fca2c7be1f1613522 hs25-b15 11619f33cd683c2f1d6ef72f1c6ff3dacf5a9f1c jdk8-b73 @@ -322,7 +326,7 @@ df5396524152118535c36da5801d828b560d19a2 hs25-b21 4a198b201f3ce84433fa94a3ca65d061473e7c4c jdk8-b80 dd6350b4abc4a6c19c89dd982cc0e4f3d119885c hs25-b22 -65b797426a3bec6e91b64085a0cfb94adadb634a jdk8-b81 +31390de29c4bb5f7e78b2e970f92197c04a4ed4d aarch64-20130813 0631ebcc45f05c73b09a56c2586685af1f781c1d hs25-b23 3db4ab0e12f437fe374817de346b2b0c6b4a5b31 jdk8-b82 e3a41fc0234895eba4f272b984f7dacff495f8eb hs25-b24 @@ -381,6 +385,8 @@ 566db1b0e6efca31f181456e54c8911d0192410d hs25-b51 c81dd5393a5e333df7cb1f6621f5897ada6522b5 jdk8-b109 58043478c26d4e8bf48700acea5f97aba8b417d4 hs25-b52 +f043f9395d362da011b111cf8c142af1caf6f64d preview_rc1 +33029403ab5913db80c4e4d1870809d3ade8e81c preview_rc2 6209b0ed51c086d4127bac0e086c8f326d1764d7 jdk8-b110 562a3d356de67670b4172b82aca2d30743449e04 hs25-b53 f6962730bbde82f279a0ae3a1c14bc5e58096c6e jdk8-b111 @@ -418,12 +424,17 @@ d45454002494d147c0761e6b37d8a73064f3cf92 hs25-b68 32f017489ba5dd1bedabb9fa1d26bcc74d0a72b6 hs25-b69 35038da7bb9ddd367a0a6bf926dfb281aee1d554 jdk8-b127 +18e5cbbe8abf64a043e2482c625e04acde33a3f8 jdk8_b128_aarch64_rc1 +39d28a8ea5be4e5c1ce659b7e6b3dadbbb1f908b jdk8_b128_aarch64_rc3 +cc094e1af98de679e81d17d3fc2653158c7b26c6 jdk8_b128_aarch64_rc4 +e5b35062dee3eaeac2fb80aac932cbcc36256c92 jdk8_b128_aarch64_992 874c0b4a946c362bbf20d37c2a564b39093152e6 jdk8-b128 cb39165c4a65bbff8db356df411e762f9e5423b8 jdk8-b129 1dbaf664a611e5d9cab6d1be42537b67d0d05f94 jdk8-b130 b5e7ebfe185cb4c2eeb8a919025fc6a26be2fcef jdk8-b131 9f9179e8f0cfe74c08f3716cf3c38e21e1de4c4a hs25-b70 0c94c41dcd70e9a9b4d96e31275afd5a73daa72d jdk8-b132 +72b29bfe67fa902516bca75c166a29fccb8c5be2 jdk8_final 4a35ef38e2a7bc64df20c7700ba69b37e3ddb8b5 jdk8u5-b01 e5561d89fe8bfc79cd6c8fcc36d270cc6a49ec6e jdk8u5-b02 2f9eb9fcab6c42c8c84ddb44170ea33235116d84 jdk8u5-b03 @@ -471,6 +482,7 @@ 5186bc5047c1725888ed99f423bdfaa116e05abe hs25.20-b09 4d73f1e99f97d1444e16ee5ef4634eb2129969ad jdk8u20-b09 27a9e6a96a8ced7b7ee892d5d0f1a735b9010abb hs25.20-b10 +c2767d7216058484f87920557a3f9282506e5ce5 icedtea-3.0.0pre01 300e2c5eeb2710de3630d14ffe4592214633dbff jdk8u20-b10 70dc2c030c69470a5d9099b7f54e4cfef89276fd jdk8u20-b11 b6a2ba7d3ea7259a76c8ff1ec22fac9094494c1c hs25.20-b11 @@ -496,6 +508,7 @@ e4a6e7f1b90b85270aee1c54edaca3ef737082f1 hs25.20-b21 f7429096a202cab5c36a0f20dea33c554026010f jdk8u20-b22 7c56530b11496459e66cb9ea933035002311672c hs25.20-b22 +877471da7fbbe69d029b990b77a70e7fcf3d02ed icedtea-3.0.0pre02 f09d1f6a401e25a54dad44bb7bea482e47558af5 jdk8u20-b23 42ddd0bbcb6630fe463ec9bc1893c838d5edff1b jdk8u20-b24 00cf2b6f51b9560b01030e8f4c28c466f0b21fe3 hs25.20-b23 @@ -574,6 +587,9 @@ 6b93bf9ea3ea57ed0fe53cfedb2f9ab912c324e5 jdk8u40-b12 521e269ae1daa9df1cb0835b97aa76bdf340fcb2 hs25.40-b17 86307d47790785398d0695acc361bccaefe25f94 jdk8u40-b13 +b280f4f4f11916e202aaa4d458630d4c26b59e2a jdk8u40-b12-aarch64 +26fc60dd5da8d3f1554fb8f2553f050839a539c6 jdk8u40-b12-aarch64-1262 +d7c03eb8b2c2bc4d34438699f07609ba4c4bca5c jdk8u40-b12-aarch64-1263 4d5dc0d0f8799fafa1135d51d85edd4edd566501 hs25.40-b18 b8ca8ec1daea70f7c0d519e866f9f147ec247055 jdk8u40-b14 eb16b24e2eba9bdf04a9b377bebc2db9f713ff5e jdk8u40-b15 @@ -588,6 +604,9 @@ d9349fa8822336e0244da0a8448f3e6b2d62741d jdk8u40-b19 c3933f52eeb33f70ee562464edddfe9f01d944fd jdk8u40-b20 d2e9a6bec4f2eec8506eed16f7324992a85d8480 hs25.40-b24 +85e5201a55e4dcf1b5dbb90bcfee072245e8a458 icedtea-3.0.0pre03 +7e5a87c79d696b280bae72ee7510e2a438c45960 icedtea-3.0.0pre04 +b07272ef9ccdf3066fbfd6e28bac10baad9417b6 icedtea-3.0.0pre05 25ec4a67433744bbe3406e5069e7fd1876ebbf2f jdk8u40-b21 0f0cb4eeab2d871274f4ffdcd6017d2fdfa89238 hs25.40-b25 0ee548a1cda08c884eccd563e2d5fdb6ee769b5a jdk8u40-b22 @@ -722,6 +741,11 @@ 0e4094950cd312c8f95c7f37336606323fe049fe jdk8u60-b23 d89ceecf1bad55e1aee2932b8895d60fc64c15db hs25.60-b23 fb157d537278cda4150740e27bb57cd8694e15bf jdk8u60-b24 +11098f828fb815a467e77729f2055d6b1575ad3e arch64-jdk8u60-b24 +8ec803e97a0d578eaeaf8375ee295a5928eb546f aarch64-jdk8u60-b24.2 +2ee4407fe4e4ae13c5c7ef20709616cb3f43dea9 icedtea-3.0.0pre06 +ddebea156752c9a58ab2ab82f5dc28efee5f8f82 icedtea-3.0.0pre07 +c313c4782bb33aa4ea49f1342c54b3138af418a1 icedtea-3.0.0pre08 6b4ea38c01bd9cc86d0aa8926f4855ff6ee365ee jdk8u60-b25 6a6759372807f49aa7a66ddc36aa91d6648d2097 jdk8u60-b26 10ad4b9d79f98fa3545c88a342a68a80d198b808 jdk8u60-b27 @@ -801,6 +825,7 @@ b8e7dd0e21173ad829b40361763d27cb6ac532e9 jdk8u72-b12 a8e4754b89aecc388623394a20f6d43d4c58f083 jdk8u72-b13 dc2fdd4e0b8105268b8231040f761f27ab4523f2 jdk8u72-b14 +dbf85d44da89a2428b3bd678be791c314e148845 icedtea-3.0.0pre09 d6670c5d49ba381405ec9f69a78ccc5b8b0c8473 jdk8u72-b15 da43260704c28b9f19cb652090ae65c258220fd6 jdk8u72-b31 26b99cd20661a1fa05939d1856a9389311e01c4f jdk8u73-b00 @@ -835,6 +860,9 @@ 1b6d4fd2730e58f17820930f797938dc182117c4 jdk8u77-b00 ddd297e340b1170d3cec011ee64e729f8b493c86 jdk8u77-b01 1b4072e4bb3ad54c4e894998486a8b33f0689160 jdk8u77-b02 +e9585e814cc954c06e870f3bdf37171029da0d5e icedtea-3.0.0pre10 +5e587a29a6aac06d6b5a7ebeea99a291d82520c8 icedtea-3.0.0 +49b8cecd1bbe2c2ba0ad1aec6722078b621866a1 icedtea-3.0-branchpoint 223b64a19e94222dd97b92bb40abcfbc0bf6ef1f jdk8u77-b03 bbbb05e91c629f8d9eef2ba43933767f68a898b0 jdk8u91-b00 e36b6ade0499eadfd8673fe62ef0a613af2e6d67 jdk8u91-b13 @@ -859,6 +887,10 @@ 9a87701e22b3cae79fdfd8cdb732051e02a710fa jdk8u76-b12 481dcde745b6aec035781ed9f6797cfc93719f71 jdk8u92-b00 f3e1e734e2d29101a9537ddeb71ecad413fcd352 jdk8u92-b13 +cbd30c92ef7a62846124e28b35aaf668621b1105 icedtea-3.1.0pre01 +76eca5cf31500ecb1d1807685729a7ea5c3780e7 icedtea-3.1.0pre02 +ea6933324a7a52379d7f1e18e7525fd619079865 icedtea-3.1.0pre03 +0f47eef348e2ec17dd6492886c57e23023fbc435 icedtea-3.1.0pre04 24a09407d71bb2cc4848bfa21660c890b4d722b1 jdk8u92-b14 445941ba41c0e3829fe02140690b144281ac2141 jdk8u92-b31 f958bebdee267695e37aadd27753ac8b1e1823c8 jdk8u92-b32 @@ -877,6 +909,8 @@ 218a44a163fa8c2532fd5f2e8ea9bc3c9c2ca8cf jdk8u101-b10 0095e54dcaa1acfe1614feff9600734c26af7ae8 jdk8u101-b11 286fe17d81c3d153611a28e50926083ae934cc56 jdk8u101-b12 +e480e0df8eea8e5d022672a450cd6c8e2eeac86b icedtea-3.1.0 +90416ba05ba1cde27da26ca1e6cc66062e883c17 icedtea-3.2.0pre01 77df35b662ed98236f67ab18e23691460f986981 jdk8u101-b13 d6c92b9e192ef97305a699e868387d55821c81ad jdk8u102-b00 d6c92b9e192ef97305a699e868387d55821c81ad jdk8u82-b00 @@ -893,6 +927,8 @@ 36a1a2875ed55fa17818f3eb203e27922a7b4589 jdk8u102-b11 340e1a736ef7169786e70db7f31ffd32bc3be24d jdk8u102-b12 f6daf04c0f48dab5420ad63d21da82a7fa4e3ad7 jdk8u102-b13 +ac19c2e28a511cacde863e39802c2e5277e1665f icedtea-3.2.0pre02 +bca09127475293c1938b5413fbf25af2c281c597 icedtea-3.2.0pre03 ac29c9c1193aef5d480b200ed94c5d579243c17b jdk8u102-b14 96e1c72fc617d3c6c125bcfc9182f77fc6aa38e6 jdk8u102-b31 c8988d2e4212583ec0f04591c8e241ad3cf95674 jdk8u102-b32 @@ -913,6 +949,7 @@ 603804f2132ff188a9f3d1c31cca63b47220e2e2 jdk8u111-b11 055bc2a065a503e8714ff7ad27e6197dc0339efa jdk8u111-b12 c3b42c43c230f10e79ae850ee9062fe86d3c75c9 jdk8u111-b13 +be4aeaa327f739d02d2c66a433ab2946ef19c5fb icedtea-3.2.0 05a6a5823aa58a0a4720a328a9db484f21d573bc jdk8u111-b14 b09a69142dd3bf78ca66bb0c99046ca7cccbdda9 jdk8u112-b00 cf1faa9100dd8c8df6e1a604aaf613d037f51ebf jdk8u112-b01 @@ -930,6 +967,7 @@ c2c4db2a42a215c98a4f027edb8bbb00dd62d9b9 jdk8u112-b14 b28d012a24cab8f4ceeee0c9d3252969757423ed jdk8u112-b15 e134dc1879b72124e478be01680b0646a2fbf585 jdk8u112-b16 +510bf6178ea48859804d69715a78b82b8d2c58d3 icedtea-3.3.0pre01 87440ed4e1de7753a436f957d35555d8b4e26f1d jdk8u112-b31 ba25f5833a128b8062e597f794efda26b30f095d jdk8u112-b32 919ffdca10c2721ee0f6f233e704709174556510 jdk8u112-b33 @@ -946,6 +984,9 @@ f26f6895c9dfb32dfb4c228d69b371d8ab118536 jdk8u121-b10 11f91811e4d7e5ddfaf938dcf386ec8fe5bf7b7c jdk8u121-b11 b132b08b28bf23a26329928cf6b4ffda5857f4d3 jdk8u121-b12 +2a767107aa8c8142d96eb95142b1ac82cf646568 icedtea-3.3.0pre02 +6efaf77e82a17344499a277f1909bd3825b1b5ac icedtea-3.3.0 +0bd3170be8c729dfaa88e7aa97449b2f36c650a9 icedtea-3.4.0pre01 90f94521c3515e5f27af0ab9b31d036e88bb322a jdk8u121-b13 351bf1d4ff9a41137f91e2ec97ec59ed29a38d8b jdk8u121-b31 41daac438a2ac5a80755dc3de88b76e4ac66750a jdk8u121-b32 @@ -964,6 +1005,8 @@ db221c0a423e776bec5c3198d11d3f26827bd786 jdk8u131-b08 56e71d16083904ceddfdd1d66312582a42781646 jdk8u131-b09 1da23ae49386608550596502d90a381ee6c1dfaa jdk8u131-b10 +00b7bbd261c972b38d4ecc2925f445c28de6fcb3 icedtea-3.4.0 +654b7fcb4932d48063f5f1fba0c8994db5e02976 icedtea-3.5.0pre01 829ea9b92cda9545652f1b309f56c57383024ebb jdk8u131-b11 41e0713bcca27cef5d6a9afd44c7ca4811937713 jdk8u131-b31 e318654a4fa352a06935dd56eebf88ae387b31f9 jdk8u131-b32 @@ -984,8 +1027,13 @@ d6e7c7d2c6f69906b4cb643a6813eccba0de988f jdk8u141-b12 df6af363337eff5b22ae7940b0981231fdf5dfb4 jdk8u141-b13 3a1543e089c32592be9c201c6e021295fbf5fdc1 jdk8u141-b14 +24ab92601b895b36ffc66e50e634cb962f8f6c1e icedtea-3.5.0 23f1790147d838ddb1133cc79dc08e7c9ba5ab44 jdk8u141-b15 eea89df81a8e414813d921eeeeef9b6795f56698 jdk8u144-b00 +ecaa25cbc662396ad7ea422bf43e23098af2100e icedtea-3.5.1 +24ab92601b895b36ffc66e50e634cb962f8f6c1e icedtea-3.6.0pre00 +ecaa25cbc662396ad7ea422bf43e23098af2100e icedtea-3.6.0pre01 +542f4e30fdffc87e5e098d81d69e7aa52d3c763c icedtea-3.6.0pre02 db36f4d498b1bde975700a800b5ce732941c04b7 jdk8u144-b01 9ffa0d7ed932045a0b4ceb095fb52444eed39c1b jdk8u141-b31 ae8cae699f62b845703c891e0e7633e2089a3ec4 jdk8u141-b32 @@ -1007,6 +1055,7 @@ 8b0169692abbf8fb7972920cd79cee7dcab959c3 jdk8u151-b09 e352e54382928eb8d5ec70455ef251973c332ccb jdk8u151-b10 0f06584f52ffc8627b78f4d461a3eba2b703a8f7 jdk8u151-b11 +9bad7d4825fb14efb65fc7bad625bbeaf135339e icedtea-3.6.0 856e341587d52114a753e48674517e7e307fceff jdk8u151-b12 5aa8c4ca51f0e666d368a4f119ed734d3ac59d7c jdk8u122-b00 2198ef7e1c1702b3506b95b5d8c886ad5a12bbe5 jdk8u122-b01 @@ -1034,6 +1083,7 @@ 3dd92151df1b3b7c21756f241b49607024b6fe5a jdk8u152-b13 0a9d8db98fc5f0302da6520ba329f41baa092ae0 jdk8u152-b14 c1bf165d3b27e864a9f8eec5bb0c1e746a972ad5 jdk8u152-b15 +c14f056eed68c18d6bb0d4314f1a645699b7a600 icedtea-3.7.0pre01 98b4b0661837817cc39047000e1a7efa6015af7c jdk8u152-b16 91894ffc746c1681172aaa37e2cf5bff69560f20 jdk8u152-b31 d278f122e65dfb5d239ed420a534df75f527a504 jdk8u152-b32 @@ -1116,6 +1166,9 @@ 6e5cabb7995ef8357c5c61c16af659bf7cc1d2ff jdk8u161-b09 b9a9aa038ad84a3fe6c91e27e359b95da8eb8629 jdk8u161-b10 b1606443958a9a64020b596327ff586ca5c8ae1d jdk8u161-b11 +074a569c30e47bd860652f31d52418c8fa878f2f icedtea-3.7.0 +074a569c30e47bd860652f31d52418c8fa878f2f icedtea-3.8.0pre00 +8bb8d4e46d6736c6feee35453ade3ed28392835f icedtea-4-branchpoint 210f7ef62595c608d69fc8bf442a4f5b0bceddb5 jdk8u161-b12 7b96cfeed22242bb68a387d1680e602e37e48050 jdk8u162-b00 92693f9dd704467ddd5fbae5a5908c1713a08ee0 jdk8u162-b01 @@ -1129,6 +1182,7 @@ 02f9409295f9ea7350cc2d25eeabf3c2b13b1df6 jdk8u162-b09 c3618e1cdefdda6c262f082791bfd988e0e9d9c9 jdk8u162-b10 39e2895b795aded8b584626fb019d35f12e9d1e7 jdk8u162-b11 +839becd2cb2fcc2f35ca421ae02f82173d999a86 icedtea-3.8.0pre01 69aec2ca5d905dde1d0f29a89076d02a531808a3 jdk8u162-b12 caac74fe3cfa9a8c859c28c97d1046a58252af27 jdk8u162-b31 c9b7abadf150328d2187de05b9e8a9cba2486e47 jdk8u162-b32 @@ -1150,6 +1204,10 @@ 56123fdca84a3b253b8ea6f72be85bd2ebf39fd0 jdk8u171-b08 4fefe015a728955c9c25ef79e51501b68839ae75 jdk8u171-b09 6d890180aeb43ee727b2f2cc0952ae0e1b8566c8 jdk8u171-b10 +7f6e1069a5719c8908b53774d3560ce851c7cd70 icedtea-3.8.0pre02 +cb5711bf53d9278904c1ee63630a5c82189cb09a icedtea-3.8.0 +cb5711bf53d9278904c1ee63630a5c82189cb09a icedtea-3.9.0pre00 +0458118b5f190097099f2ea7b025cb2d5aeb0429 icedtea-3.9.0pre01 23addae1b843a5027df6b4194f8c8de788da55ae jdk8u171-b11 f299cf0b7baea1ae85f139f97adb9ab5499f402a jdk8u172-b00 d10254debf7c1342416062bf1ba5258f16a8ce00 jdk8u172-b01 @@ -1164,6 +1222,7 @@ 5c1f180db1650f0f33e6005c1366f0d68242f1ad jdk8u172-b08 aafd1bb21e2636ba982d3eae162f5c635a1df03a jdk8u172-b09 dcd3ace969fcde4eedaddba629647656289d4264 jdk8u172-b10 +88515137e73f4feead41ec276a8d26d6f4d7b3d2 icedtea-3.9.0pre02 083a9d6562100353708e4b73656282b21a78f714 jdk8u172-b11 6e2be123a2e1c7671086c767e79ffe8ad5d4f9ca jdk8u181-b01 1d0b6fcff115a57ca02081da84589630ba282789 jdk8u181-b02 @@ -1187,6 +1246,10 @@ 08b5e1f3d022fbe122b11b6f45f62b5a4ce92ed9 jdk8u181-b10 e4f39d283b55faf6074308797615298bd1a45a66 jdk8u181-b11 464ed8cea5d6cdbfacc9be7035297af88f57f708 jdk8u181-b12 +9062a259cecfe8e1f3386e2982eb77bd117c81e1 jdk8u181-b31 +d78088224b9836edf36034d076e7eee89a2a9b83 icedtea-3.9.0 +d78088224b9836edf36034d076e7eee89a2a9b83 icedtea-3.10.0pre00 +ccf1620f18d39c13b79923d25e965145e16c9e08 icedtea-3.10.0pre01 eed8e846c982d7474dd07fc873ba02f83ad1f847 jdk8u181-b13 21a3fffc43418f4d75c2091bf03478330b8a9a98 jdk8u191-b01 2bf8498a25ec87c92584a6542f8724644c8c5706 jdk8u201-b00 @@ -1201,6 +1264,9 @@ c0bd247ecd1cd09a129040e3fa1745c64db43b35 jdk8u191-b10 055e1c867479452dd5d8c08905f7475aab25fcc1 jdk8u191-b25 12e4de4b2499e9d9a1ae4fb0b63ca277cca150f4 jdk8u191-b11 +4e4ead43a282e8ef9fcd4ea7cfc56b0a9760d9af icedtea-3.10.0 +4e4ead43a282e8ef9fcd4ea7cfc56b0a9760d9af icedtea-3.11.0pre00 +1423aed335d6ef905adf8a7b2f86d47432ee3823 icedtea-3.11.0pre01 4fc288749a236f6dd235336a46855a3133f83bde jdk8u191-b12 ab9258f7206ea8745908e19de159888067939945 jdk8u191-b26 c19c5b73704e3d188bedfe52a473b408ca39009f jdk8u182-b00 @@ -1218,6 +1284,7 @@ b675533489ae1dc55469885471c9a29eca584d38 jdk8u192-b10 338c85978b2283a975b762eead2fccc6d25a2bc2 jdk8u192-b25 8df818c645d6081a387cf4fe9b9c14c0b5b639b1 jdk8u192-b11 +b99dbcd228f65dd6905feb7d07c64889e8a85bd7 icedtea-3.11.0pre02 1f822ff877d1a250165d5d2d52faf6957f8fcd00 jdk8u192-b12 e0e4c3a86ef0e4daf4fe96bd058045a2b13ebf84 jdk8u192-b26 f7bd3ef62b03503c2abd2c877103fce4c41752ec jdk8u181-b31 @@ -1239,6 +1306,7 @@ dee6a1ce4a0c526c47d71ef402d10e4b8915c5cb jdk8u201-b07 e4daab85ac15ae3c51f14ed8fba888e54e4c6830 jdk8u201-b77 e2c2448a1ca75333879e055655f11525decc2c39 jdk8u201-b08 +a24b4e46303eab1e8b89a7d96d5950c9f7f7b27a icedtea-3.11.0 48947e4db9f3b88fd0ec55801e969a3bd6cb74a9 jdk8u201-b09 bd988b43db1b5ca6ee545097e79ddc5a4c8b5c87 jdk8u201-b79 b9347a42530a741b7028e0cce47ce0bdd70697a3 jdk8u201-b25 @@ -1251,6 +1319,8 @@ 04b9a5286eca10f676132ede70f29ba643f9b78b jdk8u202-b05 2fa6434658660b4341be233828362e533782f036 jdk8u202-b06 32c99b1faf57d7ed59e026339a4d7eb8f86b2d83 jdk8u202-b07 +2bbcdd69f3ac026ee53e3460a73c0162eaacf63d icedtea-3.12.0pre01 +a24b4e46303eab1e8b89a7d96d5950c9f7f7b27a icedtea-3.12.0pre00 818b1963f7a227a2368a4f363d5500dd226a529e jdk8u202-b08 1083b49a881011f43667ebebc280d519f077f9e6 jdk8u202-b25 7a69774c67cb79a79ccb2ac2d6d258a11e22aa6f jdk8u202-b26 @@ -1262,6 +1332,7 @@ 96fec237fcc0acfcacea0a2bac07bf8ca919e64b jdk8u212-b03 b2000ea410b0aa80d94a89105ba3dc8bdebd80b7 jdk8u212-b04 96fec237fcc0acfcacea0a2bac07bf8ca919e64b jdk8u212-ga +3f9a60eb8ef03dd72438eb923fc9547b4148605d icedtea-3.12.0 7fe2cda84af1feec9dd512fd7d17f70bfe91a9d0 jdk8u222-b01 32bc598624bd33a1a8847e84f791559f18a69a49 jdk8u222-b02 af43bab3c5d022f0e0b7890f732d8b365b4364cc jdk8u222-b03 @@ -1274,7 +1345,11 @@ 55f693ba975d445d83a59cc32367ec4c2452b0c5 jdk8u222-b09 adfdce09acc32a691145a67792d47ab637159776 jdk8u222-b10 adfdce09acc32a691145a67792d47ab637159776 jdk8u222-ga +d861794ddc0fb151bea6cfd4f7040beb1bb30d2a icedtea-3.13.0pre01 +ab8fadcbbde63b4396583f8d8eac13f80dbb8dd6 icedtea-3.13.0 afa42cf8d060a12fe2fd24210cac6c46252fcd53 jdk8u232-b01 +ab8fadcbbde63b4396583f8d8eac13f80dbb8dd6 icedtea-3.14.0pre00 +a8b62a7ca9502647c7935ab10d8aa449de4a66b2 icedtea-3.14.0pre01 c963a2881865f6fab5b49a31d22651e8e1b4bf46 jdk8u232-b02 fa7fe6dae563edaae8a8bbe8ac4bd4fa942bde0c jdk8u232-b03 921c5ee7965fdfde75f578ddda24d5cd16f124dc jdk8u232-b04 @@ -1285,6 +1360,9 @@ 4170228e11e6313e948e6ddcae9af3eed06b1fbe jdk8u232-b08 12177d88b89c12c14daa5ad681030d7551e8a5a0 jdk8u232-b09 12177d88b89c12c14daa5ad681030d7551e8a5a0 jdk8u232-ga +4ccc1ae0394068367b45459a15675f496eda77d7 icedtea-3.14.0 +4ccc1ae0394068367b45459a15675f496eda77d7 icedtea-3.15.0pre00 +b011fbbb6f0b55d85a2d1c2cd81a999de9df9f8b icedtea-3.15.0pre01 ce42ae95d4d671f74246091f89bd101d5bcbfd91 jdk8u242-b01 775e2bf92114e41365cc6baf1480c818454256a4 jdk8u242-b02 ee19c358e3b8deeda2f64d660a0870df7b1abd49 jdk8u242-b03 @@ -1294,7 +1372,10 @@ 8b80409d5840142a27e274d33948f483a6406a50 jdk8u242-b07 7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-b08 7c9f6b5f8d119dc1ba3c5536595ce3ae7414599d jdk8u242-ga +f767447146983e6d1110c3f65eefb043b788e906 icedtea-3.15.0 +f767447146983e6d1110c3f65eefb043b788e906 icedtea-3.16.0pre00 8c0733543544bbcd32c4404630d764d280299056 jdk8u252-b00 +efb699b681a1245f020ca62ff3aba76c45d17810 icedtea-3.16.0pre01 a67e9c6edcdd73cb860a16990f0905e102c282d7 jdk8u252-b01 5bd3b8c0555292a967ea3b4c39a220d0c2cf40ad jdk8u252-b02 2e972804450764c9ec3b7e548b07be869948ecca jdk8u252-b03 @@ -1306,6 +1387,9 @@ 8f2780b3e4faf4792ac885f470bb1602d4ca5526 jdk8u252-b08 095e60e7fc8c7813c2e0e68637bd53c01f8cba64 jdk8u252-b09 095e60e7fc8c7813c2e0e68637bd53c01f8cba64 jdk8u252-ga +eeb08cfebdedf877ac22637a4f55a006f01ad990 icedtea-3.16.0 +eeb08cfebdedf877ac22637a4f55a006f01ad990 icedtea-3.17.0pre00 +88961de57e438b0b542677680ce540336cc8ca83 icedtea-3.17.0pre01 0826fcd359395f47b968f3251ec77061109b2821 jdk8u262-b01 4373df7c4a92ccf76b94769d9ff6b3f0e26f9659 jdk8u262-b02 545fe7caa2fb4a6dc4b4f9bba9556e30886ca1f1 jdk8u262-b03 @@ -1324,6 +1408,7 @@ 85c9d74850ed3a6c99dd97c85d25ffb29afc0a28 jdk8u272-b01 414c1dcfc3f3620b73cc7faf23f9a3ffde83b240 jdk8u272-b02 e649f213636810823e761473ac871ce55a5235f7 jdk8u272-b03 +9cc00eb32cbd7a2081ebf67a778ab2137fafc3d1 icedtea-3.17.0pre02 cbabffce5685f9a18bfd05bd1fb18c4c73be98cf jdk8u272-b04 1b2d99958c293b7ab324c5786664f82c8e9c4e50 jdk8u272-b05 4b0aa85a95653f44cc45f2ec0571153017ebbf03 jdk8u272-b06 @@ -1333,10 +1418,12 @@ 176a7e5cc0609cface769e5e8a31b00700d223ba jdk8u272-b09 6b836efa38fef1b50ba798b6e344ab44ee995812 jdk8u272-b10 6b836efa38fef1b50ba798b6e344ab44ee995812 jdk8u272-ga +7caa24d952f7a997decdd33dcfed5261f6e0b74b icedtea-3.17.0 7f7c1e1fbc8a70f9730339872ddf56fee812304c jdk8u282-b01 6b836efa38fef1b50ba798b6e344ab44ee995812 jdk8u275-b00 b36c3f635d937798abe5e7c5a40a868705fed15e jdk8u275-b01 b36c3f635d937798abe5e7c5a40a868705fed15e jdk8u275-ga +e7fd2b284bd059020c3edfa7ba8c02febe0d5a59 icedtea-3.17.1 312e9cb580c5c3f8f6ebf660b1f78ff060590ac4 jdk8u282-b02 83661fdee9f08747a1d7a98123c00732b6a3a43d jdk8u282-b03 d7c102fe9c4736bca65b25da69093d84da141e65 jdk8u282-b04 @@ -1345,6 +1432,7 @@ 3d42d5d7117dc6559c0d71fc8fceaaab96de376f jdk8u282-b07 fcfacb8f9da0749c20b9618246adda82e5e6241f jdk8u282-b08 fcfacb8f9da0749c20b9618246adda82e5e6241f jdk8u282-ga +adc340baec52aad297d19836cc3f9050c9d2fbba icedtea-3.18.0 d7c102fe9c4736bca65b25da69093d84da141e65 jdk8u292-b00 4fbe1b3f53bf38bbc326e9ec6714758c4abf0818 jdk8u292-b01 540c4d7153913e8ab6f65441d93941cc427b27bb jdk8u292-b02
--- a/.jcheck/conf Mon Mar 01 20:02:58 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -project=jdk8 -bugids=dup
--- a/agent/make/Makefile Mon Mar 01 20:02:58 2021 +0000 +++ b/agent/make/Makefile Sun Apr 25 18:18:49 2021 +0100 @@ -151,7 +151,6 @@ sun/jvm/hotspot/debugger/posix/*.java \ sun/jvm/hotspot/debugger/posix/elf/*.java \ sun/jvm/hotspot/debugger/proc/*.java \ -sun/jvm/hotspot/debugger/proc/amd64/*.java \ sun/jvm/hotspot/debugger/proc/sparc/*.java \ sun/jvm/hotspot/debugger/proc/x86/*.java \ sun/jvm/hotspot/debugger/proc/aarch64/*.java \
--- a/make/aix/makefiles/defs.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/aix/makefiles/defs.make Sun Apr 25 18:18:49 2021 +0100 @@ -186,12 +186,14 @@ # client and server subdirectories have symbolic links to ../libjsig.so EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX) #ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +#ifneq ($(STRIP_POLICY),no_strip) # ifeq ($(ZIP_DEBUGINFO_FILES),1) # EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz # else # EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo # endif #endif +#endif EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client EXPORT_MINIMAL_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/minimal @@ -200,24 +202,28 @@ EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX) # ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +# ifneq ($(STRIP_POLICY),no_strip) # ifeq ($(ZIP_DEBUGINFO_FILES),1) # EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz # else # EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo # endif # endif +# endif endif ifeq ($(JVM_VARIANT_CLIENT),true) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX) # ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +# ifneq ($(STRIP_POLICY),no_strip) # ifeq ($(ZIP_DEBUGINFO_FILES),1) # EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz # else # EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo # endif # endif +# endif endif # Serviceability Binaries
--- a/make/aix/makefiles/jsig.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/aix/makefiles/jsig.make Sun Apr 25 18:18:49 2021 +0100 @@ -65,6 +65,7 @@ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(JSIG_OPT_FLAGS) -o $@ $< -ldl #ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +#ifneq ($(STRIP_POLICY),no_strip) # $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO) # $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@ # ifeq ($(STRIP_POLICY),all_strip) @@ -80,6 +81,7 @@ # $(RM) $(LIBJSIG_DEBUGINFO) # endif #endif +#endif install_jsig: $(LIBJSIG) @echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
--- a/make/aix/makefiles/saproc.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/aix/makefiles/saproc.make Sun Apr 25 18:18:49 2021 +0100 @@ -88,8 +88,10 @@ -o $@ \ -lthread_db ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO) $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@ + endif ifeq ($(STRIP_POLICY),all_strip) $(QUIETLY) $(STRIP) $@ else @@ -99,8 +101,10 @@ endif endif ifeq ($(ZIP_DEBUGINFO_FILES),1) + ifneq ($(STRIP_POLICY),no_strip) $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO) $(RM) $(LIBSAPROC_DEBUGINFO) + endif endif endif
--- a/make/aix/makefiles/vm.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/aix/makefiles/vm.make Sun Apr 25 18:18:49 2021 +0100 @@ -330,6 +330,7 @@ # } #ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +#ifneq ($(STRIP_POLICY),no_strip) # $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO) # $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@ # ifeq ($(STRIP_POLICY),all_strip) @@ -345,6 +346,7 @@ # $(RM) $(LIBJVM_DEBUGINFO) # endif #endif +#endif DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR) DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM)
--- a/make/bsd/makefiles/defs.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/bsd/makefiles/defs.make Sun Apr 25 18:18:49 2021 +0100 @@ -269,6 +269,7 @@ EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz else @@ -279,6 +280,7 @@ endif endif endif +endif EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client @@ -289,6 +291,7 @@ EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz else @@ -299,6 +302,7 @@ endif endif endif + endif endif ifeq ($(JVM_VARIANT_CLIENT),true) @@ -306,6 +310,7 @@ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz else @@ -316,6 +321,7 @@ endif endif endif + endif endif ifeq ($(JVM_VARIANT_MINIMAL1),true) @@ -329,6 +335,7 @@ $(EXPORT_LIB_DIR)/sa-jdi.jar ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) ADD_SA_BINARIES/x86 += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz else @@ -346,6 +353,7 @@ $(EXPORT_LIB_DIR)/sa-jdi.jar ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) ADD_SA_BINARIES/universal += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz else @@ -356,6 +364,7 @@ endif endif endif +endif ADD_SA_BINARIES/ppc = ADD_SA_BINARIES/ia64 = @@ -398,6 +407,7 @@ UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/server/Xusage.txt UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/client/Xusage.txt ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/server/libjvm.diz UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/client/libjvm.diz @@ -410,6 +420,7 @@ UNIVERSAL_COPY_LIST += $(EXPORT_JRE_LIB_DIR)/libsaproc.$(LIBRARY_SUFFIX).dSYM endif endif + endif endif endif
--- a/make/bsd/makefiles/jsig.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/bsd/makefiles/jsig.make Sun Apr 25 18:18:49 2021 +0100 @@ -69,6 +69,7 @@ $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(JSIG_OPT_FLAGS) $(EXTRA_CFLAGS) -o $@ $< ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(OS_VENDOR), Darwin) $(DSYMUTIL) $@ ifeq ($(ZIP_DEBUGINFO_FILES),1) @@ -92,6 +93,7 @@ endif endif endif +endif install_jsig: $(LIBJSIG) @echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
--- a/make/bsd/makefiles/saproc.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/bsd/makefiles/saproc.make Sun Apr 25 18:18:49 2021 +0100 @@ -137,6 +137,7 @@ -o $@ \ $(SALIBS) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(OS_VENDOR), Darwin) $(DSYMUTIL) $@ ifeq ($(ZIP_DEBUGINFO_FILES),1) @@ -160,6 +161,7 @@ endif endif endif +endif install_saproc: $(BUILDLIBSAPROC) @echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"
--- a/make/bsd/makefiles/vm.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/bsd/makefiles/vm.make Sun Apr 25 18:18:49 2021 +0100 @@ -341,6 +341,7 @@ } ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(OS_VENDOR), Darwin) $(DSYMUTIL) $@ ifeq ($(ZIP_DEBUGINFO_FILES),1) @@ -364,6 +365,7 @@ endif endif endif +endif DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR) DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM)
--- a/make/linux/makefiles/buildtree.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/linux/makefiles/buildtree.make Sun Apr 25 18:18:49 2021 +0100 @@ -237,6 +237,8 @@ echo "VENDOR_URL = $(VENDOR_URL)"; \ echo "VENDOR_URL_BUG = $(VENDOR_URL_BUG)"; \ echo "VENDOR_URL_VM_BUG = $(VENDOR_URL_VM_BUG)"; \ + echo "DERIVATIVE_ID = $(DERIVATIVE_ID)"; \ + echo "DISTRIBUTION_ID = $(DISTRIBUTION_ID)"; \ echo "OPENJDK = $(OPENJDK)"; \ echo "$(LP64_SETTING/$(DATA_MODE))"; \ echo; \
--- a/make/linux/makefiles/gcc.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/linux/makefiles/gcc.make Sun Apr 25 18:18:49 2021 +0100 @@ -202,14 +202,16 @@ endif # Compiler warnings are treated as errors +ifneq ($(COMPILER_WARNINGS_FATAL),false) WARNINGS_ARE_ERRORS = -Werror +endif ifeq ($(USE_CLANG), true) # However we need to clean the code up before we can unrestrictedly enable this option with Clang WARNINGS_ARE_ERRORS += -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-constant-out-of-range-compare -Wno-tautological-compare WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess - WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body + WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body -Qunused-arguments -Wno-uninitialized endif WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wformat=2 -Wreturn-type @@ -263,6 +265,9 @@ ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1) OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT) endif + ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 9), 1) + OPT_CFLAGS += -fno-devirtualize + endif endif # Flags for generating make dependency flags. @@ -337,18 +342,40 @@ # DEBUG_BINARIES uses full -g debug information for all configs ifeq ($(DEBUG_BINARIES), true) CFLAGS += -g + ASFLAGS += -g else + # Use the stabs format for debugging information (this is the default + # on gcc-2.91). It's good enough, has all the information about line + # numbers and local variables, and libjvm.so is only about 16M. + # Change this back to "-g" if you want the most expressive format. + # (warning: that could easily inflate libjvm.so to 150M!) + # Note: The Itanium gcc compiler crashes when using -gstabs. + DEBUG_CFLAGS/ia64 = -g + DEBUG_CFLAGS/amd64 = -g + DEBUG_CFLAGS/aarch64 = -g + DEBUG_CFLAGS/ppc64 = -g + DEBUG_CFLAGS/zero = -g DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH)) ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),) DEBUG_CFLAGS += -g endif ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + FASTDEBUG_CFLAGS/ia64 = -g + FASTDEBUG_CFLAGS/amd64 = -g + FASTDEBUG_CFLAGS/aarch64 = -g + FASTDEBUG_CFLAGS/ppc64 = -g + FASTDEBUG_CFLAGS/zero = -g FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH)) ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),) FASTDEBUG_CFLAGS/$(BUILDARCH) = -g endif + OPT_CFLAGS/ia64 = -g + OPT_CFLAGS/amd64 = -g + OPT_CFLAGS/aarch64 = -g + OPT_CFLAGS/ppc64 = -g + OPT_CFLAGS/zero = -g OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH)) ifeq ($(OPT_CFLAGS/$(BUILDARCH)),) OPT_CFLAGS/$(BUILDARCH) = -g
--- a/make/linux/makefiles/rules.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/linux/makefiles/rules.make Sun Apr 25 18:18:49 2021 +0100 @@ -136,33 +136,23 @@ COMPILE_DONE = && { echo Done with $<; } endif -# Include $(NONPIC_OBJ_FILES) definition -ifndef LP64 -include $(GAMMADIR)/make/pic.make -endif - include $(GAMMADIR)/make/altsrc.make -# The non-PIC object files are only generated for 32 bit platforms. -ifdef LP64 %.o: %.cpp @echo Compiling $< $(QUIETLY) $(REMOVE_TARGET) $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE) -else -%.o: %.cpp - @echo Compiling $< - $(QUIETLY) $(REMOVE_TARGET) - $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \ - $(subst $(VM_PICFLAG), ,$(COMPILE.CXX)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \ - $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)) -endif %.o: %.s @echo Assembling $< $(QUIETLY) $(REMOVE_TARGET) $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE) +%.o: %.S + @echo Assembling $< + $(QUIETLY) $(REMOVE_TARGET) + $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) + %.s: %.cpp @echo Generating assembly for $< $(QUIETLY) $(GENASM.CXX) -o $@ $<
--- a/make/linux/makefiles/vm.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/linux/makefiles/vm.make Sun Apr 25 18:18:49 2021 +0100 @@ -99,6 +99,14 @@ ${HS_LIB_ARCH} \ ${VM_DISTRO} +ifdef DERIVATIVE_ID +CXXFLAGS += -DDERIVATIVE_ID="\"$(DERIVATIVE_ID)\"" +endif + +ifdef DISTRIBUTION_ID +CXXFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\"" +endif + # This is VERY important! The version define must only be supplied to vm_version.o # If not, ccache will not re-use the cache at all, since the version string might contain # a time and date. @@ -221,7 +229,7 @@ # Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE. define findsrc $(notdir $(shell find $(1)/. ! -name . -prune \ - -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \ + -a \( -name \*.c -o -name \*.cpp -o -name \*.s -o -name \*.S \) \ -a ! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \))) endef
--- a/make/linux/makefiles/zeroshark.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/linux/makefiles/zeroshark.make Sun Apr 25 18:18:49 2021 +0100 @@ -1,5 +1,5 @@ # -# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. # Copyright 2007, 2008 Red Hat, Inc. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # @@ -29,12 +29,6 @@ ifeq ($(JVM_VARIANT_ZEROSHARK), true) WARNING_FLAGS += -Wno-undef endif -# Suppress some warning flags that are normally turned on for hotspot, -# because some of the zero code has not been updated accordingly. -WARNING_FLAGS += -Wno-return-type \ - -Wno-format-nonliteral -Wno-format-security \ - -Wno-maybe-uninitialized - # If FDLIBM_CFLAGS is non-empty it holds CFLAGS needed to be passed to # the compiler so as to be able to produce optimized objects
--- a/make/solaris/makefiles/adlc.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/solaris/makefiles/adlc.make Sun Apr 25 18:18:49 2021 +0100 @@ -73,8 +73,10 @@ # CFLAGS_WARN holds compiler options to suppress/enable warnings. # Compiler warnings are treated as errors -ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1) - CFLAGS_WARN = +w -errwarn +ifneq ($(COMPILER_WARNINGS_FATAL),false) + ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1) + CFLAGS_WARN = +w -errwarn + endif endif # When using compiler version 5.13 (Solaris Studio 12.4), calls to explicitly # instantiated template functions trigger this warning when +w is active.
--- a/make/solaris/makefiles/defs.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/solaris/makefiles/defs.make Sun Apr 25 18:18:49 2021 +0100 @@ -226,12 +226,14 @@ # client and server subdirectories have symbolic links to ../libjsig.$(LIBRARY_SUFFIX) EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz else EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo endif endif +endif EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client @@ -246,6 +248,7 @@ EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX) endif ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.diz @@ -264,6 +267,7 @@ endif endif endif + endif endif ifeq ($(JVM_VARIANT_CLIENT),true) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt @@ -275,6 +279,7 @@ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX) endif ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.diz @@ -293,10 +298,12 @@ endif endif endif + endif endif EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) +ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz else
--- a/make/solaris/makefiles/gcc.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/solaris/makefiles/gcc.make Sun Apr 25 18:18:49 2021 +0100 @@ -116,7 +116,9 @@ # Compiler warnings are treated as errors -WARNINGS_ARE_ERRORS = -Werror +ifneq ($(COMPILER_WARNINGS_FATAL),false) +WARNINGS_ARE_ERRORS = -Werror +endif # Enable these warnings. See 'info gcc' about details on these options WARNING_FLAGS = -Wpointer-arith -Wconversion -Wsign-compare -Wundef -Wformat=2 CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS)
--- a/make/solaris/makefiles/jsig.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/solaris/makefiles/jsig.make Sun Apr 25 18:18:49 2021 +0100 @@ -57,8 +57,10 @@ $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ $(LFLAGS_JSIG) $(JSIG_OPT_FLAGS) -o $@ $(JSIGSRCDIR)/jsig.c -ldl ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO) $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@ + endif ifeq ($(STRIP_POLICY),all_strip) $(QUIETLY) $(STRIP) $@ else @@ -67,10 +69,12 @@ # implied else here is no stripping at all endif endif + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO) $(RM) $(LIBJSIG_DEBUGINFO) endif + endif endif install_jsig: $(LIBJSIG)
--- a/make/solaris/makefiles/saproc.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/solaris/makefiles/saproc.make Sun Apr 25 18:18:49 2021 +0100 @@ -121,8 +121,10 @@ -c -o $(SADISOBJ) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO) $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@ + endif ifeq ($(STRIP_POLICY),all_strip) $(QUIETLY) $(STRIP) $@ else @@ -132,8 +134,10 @@ endif endif ifeq ($(ZIP_DEBUGINFO_FILES),1) + ifneq ($(STRIP_POLICY),no_strip) $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO) $(RM) $(LIBSAPROC_DEBUGINFO) + endif endif endif
--- a/make/solaris/makefiles/vm.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/solaris/makefiles/vm.make Sun Apr 25 18:18:49 2021 +0100 @@ -85,6 +85,10 @@ ${HS_LIB_ARCH} \ ${VM_DISTRO} +ifdef DERIVATIVE_ID +CXXFLAGS += -DDERIVATIVE_ID="\"$(DERIVATIVE_ID)\"" +endif + # This is VERY important! The version define must only be supplied to vm_version.o # If not, ccache will not re-use the cache at all, since the version string might contain # a time and date. @@ -101,6 +105,10 @@ CXXFLAGS/ostream.o += -D_FILE_OFFSET_BITS=64 endif # ifneq ($(LP64), 1) +ifdef DISTRIBUTION_ID +CXXFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\"" +endif + # CFLAGS_WARN holds compiler options to suppress/enable warnings. CFLAGS += $(CFLAGS_WARN) @@ -299,8 +307,10 @@ $(QUIETLY) $(LINK_LIB.CXX/POST_HOOK) $(QUIETLY) rm -f $@.1 && ln -s $@ $@.1 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO) $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@ + endif ifeq ($(STRIP_POLICY),all_strip) $(QUIETLY) $(STRIP) $@ else @@ -309,10 +319,12 @@ # implied else here is no stripping at all endif endif + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO) $(RM) $(LIBJVM_DEBUGINFO) endif + endif endif endif # filter -sbfast -xsbfast
--- a/make/windows/makefiles/debug.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/windows/makefiles/debug.make Sun Apr 25 18:18:49 2021 +0100 @@ -60,11 +60,13 @@ $(MT) /manifest $@.manifest /outputresource:$@;#2 !endif !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1" +!if "$(STRIP_POLICY)" != "no_strip" !if "$(ZIP_DEBUGINFO_FILES)" == "1" $(ZIPEXE) -q $*.diz $*.map $*.pdb $(RM) $*.map $*.pdb !endif !endif +!endif !include $(WorkSpace)/make/windows/makefiles/shared.make !include $(WorkSpace)/make/windows/makefiles/sa.make
--- a/make/windows/makefiles/defs.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/windows/makefiles/defs.make Sun Apr 25 18:18:49 2021 +0100 @@ -262,6 +262,7 @@ EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.diz else @@ -269,11 +270,13 @@ EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.map endif endif + endif endif ifeq ($(JVM_VARIANT_CLIENT),true) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.diz else @@ -281,6 +284,7 @@ EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.map endif endif + endif endif EXPORT_LIST += $(EXPORT_LIB_DIR)/jvm.lib @@ -288,6 +292,7 @@ ifeq ($(BUILD_WIN_SA), 1) EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.$(LIBRARY_SUFFIX) ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + ifneq ($(STRIP_POLICY),no_strip) ifeq ($(ZIP_DEBUGINFO_FILES),1) EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.diz else @@ -295,6 +300,7 @@ EXPORT_LIST += $(EXPORT_JRE_BIN_DIR)/sawindbg.map endif endif + endif EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar # Must pass this down to nmake. MAKE_ARGS += BUILD_WIN_SA=1
--- a/make/windows/makefiles/fastdebug.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/windows/makefiles/fastdebug.make Sun Apr 25 18:18:49 2021 +0100 @@ -38,7 +38,7 @@ !include ../local.make !include compile.make -CXX_FLAGS=$(CXX_FLAGS) $(FASTDEBUG_OPT_OPTION) +CXX_FLAGS=$(CXX_FLAGS) $(FASTDEBUG_OPT_OPTION) /D "CHECK_UNHANDLED_OOPS" !include $(WorkSpace)/make/windows/makefiles/vm.make !include local.make @@ -59,11 +59,13 @@ $(MT) /manifest $@.manifest /outputresource:$@;#2 !endif !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1" +!if "$(STRIP_POLICY)" != "no_strip" !if "$(ZIP_DEBUGINFO_FILES)" == "1" $(ZIPEXE) -q $*.diz $*.map $*.pdb $(RM) $*.map $*.pdb !endif !endif +!endif !include $(WorkSpace)/make/windows/makefiles/shared.make !include $(WorkSpace)/make/windows/makefiles/sa.make
--- a/make/windows/makefiles/product.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/windows/makefiles/product.make Sun Apr 25 18:18:49 2021 +0100 @@ -62,11 +62,13 @@ $(MT) /manifest $@.manifest /outputresource:$@;#2 !endif !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1" +!if "$(STRIP_POLICY)" != "no_strip" !if "$(ZIP_DEBUGINFO_FILES)" == "1" $(ZIPEXE) -q $*.diz $*.map $*.pdb $(RM) $*.map $*.pdb !endif !endif +!endif !include $(WorkSpace)/make/windows/makefiles/shared.make !include $(WorkSpace)/make/windows/makefiles/sa.make
--- a/make/windows/makefiles/sa.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/windows/makefiles/sa.make Sun Apr 25 18:18:49 2021 +0100 @@ -165,11 +165,13 @@ $(MT) -manifest $(@F).manifest -outputresource:$(@F);#2 !endif !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1" +!if "$(STRIP_POLICY)" != "no_strip" !if "$(ZIP_DEBUGINFO_FILES)" == "1" $(ZIPEXE) -q $*.diz $*.map $*.pdb $(RM) $*.map $*.pdb !endif !endif +!endif -@rm -f $*.obj cleanall :
--- a/make/windows/makefiles/vm.make Mon Mar 01 20:02:58 2021 +0000 +++ b/make/windows/makefiles/vm.make Sun Apr 25 18:18:49 2021 +0100 @@ -68,6 +68,14 @@ # Define that so jni.h is on correct side CXX_FLAGS=$(CXX_FLAGS) /D "_JNI_IMPLEMENTATION_" +!ifdef DERIVATIVE_ID +CXX_FLAGS = $(CPP_FLAGS) /D "DERIVATIVE_ID=\"$(DERIVATIVE_ID)\"" +!endif + +!ifdef DISTRIBUTION_ID +CXX_FLAGS = $(CPP_FLAGS) /D "DISTRIBUTION_ID=\"$(DISTRIBUTION_ID)\"" +!endif + !if "$(BUILDARCH)" == "ia64" STACK_SIZE="/STACK:1048576,262144" !else
--- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -435,6 +435,7 @@ __ mov(c_rarg0, rthread); __ mov_metadata(c_rarg1, method()->constant_encoding()); __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), c_rarg0, c_rarg1); +>>>>>>> merge rev } if (method()->is_synchronized() || compilation()->env()->dtrace_method_probes()) {
--- a/src/cpu/aarch64/vm/vm_version_aarch64.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/aarch64/vm/vm_version_aarch64.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -295,6 +295,11 @@ UsePopCountInstruction = true; } + // This machine allows unaligned memory accesses + if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) { + FLAG_SET_DEFAULT(UseUnalignedAccesses, true); + } + if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) { UseMontgomeryMultiplyIntrinsic = true; }
--- a/src/cpu/ppc/vm/vm_version_ppc.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/ppc/vm/vm_version_ppc.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -29,6 +29,7 @@ #include "compiler/disassembler.hpp" #include "memory/resourceArea.hpp" #include "runtime/java.hpp" +#include "runtime/os.hpp" #include "runtime/stubCodeGenerator.hpp" #include "utilities/defaultStream.hpp" #include "vm_version_ppc.hpp" @@ -128,7 +129,7 @@ (has_vshasig() ? " sha" : "") // Make sure number of %s matches num_features! ); - _features_str = strdup(buf); + _features_str = os::strdup(buf); if (Verbose) { print_features(); } @@ -242,6 +243,11 @@ if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) { UseMontgomerySquareIntrinsic = true; } + + // This machine allows unaligned memory accesses + if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) { + FLAG_SET_DEFAULT(UseUnalignedAccesses, true); + } } void VM_Version::print_features() {
--- a/src/cpu/sparc/vm/vm_version_sparc.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/sparc/vm/vm_version_sparc.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -26,6 +26,7 @@ #include "asm/macroAssembler.inline.hpp" #include "memory/resourceArea.hpp" #include "runtime/java.hpp" +#include "runtime/os.hpp" #include "runtime/stubCodeGenerator.hpp" #include "vm_version_sparc.hpp" #ifdef TARGET_OS_FAMILY_linux @@ -270,7 +271,7 @@ (!has_hardware_fsmuld() ? ", no-fsmuld" : "")); // buf is started with ", " or is empty - _features_str = strdup(strlen(buf) > 2 ? buf + 2 : buf); + _features_str = os::strdup(strlen(buf) > 2 ? buf + 2 : buf); // UseVIS is set to the smallest of what hardware supports and what // the command line requires. I.e., you cannot set UseVIS to 3 on @@ -386,6 +387,13 @@ (cache_line_size > ContendedPaddingWidth)) ContendedPaddingWidth = cache_line_size; + // This machine does not allow unaligned memory accesses + if (UseUnalignedAccesses) { + if (!FLAG_IS_DEFAULT(UseUnalignedAccesses)) + warning("Unaligned memory access is not available on this CPU"); + FLAG_SET_DEFAULT(UseUnalignedAccesses, false); + } + #ifndef PRODUCT if (PrintMiscellaneous && Verbose) { tty->print_cr("L1 data cache line size: %u", L1_data_cache_line_size()); @@ -489,7 +497,7 @@ int VM_Version::parse_features(const char* implementation) { int features = unknown_m; // Convert to UPPER case before compare. - char* impl = os::strdup(implementation); + char* impl = os::strdup_check_oom(implementation); for (int i = 0; impl[i] != 0; i++) impl[i] = (char)toupper((uint)impl[i]);
--- a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -312,7 +312,7 @@ Register OSR_buf = osrBufferPointer()->as_pointer_register(); { assert(frame::interpreter_frame_monitor_size() == BasicObjectLock::size(), "adjust code below"); int monitor_offset = BytesPerWord * method()->max_locals() + - (2 * BytesPerWord) * (number_of_locks - 1); + (BasicObjectLock::size() * BytesPerWord) * (number_of_locks - 1); // SharedRuntime::OSR_migration_begin() packs BasicObjectLocks in // the OSR buffer using 2 word entries: first the lock and then // the oop. @@ -3171,11 +3171,11 @@ if (PrintC1Statistics) { __ incrementl(ExternalAddress((address)&Runtime1::_generic_arraycopystub_cnt)); } -#endif +#endif // PRODUCT __ call(RuntimeAddress(copyfunc_addr)); } __ addptr(rsp, 6*wordSize); -#else +#else // __ mov(c_rarg4, j_rarg4); if (copyfunc_addr == NULL) { // Use C version if stub was not generated __ call(RuntimeAddress(C_entry));
--- a/src/cpu/x86/vm/interp_masm_x86_32.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/x86/vm/interp_masm_x86_32.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -722,7 +722,7 @@ // Save (object->mark() | 1) into BasicLock's displaced header movptr(Address(lock_reg, mark_offset), swap_reg); - assert(lock_offset == 0, "displached header must be first word in BasicObjectLock"); + assert(lock_offset == 0, "displaced header must be first word in BasicObjectLock"); if (os::is_MP()) { lock(); } @@ -811,7 +811,7 @@ if (os::is_MP()) lock(); cmpxchgptr(header_reg, Address(obj_reg, 0)); - // zero for recursive case + // zero for simple unlock of a stack-lock case jcc(Assembler::zero, done); // Call the runtime routine for slow case.
--- a/src/cpu/x86/vm/interp_masm_x86_64.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/x86/vm/interp_masm_x86_64.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -725,7 +725,7 @@ movptr(Address(lock_reg, mark_offset), swap_reg); assert(lock_offset == 0, - "displached header must be first word in BasicObjectLock"); + "displaced header must be first word in BasicObjectLock"); if (os::is_MP()) lock(); cmpxchgptr(lock_reg, Address(obj_reg, 0)); @@ -778,7 +778,7 @@ // Kills: // rax // c_rarg0, c_rarg1, c_rarg2, c_rarg3, ... (param regs) -// rscratch1, rscratch2 (scratch regs) +// rscratch1 (scratch reg) void InterpreterMacroAssembler::unlock_object(Register lock_reg) { assert(lock_reg == c_rarg1, "The argument is only for looks. It must be rarg1"); @@ -823,7 +823,7 @@ if (os::is_MP()) lock(); cmpxchgptr(header_reg, Address(obj_reg, 0)); - // zero for recursive case + // zero for simple unlock of a stack-lock case jcc(Assembler::zero, done); // Call the runtime routine for slow case.
--- a/src/cpu/x86/vm/macroAssembler_x86.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/x86/vm/macroAssembler_x86.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1078,7 +1078,7 @@ } assert(markOopDesc::age_shift == markOopDesc::lock_bits + markOopDesc::biased_lock_bits, "biased locking makes assumptions about bit layout"); Address mark_addr (obj_reg, oopDesc::mark_offset_in_bytes()); - Address saved_mark_addr(lock_reg, 0); + NOT_LP64( Address saved_mark_addr(lock_reg, 0); ) if (PrintBiasedLockingStatistics && counters == NULL) { counters = BiasedLocking::counters(); @@ -1699,7 +1699,7 @@ RTMLockingCounters* stack_rtm_counters, Metadata* method_data, bool use_rtm, bool profile_rtm) { - // Ensure the register assignents are disjoint + // Ensure the register assignments are disjoint assert(tmpReg == rax, ""); if (use_rtm) {
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/x86/vm/templateTable_x86_64.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -107,10 +107,6 @@ return Address(rsp, Interpreter::expr_offset_in_bytes(2)); } -static inline Address at_tos_p3() { - return Address(rsp, Interpreter::expr_offset_in_bytes(3)); -} - // Condition conversion static Assembler::Condition j_not(TemplateTable::Condition cc) { switch (cc) {
--- a/src/cpu/x86/vm/vm_version_x86.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/x86/vm/vm_version_x86.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -27,6 +27,7 @@ #include "asm/macroAssembler.inline.hpp" #include "memory/resourceArea.hpp" #include "runtime/java.hpp" +#include "runtime/os.hpp" #include "runtime/stubCodeGenerator.hpp" #include "vm_version_x86.hpp" #ifdef TARGET_OS_FAMILY_linux @@ -527,7 +528,7 @@ (supports_bmi1() ? ", bmi1" : ""), (supports_bmi2() ? ", bmi2" : ""), (supports_adx() ? ", adx" : "")); - _features_str = strdup(buf); + _features_str = os::strdup(buf); // UseSSE is set to the smaller of what hardware supports and what // the command line requires. I.e., you cannot set UseSSE to 2 on @@ -1056,6 +1057,11 @@ (cache_line_size > ContendedPaddingWidth)) ContendedPaddingWidth = cache_line_size; + // This machine allows unaligned memory accesses + if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) { + FLAG_SET_DEFAULT(UseUnalignedAccesses, true); + } + #ifndef PRODUCT if (PrintMiscellaneous && Verbose) { tty->print_cr("Logical CPUs per core: %u",
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -102,7 +102,7 @@ return result; default: ShouldNotReachHere(); - return result; // silence compiler warnings + return NULL_WORD; // silence compiler warnings } }
--- a/src/cpu/zero/vm/entry_zero.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/zero/vm/entry_zero.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. - * Copyright 2008, 2009, 2010 Red Hat, Inc. + * Copyright 2016 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it
--- a/src/cpu/zero/vm/interpreterRT_zero.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/zero/vm/interpreterRT_zero.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2010 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -62,7 +62,7 @@ } void InterpreterRuntime::SignatureHandlerGeneratorBase::push(BasicType type) { - ffi_type *ftype; + ffi_type *ftype = NULL; switch (type) { case T_VOID: ftype = &ffi_type_void;
--- a/src/cpu/zero/vm/methodHandles_zero.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/zero/vm/methodHandles_zero.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Red Hat, Inc. + * Copyright 2016 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,8 @@ * */ +#ifndef CPU_ZERO_VM_METHODHANDLES_ZERO_HPP +#define CPU_ZERO_VM_METHODHANDLES_ZERO_HPP // Adapters enum /* platform_dependent_constants */ { @@ -37,3 +39,5 @@ static int method_handle_entry_linkToVirtual(Method* method, intptr_t UNUSED, TRAPS); static int method_handle_entry_linkToInterface(Method* method, intptr_t UNUSED, TRAPS); static int method_handle_entry_invalid(Method* method, intptr_t UNUSED, TRAPS); + +#endif // CPU_ZERO_VM_METHODHANDLES_ZERO_HPP
--- a/src/cpu/zero/vm/nativeInst_zero.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/zero/vm/nativeInst_zero.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2016 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it
--- a/src/cpu/zero/vm/vm_version_zero.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/zero/vm/vm_version_zero.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -36,4 +36,11 @@ # include "os_bsd.inline.hpp" #endif -// This file is intentionally empty + +void VM_Version::initialize() { + // This machine does not allow unaligned memory accesses + if (! FLAG_IS_DEFAULT(UseUnalignedAccesses)) { + warning("Unaligned memory access is not available on this CPU"); + FLAG_SET_DEFAULT(UseUnalignedAccesses, false); + } +}
--- a/src/cpu/zero/vm/vm_version_zero.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/cpu/zero/vm/vm_version_zero.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2015 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,6 +34,7 @@ static const char* cpu_features() { return ""; } + static void initialize(); }; #endif // CPU_ZERO_VM_VM_VERSION_ZERO_HPP
--- a/src/os/aix/vm/os_aix.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os/aix/vm/os_aix.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -56,6 +56,7 @@ #include "runtime/mutexLocker.hpp" #include "runtime/objectMonitor.hpp" #include "runtime/orderAccess.inline.hpp" +#include "runtime/os.hpp" #include "runtime/osThread.hpp" #include "runtime/perfMemory.hpp" #include "runtime/sharedRuntime.hpp" @@ -389,10 +390,10 @@ // default should be 4K. size_t data_page_size = SIZE_4K; { - void* p = ::malloc(SIZE_16M); + void* p = os::malloc(SIZE_16M, mtInternal); guarantee(p != NULL, "malloc failed"); data_page_size = os::Aix::query_pagesize(p); - ::free(p); + os::free(p); } // query default shm page size (LDR_CNTRL SHMPSIZE)
--- a/src/os/aix/vm/porting_aix.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os/aix/vm/porting_aix.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -23,6 +23,8 @@ */ #include "asm/assembler.hpp" +#include "memory/allocation.inline.hpp" +#include "runtime/os.hpp" #include "loadlib_aix.hpp" #include "porting_aix.hpp" #include "utilities/debug.hpp" @@ -82,7 +84,7 @@ while (n) { node* p = n; n = n->next; - free(p->v); + os::free(p->v); delete p; } } @@ -94,7 +96,7 @@ } } node* p = new node; - p->v = strdup(s); + p->v = os::strdup_check_oom(s); p->next = first; first = p; return p->v;
--- a/src/os/linux/vm/os_linux.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os/linux/vm/os_linux.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -103,6 +103,8 @@ # include <inttypes.h> # include <sys/ioctl.h> +#include <sys/prctl.h> + PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC #ifndef _GNU_SOURCE @@ -1954,6 +1956,10 @@ #define EM_AARCH64 183 /* ARM AARCH64 */ #endif + #ifndef EM_AARCH64 + #define EM_AARCH64 183 + #endif + static const arch_t arch_array[]={ {EM_386, EM_386, ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"}, {EM_486, EM_386, ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"}, @@ -4944,8 +4950,9 @@ static os_sigaction_t os_sigaction = NULL; void os::Linux::check_signal_handler(int sig) { - char buf[O_BUFLEN]; + char buf[O_BUFLEN], enbuf[O_BUFLEN]; address jvmHandler = NULL; + const char* exname = os::exception_name(sig, enbuf, O_BUFLEN); struct sigaction act; @@ -4996,7 +5003,7 @@ } if (thisHandler != jvmHandler) { - tty->print("Warning: %s handler ", exception_name(sig, buf, O_BUFLEN)); + tty->print("Warning: %s handler ", exname == NULL ? "(null)" : exname); tty->print("expected:%s", get_signal_handler_name(jvmHandler, buf, O_BUFLEN)); tty->print_cr(" found:%s", get_signal_handler_name(thisHandler, buf, O_BUFLEN)); // No need to check this sig any longer @@ -5004,10 +5011,10 @@ // Running under non-interactive shell, SHUTDOWN2_SIGNAL will be reassigned SIG_IGN if (sig == SHUTDOWN2_SIGNAL && !isatty(fileno(stdin))) { tty->print_cr("Running in non-interactive shell, %s handler is replaced by shell", - exception_name(sig, buf, O_BUFLEN)); + exname == NULL ? "(null)" : exname); } } else if(os::Linux::get_our_sigflags(sig) != 0 && (int)act.sa_flags != os::Linux::get_our_sigflags(sig)) { - tty->print("Warning: %s handler flags ", exception_name(sig, buf, O_BUFLEN)); + tty->print("Warning: %s handler flags ", exname == NULL ? "(null)" : exname); tty->print("expected:" PTR32_FORMAT, os::Linux::get_our_sigflags(sig)); tty->print_cr(" found:" PTR32_FORMAT, act.sa_flags); // No need to check this sig any longer @@ -5036,6 +5043,48 @@ } } +/* Per task speculation control */ +#ifndef PR_GET_SPECULATION_CTRL +# define PR_GET_SPECULATION_CTRL 52 +#endif +#ifndef PR_SET_SPECULATION_CTRL +# define PR_SET_SPECULATION_CTRL 53 +#endif +/* Speculation control variants */ +#ifndef PR_SPEC_STORE_BYPASS +# define PR_SPEC_STORE_BYPASS 0 +#endif +/* Return and control values for PR_SET/GET_SPECULATION_CTRL */ + +#ifndef PR_SPEC_NOT_AFFECTED +# define PR_SPEC_NOT_AFFECTED 0 +#endif +#ifndef PR_SPEC_PRCTL +# define PR_SPEC_PRCTL (1UL << 0) +#endif +#ifndef PR_SPEC_ENABLE +# define PR_SPEC_ENABLE (1UL << 1) +#endif +#ifndef PR_SPEC_DISABLE +# define PR_SPEC_DISABLE (1UL << 2) +#endif +#ifndef PR_SPEC_FORCE_DISABLE +# define PR_SPEC_FORCE_DISABLE (1UL << 3) +#endif +#ifndef PR_SPEC_DISABLE_NOEXEC +# define PR_SPEC_DISABLE_NOEXEC (1UL << 4) +#endif + +static void set_speculation() __attribute__((constructor)); +static void set_speculation() { + if ( prctl(PR_SET_SPECULATION_CTRL, + PR_SPEC_STORE_BYPASS, + PR_SPEC_DISABLE_NOEXEC, 0, 0) == 0 ) { + return; + } + prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0); +} + // this is called _before_ most of the global arguments have been parsed void os::init(void) { char dummy; /* used to get a guess on initial stack address */ @@ -5572,11 +5621,41 @@ errno = ENAMETOOLONG; return -1; } - int fd; int o_delete = (oflag & O_DELETE); oflag = oflag & ~O_DELETE; - fd = ::open64(path, oflag, mode); + + /* All file descriptors that are opened in the Java process and not + * specifically destined for a subprocess should have the close-on-exec + * flag set. If we don't set it, then careless 3rd party native code + * might fork and exec without closing all appropriate file descriptors + * (e.g. as we do in closeDescriptors in UNIXProcess.c), and this in + * turn might: + * + * - cause end-of-file to fail to be detected on some file + * descriptors, resulting in mysterious hangs, or + * + * - might cause an fopen in the subprocess to fail on a system + * suffering from bug 1085341. + * + * (Yes, the default setting of the close-on-exec flag is a Unix + * design flaw) + * + * See: + * 1085341: 32-bit stdio routines should support file descriptors >255 + * 4843136: (process) pipe file descriptor from Runtime.exec not being closed + * 6339493: (process) Runtime.exec does not close all file descriptors on Solaris 9 + */ + // Modern Linux kernels (after 2.6.23 2007) support O_CLOEXEC with open(). + // O_CLOEXEC is preferable to using FD_CLOEXEC on an open file descriptor + // because it saves a system call and removes a small window where the flag + // is unset. On ancient Linux kernels the O_CLOEXEC flag will be ignored + // and we fall back to using FD_CLOEXEC (see below). +#ifdef O_CLOEXEC + oflag |= O_CLOEXEC; +#endif + + int fd = ::open64(path, oflag, mode); if (fd == -1) return -1; //If the open succeeded, the file might still be a directory @@ -5597,34 +5676,19 @@ } } - /* - * All file descriptors that are opened in the JVM and not - * specifically destined for a subprocess should have the - * close-on-exec flag set. If we don't set it, then careless 3rd - * party native code might fork and exec without closing all - * appropriate file descriptors (e.g. as we do in closeDescriptors in - * UNIXProcess.c), and this in turn might: - * - * - cause end-of-file to fail to be detected on some file - * descriptors, resulting in mysterious hangs, or - * - * - might cause an fopen in the subprocess to fail on a system - * suffering from bug 1085341. - * - * (Yes, the default setting of the close-on-exec flag is a Unix - * design flaw) - * - * See: - * 1085341: 32-bit stdio routines should support file descriptors >255 - * 4843136: (process) pipe file descriptor from Runtime.exec not being closed - * 6339493: (process) Runtime.exec does not close all file descriptors on Solaris 9 - */ #ifdef FD_CLOEXEC - { - int flags = ::fcntl(fd, F_GETFD); - if (flags != -1) - ::fcntl(fd, F_SETFD, flags | FD_CLOEXEC); + // Validate that the use of the O_CLOEXEC flag on open above worked. + // With recent kernels, we will perform this check exactly once. + static sig_atomic_t O_CLOEXEC_is_known_to_work = 0; + if (!O_CLOEXEC_is_known_to_work) { + int flags = ::fcntl(fd, F_GETFD); + if (flags != -1) { + if ((flags & FD_CLOEXEC) != 0) + O_CLOEXEC_is_known_to_work = 1; + else + ::fcntl(fd, F_SETFD, flags | FD_CLOEXEC); } + } #endif if (o_delete != 0) {
--- a/src/os/windows/vm/perfMemory_windows.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os/windows/vm/perfMemory_windows.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -29,6 +29,7 @@ #include "oops/oop.inline.hpp" #include "os_windows.inline.hpp" #include "runtime/handles.inline.hpp" +#include "runtime/os.hpp" #include "runtime/perfMemory.hpp" #include "services/memTracker.hpp" #include "utilities/exceptions.hpp" @@ -1382,7 +1383,7 @@ // the file has been successfully created and the file mapping // object has been created. sharedmem_fileHandle = fh; - sharedmem_fileName = strdup(filename); + sharedmem_fileName = os::strdup(filename); return fmh; }
--- a/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -891,7 +891,7 @@ * updates (JDK-8023956). */ void os::workaround_expand_exec_shield_cs_limit() { -#if defined(IA32) +#if defined(IA32) && !defined(ZERO) size_t page_size = os::vm_page_size(); /*
--- a/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,6 +1,6 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. - * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2016 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -61,6 +61,7 @@ frame os::get_sender_for_C_frame(frame* fr) { ShouldNotCallThis(); + return frame(NULL, NULL); // silence compile warning. } frame os::current_frame() { @@ -98,16 +99,19 @@ address os::Linux::ucontext_get_pc(ucontext_t* uc) { ShouldNotCallThis(); + return NULL; // silence compile warnings } ExtendedPC os::fetch_frame_from_context(void* ucVoid, intptr_t** ret_sp, intptr_t** ret_fp) { ShouldNotCallThis(); + return NULL; // silence compile warnings } frame os::fetch_frame_from_context(void* ucVoid) { ShouldNotCallThis(); + return frame(NULL, NULL); // silence compile warnings } extern "C" JNIEXPORT int @@ -247,11 +251,16 @@ } #endif // !PRODUCT - const char *fmt = "caught unhandled signal %d"; char buf[64]; - sprintf(buf, fmt, sig); + sprintf(buf, "caught unhandled signal %d", sig); + +// Silence -Wformat-security warning for fatal() +PRAGMA_DIAG_PUSH +PRAGMA_FORMAT_NONLITERAL_IGNORED fatal(buf); +PRAGMA_DIAG_POP + return true; // silence compiler warnings } void os::Linux::init_thread_fpu_state(void) { @@ -260,6 +269,7 @@ int os::Linux::get_fpu_control_word() { ShouldNotCallThis(); + return -1; // silence compile warnings } void os::Linux::set_fpu_control_word(int fpu) {
--- a/src/os_cpu/linux_zero/vm/os_linux_zero.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os_cpu/linux_zero/vm/os_linux_zero.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2007, 2008, 2010 Red Hat, Inc. + * Copyright 2007, 2008, 2010, 2018, Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it
--- a/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -110,6 +110,7 @@ void* ucontext, bool isInJava) { ShouldNotCallThis(); + return false; // silence compile warning } bool pd_get_top_frame_for_profiling(frame* fr_addr,
--- a/src/share/vm/adlc/adlc.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/adlc/adlc.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -85,6 +85,19 @@ #undef max #define max(a, b) (((a)>(b)) ? (a) : (b)) +#if !defined(__clang_major__) && (__GNUC__ >= 7) +#define PRAGMA_DIAG_PUSH _Pragma("GCC diagnostic push") +#define PRAGMA_DIAG_POP _Pragma("GCC diagnostic pop") +#define PRAGMA_FORMAT_OVERFLOW_IGNORED _Pragma("GCC diagnostic ignored \"-Wformat-overflow\"") +#define PRAGMA_FORMAT_OVERFLOW_IGNORED_EXTERNAL PRAGMA_FORMAT_OVERFLOW_IGNORED +#define PRAGMA_FORMAT_OVERFLOW_IGNORED_INTERNAL PRAGMA_FORMAT_OVERFLOW_IGNORED +#else +#define PRAGMA_DIAG_PUSH +#define PRAGMA_DIAG_POP +#define PRAGMA_FORMAT_OVERFLOW_IGNORED_EXTERNAL +#define PRAGMA_FORMAT_OVERFLOW_IGNORED_INTERNAL +#endif + // ADLC components #include "arena.hpp" #include "opto/adlcVMDeps.hpp"
--- a/src/share/vm/adlc/output_c.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/adlc/output_c.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -543,6 +543,8 @@ return (ndx); } +PRAGMA_DIAG_PUSH +PRAGMA_FORMAT_OVERFLOW_IGNORED_EXTERNAL void ArchDesc::build_pipe_classes(FILE *fp_cpp) { const char *classname; const char *resourcename; @@ -999,6 +1001,7 @@ fprintf(fp_cpp, "}\n"); fprintf(fp_cpp, "#endif\n"); } +PRAGMA_DIAG_POP // --------------------------------------------------------------------------- //------------------------------Utilities to build Instruction Classes--------
--- a/src/share/vm/asm/assembler.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/asm/assembler.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -32,7 +32,6 @@ #include "utilities/debug.hpp" #include "utilities/growableArray.hpp" #include "utilities/top.hpp" - #ifdef TARGET_ARCH_x86 # include "register_x86.hpp" # include "vm_version_x86.hpp"
--- a/src/share/vm/asm/codeBuffer.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/asm/codeBuffer.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -977,7 +977,7 @@ for (int n = (int) CodeBuffer::SECT_FIRST; n < (int) CodeBuffer::SECT_LIMIT; n++) { CodeSection* sect = code_section(n); if (!sect->is_allocated() || sect->is_empty()) continue; - xtty->print_cr("<sect index='%d' size='" SIZE_FORMAT "' free='" SIZE_FORMAT "'/>", + xtty->print_cr("<sect index='%d' size='" INTX_FORMAT "' free='" INTX_FORMAT "'/>", n, sect->limit() - sect->start(), sect->limit() - sect->end()); } xtty->print_cr("</blob>");
--- a/src/share/vm/c1/c1_LIRAssembler.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/c1/c1_LIRAssembler.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -30,6 +30,7 @@ #include "c1/c1_MacroAssembler.hpp" #include "c1/c1_ValueStack.hpp" #include "ci/ciInstance.hpp" +#include "runtime/os.hpp" #ifdef TARGET_ARCH_x86 # include "nativeInst_x86.hpp" # include "vmreg_x86.inline.hpp" @@ -883,7 +884,7 @@ stringStream st; st.print("bad oop %s at %d", r->as_Register()->name(), _masm->offset()); #ifdef SPARC - _masm->_verify_oop(r->as_Register(), strdup(st.as_string()), __FILE__, __LINE__); + _masm->_verify_oop(r->as_Register(), os::strdup(st.as_string(), mtCompiler), __FILE__, __LINE__); #else _masm->verify_oop(r->as_Register()); #endif
--- a/src/share/vm/c1/c1_Runtime1.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/c1/c1_Runtime1.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -211,6 +211,7 @@ // All other stubs should have oopmaps default: assert(oop_maps != NULL, "must have an oopmap"); + break; } #endif @@ -218,6 +219,7 @@ sasm->align(BytesPerWord); // make sure all code is in code buffer sasm->flush(); + // create blob - distinguish a few special cases CodeBlob* blob = RuntimeStub::new_runtime_stub(name_for(id), &code, @@ -1134,6 +1136,7 @@ (stub_id == Runtime1::load_klass_patching_id) ? relocInfo::metadata_type : relocInfo::oop_type; + // update relocInfo to metadata nmethod* nm = CodeCache::find_nmethod(instr_pc); assert(nm != NULL, "invalid nmethod_pc");
--- a/src/share/vm/ci/ciField.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/ci/ciField.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -187,6 +187,10 @@ // Even if general trusting is disabled, trust system-built closures in these packages. if (holder->is_in_package("java/lang/invoke") || holder->is_in_package("sun/invoke")) return true; + // Trust VM anonymous classes. They are private API (sun.misc.Unsafe) and can't be serialized, + // so there is no hacking of finals going on with them. + if (holder->is_anonymous()) + return true; // Trust Atomic*FieldUpdaters: they are very important for performance, and make up one // more reason not to use Unsafe, if their final fields are trusted. See more in JDK-8140483. if (holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicIntegerFieldUpdater_Impl() ||
--- a/src/share/vm/ci/ciMethod.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/ci/ciMethod.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1130,6 +1130,7 @@ template bool ciMethod::has_option_value<uintx>(const char* option, uintx& value); template bool ciMethod::has_option_value<bool>(const char* option, bool& value); template bool ciMethod::has_option_value<ccstr>(const char* option, ccstr& value); +template bool ciMethod::has_option_value<double>(const char* option, double& value); // ------------------------------------------------------------------ // ciMethod::can_be_compiled
--- a/src/share/vm/classfile/classLoader.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/classfile/classLoader.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -382,7 +382,7 @@ } LazyClassPathEntry::LazyClassPathEntry(const char* path, const struct stat* st, bool throw_exception) : ClassPathEntry() { - _path = strdup(path); + _path = os::strdup_check_oom(path); _st = *st; _meta_index = NULL; _resolved_entry = NULL; @@ -390,6 +390,10 @@ _throw_exception = throw_exception; } +LazyClassPathEntry::~LazyClassPathEntry() { + os::free((void*) _path); +} + bool LazyClassPathEntry::is_jar_file() { return ((_st.st_mode & S_IFREG) == S_IFREG); } @@ -596,7 +600,7 @@ default: { if (!skipCurrentJar && cur_entry != NULL) { - char* new_name = strdup(package_name); + char* new_name = os::strdup_check_oom(package_name); boot_class_path_packages.append(new_name); } }
--- a/src/share/vm/classfile/classLoader.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/classfile/classLoader.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -134,6 +134,8 @@ bool is_jar_file(); const char* name() { return _path; } LazyClassPathEntry(const char* path, const struct stat* st, bool throw_exception); + virtual ~LazyClassPathEntry(); + u1* open_entry(const char* name, jint* filesize, bool nul_terminate, TRAPS); ClassFileStream* open_stream(const char* name, TRAPS); void set_meta_index(MetaIndex* meta_index) { _meta_index = meta_index; }
--- a/src/share/vm/code/codeCache.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/code/codeCache.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -199,7 +199,7 @@ } if (PrintCodeCacheExtension) { ResourceMark rm; - tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" SSIZE_FORMAT " bytes)", + tty->print_cr("code cache extended to [" INTPTR_FORMAT ", " INTPTR_FORMAT "] (" INTX_FORMAT " bytes)", (intptr_t)_heap->low_boundary(), (intptr_t)_heap->high(), (address)_heap->high() - (address)_heap->low_boundary()); }
--- a/src/share/vm/compiler/compilerOracle.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/compiler/compilerOracle.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -33,6 +33,7 @@ #include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" #include "runtime/jniHandles.hpp" +#include "runtime/os.hpp" class MethodMatcher : public CHeapObj<mtCompiler> { public: @@ -172,6 +173,7 @@ UintxType, BoolType, CcstrType, + DoubleType, UnknownType }; @@ -197,6 +199,10 @@ return CcstrType; } +template<> OptionType get_type_for<double>() { + return DoubleType; +} + template<typename T> static const T copy_value(const T value) { return value; @@ -219,7 +225,7 @@ const T value, MethodMatcher* next) : MethodMatcher(class_name, class_mode, method_name, method_mode, signature, next), _type(get_type_for<T>()), _value(copy_value<T>(value)) { - _option = strdup(opt); + _option = os::strdup_check_oom(opt); } ~TypedMethodOptionMatcher() { @@ -296,6 +302,15 @@ tty->cr(); }; +template<> +void TypedMethodOptionMatcher<double>::print() { + ttyLocker ttyl; + print_base(); + tty->print(" double %s", _option); + tty->print(" = %f", _value); + tty->cr(); +}; + // this must parallel the command_names below enum OracleCommand { UnknownCommand = -1, @@ -389,6 +404,7 @@ template bool CompilerOracle::has_option_value<uintx>(methodHandle method, const char* option, uintx& value); template bool CompilerOracle::has_option_value<bool>(methodHandle method, const char* option, bool& value); template bool CompilerOracle::has_option_value<ccstr>(methodHandle method, const char* option, ccstr& value); +template bool CompilerOracle::has_option_value<double>(methodHandle method, const char* option, double& value); bool CompilerOracle::should_exclude(methodHandle method, bool& quietly) { quietly = true; @@ -606,6 +622,18 @@ } else { jio_snprintf(errorbuf, sizeof(errorbuf), " Value cannot be read for flag %s of type %s", flag, type); } + } else if (strcmp(type, "double") == 0) { + char buffer[2][256]; + // Decimal separator '.' has been replaced with ' ' or '/' earlier, + // so read integer and fraction part of double value separately. + if (sscanf(line, "%*[ \t]%255[0-9]%*[ /\t]%255[0-9]%n", buffer[0], buffer[1], &bytes_read) == 2) { + char value[512] = ""; + jio_snprintf(value, sizeof(value), "%s.%s", buffer[0], buffer[1]); + total_bytes_read += bytes_read; + return add_option_string(c_name, c_match, m_name, m_match, signature, flag, atof(value)); + } else { + jio_snprintf(errorbuf, buf_size, " Value cannot be read for flag %s of type %s", flag, type); + } } else { jio_snprintf(errorbuf, sizeof(errorbuf), " Type %s not supported ", type); } @@ -696,11 +724,10 @@ // (1) CompileCommand=option,Klass::method,flag // (2) CompileCommand=option,Klass::method,type,flag,value // - // Type (1) is used to support ciMethod::has_option("someflag") - // (i.e., to check if a flag "someflag" is enabled for a method). + // Type (1) is used to enable a boolean flag for a method. // // Type (2) is used to support options with a value. Values can have the - // the following types: intx, uintx, bool, ccstr, and ccstrlist. + // the following types: intx, uintx, bool, ccstr, ccstrlist, and double. // // For future extensions: extend scan_flag_and_value() char option[256]; // stores flag for Type (1) and type of Type (2) @@ -718,6 +745,7 @@ || strcmp(option, "bool") == 0 || strcmp(option, "ccstr") == 0 || strcmp(option, "ccstrlist") == 0 + || strcmp(option, "double") == 0 ) { // Type (2) option: parse flag name and value.
--- a/src/share/vm/compiler/oopMap.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/compiler/oopMap.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -33,9 +33,13 @@ #include "memory/resourceArea.hpp" #include "runtime/frame.inline.hpp" #include "runtime/signature.hpp" +#include "utilities/dtrace.hpp" #ifdef COMPILER1 #include "c1/c1_Defs.hpp" #endif +#ifndef USDT2 + HS_DTRACE_PROBE_DECL1(provider, gc__collection__delete, *uintptr_t); +#endif /* !USDT2 */ // OopMapStream @@ -663,6 +667,9 @@ " - Derived: " INTPTR_FORMAT " Base: " INTPTR_FORMAT " (Offset: " INTX_FORMAT ")", p2i(derived_loc), p2i((address)*derived_loc), p2i((address)base), offset); } +#ifndef USDT2 + HS_DTRACE_PROBE1(hotspot, gc__collection__delete, entry); +#endif /* !USDT2 */ // Delete entry delete entry;
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -2676,7 +2676,7 @@ if (ResizeOldPLAB && CMSOldPLABResizeQuicker) { size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks); n_blks += CMSOldPLABReactivityFactor*multiple*n_blks; - n_blks = MIN2(n_blks, CMSOldPLABMax); + n_blks = MIN2(n_blks, (size_t) CMSOldPLABMax); } assert(n_blks > 0, "Error"); _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -63,6 +63,12 @@ #include "runtime/vmThread.hpp" #include "services/memoryService.hpp" #include "services/runtimeService.hpp" +#include "utilities/dtrace.hpp" + +#ifndef USDT2 + HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__begin, bool, bool, size_t, bool); + HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__end, bool, bool, size_t, bool); +#endif /* !USDT2 */ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC @@ -961,7 +967,7 @@ if (free_percentage < desired_free_percentage) { size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); assert(desired_capacity >= capacity(), "invalid expansion size"); - size_t expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes); + size_t expand_bytes = MAX2(desired_capacity - capacity(), (size_t) MinHeapDeltaBytes); if (PrintGCDetails && Verbose) { size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); gclog_or_tty->print_cr("\nFrom compute_new_size: "); @@ -1678,7 +1684,13 @@ size_t size, bool tlab) { +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__contig__begin, full, clear_all_soft_refs, size, tlab); +#endif /* !USDT2 */ collector()->collect(full, clear_all_soft_refs, size, tlab); +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__contig__end, full, clear_all_soft_refs, size, tlab); +#endif /* !USDT2 */ } void CMSCollector::collect(bool full, @@ -6591,7 +6603,7 @@ HeapWord* curAddr = _markBitMap.startWord(); while (curAddr < _markBitMap.endWord()) { size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr); - MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining)); + MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining)); _markBitMap.clear_large_range(chunk); if (ConcurrentMarkSweepThread::should_yield() && !foregroundGCIsActive() && @@ -6889,7 +6901,7 @@ return; } // Double capacity if possible - size_t new_capacity = MIN2(_capacity*2, MarkStackSizeMax); + size_t new_capacity = MIN2(_capacity*2, (size_t) MarkStackSizeMax); // Do not give up existing stack until we have managed to // get the double capacity that we desired. ReservedSpace rs(ReservedSpace::allocation_align_size_up(
--- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -3916,7 +3916,7 @@ // of things to do) or totally (at the very end). size_t target_size; if (partially) { - target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize); + target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t) GCDrainStackTargetSize); } else { target_size = 0; }
--- a/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -78,7 +78,8 @@ size_t num_target_elems = pointer_delta(end, bottom, mapping_granularity_in_bytes); idx_t bias = (uintptr_t)bottom / mapping_granularity_in_bytes; address base = create_new_base_array(num_target_elems, target_elem_size_in_bytes); - initialize_base(base, num_target_elems, bias, target_elem_size_in_bytes, log2_intptr(mapping_granularity_in_bytes)); + initialize_base(base, num_target_elems, bias, target_elem_size_in_bytes, + log2_intptr((uintptr_t) mapping_granularity_in_bytes)); } size_t bias() const { return _bias; }
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1729,7 +1729,7 @@ verify_region_sets_optional(); - size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes); + size_t expand_bytes = MAX2(word_size * HeapWordSize, (size_t) MinHeapDeltaBytes); ergo_verbose1(ErgoHeapSizing, "attempt heap expansion", ergo_format_reason("allocation request failed")
--- a/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -41,7 +41,7 @@ } size_t G1CMObjArrayProcessor::process_array_slice(objArrayOop obj, HeapWord* start_from, size_t remaining) { - size_t words_to_scan = MIN2(remaining, ObjArrayMarkingStride); + size_t words_to_scan = MIN2(remaining, (size_t) ObjArrayMarkingStride); if (remaining > ObjArrayMarkingStride) { push_array_slice(start_from + ObjArrayMarkingStride);
--- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -51,11 +51,16 @@ #include "runtime/thread.hpp" #include "runtime/vmThread.hpp" #include "utilities/copy.hpp" +#include "utilities/dtrace.hpp" #include "utilities/events.hpp" #if INCLUDE_JFR #include "jfr/jfr.hpp" #endif // INCLUDE_JFR +#ifndef USDT2 + HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__begin, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__G1__end, *uintptr_t, *uintptr_t); + #endif /* !USDT2 */ class HeapRegion; void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp, @@ -89,6 +94,9 @@ // The marking doesn't preserve the marks of biased objects. BiasedLocking::preserve_marks(); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__G1__begin, &sh, sh->gc_cause()); +#endif /* !USDT2 */ mark_sweep_phase1(marked_for_unloading, clear_all_softrefs); mark_sweep_phase2(); @@ -104,6 +112,9 @@ BiasedLocking::restore_marks(); GenMarkSweep::deallocate_stacks(); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__G1__end, &sh, sh->gc_cause()); +#endif /* !USDT2 */ // "free at last gc" is calculated from these. // CHF: cheating for now!!! // Universe::set_heap_capacity_at_last_gc(Universe::heap()->capacity());
--- a/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -89,7 +89,7 @@ void pretouch_internal(size_t start_page, size_t end_page); // Returns the index of the page which contains the given address. - uintptr_t addr_to_page_index(char* addr) const; + size_t addr_to_page_index(char* addr) const; // Returns the address of the given page index. char* page_start(size_t index) const;
--- a/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -38,7 +38,7 @@ _cancel(false), _empty(true), _dropped(0) { - _nqueues = MAX2(ParallelGCThreads, (size_t)1); + _nqueues = MAX2((size_t) ParallelGCThreads, (size_t)1); _queues = NEW_C_HEAP_ARRAY(G1StringDedupWorkerQueue, _nqueues, mtGC); for (size_t i = 0; i < _nqueues; i++) { new (_queues + i) G1StringDedupWorkerQueue(G1StringDedupWorkerQueue::default_segment_size(), _max_cache_size, _max_size);
--- a/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -120,7 +120,7 @@ }; G1StringDedupEntryCache::G1StringDedupEntryCache(size_t max_size) : - _nlists(MAX2(ParallelGCThreads, (size_t)1)), + _nlists(MAX2((size_t) ParallelGCThreads, (size_t)1)), _max_list_length(0), _cached(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)), _overflowed(PaddedArray<G1StringDedupEntryList, mtGC>::create_unfreeable((uint)_nlists)) { @@ -597,7 +597,7 @@ " [Table]\n" " [Memory Usage: " G1_STRDEDUP_BYTES_FORMAT_NS "]\n" " [Size: " SIZE_FORMAT ", Min: " SIZE_FORMAT ", Max: " SIZE_FORMAT "]\n" - " [Entries: " UINTX_FORMAT ", Load: " G1_STRDEDUP_PERCENT_FORMAT_NS ", Cached: " UINTX_FORMAT ", Added: " UINTX_FORMAT ", Removed: " UINTX_FORMAT "]\n" + " [Entries: " UINTX_FORMAT ", Load: " G1_STRDEDUP_PERCENT_FORMAT_NS ", Cached: " SIZE_FORMAT ", Added: " UINTX_FORMAT ", Removed: " UINTX_FORMAT "]\n" " [Resize Count: " UINTX_FORMAT ", Shrink Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS "), Grow Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS ")]\n" " [Rehash Count: " UINTX_FORMAT ", Rehash Threshold: " UINTX_FORMAT ", Hash Seed: " UINT64_FORMAT "]\n" " [Age Threshold: " UINTX_FORMAT "]",
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -109,7 +109,7 @@ uintx region_size = G1HeapRegionSize; if (FLAG_IS_DEFAULT(G1HeapRegionSize)) { size_t average_heap_size = (initial_heap_size + max_heap_size) / 2; - region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(), + region_size = MAX2((uintx) (average_heap_size / HeapRegionBounds::target_number()), (uintx) HeapRegionBounds::min_size()); }
--- a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -54,6 +54,12 @@ #include "utilities/copy.hpp" #include "utilities/globalDefinitions.hpp" #include "utilities/workgroup.hpp" +#include "utilities/dtrace.hpp" + +#ifndef USDT2 + HS_DTRACE_PROBE_DECL4(provider, gc__collection__parnew__begin, bool, bool, size_t, bool); + HS_DTRACE_PROBE_DECL4(provider, gc__collection__parnew__end, bool, bool, size_t, bool); +#endif /* !USDT2 */ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC @@ -194,7 +200,7 @@ const size_t num_overflow_elems = of_stack->size(); const size_t space_available = queue->max_elems() - queue->size(); const size_t num_take_elems = MIN3(space_available / 4, - ParGCDesiredObjsFromOverflowList, + (size_t) ParGCDesiredObjsFromOverflowList, num_overflow_elems); // Transfer the most recent num_take_elems from the overflow // stack to our work queue. @@ -914,6 +920,9 @@ bool clear_all_soft_refs, size_t size, bool is_tlab) { +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__parnew__begin, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ assert(full || size > 0, "otherwise we don't want to collect"); GenCollectedHeap* gch = GenCollectedHeap::heap(); @@ -1064,6 +1073,10 @@ gch->print_heap_change(gch_prev_used); } +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__parnew__end, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ + if (PrintGCDetails && ParallelGCVerbose) { TASKQUEUE_STATS_ONLY(thread_state_set.print_termination_stats()); TASKQUEUE_STATS_ONLY(thread_state_set.print_taskqueue_stats());
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -43,8 +43,14 @@ #include "runtime/java.hpp" #include "runtime/vmThread.hpp" #include "services/memTracker.hpp" +#include "utilities/dtrace.hpp" #include "utilities/vmError.hpp" +#ifndef USDT2 + HS_DTRACE_PROBE_DECL2(provider, gc__collection__parscavenge__heap__begin, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__parscavenge__heap__end, *uintptr_t, *uintptr_t); +#endif /* !USDT2 */ + PSYoungGen* ParallelScavengeHeap::_young_gen = NULL; PSOldGen* ParallelScavengeHeap::_old_gen = NULL; PSAdaptiveSizePolicy* ParallelScavengeHeap::_size_policy = NULL; @@ -535,7 +541,13 @@ } VM_ParallelGCSystemGC op(gc_count, full_gc_count, cause); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__parscavenge__heap__begin, &op, cause); +#endif /* !USDT2 */ VMThread::execute(&op); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__parscavenge__heap__end, &op, cause); +#endif /* !USDT2 */ } void ParallelScavengeHeap::oop_iterate(ExtendedOopClosure* cl) {
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -56,6 +56,7 @@ #include "services/management.hpp" #include "services/memoryService.hpp" #include "services/memTracker.hpp" +#include "utilities/dtrace.hpp" #include "utilities/events.hpp" #include "utilities/stack.inline.hpp" #if INCLUDE_JFR @@ -66,6 +67,12 @@ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC +#ifndef USDT2 + HS_DTRACE_PROBE_DECL2(provider, gc__collection__ParallelCompact__clear, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__parallel__collect, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL4(provider, gc__collection__move, *uintptr_t, *uintptr_t, *uintptr_t, *uintptr_t); +#endif /* !USDT2 */ + // All sizes are in HeapWords. const size_t ParallelCompactData::Log2RegionSize = 16; // 64K words const size_t ParallelCompactData::RegionSize = (size_t)1 << Log2RegionSize; @@ -456,6 +463,9 @@ void ParallelCompactData::clear() { +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__ParallelCompact__clear, &_region_data, _region_data->data_location()); +#endif /* !USDT2 */ memset(_region_data, 0, _region_vspace->committed_size()); memset(_block_data, 0, _block_vspace->committed_size()); } @@ -913,8 +923,8 @@ void PSParallelCompact::initialize_dead_wood_limiter() { const size_t max = 100; - _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0; - _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; + _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0; + _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev); DEBUG_ONLY(_dwl_initialized = true;) _dwl_adjustment = normal_distribution(1.0); @@ -1981,6 +1991,9 @@ "should be in vm thread"); ParallelScavengeHeap* heap = gc_heap(); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__parallel__collect, heap, heap->gc_cause()); +#endif /* !USDT2 */ GCCause::Cause gc_cause = heap->gc_cause(); assert(!heap->is_gc_active(), "not reentrant"); @@ -3266,6 +3279,9 @@ // past the end of the partial object entering the region (if any). HeapWord* const dest_addr = sd.partial_obj_end(dp_region); HeapWord* const new_top = _space_info[space_id].new_top(); +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__move, &beg_addr, &end_addr, &dest_addr, &new_top); +#endif /* !USDT2 */ assert(new_top >= dest_addr, "bad new_top value"); const size_t words = pointer_delta(new_top, dest_addr);
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -54,10 +54,20 @@ #include "runtime/vmThread.hpp" #include "runtime/vm_operations.hpp" #include "services/memoryService.hpp" +#include "utilities/dtrace.hpp" #include "utilities/stack.inline.hpp" PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC +#ifndef USDT2 + HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSScavenge__begin, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSScavenge__end, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSParallelCompact__begin, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSParallelCompact__end, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSMarkSweep__begin, *uintptr_t, *uintptr_t); + HS_DTRACE_PROBE_DECL2(provider, gc__collection__PSMarkSweep__end, *uintptr_t, *uintptr_t); +#endif /* !USDT2 */ + HeapWord* PSScavenge::_to_space_top_before_gc = NULL; int PSScavenge::_consecutive_skipped_scavenges = 0; ReferenceProcessor* PSScavenge::_ref_processor = NULL; @@ -229,7 +239,13 @@ PSAdaptiveSizePolicy* policy = heap->size_policy(); IsGCActiveMark mark; +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__PSScavenge__begin, &heap, heap->gc_cause()); +#endif /* !USDT2 */ const bool scavenge_done = PSScavenge::invoke_no_policy(); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__PSScavenge__end, &heap, heap->gc_cause()); +#endif /* !USDT2 */ const bool need_full_gc = !scavenge_done || policy->should_full_GC(heap->old_gen()->free_in_bytes()); bool full_gc_done = false; @@ -246,9 +262,21 @@ const bool clear_all_softrefs = cp->should_clear_all_soft_refs(); if (UseParallelOldGC) { +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__PSParallelCompact__begin, &heap, heap->gc_cause()); +#endif /* !USDT2 */ full_gc_done = PSParallelCompact::invoke_no_policy(clear_all_softrefs); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__PSParallelCompact__end, &heap, heap->gc_cause()); +#endif /* !USDT2 */ } else { +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__PSMarkSweep__begin, &heap, heap->gc_cause()); +#endif /* !USDT2 */ full_gc_done = PSMarkSweep::invoke_no_policy(clear_all_softrefs); +#ifndef USDT2 + HS_DTRACE_PROBE2(hotspot, gc__collection__PSMarkSweep__end, &heap, heap->gc_cause()); +#endif /* !USDT2 */ } }
--- a/src/share/vm/interpreter/cppInterpreterGenerator.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/interpreter/cppInterpreterGenerator.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,5 +1,6 @@ /* * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright 2016 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it
--- a/src/share/vm/interpreter/templateInterpreterGenerator.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/interpreter/templateInterpreterGenerator.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -31,12 +31,14 @@ #ifndef CC_INTERP class TemplateInterpreterGenerator: public AbstractInterpreterGenerator { + protected: // entry points for shared code sequence address _unimplemented_bytecode; address _illegal_bytecode_sequence; + // shared code sequences // Converter for native abi result to tosca result address generate_result_handler_for(BasicType type);
--- a/src/share/vm/memory/blockOffsetTable.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/memory/blockOffsetTable.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -57,7 +57,7 @@ gclog_or_tty->print_cr("BlockOffsetSharedArray::BlockOffsetSharedArray: "); gclog_or_tty->print_cr(" " " rs.base(): " INTPTR_FORMAT - " rs.size(): " INTPTR_FORMAT + " rs.size(): " SIZE_FORMAT " rs end(): " INTPTR_FORMAT, p2i(rs.base()), rs.size(), p2i(rs.base() + rs.size())); gclog_or_tty->print_cr(" "
--- a/src/share/vm/memory/collectorPolicy.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/memory/collectorPolicy.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -385,7 +385,7 @@ uintx calculated_size = NewSize + OldSize; double shrink_factor = (double) MaxHeapSize / calculated_size; uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment); - FLAG_SET_ERGO(uintx, NewSize, MAX2(young_gen_size_lower_bound(), smaller_new_size)); + FLAG_SET_ERGO(uintx, NewSize, MAX2((uintx) young_gen_size_lower_bound(), smaller_new_size)); _initial_gen0_size = NewSize; // OldSize is already aligned because above we aligned MaxHeapSize to @@ -423,7 +423,7 @@ // Determine maximum size of gen0 - size_t max_new_size = 0; + uintx max_new_size = 0; if (!FLAG_IS_DEFAULT(MaxNewSize)) { max_new_size = MaxNewSize; } else { @@ -448,7 +448,7 @@ _initial_gen0_size = max_new_size; _max_gen0_size = max_new_size; } else { - size_t desired_new_size = 0; + uintx desired_new_size = 0; if (FLAG_IS_CMDLINE(NewSize)) { // If NewSize is set on the command line, we must use it as // the initial size and it also makes sense to use it as the @@ -461,7 +461,7 @@ // limit, but use NewRatio to calculate the initial size. _min_gen0_size = NewSize; desired_new_size = - MAX2(scale_by_NewRatio_aligned(_initial_heap_byte_size), NewSize); + MAX2((uintx) (scale_by_NewRatio_aligned(_initial_heap_byte_size)), NewSize); max_new_size = MAX2(max_new_size, NewSize); } else { // For the case where NewSize is the default, use NewRatio @@ -469,9 +469,9 @@ // Use the default NewSize as the floor for these values. If // NewRatio is overly large, the resulting sizes can be too // small. - _min_gen0_size = MAX2(scale_by_NewRatio_aligned(_min_heap_byte_size), NewSize); + _min_gen0_size = MAX2((uintx) (scale_by_NewRatio_aligned(_min_heap_byte_size)), NewSize); desired_new_size = - MAX2(scale_by_NewRatio_aligned(_initial_heap_byte_size), NewSize); + MAX2((uintx) (scale_by_NewRatio_aligned(_initial_heap_byte_size)), NewSize); } assert(_min_gen0_size > 0, "Sanity check"); @@ -573,7 +573,7 @@ } else { // It's been explicitly set on the command line. Use the // OldSize and then determine the consequences. - _min_gen1_size = MIN2(OldSize, _min_heap_byte_size - _min_gen0_size); + _min_gen1_size = MIN2(OldSize, (uintx) (_min_heap_byte_size - _min_gen0_size)); _initial_gen1_size = OldSize; // If the user has explicitly set an OldSize that is inconsistent @@ -1056,7 +1056,8 @@ size_t expected = msp.scale_by_NewRatio_aligned(initial_heap_size); assert(msp.initial_gen0_size() == expected, err_msg("%zu != %zu", msp.initial_gen0_size(), expected)); assert(FLAG_IS_ERGO(NewSize) && NewSize == expected, - err_msg("NewSize should have been set ergonomically to %zu, but was %zu", expected, NewSize)); + err_msg("NewSize should have been set ergonomically to " SIZE_FORMAT ", but was " UINTX_FORMAT, + expected, NewSize)); } private:
--- a/src/share/vm/memory/defNewGeneration.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/memory/defNewGeneration.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -45,10 +45,16 @@ #include "runtime/prefetch.inline.hpp" #include "runtime/thread.inline.hpp" #include "utilities/copy.hpp" +#include "utilities/dtrace.hpp" #include "utilities/stack.inline.hpp" PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC +#ifndef USDT2 + HS_DTRACE_PROBE_DECL4(provider, gc__collection__defnew__begin, bool, bool, size_t, bool); + HS_DTRACE_PROBE_DECL4(provider, gc__collection__defnew__end, bool, bool, size_t, bool); +#endif /* !USDT2 */ + // // DefNewGeneration functions. @@ -561,6 +567,9 @@ bool clear_all_soft_refs, size_t size, bool is_tlab) { +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__defnew__begin, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ assert(full || size > 0, "otherwise we don't want to collect"); GenCollectedHeap* gch = GenCollectedHeap::heap(); @@ -709,6 +718,10 @@ jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; update_time_of_last_gc(now); +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__defnew__end, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ + gch->trace_heap_after_gc(&gc_tracer); gc_tracer.report_tenuring_threshold(tenuring_threshold());
--- a/src/share/vm/memory/generation.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/memory/generation.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -41,10 +41,16 @@ #include "oops/oop.inline.hpp" #include "runtime/java.hpp" #include "utilities/copy.hpp" +#include "utilities/dtrace.hpp" #include "utilities/events.hpp" PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC +#ifndef USDT2 + HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__begin, bool, bool, size_t, bool); + HS_DTRACE_PROBE_DECL4(provider, gc__collection__contig__end, bool, bool, size_t, bool); +#endif /* !USDT2 */ + Generation::Generation(ReservedSpace rs, size_t initial_size, int level) : _level(level), _ref_processor(NULL) { @@ -642,7 +648,13 @@ SerialOldTracer* gc_tracer = GenMarkSweep::gc_tracer(); gc_tracer->report_gc_start(gch->gc_cause(), gc_timer->gc_start()); +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__contig__begin, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ GenMarkSweep::invoke_at_safepoint(_level, ref_processor(), clear_all_soft_refs); +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__contig__end, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ gc_timer->register_gc_end();
--- a/src/share/vm/memory/metaspace.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/memory/metaspace.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1482,7 +1482,7 @@ void MetaspaceGC::post_initialize() { // Reset the high-water mark once the VM initialization is done. - _capacity_until_GC = MAX2(MetaspaceAux::committed_bytes(), MetaspaceSize); + _capacity_until_GC = MAX2(MetaspaceAux::committed_bytes(), (size_t) MetaspaceSize); } bool MetaspaceGC::can_expand(size_t word_size, bool is_class) { @@ -1542,7 +1542,7 @@ (size_t)MIN2(min_tmp, double(MaxMetaspaceSize)); // Don't shrink less than the initial generation size minimum_desired_capacity = MAX2(minimum_desired_capacity, - MetaspaceSize); + (size_t) MetaspaceSize); if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: "); @@ -1600,7 +1600,7 @@ const double max_tmp = used_after_gc / minimum_used_percentage; size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(MaxMetaspaceSize)); maximum_desired_capacity = MAX2(maximum_desired_capacity, - MetaspaceSize); + (size_t) MetaspaceSize); if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr(" " " maximum_free_percentage: %6.2f" @@ -3361,7 +3361,7 @@ // on the medium chunk list. The next chunk will be small and progress // from there. This size calculated by -version. _first_class_chunk_word_size = MIN2((size_t)MediumChunk*6, - (CompressedClassSpaceSize/BytesPerWord)*2); + (size_t) ((CompressedClassSpaceSize/BytesPerWord)*2)); _first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size); // Arbitrarily set the initial virtual space to a multiple // of the boot class loader size.
--- a/src/share/vm/memory/tenuredGeneration.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/memory/tenuredGeneration.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -32,11 +32,17 @@ #include "memory/tenuredGeneration.hpp" #include "oops/oop.inline.hpp" #include "runtime/java.hpp" +#include "utilities/dtrace.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS #include "gc_implementation/shared/parGCAllocBuffer.hpp" #endif +#ifndef USDT2 + HS_DTRACE_PROBE_DECL4(provider, gc__collection__tenured__begin, bool, bool, size_t, bool); + HS_DTRACE_PROBE_DECL4(provider, gc__collection__tenured__end, bool, bool, size_t, bool); +#endif /* !USDT2 */ + TenuredGeneration::TenuredGeneration(ReservedSpace rs, size_t initial_byte_size, int level, GenRemSet* remset) : @@ -154,8 +160,14 @@ size_t size, bool is_tlab) { retire_alloc_buffers_before_full_gc(); +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__tenured__begin, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ OneContigSpaceCardGeneration::collect(full, clear_all_soft_refs, size, is_tlab); +#ifndef USDT2 + HS_DTRACE_PROBE4(hotspot, gc__collection__tenured__end, full, clear_all_soft_refs, size, is_tlab); +#endif /* !USDT2 */ } void TenuredGeneration::compute_new_size() {
--- a/src/share/vm/oops/method.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/oops/method.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -90,7 +90,6 @@ // | signature_handler (present only if native) | // |------------------------------------------------------| - class CheckedExceptionElement; class LocalVariableTableElement; class AdapterHandlerEntry;
--- a/src/share/vm/oops/objArrayKlass.inline.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/oops/objArrayKlass.inline.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -48,7 +48,7 @@ const size_t beg_index = size_t(index); assert(beg_index < len || len == 0, "index too large"); - const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); + const size_t stride = MIN2(len - beg_index, (size_t) ObjArrayMarkingStride); const size_t end_index = beg_index + stride; T* const base = (T*)a->base(); T* const beg = base + beg_index; @@ -82,7 +82,7 @@ const size_t beg_index = size_t(index); assert(beg_index < len || len == 0, "index too large"); - const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); + const size_t stride = MIN2(len - beg_index, (size_t) ObjArrayMarkingStride); const size_t end_index = beg_index + stride; T* const base = (T*)a->base(); T* const beg = base + beg_index;
--- a/src/share/vm/opto/runtime.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/opto/runtime.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1571,11 +1571,11 @@ } NamedCounter* c; if (tag == NamedCounter::BiasedLockingCounter) { - c = new BiasedLockingNamedCounter(strdup(st.as_string())); + c = new BiasedLockingNamedCounter(st.as_string()); } else if (tag == NamedCounter::RTMLockingCounter) { - c = new RTMLockingNamedCounter(strdup(st.as_string())); + c = new RTMLockingNamedCounter(st.as_string()); } else { - c = new NamedCounter(strdup(st.as_string()), tag); + c = new NamedCounter(st.as_string(), tag); } // atomically add the new counter to the head of the list. We only
--- a/src/share/vm/opto/runtime.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/opto/runtime.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -74,11 +74,17 @@ public: NamedCounter(const char *n, CounterTag tag = NoTag): - _name(n), + _name(n == NULL ? NULL : os::strdup(n)), _count(0), _next(NULL), _tag(tag) {} + ~NamedCounter() { + if (_name != NULL) { + os::free((void*)_name); + } + } + const char * name() const { return _name; } int count() const { return _count; } address addr() { return (address)&_count; }
--- a/src/share/vm/prims/jvm.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/prims/jvm.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1171,7 +1171,6 @@ return (jclass) JNIHandles::make_local(env, k->java_mirror()); } - JVM_ENTRY(jclass, JVM_DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd)) JVMWrapper2("JVM_DefineClass %s", name);
--- a/src/share/vm/prims/jvmtiTagMap.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/prims/jvmtiTagMap.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -2806,6 +2806,7 @@ } // verify that a static oop field is in range +#ifdef ASSERT static inline bool verify_static_oop(InstanceKlass* ik, oop mirror, int offset) { address obj_p = (address)mirror + offset; @@ -2819,6 +2820,7 @@ return false; } } +#endif // a class references its super class, interfaces, class loader, ... // and finally its static fields
--- a/src/share/vm/prims/methodHandles.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/prims/methodHandles.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1,5 +1,6 @@ /* * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright 2016 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +32,10 @@ #include "runtime/globals.hpp" #include "runtime/interfaceSupport.hpp" +#ifdef TARGET_ARCH_zero +#include "entry_zero.hpp" +#endif + class MacroAssembler; class Label;
--- a/src/share/vm/prims/unsafe.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/prims/unsafe.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -377,6 +377,24 @@ #endif // not SUPPORTS_NATIVE_CX8 +UNSAFE_ENTRY(jboolean, Unsafe_isBigEndian0(JNIEnv *env, jobject unsafe)) + UnsafeWrapper("Unsafe_IsBigEndian0"); + { +#ifdef VM_LITTLE_ENDIAN + return false; +#else + return true; +#endif + } +UNSAFE_END + +UNSAFE_ENTRY(jint, Unsafe_unalignedAccess0(JNIEnv *env, jobject unsafe)) + UnsafeWrapper("Unsafe_UnalignedAccess0"); + { + return UseUnalignedAccesses; + } +UNSAFE_END + #define DEFINE_GETSETOOP(jboolean, Boolean) \ \ UNSAFE_ENTRY(jboolean, Unsafe_Get##Boolean##140(JNIEnv *env, jobject unsafe, jobject obj, jint offset)) \ @@ -706,6 +724,36 @@ Copy::conjoint_memory_atomic(src, dst, sz); UNSAFE_END +// This function is a leaf since if the source and destination are both in native memory +// the copy may potentially be very large, and we don't want to disable GC if we can avoid it. +// If either source or destination (or both) are on the heap, the function will enter VM using +// JVM_ENTRY_FROM_LEAF +JVM_LEAF(void, Unsafe_CopySwapMemory0(JNIEnv *env, jobject unsafe, jobject srcObj, jlong srcOffset, jobject dstObj, jlong dstOffset, jlong size, jlong elemSize)) { + UnsafeWrapper("Unsafe_CopySwapMemory0"); + + size_t sz = (size_t)size; + size_t esz = (size_t)elemSize; + + if (srcObj == NULL && dstObj == NULL) { + // Both src & dst are in native memory + address src = (address)srcOffset; + address dst = (address)dstOffset; + + Copy::conjoint_swap(src, dst, sz, esz); + } else { + // At least one of src/dst are on heap, transition to VM to access raw pointers + + JVM_ENTRY_FROM_LEAF(env, void, Unsafe_CopySwapMemory0) { + oop srcp = JNIHandles::resolve(srcObj); + oop dstp = JNIHandles::resolve(dstObj); + + address src = (address)index_oop_from_field_offset_long(srcp, srcOffset); + address dst = (address)index_oop_from_field_offset_long(dstp, dstOffset); + + Copy::conjoint_swap(src, dst, sz, esz); + } JVM_END + } +} JVM_END ////// Random queries @@ -1674,7 +1722,8 @@ }; JNINativeMethod memcopy_methods_17[] = { - {CC "copyMemory", CC "(" OBJ "J" OBJ "JJ)V", FN_PTR(Unsafe_CopyMemory2)}, + {CC "copyMemory", CC "(" OBJ "J" OBJ "JJ)V", FN_PTR(Unsafe_CopyMemory2)}, + {CC "copySwapMemory0", CC "(" OBJ "J" OBJ "JJJ)V", FN_PTR(Unsafe_CopySwapMemory0)}, {CC "setMemory", CC "(" OBJ "JJB)V", FN_PTR(Unsafe_SetMemory2)} }; @@ -1695,6 +1744,9 @@ {CC "loadFence", CC "()V", FN_PTR(Unsafe_LoadFence)}, {CC "storeFence", CC "()V", FN_PTR(Unsafe_StoreFence)}, {CC "fullFence", CC "()V", FN_PTR(Unsafe_FullFence)}, + + {CC "isBigEndian0", CC"()Z", FN_PTR(Unsafe_isBigEndian0)}, + {CC "unalignedAccess0", CC"()Z", FN_PTR(Unsafe_unalignedAccess0)} }; #undef CC
--- a/src/share/vm/runtime/arguments.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/arguments.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -817,7 +817,7 @@ } else { *bldarray = REALLOC_C_HEAP_ARRAY(char*, *bldarray, new_count, mtInternal); } - (*bldarray)[*count] = strdup(arg); + (*bldarray)[*count] = os::strdup_check_oom(arg); *count = new_count; } @@ -1292,7 +1292,7 @@ (ParallelGCThreads == 0 ? 1 : ParallelGCThreads); const size_t preferred_max_new_size_unaligned = MIN2(max_heap/(NewRatio+1), ScaleForWordSize(young_gen_per_worker * parallel_gc_threads)); - size_t preferred_max_new_size = + uintx preferred_max_new_size = (uintx) align_size_up(preferred_max_new_size_unaligned, os::vm_page_size()); // Unless explicitly requested otherwise, size young gen @@ -1312,18 +1312,18 @@ } if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty - tty->print_cr("CMS ergo set MaxNewSize: " SIZE_FORMAT, MaxNewSize); + tty->print_cr("CMS ergo set MaxNewSize: " UINTX_FORMAT, MaxNewSize); } // Code along this path potentially sets NewSize and OldSize if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty - tty->print_cr("CMS set min_heap_size: " SIZE_FORMAT - " initial_heap_size: " SIZE_FORMAT + tty->print_cr("CMS set min_heap_size: " UINTX_FORMAT + " initial_heap_size: " UINTX_FORMAT " max_heap: " SIZE_FORMAT, min_heap_size(), InitialHeapSize, max_heap); } - size_t min_new = preferred_max_new_size; + uintx min_new = preferred_max_new_size; if (FLAG_IS_CMDLINE(NewSize)) { min_new = NewSize; } @@ -1335,17 +1335,17 @@ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize)); if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty - tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize); + tty->print_cr("CMS ergo set NewSize: " UINTX_FORMAT, NewSize); } } // Unless explicitly requested otherwise, size old gen // so it's NewRatio x of NewSize. if (FLAG_IS_DEFAULT(OldSize)) { if (max_heap > NewSize) { - FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, max_heap - NewSize)); + FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, (uintx) (max_heap - NewSize))); if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty - tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize); + tty->print_cr("CMS ergo set OldSize: " UINTX_FORMAT, OldSize); } } } @@ -1542,7 +1542,6 @@ #endif // ZERO } - // NOTE: set_use_compressed_klass_ptrs() must be called after calling // set_use_compressed_oops(). void Arguments::set_use_compressed_klass_ptrs() { @@ -1906,7 +1905,7 @@ if (PrintGCDetails && Verbose) { // Cannot use gclog_or_tty yet. - tty->print_cr(" Initial heap size " SIZE_FORMAT, (uintx)reasonable_initial); + tty->print_cr(" Initial heap size " SIZE_FORMAT, (size_t)reasonable_initial); } FLAG_SET_ERGO(uintx, InitialHeapSize, (uintx)reasonable_initial); } @@ -1916,7 +1915,7 @@ set_min_heap_size(MIN2((uintx)reasonable_minimum, InitialHeapSize)); if (PrintGCDetails && Verbose) { // Cannot use gclog_or_tty yet. - tty->print_cr(" Minimum heap size " SIZE_FORMAT, min_heap_size()); + tty->print_cr(" Minimum heap size " UINTX_FORMAT, min_heap_size()); } } } @@ -2080,7 +2079,7 @@ } void Arguments::process_java_launcher_argument(const char* launcher, void* extra_info) { - _sun_java_launcher = strdup(launcher); + _sun_java_launcher = os::strdup_check_oom(launcher); if (strcmp("gamma", _sun_java_launcher) == 0) { _created_by_gamma_launcher = true; } @@ -2636,11 +2635,11 @@ "Invalid ReservedCodeCacheSize=%dK. Must be at least %uK.\n", ReservedCodeCacheSize/K, min_code_cache_size/K); status = false; - } else if (ReservedCodeCacheSize > 2*G) { - // Code cache size larger than MAXINT is not supported. + } else if (ReservedCodeCacheSize > CODE_CACHE_SIZE_LIMIT) { + // Code cache size larger than CODE_CACHE_SIZE_LIMIT is not supported. jio_fprintf(defaultStream::error_stream(), "Invalid ReservedCodeCacheSize=%dM. Must be at most %uM.\n", ReservedCodeCacheSize/M, - (2*G)/M); + CODE_CACHE_SIZE_LIMIT/M); status = false; } @@ -3225,7 +3224,7 @@ // Redirect GC output to the file. -Xloggc:<filename> // ostream_init_log(), when called will use this filename // to initialize a fileStream. - _gc_log_filename = strdup(tail); + _gc_log_filename = os::strdup_check_oom(tail); if (!is_filename_valid(_gc_log_filename)) { jio_fprintf(defaultStream::output_stream(), "Invalid file name for use with -Xloggc: Filename can only contain the " @@ -3481,7 +3480,7 @@ src ++; } - char* copy = os::strdup(src, mtInternal); + char* copy = os::strdup_check_oom(src, mtInternal); // trim all trailing empty paths for (char* tail = copy + strlen(copy) - 1; tail >= copy && *tail == separator; tail--) { @@ -3867,7 +3866,7 @@ jvm_path, os::file_separator()); } } else { - shared_archive_path = os::strdup(SharedArchiveFile, mtInternal); + shared_archive_path = os::strdup_check_oom(SharedArchiveFile, mtInternal); } return shared_archive_path; }
--- a/src/share/vm/runtime/biasedLocking.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/biasedLocking.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -151,8 +151,13 @@ if (!mark->has_bias_pattern()) { if (TraceBiasedLocking) { ResourceMark rm; - tty->print_cr(" (Skipping revocation of object of type %s because it's no longer biased)", - obj->klass()->external_name()); + tty->print_cr(" (Skipping revocation of object " INTPTR_FORMAT + ", mark " INTPTR_FORMAT ", type %s" + ", requesting thread " INTPTR_FORMAT + " because it's no longer biased)", + p2i((void *)obj), (intptr_t) mark, + obj->klass()->external_name(), + (intptr_t) requesting_thread); } return BiasedLocking::NOT_BIASED; } @@ -163,8 +168,15 @@ if (TraceBiasedLocking && (Verbose || !is_bulk)) { ResourceMark rm; - tty->print_cr("Revoking bias of object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s , prototype header " INTPTR_FORMAT " , allow rebias %d , requesting thread " INTPTR_FORMAT, - p2i((void *)obj), (intptr_t) mark, obj->klass()->external_name(), (intptr_t) obj->klass()->prototype_header(), (allow_rebias ? 1 : 0), (intptr_t) requesting_thread); + tty->print_cr("Revoking bias of object " INTPTR_FORMAT ", mark " + INTPTR_FORMAT ", type %s, prototype header " INTPTR_FORMAT + ", allow rebias %d, requesting thread " INTPTR_FORMAT, + p2i((void *)obj), + (intptr_t) mark, + obj->klass()->external_name(), + (intptr_t) obj->klass()->prototype_header(), + (allow_rebias ? 1 : 0), + (intptr_t) requesting_thread); } JavaThread* biased_thread = mark->biased_locker(); @@ -200,11 +212,17 @@ obj->set_mark(unbiased_prototype); } if (TraceBiasedLocking && (Verbose || !is_bulk)) { - tty->print_cr(" Revoked bias of object biased toward dead thread"); + tty->print_cr(" Revoked bias of object biased toward dead thread (" + PTR_FORMAT ")", p2i(biased_thread)); } return BiasedLocking::BIAS_REVOKED; } + if (TraceBiasedLocking && (Verbose || !is_bulk)) { + tty->print_cr(" Revoked bias of object biased toward live thread (" + PTR_FORMAT ")", p2i(biased_thread)); + } + // Thread owning bias is alive. // Check to see whether it currently owns the lock and, if so, // write down the needed displaced headers to the thread's stack.
--- a/src/share/vm/runtime/fprofiler.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/fprofiler.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -628,10 +628,16 @@ } vmNode(const char* name, const TickPosition where) : ProfilerNode() { - _name = name; + _name = os::strdup(name); update(where); } + ~vmNode() { + if (_name != NULL) { + os::free((void*)_name); + } + } + const char *name() const { return _name; } bool is_compiled() const { return true; } @@ -783,7 +789,7 @@ assert(index >= 0, "Must be positive"); // Note that we call strdup below since the symbol may be resource allocated if (!table[index]) { - table[index] = new (this) vmNode(os::strdup(name), where); + table[index] = new (this) vmNode(name, where); } else { ProfilerNode* prev = table[index]; for(ProfilerNode* node = prev; node; node = node->next()) { @@ -793,7 +799,7 @@ } prev = node; } - prev->set_next(new (this) vmNode(os::strdup(name), where)); + prev->set_next(new (this) vmNode(name, where)); } }
--- a/src/share/vm/runtime/globals.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/globals.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -453,7 +453,7 @@ // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version // A flag must be declared with one of the following types: -// bool, intx, uintx, ccstr. +// bool, intx, uintx, ccstr, double, or uint64_t. // The type "ccstr" is an alias for "const char*" and is used // only in this file, because the macrology requires single-token type names. @@ -4004,6 +4004,9 @@ "Allocation less than this value will be allocated " \ "using malloc. Larger allocations will use mmap.") \ \ + diagnostic(bool, UseUnalignedAccesses, false, \ + "Use unaligned memory accesses in sun.misc.Unsafe") \ + \ product_pd(bool, PreserveFramePointer, \ "Use the FP register for holding the frame pointer " \ "and not as a general purpose register.") \
--- a/src/share/vm/runtime/mutex.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/mutex.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -283,16 +283,6 @@ return x & 0x7FFFFFFF ; } -static inline jint MarsagliaXOR (jint * const a) { - jint x = *a ; - if (x == 0) x = UNS(a)|1 ; - x ^= x << 6; - x ^= ((unsigned)x) >> 21; - x ^= x << 7 ; - *a = x ; - return x & 0x7FFFFFFF ; -} - static int Stall (int its) { static volatile jint rv = 1 ; volatile int OnFrame = 0 ;
--- a/src/share/vm/runtime/objectMonitor.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/objectMonitor.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -929,7 +929,7 @@ // ~~~~~~~~ // ::exit() uses a canonical 1-1 idiom with a MEMBAR although some of // the fast-path operators have been optimized so the common ::exit() -// operation is 1-0. See i486.ad fast_unlock(), for instance. +// operation is 1-0, e.g., see macroAssembler_x86.cpp: fast_unlock(). // The code emitted by fast_unlock() elides the usual MEMBAR. This // greatly improves latency -- MEMBAR and CAS having considerable local // latency on modern processors -- but at the cost of "stranding". Absent the @@ -942,7 +942,7 @@ // // The CAS() in enter provides for safety and exclusion, while the CAS or // MEMBAR in exit provides for progress and avoids stranding. 1-0 locking -// eliminates the CAS/MEMBAR from the exist path, but it admits stranding. +// eliminates the CAS/MEMBAR from the exit path, but it admits stranding. // We detect and recover from stranding with timers. // // If a thread transiently strands it'll park until (a) another
--- a/src/share/vm/runtime/os.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/os.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -552,6 +552,14 @@ } +char* os::strdup_check_oom(const char* str, MEMFLAGS flags) { + char* p = os::strdup(str, flags); + if (p == NULL) { + vm_exit_out_of_memory(strlen(str) + 1, OOM_MALLOC_ERROR, "os::strdup_check_oom"); + } + return p; +} + #define paranoid 0 /* only set to 1 if you suspect checking code has bug */ @@ -1274,12 +1282,13 @@ } void os::set_memory_serialize_page(address page) { - int count = log2_intptr(sizeof(class JavaThread)) - log2_int(64); + int count = log2_intptr((uintptr_t) sizeof(class JavaThread)) - log2_int(64); _mem_serialize_page = (volatile int32_t *)page; // We initialize the serialization page shift count here // We assume a cache line size of 64 bytes assert(SerializePageShiftCount == count, - "thread size changed, fix SerializePageShiftCount constant"); + err_msg("JavaThread size changed; " + "SerializePageShiftCount constant should be %d", count)); set_serialize_page_mask((uintptr_t)(vm_page_size() - sizeof(int32_t))); }
--- a/src/share/vm/runtime/os.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/os.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -730,6 +730,8 @@ static void free (void *memblock, MEMFLAGS flags = mtNone); static bool check_heap(bool force = false); // verify C heap integrity static char* strdup(const char *, MEMFLAGS flags = mtInternal); // Like strdup + // Like strdup, but exit VM when strdup() returns NULL + static char* strdup_check_oom(const char*, MEMFLAGS flags = mtInternal); #ifndef PRODUCT static julong num_mallocs; // # of calls to malloc/realloc
--- a/src/share/vm/runtime/sharedRuntime.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/sharedRuntime.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -2957,7 +2957,7 @@ Method* moop = fr.interpreter_frame_method(); int max_locals = moop->max_locals(); // Allocate temp buffer, 1 word per local & 2 per active monitor - int buf_size_words = max_locals + active_monitor_count*2; + int buf_size_words = max_locals + active_monitor_count * BasicObjectLock::size(); intptr_t *buf = NEW_C_HEAP_ARRAY(intptr_t,buf_size_words, mtCode); // Copy the locals. Order is preserved so that loading of longs works.
--- a/src/share/vm/runtime/synchronizer.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/synchronizer.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -184,38 +184,52 @@ } void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) { - assert(!object->mark()->has_bias_pattern(), "should not see bias pattern here"); - // if displaced header is null, the previous enter is recursive enter, no-op + markOop mark = object->mark(); + // We cannot check for Biased Locking if we are racing an inflation. + assert(mark == markOopDesc::INFLATING() || + !mark->has_bias_pattern(), "should not see bias pattern here"); + markOop dhw = lock->displaced_header(); - markOop mark ; if (dhw == NULL) { - // Recursive stack-lock. - // Diagnostics -- Could be: stack-locked, inflating, inflated. - mark = object->mark() ; - assert (!mark->is_neutral(), "invariant") ; - if (mark->has_locker() && mark != markOopDesc::INFLATING()) { - assert(THREAD->is_lock_owned((address)mark->locker()), "invariant") ; + // If the displaced header is NULL, then this exit matches up with + // a recursive enter. No real work to do here except for diagnostics. +#ifndef PRODUCT + if (mark != markOopDesc::INFLATING()) { + // Only do diagnostics if we are not racing an inflation. Simply + // exiting a recursive enter of a Java Monitor that is being + // inflated is safe; see the has_monitor() comment below. + assert(!mark->is_neutral(), "invariant"); + assert(!mark->has_locker() || + THREAD->is_lock_owned((address)mark->locker()), "invariant"); + if (mark->has_monitor()) { + // The BasicLock's displaced_header is marked as a recursive + // enter and we have an inflated Java Monitor (ObjectMonitor). + // This is a special case where the Java Monitor was inflated + // after this thread entered the stack-lock recursively. When a + // Java Monitor is inflated, we cannot safely walk the Java + // Monitor owner's stack and update the BasicLocks because a + // Java Monitor can be asynchronously inflated by a thread that + // does not own the Java Monitor. + ObjectMonitor * m = mark->monitor(); + assert(((oop)(m->object()))->mark() == mark, "invariant"); + assert(m->is_entered(THREAD), "invariant"); + } } - if (mark->has_monitor()) { - ObjectMonitor * m = mark->monitor() ; - assert(((oop)(m->object()))->mark() == mark, "invariant") ; - assert(m->is_entered(THREAD), "invariant") ; - } - return ; +#endif + return; } - mark = object->mark() ; - - // If the object is stack-locked by the current thread, try to - // swing the displaced header from the box back to the mark. if (mark == (markOop) lock) { - assert (dhw->is_neutral(), "invariant") ; - if ((markOop) Atomic::cmpxchg_ptr (dhw, object->mark_addr(), mark) == mark) { - TEVENT (fast_exit: release stacklock) ; - return; - } + // If the object is stack-locked by the current thread, try to + // swing the displaced header from the BasicLock back to the mark. + assert (dhw->is_neutral(), "invariant") ; + if ((markOop) Atomic::cmpxchg_ptr(dhw, object->mark_addr(), mark) == mark) { + TEVENT(fast_exit: release stack-lock); + return; + } } + // We have to take the slow-path of possible inflation and then exit. ObjectSynchronizer::inflate(THREAD, object)->exit (true, THREAD) ; }
--- a/src/share/vm/runtime/vmStructs.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/runtime/vmStructs.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -51,6 +51,7 @@ #include "interpreter/bytecodes.hpp" #include "interpreter/interpreter.hpp" #include "memory/allocation.hpp" +#include "memory/allocation.inline.hpp" #include "memory/cardTableRS.hpp" #include "memory/defNewGeneration.hpp" #include "memory/freeBlockDictionary.hpp" @@ -92,6 +93,7 @@ #include "runtime/globals.hpp" #include "runtime/java.hpp" #include "runtime/javaCalls.hpp" +#include "runtime/os.hpp" #include "runtime/perfMemory.hpp" #include "runtime/serviceThread.hpp" #include "runtime/sharedRuntime.hpp" @@ -3284,14 +3286,14 @@ } } if (strstr(typeName, " const") == typeName + len - 6) { - char * s = strdup(typeName); + char * s = os::strdup_check_oom(typeName); s[len - 6] = '\0'; // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); if (recursiveFindType(origtypes, s, true) == 1) { - free(s); + os::free(s); return 1; } - free(s); + os::free(s); } if (!isRecurse) { tty->print_cr("type \"%s\" not found", typeName);
--- a/src/share/vm/services/management.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/services/management.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -1819,7 +1819,7 @@ ResourceMark rm(THREAD); // thread->name() uses ResourceArea assert(thread->name() != NULL, "All threads should have a name"); - _names_chars[_count] = strdup(thread->name()); + _names_chars[_count] = os::strdup(thread->name()); _times->long_at_put(_count, os::is_thread_cpu_time_supported() ? os::thread_cpu_time(thread) : -1); _count++; @@ -1837,7 +1837,7 @@ ThreadTimesClosure::~ThreadTimesClosure() { for (int i = 0; i < _count; i++) { - free(_names_chars[i]); + os::free(_names_chars[i]); } FREE_C_HEAP_ARRAY(char *, _names_chars, mtInternal); }
--- a/src/share/vm/shark/sharkBuilder.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/shark/sharkBuilder.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -413,7 +413,7 @@ const char *name; if (value->hasName()) // XXX this leaks, but it's only debug code - name = strdup(value->getName().str().c_str()); + name = os::strdup(value->getName().str().c_str()); else name = "unnamed_value";
--- a/src/share/vm/utilities/copy.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/utilities/copy.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -64,8 +64,8 @@ * @param elem_size size of the elements to copy-swap */ static void conjoint_swap(address src, address dst, size_t byte_count, size_t elem_size) { - assert(src != NULL, "address must not be NULL"); - assert(dst != NULL, "address must not be NULL"); + assert(src != NULL, err_msg("address must not be NULL")); + assert(dst != NULL, err_msg("address must not be NULL")); assert(elem_size == 2 || elem_size == 4 || elem_size == 8, err_msg("incorrect element size: " SIZE_FORMAT, elem_size)); assert(is_size_aligned(byte_count, elem_size),
--- a/src/share/vm/utilities/globalDefinitions.hpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/utilities/globalDefinitions.hpp Sun Apr 25 18:18:49 2021 +0100 @@ -1449,12 +1449,21 @@ #define INTPTR_FORMAT_W(width) "%" #width PRIxPTR +#if defined(S390) && !defined(_LP64) +#define SSIZE_FORMAT "%z" PRIdPTR +#define SIZE_FORMAT "%z" PRIuPTR +#define SIZE_FORMAT_HEX "0x%z" PRIxPTR +#define SSIZE_FORMAT_W(width) "%" #width "z" PRIdPTR +#define SIZE_FORMAT_W(width) "%" #width "z" PRIuPTR +#define SIZE_FORMAT_HEX_W(width) "0x%" #width "z" PRIxPTR +#else // !S390 #define SSIZE_FORMAT "%" PRIdPTR #define SIZE_FORMAT "%" PRIuPTR #define SIZE_FORMAT_HEX "0x%" PRIxPTR #define SSIZE_FORMAT_W(width) "%" #width PRIdPTR #define SIZE_FORMAT_W(width) "%" #width PRIuPTR #define SIZE_FORMAT_HEX_W(width) "0x%" #width PRIxPTR +#endif // S390 #define INTX_FORMAT "%" PRIdPTR #define UINTX_FORMAT "%" PRIuPTR
--- a/src/share/vm/utilities/vmError.cpp Mon Mar 01 20:02:58 2021 +0000 +++ b/src/share/vm/utilities/vmError.cpp Sun Apr 25 18:18:49 2021 +0100 @@ -202,7 +202,8 @@ static void print_bug_submit_message(outputStream *out, Thread *thread) { if (out == NULL) return; - out->print_raw_cr("# If you would like to submit a bug report, please visit:"); + out->print_raw_cr("# If you would like to submit a bug report, please include"); + out->print_raw_cr("# instructions on how to reproduce the bug and visit:"); out->print_raw ("# "); out->print_raw_cr(Arguments::java_vendor_url_bug()); // If the crash is in native code, encourage user to submit a bug to the @@ -497,6 +498,13 @@ UseCompressedOops ? "compressed oops" : "" ); +#ifdef DERIVATIVE_ID + st->print_cr("# Derivative: %s", DERIVATIVE_ID); +#endif +#ifdef DISTRIBUTION_ID + st->print_cr("# Distribution: %s", DISTRIBUTION_ID); +#endif + STEP(60, "(printing problematic frame)") // Print current frame if we have a context (i.e. it's a crash)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/compiler/oracle/CheckCompileCommandOption.java Sun Apr 25 18:18:49 2021 +0100 @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import com.oracle.java.testlibrary.*; + +/* + * @test CheckCompileCommandOption + * @bug 8055286 8056964 8059847 + * @summary "Checks parsing of -XX:+CompileCommand=option" + * @library /testlibrary + * @run main CheckCompileCommandOption + */ + +public class CheckCompileCommandOption { + + // Currently, two types of trailing options can be used with + // -XX:CompileCommand=option + // + // (1) CompileCommand=option,Klass::method,flag + // (2) CompileCommand=option,Klass::method,type,flag,value + // + // Type (1) is used to enable a boolean flag for a method. + // + // Type (2) is used to support flags with a value. Values can + // have the the following types: intx, uintx, bool, ccstr, + // ccstrlist, and double. + + private static final String[][] TYPE_1_ARGUMENTS = { + { + "-XX:CompileCommand=option,com/oracle/Test.test,MyBoolOption1", + "-XX:CompileCommand=option,com/oracle/Test,test,MyBoolOption2", + "-XX:CompileCommand=option,com.oracle.Test::test,MyBoolOption3", + "-XX:CompileCommand=option,com/oracle/Test::test,MyBoolOption4", + "-version" + }, + { + "-XX:CompileCommand=option,com/oracle/Test.test,MyBoolOption1,MyBoolOption2", + "-version" + }, + { + "-XX:CompileCommand=option,com/oracle/Test,test,MyBoolOption1,MyBoolOption2", + "-version" + } + }; + + private static final String[][] TYPE_1_EXPECTED_OUTPUTS = { + { + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption1 = true", + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption2 = true", + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption3 = true", + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption4 = true" + }, + { + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption1 = true", + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption2 = true", + }, + { + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption1 = true", + "CompilerOracle: option com/oracle/Test.test bool MyBoolOption2 = true", + } + }; + + private static final String[][] TYPE_2_ARGUMENTS = { + { + "-XX:CompileCommand=option,Test::test,ccstrlist,MyListOption,_foo,_bar", + "-XX:CompileCommand=option,Test::test,ccstr,MyStrOption,_foo", + "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false", + "-XX:CompileCommand=option,Test::test,intx,MyIntxOption,-1", + "-XX:CompileCommand=option,Test::test,uintx,MyUintxOption,1", + "-XX:CompileCommand=option,Test::test,MyFlag", + "-XX:CompileCommand=option,Test::test,double,MyDoubleOption,1.123", + "-version" + }, + { + "-XX:CompileCommand=option,Test.test,double,MyDoubleOption,1.123", + "-version" + }, + { + "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx,MyIntxOption,-1,uintx,MyUintxOption,1,MyFlag,double,MyDoubleOption,1.123", + "-version" + } + }; + + private static final String[][] TYPE_2_EXPECTED_OUTPUTS = { + { + "CompilerOracle: option Test.test const char* MyListOption = '_foo _bar'", + "CompilerOracle: option Test.test const char* MyStrOption = '_foo'", + "CompilerOracle: option Test.test bool MyBoolOption = false", + "CompilerOracle: option Test.test intx MyIntxOption = -1", + "CompilerOracle: option Test.test uintx MyUintxOption = 1", + "CompilerOracle: option Test.test bool MyFlag = true", + "CompilerOracle: option Test.test double MyDoubleOption = 1.123000" + }, + { + "CompilerOracle: option Test.test double MyDoubleOption = 1.123000" + }, + { + "CompilerOracle: option Test.test bool MyBoolOption = false", + "CompilerOracle: option Test.test intx MyIntxOption = -1", + "CompilerOracle: option Test.test uintx MyUintxOption = 1", + "CompilerOracle: option Test.test bool MyFlag = true", + "CompilerOracle: option Test.test double MyDoubleOption = 1.123000", + } + }; + + private static final String[][] TYPE_2_INVALID_ARGUMENTS = { + { + // bool flag name missing + "-XX:CompileCommand=option,Test::test,bool", + "-version" + }, + { + // bool flag value missing + "-XX:CompileCommand=option,Test::test,bool,MyBoolOption", + "-version" + }, + { + // wrong value for bool flag + "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,100", + "-version" + }, + { + // intx flag name missing + "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx", + "-version" + }, + { + // intx flag value missing + "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx,MyIntOption", + "-version" + }, + { + // wrong value for intx flag + "-XX:CompileCommand=option,Test::test,bool,MyBoolOption,false,intx,MyIntOption,true", + "-version" + }, + { + // wrong value for flag double flag + "-XX:CompileCommand=option,Test::test,double,MyDoubleOption,1", + "-version" + } + }; + + private static void verifyValidOption(String[] arguments, String[] expected_outputs) throws Exception { + ProcessBuilder pb; + OutputAnalyzer out; + + pb = ProcessTools.createJavaProcessBuilder(arguments); + out = new OutputAnalyzer(pb.start()); + + for (String expected_output : expected_outputs) { + out.shouldContain(expected_output); + } + + out.shouldNotContain("CompilerOracle: unrecognized line"); + out.shouldHaveExitValue(0); + } + + private static void verifyInvalidOption(String[] arguments) throws Exception { + ProcessBuilder pb; + OutputAnalyzer out; + + pb = ProcessTools.createJavaProcessBuilder(arguments); + out = new OutputAnalyzer(pb.start()); + + out.shouldContain("CompilerOracle: unrecognized line"); + out.shouldHaveExitValue(0); + } + + public static void main(String[] args) throws Exception { + + if (TYPE_1_ARGUMENTS.length != TYPE_1_EXPECTED_OUTPUTS.length) { + throw new RuntimeException("Test is set up incorrectly: length of arguments and expected outputs for type (1) options does not match."); + } + + if (TYPE_2_ARGUMENTS.length != TYPE_2_EXPECTED_OUTPUTS.length) { + throw new RuntimeException("Test is set up incorrectly: length of arguments and expected outputs for type (2) options does not match."); + } + + // Check if type (1) options are parsed correctly + for (int i = 0; i < TYPE_1_ARGUMENTS.length; i++) { + verifyValidOption(TYPE_1_ARGUMENTS[i], TYPE_1_EXPECTED_OUTPUTS[i]); + } + + // Check if type (2) options are parsed correctly + for (int i = 0; i < TYPE_2_ARGUMENTS.length; i++) { + verifyValidOption(TYPE_2_ARGUMENTS[i], TYPE_2_EXPECTED_OUTPUTS[i]); + } + + // Check if error is reported for invalid type (2) options + // (flags with type information specified) + for (String[] arguments: TYPE_2_INVALID_ARGUMENTS) { + verifyInvalidOption(arguments); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java Sun Apr 25 18:18:49 2021 +0100 @@ -0,0 +1,315 @@ +/* + * Copyright (c) 2016 SAP SE. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8158260 + * @summary Test unaligned Unsafe accesses + * @modules java.base/jdk.internal.misc + * @run main/othervm -Diters=20000 -XX:-UseOnStackReplacement -XX:-BackgroundCompilation JdkInternalMiscUnsafeUnalignedAccess + * @author volker.simonis@gmail.com + */ + +import java.lang.reflect.Field; +import java.nio.ByteOrder; +import sun.misc.Unsafe; + +public class JdkInternalMiscUnsafeUnalignedAccess { + static final int ITERS = Integer.getInteger("iters", 20_000); + private static final boolean BIG_ENDIAN = ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN); + private static final Unsafe UNSAFE; + private static final int SIZE = 1024; + private static long memory; + + static { + try { + Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + UNSAFE = (Unsafe) unsafeField.get(null); + } + catch (Exception e) { + throw new RuntimeException("Unable to get Unsafe instance.", e); + } + } + + static int getInt_0() { + return UNSAFE.getInt(memory + 0); + } + static int getInt_1() { + return UNSAFE.getInt(memory + 1); + } + static int getInt_4() { + return UNSAFE.getInt(memory + 4); + } + static int getInt_17() { + return UNSAFE.getInt(memory + 17); + } + + static long getIntAsLong_0() { + return UNSAFE.getInt(memory + 0); + } + static long getIntAsLong_1() { + return UNSAFE.getInt(memory + 1); + } + static long getIntAsLong_4() { + return UNSAFE.getInt(memory + 4); + } + static long getIntAsLong_17() { + return UNSAFE.getInt(memory + 17); + } + + static long getLong_0() { + return UNSAFE.getLong(memory + 0); + } + static long getLong_1() { + return UNSAFE.getLong(memory + 1); + } + static long getLong_4() { + return UNSAFE.getLong(memory + 4); + } + static long getLong_8() { + return UNSAFE.getLong(memory + 8); + } + static long getLong_17() { + return UNSAFE.getLong(memory + 17); + } + + static void putInt_0(int i) { + UNSAFE.putInt(memory + 0, i); + } + static void putInt_1(int i) { + UNSAFE.putInt(memory + 1, i); + } + static void putInt_4(int i) { + UNSAFE.putInt(memory + 4, i); + } + static void putInt_17(int i) { + UNSAFE.putInt(memory + 17, i); + } + + static void putLong_0(long l) { + UNSAFE.putLong(memory + 0, l); + } + static void putLong_1(long l) { + UNSAFE.putLong(memory + 1, l); + } + static void putLong_4(long l) { + UNSAFE.putLong(memory + 4, l); + } + static void putLong_8(long l) { + UNSAFE.putLong(memory + 8, l); + } + static void putLong_17(long l) { + UNSAFE.putLong(memory + 17, l); + } + + public static void main(String[] args) throws Exception { + + if (!UNSAFE.unalignedAccess()) { + System.out.println("Platform is not supporting unaligned access - nothing to test."); + return; + } + + memory = UNSAFE.allocateMemory(SIZE); + + UNSAFE.putInt(memory + 0, 0x00112233); + UNSAFE.putInt(memory + 4, 0x44556677); + UNSAFE.putInt(memory + 8, 0x8899aabb); + UNSAFE.putInt(memory + 12, 0xccddeeff); + UNSAFE.putInt(memory + 16, 0x01234567); + UNSAFE.putInt(memory + 20, 0x89abcdef); + UNSAFE.putInt(memory + 24, 0x01234567); + + // Unsafe.getInt() + int res; + for (int i = 0; i < ITERS; i++) { + res = getInt_0(); + if (res != 0x00112233) { + throw new Exception(res + " != 0x00112233"); + } + } + + for (int i = 0; i < ITERS; i++) { + res = getInt_1(); + if (res != (BIG_ENDIAN ? 0x11223344 : 0x77001122)) { + throw new Exception(res + " != " + (BIG_ENDIAN ? 0x11223344 : 0x77001122)); + } + } + + for (int i = 0; i < ITERS; i++) { + res = getInt_4(); + if (res != 0x44556677) { + throw new Exception(res + " != 0x44556677"); + } + } + + for (int i = 0; i < ITERS; i++) { + res = getInt_17(); + if (res != (BIG_ENDIAN ? 0x23456789 : 0xef012345)) { + throw new Exception(res + " != " + (BIG_ENDIAN ? 0x23456789 : 0xef012345)); + } + } + + // (long)Unsafe.getInt() + long lres; + for (int i = 0; i < ITERS; i++) { + lres = getIntAsLong_0(); + if (lres != (long)0x00112233) { + throw new Exception(lres + " != 0x00112233"); + } + } + + for (int i = 0; i < ITERS; i++) { + lres = getIntAsLong_1(); + if (lres != (BIG_ENDIAN ? (long)0x11223344 : (long)0x77001122)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? (long)0x11223344 : (long)0x77001122)); + } + } + + for (int i = 0; i < ITERS; i++) { + lres = getIntAsLong_4(); + if (lres != (long)0x44556677) { + throw new Exception(lres + " != 0x44556677"); + } + } + + for (int i = 0; i < ITERS; i++) { + lres = getIntAsLong_17(); + if (lres != (BIG_ENDIAN ? (long)0x23456789 : (long)0xef012345)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? (long)0x23456789 : (long)0xef012345)); + } + } + + // Unsafe.getLong() + for (int i = 0; i < ITERS; i++) { + lres = getLong_0(); + if (lres != (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)); + } + } + + for (int i = 0; i < ITERS; i++) { + lres = getLong_1(); + if (lres != (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)); + } + } + + for (int i = 0; i < ITERS; i++) { + lres = getLong_4(); + if (lres != (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)); + } + } + + for (int i = 0; i < ITERS; i++) { + lres = getLong_8(); + if (lres != (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)); + } + } + + for (int i = 0; i < ITERS; i++) { + lres = getLong_17(); + if (lres != (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)); + } + } + + // Unsafe.putInt() + for (int i = 0; i < ITERS; i++) { + putInt_0(0x00112233); + res = getInt_0(); + if (res != 0x00112233) { + throw new Exception(res + " != 0x00112233"); + } + } + + for (int i = 0; i < ITERS; i++) { + putInt_1(BIG_ENDIAN ? 0x11223344 : 0x77001122); + res = getInt_1(); + if (res != (BIG_ENDIAN ? 0x11223344 : 0x77001122)) { + throw new Exception(res + " != " + (BIG_ENDIAN ? 0x11223344 : 0x77001122)); + } + } + + for (int i = 0; i < ITERS; i++) { + putInt_4(0x44556677); + res = getInt_4(); + if (res != 0x44556677) { + throw new Exception(res + " != 0x44556677"); + } + } + + for (int i = 0; i < ITERS; i++) { + putInt_17(BIG_ENDIAN ? 0x23456789 : 0xef012345); + res = getInt_17(); + if (res != (BIG_ENDIAN ? 0x23456789 : 0xef012345)) { + throw new Exception(res + " != " + (BIG_ENDIAN ? 0x23456789 : 0xef012345)); + } + } + + + // Unsafe.putLong() + for (int i = 0; i < ITERS; i++) { + putLong_0(BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L); + lres = getLong_0(); + if (lres != (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x0011223344556677L : 0x4455667700112233L)); + } + } + + for (int i = 0; i < ITERS; i++) { + putLong_1(BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L); + lres = getLong_1(); + if (lres != (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x1122334455667788L : 0xbb44556677001122L)); + } + } + + for (int i = 0; i < ITERS; i++) { + putLong_4(BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L); + lres = getLong_4(); + if (lres != (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x445566778899aabbL : 0x8899aabb44556677L)); + } + } + + for (int i = 0; i < ITERS; i++) { + putLong_8(BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL); + lres = getLong_8(); + if (lres != (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x8899aabbccddeeffL : 0xccddeeff8899aabbL)); + } + } + + for (int i = 0; i < ITERS; i++) { + putLong_17(BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L); + lres = getLong_17(); + if (lres != (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)) { + throw new Exception(lres + " != " + (BIG_ENDIAN ? 0x23456789abcdef01L : 0x6789abcdef012345L)); + } + } + } + +}
--- a/test/gc/metaspace/TestPerfCountersAndMemoryPools.java Mon Mar 01 20:02:58 2021 +0000 +++ b/test/gc/metaspace/TestPerfCountersAndMemoryPools.java Sun Apr 25 18:18:49 2021 +0100 @@ -33,8 +33,8 @@ * @requires vm.gc=="Serial" | vm.gc=="null" * @summary Tests that a MemoryPoolMXBeans and PerfCounters for metaspace * report the same data. - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedKlassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedKlassPointers -XX:+UseSerialGC -XX:+UsePerfData -Xint TestPerfCountersAndMemoryPools + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops -XX:-UseCompressedClassPointers -XX:+UseSerialGC -XX:+UsePerfData TestPerfCountersAndMemoryPools + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UseSerialGC -XX:+UsePerfData TestPerfCountersAndMemoryPools */ public class TestPerfCountersAndMemoryPools { public static void main(String[] args) throws Exception {