--- a/src/hotspot/share/opto/buildOopMap.cpp Wed Oct 09 12:21:28 2019 -0700
+++ b/src/hotspot/share/opto/buildOopMap.cpp Wed Oct 09 16:35:44 2019 -0700
@@ -352,7 +352,6 @@
} else {
// Other - some reaching non-oop value
- omap->set_value( r);
#ifdef ASSERT
if( t->isa_rawptr() && C->cfg()->_raw_oops.member(def) ) {
def->dump();
@@ -377,11 +376,18 @@
#endif
#ifdef ASSERT
- for( OopMapStream oms1(omap, OopMapValue::derived_oop_value); !oms1.is_done(); oms1.next()) {
+ for( OopMapStream oms1(omap); !oms1.is_done(); oms1.next()) {
OopMapValue omv1 = oms1.current();
+ if (omv1.type() != OopMapValue::derived_oop_value) {
+ continue;
+ }
bool found = false;
- for( OopMapStream oms2(omap,OopMapValue::oop_value); !oms2.is_done(); oms2.next()) {
- if( omv1.content_reg() == oms2.current().reg() ) {
+ for( OopMapStream oms2(omap); !oms2.is_done(); oms2.next()) {
+ OopMapValue omv2 = oms2.current();
+ if (omv2.type() != OopMapValue::oop_value) {
+ continue;
+ }
+ if( omv1.content_reg() == omv2.reg() ) {
found = true;
break;
}