Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
9f220f4
8327012
eme64 Mar 13, 2024
5f8e5bf
test4
eme64 Mar 13, 2024
5041f64
initializing store capturing: test stub
eme64 Apr 24, 2024
dfa5da2
more tests, WIP
eme64 Apr 25, 2024
125f970
fix & extra tests
rwestrel Mar 19, 2025
71fd831
whitespace
rwestrel Apr 10, 2025
a4031f3
TestIterativeEA fix
rwestrel Apr 10, 2025
c32e453
Update test/hotspot/jtreg/compiler/macronodes/TestEliminationOfAlloca…
rwestrel Apr 24, 2025
082dcb5
Update src/hotspot/share/opto/multnode.hpp
rwestrel Apr 24, 2025
7139deb
Update src/hotspot/share/opto/escape.cpp
rwestrel Apr 24, 2025
469d8a5
Update src/hotspot/share/opto/multnode.hpp
rwestrel Apr 24, 2025
1639264
Update test/hotspot/jtreg/compiler/macronodes/TestInitializingStoreCa…
rwestrel Apr 24, 2025
377a8d7
Update test/hotspot/jtreg/compiler/macronodes/TestEliminationOfAlloca…
rwestrel Apr 24, 2025
a32b1d2
Update src/hotspot/share/opto/escape.cpp
rwestrel Apr 24, 2025
7afc47e
Update src/hotspot/share/opto/escape.cpp
rwestrel Apr 24, 2025
17517ae
review
rwestrel Apr 24, 2025
f22471c
review
rwestrel Apr 24, 2025
a401bed
review
rwestrel Apr 25, 2025
624d69e
review
rwestrel Apr 25, 2025
6134c97
review
rwestrel May 5, 2025
6a01123
more
rwestrel May 9, 2025
a76430b
more
rwestrel May 9, 2025
9f3b9cf
more
rwestrel May 12, 2025
02b43b7
more
rwestrel May 12, 2025
50e9437
more
rwestrel May 12, 2025
23035e0
more
rwestrel May 13, 2025
80d562a
more
rwestrel May 13, 2025
d5a2738
more
rwestrel May 14, 2025
af8480c
typo
rwestrel May 15, 2025
080638c
Merge branch 'master' into JDK-8327963
rwestrel May 15, 2025
616678f
Merge branch 'master' into JDK-8327963
rwestrel May 21, 2025
2a451c6
new test
rwestrel May 21, 2025
a6c6c04
new test tweak
rwestrel May 21, 2025
43c6f82
review
rwestrel May 22, 2025
c0a8ad2
Update src/hotspot/share/opto/library_call.cpp
rwestrel Jun 3, 2025
4b656f2
Merge branch 'master' into JDK-8327963
rwestrel Jun 3, 2025
24ff0e2
lambda clean up
rwestrel Jun 3, 2025
c189a7a
lambda return
rwestrel Jun 3, 2025
69c6e50
more
rwestrel Jun 4, 2025
3b5b54a
more
rwestrel Jun 5, 2025
ec9f278
Merge branch 'master' into JDK-8327963
rwestrel Aug 26, 2025
f528ce8
more
rwestrel Aug 27, 2025
fc13578
more
rwestrel Aug 28, 2025
b066f3c
Merge branch 'master' into JDK-8327963
rwestrel Sep 9, 2025
b701d03
more
rwestrel Sep 9, 2025
c64d68c
Update test/hotspot/jtreg/compiler/macronodes/TestEliminationOfAlloca…
rwestrel Sep 22, 2025
0ff5c45
Update src/hotspot/share/opto/multnode.hpp
rwestrel Sep 22, 2025
46972dc
Update src/hotspot/share/opto/multnode.hpp
rwestrel Sep 22, 2025
917ea91
Update src/hotspot/share/opto/graphKit.cpp
rwestrel Sep 22, 2025
2207487
Update src/hotspot/share/opto/graphKit.cpp
rwestrel Sep 22, 2025
f871390
Update src/hotspot/share/opto/macro.cpp
rwestrel Sep 22, 2025
6ea8c81
Update src/hotspot/share/opto/macro.cpp
rwestrel Sep 22, 2025
9fd8dc1
review
rwestrel Sep 22, 2025
f12efbc
Roberto's patches
rwestrel Sep 29, 2025
48257c9
review
rwestrel Sep 29, 2025
b5ac753
Merge branch 'master' into JDK-8327963
rwestrel Oct 28, 2025
957be06
review
rwestrel Oct 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/hotspot/share/opto/graphKit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3642,9 +3642,9 @@ Node* GraphKit::set_output_for_allocation(AllocateNode* alloc,
Node* minit_out = memory(rawidx);
assert(minit_out->is_Proj() && minit_out->in(0) == init, "");
int mark_idx = C->get_alias_index(oop_type->add_offset(oopDesc::mark_offset_in_bytes()));
// Add an edge in the MergeMem for the header fields so an access to one of those has correct memory state
// Add an edge in the MergeMem for the header fields so an access to one of those has correct memory state.
// Use one NarrowMemProjNode per slice to properly record the adr type of each slice. The Initialize node will have
// multiple projection as a result.
// multiple projections as a result.
set_memory(_gvn.transform(new NarrowMemProjNode(init, C->get_adr_type(mark_idx))), mark_idx);
int klass_idx = C->get_alias_index(oop_type->add_offset(oopDesc::klass_offset_in_bytes()));
set_memory(_gvn.transform(new NarrowMemProjNode(init, C->get_adr_type(klass_idx))), klass_idx);
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/opto/macro.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1620,12 +1620,12 @@ void PhaseMacroExpand::expand_initialize_membar(AllocateNode* alloc, InitializeN

Node* init_ctrl = init->proj_out_or_null(TypeFunc::Control);

// What we want is to prevent the compiler and the cpu from re-ordering the stores that initialize this object
// What we want is to prevent the compiler and the CPU from re-ordering the stores that initialize this object
// with subsequent stores to any slice. As a consequence, this MemBar should capture the entire memory state at
// this point in the IR and produce a new memory state that should cover all slices. However, the Initialize node
// only captures/produces a partial memory state making it complicated to insert such a MemBar. Because
// re-ordering by the compiler can't happen by construction (a later Store that publishes the just allocated
// object reference is indirectly control dependent on the Initialize node), preventing reordering by the cpu is
// object reference is indirectly control dependent on the Initialize node), preventing reordering by the CPU is
// sufficient. For that a MemBar on the raw memory slice is good enough.
MemBarNode* mb = MemBarNode::make(C, Op_MemBarStoreStore, Compile::AliasIdxRaw);
transform_later(mb);
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/opto/multnode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class MultiNode : public Node {
_i++;
}
Node* current() {
return _node->fast_out(_i);;
return _node->fast_out(_i);
}
UsesIteratorFast(DUIterator_Fast& imax, DUIterator_Fast& i, const Node* node)
: _imax(imax), _i(i), _node(node) {
Expand All @@ -87,7 +87,7 @@ class MultiNode : public Node {
_i++;
}
Node* current() {
return _node->out(_i);;
return _node->out(_i);
}
UsesIterator(DUIterator& i, const Node* node)
: _i(i), _node(node) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
* @summary Revealed issue where hook_memory_on_init links some array slice to the rawptr slice.
* Now that array slice depends on the rawslice. And then when the Initialize MemBar gets
* removed in expand_allocate_common, the rawslice sees that it has now no effect, looks
* through the MergeMem and sees the initial stae. That way, also the linked array slice
* through the MergeMem and sees the initial state. That way, also the linked array slice
* goes to the initial state, even if before the allocation there were stores on the array
* slice. This leads to a messed up memory graph, and missing stores in the generated code.
*
Expand Down