JDK-6759776 : Use real nodes queue for IGVN processing
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs14
  • Priority: P4
  • Status: Closed
  • Resolution: Won't Fix
  • OS: solaris_10
  • CPU: sparc
  • Submitted: 2008-10-15
  • Updated: 2010-04-03
  • Resolved: 2008-10-21
Related Reports
Duplicate :  
Relates :  
Description
Currently UniqueNodeList is used for GVN oprimizations.
Unfortunately the nodes on UniqueNodeList could be shuffled 
and processed not in the order they were put on the list.
With delayed IGVN processing during macro nodes expansion
it causes the problem since n->bottom_type() and igvn->type(n)
may not match.

Comments
EVALUATION Here is the implementation. I don't want to push it since the memory usage is high and no compilation performance improvement. I will try to find an other solution to avoid the assert during IGVN optimization after macro nodes expansion. Thanks, Vladimir http://webrev.invokedynamic.info/kvn/6759776/index.html Fixed 6759776: Use real nodes queue for IGVN processing Problem: Currently UniqueNodeList is used for GVN oprimizations. Unfortunately the nodes on UniqueNodeList could be shuffled and processed not in the order they were put on the list. With delayed IGVN processing during macro nodes expansion it causes the problem since n->bottom_type() and igvn->type(n) may not match since transform() method is not called for new nodes. Solution: - Add new class Unique_Node_Queue which implements nodes queue. Use it for IGVN worklist. The initial size was selected based on CTW runs (I collected histograms of allocations). - Replace constant 0xdeadbeef with badOptoPtr. - Move some record_for_igvn() calls in parser code to put nodes on the queue in the best order. Compilation performance stays the same but a memory usage increased by 30% on average (based on CTW runs) Reviewed by: Fix verified (y/n): y Other testing: JPRT, jbb2005, CTW
21-10-2008