Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp @ 10370:47bdfb3d010f
8015486: PSScavenge::is_obj_in_young is unnecessarily slow with UseCompressedOops
Summary: Compare compressed oops to a compressed young gen boundary instead of uncompressing the oops before doing the young gen boundary check.
Reviewed-by: brutisso, jmasa
author | stefank |
---|---|
date | Thu, 30 May 2013 10:58:16 +0200 |
parents | 22b8d3d181d9 |
children | f2110083203d |
comparison
equal
deleted
inserted
replaced
10369:5534bd30c151 | 10370:47bdfb3d010f |
---|---|
40 if (p != NULL) { // XXX: error if p != NULL here | 40 if (p != NULL) { // XXX: error if p != NULL here |
41 oop o = oopDesc::load_decode_heap_oop_not_null(p); | 41 oop o = oopDesc::load_decode_heap_oop_not_null(p); |
42 if (o->is_forwarded()) { | 42 if (o->is_forwarded()) { |
43 o = o->forwardee(); | 43 o = o->forwardee(); |
44 // Card mark | 44 // Card mark |
45 if (PSScavenge::is_obj_in_young((HeapWord*) o)) { | 45 if (PSScavenge::is_obj_in_young(o)) { |
46 PSScavenge::card_table()->inline_write_ref_field_gc(p, o); | 46 PSScavenge::card_table()->inline_write_ref_field_gc(p, o); |
47 } | 47 } |
48 oopDesc::encode_store_heap_oop_not_null(p, o); | 48 oopDesc::encode_store_heap_oop_not_null(p, o); |
49 } else { | 49 } else { |
50 push_depth(p); | 50 push_depth(p); |