8054081: Crashes with assert "modified node is not on IGVN._worklist"
authorthartmann
Tue, 05 Aug 2014 08:25:10 +0200
changeset 25926 486f1571b70f
parent 25925 4d05abb05c1a
child 25927 29dc55d9e8a0
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
hotspot/src/share/vm/opto/macro.cpp
--- 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) {