diff options
author | kvn <none@none> | 2009-04-22 17:03:18 -0700 |
---|---|---|
committer | kvn <none@none> | 2009-04-22 17:03:18 -0700 |
commit | f7b52c44a8f1e0d0a219219ddb30a0366b46b4b4 (patch) | |
tree | 3434b09c7248b61866ac36b96be73f566179ddff /src/share/vm/opto/buildOopMap.cpp | |
parent | 521155ff3e35b0dde11ea3a4ee654dd25faf401f (diff) |
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
Diffstat (limited to 'src/share/vm/opto/buildOopMap.cpp')
-rw-r--r-- | src/share/vm/opto/buildOopMap.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/share/vm/opto/buildOopMap.cpp b/src/share/vm/opto/buildOopMap.cpp index 4a8612687..9401e024a 100644 --- a/src/share/vm/opto/buildOopMap.cpp +++ b/src/share/vm/opto/buildOopMap.cpp @@ -363,6 +363,20 @@ OopMap *OopFlow::build_oop_map( Node *n, int max_reg, PhaseRegAlloc *regalloc, i */ #endif +#ifdef ASSERT + for( OopMapStream oms1(omap, OopMapValue::derived_oop_value); !oms1.is_done(); oms1.next()) { + OopMapValue omv1 = oms1.current(); + bool found = false; + for( OopMapStream oms2(omap,OopMapValue::oop_value); !oms2.is_done(); oms2.next()) { + if( omv1.content_reg() == oms2.current().reg() ) { + found = true; + break; + } + } + assert( found, "derived with no base in oopmap" ); + } +#endif + return omap; } |