Mercurial > hg > truffle
comparison src/share/vm/oops/instanceKlassKlass.cpp @ 1706:9d7a8ab3736b
6962589: remove breadth first scanning code from parallel gc
Summary: Remove the breadth-first copying order from ParallelScavenge and use depth-first by default.
Reviewed-by: jcoomes, ysr, johnc
author | tonyp |
---|---|
date | Thu, 22 Jul 2010 10:27:41 -0400 |
parents | c18cbe5936b8 |
children | f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1705:2d160770d2e5 | 1706:9d7a8ab3736b |
---|---|
290 | 290 |
291 return klassKlass::oop_adjust_pointers(obj); | 291 return klassKlass::oop_adjust_pointers(obj); |
292 } | 292 } |
293 | 293 |
294 #ifndef SERIALGC | 294 #ifndef SERIALGC |
295 void instanceKlassKlass::oop_copy_contents(PSPromotionManager* pm, oop obj) { | |
296 assert(!pm->depth_first(), "invariant"); | |
297 instanceKlass* ik = instanceKlass::cast(klassOop(obj)); | |
298 ik->copy_static_fields(pm); | |
299 | |
300 oop* loader_addr = ik->adr_class_loader(); | |
301 if (PSScavenge::should_scavenge(loader_addr)) { | |
302 pm->claim_or_forward_breadth(loader_addr); | |
303 } | |
304 | |
305 oop* pd_addr = ik->adr_protection_domain(); | |
306 if (PSScavenge::should_scavenge(pd_addr)) { | |
307 pm->claim_or_forward_breadth(pd_addr); | |
308 } | |
309 | |
310 oop* hk_addr = ik->adr_host_klass(); | |
311 if (PSScavenge::should_scavenge(hk_addr)) { | |
312 pm->claim_or_forward_breadth(hk_addr); | |
313 } | |
314 | |
315 oop* sg_addr = ik->adr_signers(); | |
316 if (PSScavenge::should_scavenge(sg_addr)) { | |
317 pm->claim_or_forward_breadth(sg_addr); | |
318 } | |
319 | |
320 oop* bsm_addr = ik->adr_bootstrap_method(); | |
321 if (PSScavenge::should_scavenge(bsm_addr)) { | |
322 pm->claim_or_forward_breadth(bsm_addr); | |
323 } | |
324 | |
325 klassKlass::oop_copy_contents(pm, obj); | |
326 } | |
327 | |
328 void instanceKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { | 295 void instanceKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { |
329 assert(pm->depth_first(), "invariant"); | |
330 instanceKlass* ik = instanceKlass::cast(klassOop(obj)); | 296 instanceKlass* ik = instanceKlass::cast(klassOop(obj)); |
331 ik->push_static_fields(pm); | 297 ik->push_static_fields(pm); |
332 | 298 |
333 oop* loader_addr = ik->adr_class_loader(); | 299 oop* loader_addr = ik->adr_class_loader(); |
334 if (PSScavenge::should_scavenge(loader_addr)) { | 300 if (PSScavenge::should_scavenge(loader_addr)) { |
353 oop* bsm_addr = ik->adr_bootstrap_method(); | 319 oop* bsm_addr = ik->adr_bootstrap_method(); |
354 if (PSScavenge::should_scavenge(bsm_addr)) { | 320 if (PSScavenge::should_scavenge(bsm_addr)) { |
355 pm->claim_or_forward_depth(bsm_addr); | 321 pm->claim_or_forward_depth(bsm_addr); |
356 } | 322 } |
357 | 323 |
358 klassKlass::oop_copy_contents(pm, obj); | 324 klassKlass::oop_push_contents(pm, obj); |
359 } | 325 } |
360 | 326 |
361 int instanceKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { | 327 int instanceKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { |
362 assert(obj->is_klass(),"must be a klass"); | 328 assert(obj->is_klass(),"must be a klass"); |
363 assert(klassOop(obj)->klass_part()->oop_is_instance_slow(), | 329 assert(klassOop(obj)->klass_part()->oop_is_instance_slow(), |