Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8256330: [lworld] Dead inline type nodes are not reclaimed assertions #296

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -1964,7 +1964,7 @@ class ACmpData : public BranchData {
virtual bool is_ACmpData() const { return true; }

static int static_cell_count() {
return BranchData::static_cell_count()+ SingleTypeEntry::static_cell_count() * 2;
return BranchData::static_cell_count() + SingleTypeEntry::static_cell_count() * 2;
}

virtual int cell_count() const {
@@ -1189,6 +1189,7 @@ bool CallStaticJavaNode::remove_useless_allocation(PhaseGVN *phase, Node* ctl, N
}
if (!alloc_mem->is_MergeMem()) {
alloc_mem = MergeMemNode::make(alloc_mem);
igvn->register_new_node_with_optimizer(alloc_mem);
}

// and that there's no unexpected side effect
@@ -614,6 +614,7 @@ Node* PhaseMacroExpand::inline_type_from_mem(Node* mem, Node* ctl, ciInlineKlass
offset -= vk->first_field_offset();
// Create a new InlineTypeNode and retrieve the field values from memory
InlineTypeNode* vt = InlineTypeNode::make_uninitialized(_igvn, vk)->as_InlineType();
transform_later(vt);
for (int i = 0; i < vk->nof_declared_nonstatic_fields(); ++i) {
ciType* field_type = vt->field_type(i);
int field_offset = offset + vt->field_offset(i);
@@ -642,7 +643,7 @@ Node* PhaseMacroExpand::inline_type_from_mem(Node* mem, Node* ctl, ciInlineKlass
return NULL;
}
}
return transform_later(vt);
return vt;
}

// Check the possibility of scalar replacement.
@@ -1084,7 +1084,7 @@ void PhaseIterGVN::init_verifyPhaseIterGVN() {
Unique_Node_List* modified_list = C->modified_nodes();
while (modified_list != NULL && modified_list->size()) {
Node* n = modified_list->pop();
if (n->outcnt() != 0 && !n->is_Con() && !_worklist.member(n)) {
if (!n->is_Con() && !_worklist.member(n)) {
n->dump();
fatal("modified node is not on IGVN._worklist");
}
@@ -1098,7 +1098,7 @@ void PhaseIterGVN::verify_PhaseIterGVN() {
Unique_Node_List* modified_list = C->modified_nodes();
while (modified_list != NULL && modified_list->size()) {
Node* n = modified_list->pop();
if (n->outcnt() != 0 && !n->is_Con()) { // skip dead and Con nodes
if (!n->is_Con()) { // skip Con nodes
n->dump();
fatal("modified node was not processed by IGVN.transform_old()");
}