< prev index next >

src/hotspot/share/compiler/oopMap.cpp

Print this page

        

*** 359,369 **** } } // We want coop and oop oop_types int mask = OopMapValue::oop_value | OopMapValue::narrowoop_value; - BufferedValuesDealiaser* dealiaser = NULL; { for (OopMapStream oms(map,mask); !oms.is_done(); oms.next()) { omv = oms.current(); oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map); // It should be an error if no location can be found for a --- 359,368 ----
*** 385,416 **** // We can not verify the oop here if we are using ZGC, the oop // will be bad in case we had a safepoint between a load and a // load barrier. if (!UseZGC && ((((uintptr_t)loc & (sizeof(*loc)-1)) != 0) || ! (!Universe::heap()->is_in_or_null(*loc) && !VTBuffer::is_in_vt_buffer(*loc)))) { tty->print_cr("# Found non oop pointer. Dumping state at failure"); // try to dump out some helpful debugging information trace_codeblob_maps(fr, reg_map); omv.print(); tty->print_cr("register r"); omv.reg()->print(); tty->print_cr("loc = %p *loc = %p\n", loc, (address)*loc); // do the real assert. ! assert(Universe::heap()->is_in_or_null(*loc) || VTBuffer::is_in_vt_buffer(*loc), ! "found non oop pointer"); } #endif // ASSERT - if (!VTBuffer::is_in_vt_buffer(*loc)) { oop_fn->do_oop(loc); - } else { - assert((*loc)->is_value(), "Sanity check"); - if (dealiaser == NULL) { - dealiaser = Thread::current()->buffered_values_dealiaser(); - } - dealiaser->oops_do(oop_fn, *loc); - } } else if ( omv.type() == OopMapValue::narrowoop_value ) { narrowOop *nl = (narrowOop*)loc; #ifndef VM_LITTLE_ENDIAN VMReg vmReg = omv.reg(); // Don't do this on SPARC float registers as they can be individually addressed --- 384,406 ---- // We can not verify the oop here if we are using ZGC, the oop // will be bad in case we had a safepoint between a load and a // load barrier. if (!UseZGC && ((((uintptr_t)loc & (sizeof(*loc)-1)) != 0) || ! (!Universe::heap()->is_in_or_null(*loc)))) { tty->print_cr("# Found non oop pointer. Dumping state at failure"); // try to dump out some helpful debugging information trace_codeblob_maps(fr, reg_map); omv.print(); tty->print_cr("register r"); omv.reg()->print(); tty->print_cr("loc = %p *loc = %p\n", loc, (address)*loc); // do the real assert. ! assert(Universe::heap()->is_in_or_null(*loc), "found non oop pointer"); } #endif // ASSERT oop_fn->do_oop(loc); } else if ( omv.type() == OopMapValue::narrowoop_value ) { narrowOop *nl = (narrowOop*)loc; #ifndef VM_LITTLE_ENDIAN VMReg vmReg = omv.reg(); // Don't do this on SPARC float registers as they can be individually addressed
< prev index next >