7030435: Some oop_oop_iterate_m() methods iterate outside of specified memory bounds

Filter ref-containing locations through the memory-interval specified in the call.

Reviewed-by: jcoomes, jwilhelm, tonyp
This commit is contained in:
Y. Srinivas Ramakrishna 2011-03-24 15:45:27 -07:00
parent 87c2f53c25
commit 4282af91a0

View file

@ -245,13 +245,13 @@ int constantPoolKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr)
} }
oop* addr; oop* addr;
addr = cp->tags_addr(); addr = cp->tags_addr();
blk->do_oop(addr); if (mr.contains(addr)) blk->do_oop(addr);
addr = cp->cache_addr(); addr = cp->cache_addr();
blk->do_oop(addr); if (mr.contains(addr)) blk->do_oop(addr);
addr = cp->operands_addr(); addr = cp->operands_addr();
blk->do_oop(addr); if (mr.contains(addr)) blk->do_oop(addr);
addr = cp->pool_holder_addr(); addr = cp->pool_holder_addr();
blk->do_oop(addr); if (mr.contains(addr)) blk->do_oop(addr);
return size; return size;
} }