Mercurial > hg > truffle
comparison src/share/vm/opto/chaitin.cpp @ 550:96964ebdb154
6782232: assert("CreateEx must be first instruction in block" )
Summary: Add the missing check for CreateEx. Add new notproduct flag VerifyRegisterAllocator.
Reviewed-by: never
author | kvn |
---|---|
date | Wed, 07 Jan 2009 11:04:45 -0800 |
parents | 0bf25c4807f9 |
children | 91263420e1c6 |
comparison
equal
deleted
inserted
replaced
510:1a767c61ad01 | 550:96964ebdb154 |
---|---|
305 // or we failed to split | 305 // or we failed to split |
306 C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after physical split"); | 306 C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after physical split"); |
307 if (C->failing()) return; | 307 if (C->failing()) return; |
308 | 308 |
309 #ifdef ASSERT | 309 #ifdef ASSERT |
310 if( VerifyOpto ) { | 310 if( VerifyOpto || VerifyRegisterAllocator ) { |
311 _cfg.verify(); | 311 _cfg.verify(); |
312 verify_base_ptrs(&live_arena); | 312 verify_base_ptrs(&live_arena); |
313 } | 313 } |
314 #endif | 314 #endif |
315 NOT_PRODUCT( C->verify_graph_edges(); ) | 315 NOT_PRODUCT( C->verify_graph_edges(); ) |
338 coalesce.coalesce_driver( ); | 338 coalesce.coalesce_driver( ); |
339 } | 339 } |
340 compress_uf_map_for_nodes(); | 340 compress_uf_map_for_nodes(); |
341 | 341 |
342 #ifdef ASSERT | 342 #ifdef ASSERT |
343 if( VerifyOpto ) _ifg->verify(this); | 343 if( VerifyOpto || VerifyRegisterAllocator ) _ifg->verify(this); |
344 #endif | 344 #endif |
345 } else { | 345 } else { |
346 ifg.SquareUp(); | 346 ifg.SquareUp(); |
347 ifg.Compute_Effective_Degree(); | 347 ifg.Compute_Effective_Degree(); |
348 #ifdef ASSERT | 348 #ifdef ASSERT |
375 _maxlrg = Split( _maxlrg ); // Split spilling LRG everywhere | 375 _maxlrg = Split( _maxlrg ); // Split spilling LRG everywhere |
376 // Bail out if unique gets too large (ie - unique > MaxNodeLimit - 2*NodeLimitFudgeFactor) | 376 // Bail out if unique gets too large (ie - unique > MaxNodeLimit - 2*NodeLimitFudgeFactor) |
377 C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after split"); | 377 C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after split"); |
378 if (C->failing()) return; | 378 if (C->failing()) return; |
379 #ifdef ASSERT | 379 #ifdef ASSERT |
380 if( VerifyOpto ) { | 380 if( VerifyOpto || VerifyRegisterAllocator ) { |
381 _cfg.verify(); | 381 _cfg.verify(); |
382 verify_base_ptrs(&live_arena); | 382 verify_base_ptrs(&live_arena); |
383 } | 383 } |
384 #endif | 384 #endif |
385 | 385 |
410 // Check for few live ranges determines how aggressive coalesce is. | 410 // Check for few live ranges determines how aggressive coalesce is. |
411 coalesce.coalesce_driver( ); | 411 coalesce.coalesce_driver( ); |
412 } | 412 } |
413 compress_uf_map_for_nodes(); | 413 compress_uf_map_for_nodes(); |
414 #ifdef ASSERT | 414 #ifdef ASSERT |
415 if( VerifyOpto ) _ifg->verify(this); | 415 if( VerifyOpto || VerifyRegisterAllocator ) _ifg->verify(this); |
416 #endif | 416 #endif |
417 cache_lrg_info(); // Count degree of LRGs | 417 cache_lrg_info(); // Count degree of LRGs |
418 | 418 |
419 // Simplify the InterFerence Graph by removing LRGs of low degree. | 419 // Simplify the InterFerence Graph by removing LRGs of low degree. |
420 // LRGs of low degree are trivially colorable. | 420 // LRGs of low degree are trivially colorable. |
954 IndexSetIterator elements(adj); | 954 IndexSetIterator elements(adj); |
955 uint neighbor; | 955 uint neighbor; |
956 while ((neighbor = elements.next()) != 0) { | 956 while ((neighbor = elements.next()) != 0) { |
957 LRG *n = &lrgs(neighbor); | 957 LRG *n = &lrgs(neighbor); |
958 #ifdef ASSERT | 958 #ifdef ASSERT |
959 if( VerifyOpto ) { | 959 if( VerifyOpto || VerifyRegisterAllocator ) { |
960 assert( _ifg->effective_degree(neighbor) == n->degree(), "" ); | 960 assert( _ifg->effective_degree(neighbor) == n->degree(), "" ); |
961 } | 961 } |
962 #endif | 962 #endif |
963 | 963 |
964 // Check for just becoming of-low-degree just counting registers. | 964 // Check for just becoming of-low-degree just counting registers. |