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

Thu, 24 Mar 2011 15:45:27 -0700

author
ysr
date
Thu, 24 Mar 2011 15:45:27 -0700
changeset 2709
a0de1dfd1933
parent 2662
32f7097f9d8f
child 2710
5134fa1cfe63

7030435: Some oop_oop_iterate_m() methods iterate outside of specified memory bounds
Summary: Filter ref-containing locations through the memory-interval specified in the call.
Reviewed-by: jcoomes, jwilhelm, tonyp

src/share/vm/oops/constantPoolKlass.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/oops/constantPoolKlass.cpp	Wed Mar 23 10:55:43 2011 -0700
     1.2 +++ b/src/share/vm/oops/constantPoolKlass.cpp	Thu Mar 24 15:45:27 2011 -0700
     1.3 @@ -245,13 +245,13 @@
     1.4    }
     1.5    oop* addr;
     1.6    addr = cp->tags_addr();
     1.7 -  blk->do_oop(addr);
     1.8 +  if (mr.contains(addr)) blk->do_oop(addr);
     1.9    addr = cp->cache_addr();
    1.10 -  blk->do_oop(addr);
    1.11 +  if (mr.contains(addr)) blk->do_oop(addr);
    1.12    addr = cp->operands_addr();
    1.13 -  blk->do_oop(addr);
    1.14 +  if (mr.contains(addr)) blk->do_oop(addr);
    1.15    addr = cp->pool_holder_addr();
    1.16 -  blk->do_oop(addr);
    1.17 +  if (mr.contains(addr)) blk->do_oop(addr);
    1.18    return size;
    1.19  }
    1.20  

mercurial