8054081: Crashes with assert "modified node is not on IGVN._worklist"
Summary: Modified safepoint nodes are not added to the IGVN worklist by 'PhaseMacroExpand::scalar_replacement()'
Reviewed-by: kvn, roland
--- a/hotspot/src/share/vm/opto/macro.cpp Sun Aug 03 12:04:36 2014 +0400
+++ b/hotspot/src/share/vm/opto/macro.cpp Tue Aug 05 08:25:10 2014 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -791,6 +791,7 @@
for (int k = 0; k < j; k++) {
sfpt->del_req(last--);
}
+ _igvn._worklist.push(sfpt);
// rollback processed safepoints
while (safepoints_done.length() > 0) {
SafePointNode* sfpt_done = safepoints_done.pop();
@@ -815,6 +816,7 @@
}
}
}
+ _igvn._worklist.push(sfpt_done);
}
#ifndef PRODUCT
if (PrintEliminateAllocations) {