752 Commits

Author SHA1 Message Date
Vladimir Kozlov
02d586e13e 8259398: Super word not applied to a loop with byteArrayViewVarHandle
Reviewed-by: vlivanov, thartmann, chagedorn
2021-02-01 15:48:10 +00:00
Christian Hagedorn
aec037721c 8257498: Remove useless skeleton predicates
Reviewed-by: roland, thartmann
2021-02-01 09:39:31 +00:00
Vladimir Kozlov
6415d3b82b 8259584: SuperWord::fix_commutative_inputs checks in_bb(fin1) instead of in_bb(fin2)
Reviewed-by: shade
2021-01-29 16:16:14 +00:00
Igor Veresov
1519632597 8251462: Simplify compilation policy
Reviewed-by: cjplummer, kvn
2021-01-28 20:51:12 +00:00
Roland Westrelin
11d6467c50 8260407: cmp != __null && cmp->Opcode() == Op_CmpL failure with -XX:StressLongCountedLoop=200000000 in lucene
Reviewed-by: thartmann, kvn
2021-01-28 12:27:40 +00:00
Ioi Lam
396a496f3c 8260467: Move well-known classes from systemDictionary.hpp to vmClasses.hpp
Reviewed-by: dholmes, coleenp
2021-01-28 04:24:04 +00:00
Jesper Wilhelmsson
62ffe75b1f Merge 2021-01-28 03:38:32 +00:00
Jesper Wilhelmsson
c52212b146 Merge 2021-01-27 20:56:26 +00:00
Roberto Castañeda Lozano
f353fcf256 8258894: C2: Forbid GCM to move stores into loops
Prevent GCM from placing memory-writing nodes (such as stores) into loops deeper
than their home loop (determined by their control input). Such placements are
invalid, as they cause memory definitions to interfere, and risk causing
miscompilations. This change complements JDK-8255763, which only addresses
invalid placements in irreducible CFGs.

Add control input to stores in generated stubs to ensure that all memory-writing
nodes have control inputs from which their home block can be derived.

Add a battery of simplified fuzzer test cases where, before this change, GCM
moves stores into deeper loops.

Reviewed-by: thartmann, kvn
2021-01-27 15:08:39 +00:00
Vladimir Ivanov
e28e11119d 8260370: C2: LoopLimit node is not eliminated
Reviewed-by: kvn, thartmann
2021-01-27 10:29:59 +00:00
Thomas Stuefe
1c77046811 8260404: jvm_io.h include missing in a number of files
Reviewed-by: shade, iklam, dholmes
2021-01-27 07:34:46 +00:00
Xin Liu
19b6f61bd2 8260334: Remove deprecated sv_for_node_id() from Compile
Reviewed-by: neliasso, chagedorn, thartmann, phh
2021-01-26 20:52:19 +00:00
Vladimir Ivanov
81e730e5f1 8259276: C2: Empty expression stack when reexecuting tableswitch/lookupswitch instructions after deoptimization
Reviewed-by: dlong, kvn, thartmann
2021-01-25 20:02:56 +00:00
Christian Hagedorn
c5ab7c3214 8260284: C2: assert(_base == Int) failed: Not an Int
Reviewed-by: thartmann, kvn
2021-01-25 17:09:52 +00:00
Thomas Stuefe
ca20c63c04 8259710: Inlining trace leaks memory
Reviewed-by: thartmann, neliasso
2021-01-25 10:50:39 +00:00
Yasumasa Suenaga
09489e28bd 8260338: Some fields in HaltNode is not cloned
Reviewed-by: xliu, neliasso, thartmann
2021-01-25 09:12:49 +00:00
Dan Lemmond
7be9113b1c 8255216: Change _directive->BreakAtCompileOption to env()->break_at_compile()
Reviewed-by: kvn, phh
2021-01-22 20:33:44 +00:00
Jesper Wilhelmsson
a1a851b6db Merge 2021-01-19 05:43:27 +00:00
Xin Liu
533a2d398b 8258961: move some fields of SafePointNode from public to protected
Reviewed-by: thartmann, kvn
2021-01-18 22:34:05 +00:00
Roman Kennke
e60c992699 8259849: Shenandoah: Rename store-val to IU-barrier
Reviewed-by: zgu, shade
2021-01-18 15:29:54 +00:00
Roland Westrelin
d5ca3b3fd5 8259641: C2: assert(early->dominates(LCA)) failed: early is high enough
Reviewed-by: chagedorn, thartmann
2021-01-18 07:54:48 +00:00
Jesper Wilhelmsson
d701babb06 Merge 2021-01-15 03:10:55 +00:00
Vladimir Ivanov
0148adf20e 8255120: C2: assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis
Reviewed-by: thartmann
2021-01-14 17:18:44 +00:00
Tobias Hartmann
8b8b1f9a37 8259706: C2 compilation fails with assert(vtable_index == Method::invalid_vtable_index) failed: correct sentinel value
Reviewed-by: lucy, chagedorn
2021-01-14 07:23:09 +00:00
Hao Sun
5513f9893b 8258010: Debug build failure with clang-10 due to -Wdeprecated-copy
Reviewed-by: xliu, kvn, kbarrett
2021-01-14 04:11:20 +00:00
Jesper Wilhelmsson
51e14f2e2a Merge 2021-01-14 01:29:47 +00:00
Nils Eliasson
5567530916 8258272: LoadVectorMaskedNode can't be replaced by zero con
Reviewed-by: chagedorn, vlivanov
2021-01-13 09:16:08 +00:00
Roberto Castañeda Lozano
417e1d1a4e 8259061: C2: assert(found) failed: memory-writing node is not placed in its original loop or an ancestor of it
Remove assertion that is too general, that is, it can fail on compilations where
C2 generates correct code otherwise.

Reviewed-by: chagedorn, thartmann, kvn
2021-01-13 07:22:30 +00:00
Xiaohong Gong
1cf2378bda 8259353: VectorReinterpretNode is incorrectly optimized out
Reviewed-by: vlivanov, njian
2021-01-13 05:48:08 +00:00
Aleksey Shipilev
4697cfa4b0 8259576: Misplaced curly brace in Matcher::find_shared_post_visit
Reviewed-by: lucy, thartmann
2021-01-12 10:52:36 +00:00
Christian Hagedorn
a3561ae8a4 8258243: C2: assert failed ("Bad derived pointer") with -XX:+VerifyRegisterAllocator
Reviewed-by: kvn, thartmann
2021-01-12 08:18:45 +00:00
Harold Seigel
cf3e4bfdb5 8258838: Remove JVM option UseStackBanging
Reviewed-by: dholmes, coleenp, kvn
2021-01-11 18:18:13 +00:00
Jesper Wilhelmsson
56a354eb55 Merge 2021-01-07 23:51:21 +00:00
Jesper Wilhelmsson
555641ede5 Merge 2021-01-07 21:17:35 +00:00
Roberto Castañeda Lozano
bc56541424 8256535: C2: randomize CCP processing order for stress testing
Add 'StressCCP' option to randomize the selection of the node to be examined in
each CCP iteration.

Reviewed-by: chagedorn, kvn, thartmann
2021-01-07 20:43:48 +00:00
Roberto Castañeda Lozano
d8ad63019a 8258772: Some runtime/cds tests fail with +LogCompilation or +StressX
Emit warning about TraceDependencies results in
ClassHierarchyWalker::count_find_witness_calls() only if TraceDependencies is
actually enabled. Use standard warning() function instead of ad hoc printing.
Remove warning about using Stress(LCM|GCM|IGVN) without LogCompilation in
Compile::Compile(), and add the information to the description of the StressSeed
option instead. These changes prevent false test failures when using
LogCompilation or Stress(LCM|GCM|IGVN).

Reviewed-by: chagedorn, kvn, thartmann
2021-01-07 18:57:58 +00:00
Christian Hagedorn
c1fb521694 8259227: C2 crashes with SIGFPE due to a division that floats above its zero check
Reviewed-by: kvn, thartmann
2021-01-07 15:02:45 +00:00
Tobias Hartmann
0e6de4eb57 8259339: AllocateUninitializedArray C2 intrinsic fails with void.class input
Reviewed-by: kvn, chagedorn
2021-01-07 12:15:23 +00:00
Aleksey Shipilev
ad45678719 8258558: Revert changes for JDK-8252505 and related issues
Reviewed-by: kvn
2021-01-06 13:27:57 +00:00
Wang Huang
554e60c400 8258989: JVM is failed to inline in jdk.internal.vm.vector.VectorSupport::convert
Co-authored-by: He Xuejin <hexuejin2@huawei.com>
Reviewed-by: vlivanov, thartmann
2021-01-06 01:49:15 +00:00
Roland Westrelin
6775113ce8 8258393: Shenandoah: "graph should be schedulable" assert failure
Reviewed-by: rkennke, thartmann
2021-01-05 13:06:54 +00:00
Christian Hagedorn
9f1516492c 8259049: Uninitialized variable after JDK-8257513
Reviewed-by: kvn, thartmann
2021-01-05 09:54:18 +00:00
Hao Sun
dd8996c5f5 8258946: Fix optimization-unstable code involving signed integer overflow
Reviewed-by: thartmann, kvn
2021-01-05 07:31:44 +00:00
Ioi Lam
5ea960728c 8258459: Decouple gc_globals.hpp from globals.hpp
Reviewed-by: lfoltan, coleenp
2021-01-05 05:57:08 +00:00
Claes Redestad
9d160aa1b7 8257815: Replace global log2 functions with efficient implementations
Reviewed-by: kbarrett, stefank
2021-01-04 21:01:25 +00:00
Jesper Wilhelmsson
f2bad3a0be Merge 2020-12-22 21:16:59 +00:00
Vladimir Ivanov
772addfd24 8258790: C2: Crash on empty macro node list
Reviewed-by: kvn, chagedorn
2020-12-22 12:12:21 +00:00
Xin Liu
30b9ff660f 8258653: CallJavaNode::_bci is not in use
Reviewed-by: kvn, vlivanov
2020-12-21 23:27:33 +00:00
Roberto Castañeda Lozano
4e8338eb13 8255763: C2: OSR miscompilation caused by invalid memory instruction placement
Disable GCM hoisting of memory-writing nodes for irreducible CFGs. This prevents
GCM from wrongly "hoisting" stores into descendants of their original loop. Such
an "inverted hoisting" can happen due to CFGLoop::compute_freq()'s inaccurate
estimation of frequencies for irreducible CFGs.

Extend CFG verification code by checking that memory-writing nodes are placed in
either their original loop or an ancestor.

Add tests for the reducible and irreducible cases. The former was already
handled correctly before the change (the frequency estimation model prevents
"inverted hoisting" for reducible CFGs), and is just added for coverage.

This change addresses the specific miscompilation issue in a conservative way,
for simplicity and safety. Future work includes investigating if only the
illegal blocks can be discarded as candidates for GCM hoisting, and refining
frequency estimation for irreducible CFGs.

Reviewed-by: kvn, chagedorn
2020-12-21 13:04:24 +00:00
Christian Hagedorn
8e42efaada 8257513: C2: assert((constant_addr - _masm.code()->consts()->start()) == con.offset())
Reviewed-by: kvn, thartmann
2020-12-21 08:06:48 +00:00