Mercurial > hg > truffle
comparison src/share/vm/opto/macro.cpp @ 3345:bad7ecd0b6ed
5091921: Sign flip issues in loop optimizer
Summary: Fix integer overflow problem in the code generated by loop optimizer.
Reviewed-by: never
author | kvn |
---|---|
date | Wed, 04 May 2011 13:12:42 -0700 |
parents | 149bb459be66 |
children | 293f68bda347 |
comparison
equal
deleted
inserted
replaced
3344:0139aac70fb5 | 3345:bad7ecd0b6ed |
---|---|
2152 Node * n = C->macro_node(i-1); | 2152 Node * n = C->macro_node(i-1); |
2153 bool success = false; | 2153 bool success = false; |
2154 debug_only(int old_macro_count = C->macro_count();); | 2154 debug_only(int old_macro_count = C->macro_count();); |
2155 if (n->is_AbstractLock()) { | 2155 if (n->is_AbstractLock()) { |
2156 success = eliminate_locking_node(n->as_AbstractLock()); | 2156 success = eliminate_locking_node(n->as_AbstractLock()); |
2157 } else if (n->Opcode() == Op_LoopLimit) { | |
2158 // Remove it from macro list and put on IGVN worklist to optimize. | |
2159 C->remove_macro_node(n); | |
2160 _igvn._worklist.push(n); | |
2161 success = true; | |
2157 } else if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2) { | 2162 } else if (n->Opcode() == Op_Opaque1 || n->Opcode() == Op_Opaque2) { |
2158 _igvn.replace_node(n, n->in(1)); | 2163 _igvn.replace_node(n, n->in(1)); |
2159 success = true; | 2164 success = true; |
2160 } | 2165 } |
2161 assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count"); | 2166 assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count"); |