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.