Mercurial > hg > truffle
comparison src/share/vm/opto/buildOopMap.cpp @ 729:04fa5affa478
6709742: find_base_for_derived's use of Ideal NULL is unsafe causing crashes during register allocation
Summary: Create a mach node corresponding to ideal node ConP #NULL specifically for derived pointers.
Reviewed-by: never
author | kvn |
---|---|
date | Wed, 22 Apr 2009 17:03:18 -0700 |
parents | 98cb887364d3 |
children | acba6af809c8 |
comparison
equal
deleted
inserted
replaced
728:85656c8fa13f | 729:04fa5affa478 |
---|---|
359 if( dup_check[reg2] != 0) cnt_callee_saves++; | 359 if( dup_check[reg2] != 0) cnt_callee_saves++; |
360 assert( cnt_callee_saves==3 || cnt_callee_saves==5, "missed some callee-save" ); | 360 assert( cnt_callee_saves==3 || cnt_callee_saves==5, "missed some callee-save" ); |
361 reg2++; | 361 reg2++; |
362 } | 362 } |
363 */ | 363 */ |
364 #endif | |
365 | |
366 #ifdef ASSERT | |
367 for( OopMapStream oms1(omap, OopMapValue::derived_oop_value); !oms1.is_done(); oms1.next()) { | |
368 OopMapValue omv1 = oms1.current(); | |
369 bool found = false; | |
370 for( OopMapStream oms2(omap,OopMapValue::oop_value); !oms2.is_done(); oms2.next()) { | |
371 if( omv1.content_reg() == oms2.current().reg() ) { | |
372 found = true; | |
373 break; | |
374 } | |
375 } | |
376 assert( found, "derived with no base in oopmap" ); | |
377 } | |
364 #endif | 378 #endif |
365 | 379 |
366 return omap; | 380 return omap; |
367 } | 381 } |
368 | 382 |