aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/opto/buildOopMap.cpp
diff options
context:
space:
mode:
authorkvn <none@none>2009-04-22 17:03:18 -0700
committerkvn <none@none>2009-04-22 17:03:18 -0700
commitf7b52c44a8f1e0d0a219219ddb30a0366b46b4b4 (patch)
tree3434b09c7248b61866ac36b96be73f566179ddff /src/share/vm/opto/buildOopMap.cpp
parent521155ff3e35b0dde11ea3a4ee654dd25faf401f (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.cpp14
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;
}