269 // pool.
270 if (cp->tags() != NULL) {
271 oop* base = (oop*)cp->base();
272 for (int i = 0; i < cp->length(); ++i, ++base) {
273 if (cp->is_pointer_entry(i)) {
274 PSParallelCompact::adjust_pointer(base);
275 }
276 }
277 }
278 PSParallelCompact::adjust_pointer(cp->tags_addr());
279 PSParallelCompact::adjust_pointer(cp->cache_addr());
280 PSParallelCompact::adjust_pointer(cp->operands_addr());
281 PSParallelCompact::adjust_pointer(cp->pool_holder_addr());
282 return cp->object_size();
283 }
284
285 void constantPoolKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
286 assert(obj->is_constantPool(), "should be constant pool");
287 constantPoolOop cp = (constantPoolOop) obj;
288 if (cp->tags() != NULL &&
289 (!JavaObjectsInPerm || (AnonymousClasses && cp->has_pseudo_string()))) {
290 for (int i = 1; i < cp->length(); ++i) {
291 if (cp->tag_at(i).is_string()) {
292 oop* base = cp->obj_at_addr_raw(i);
293 if (PSScavenge::should_scavenge(base)) {
294 pm->claim_or_forward_depth(base);
295 }
296 }
297 }
298 }
299 }
300 #endif // SERIALGC
301
302 // Printing
303
304 void constantPoolKlass::oop_print_on(oop obj, outputStream* st) {
305 EXCEPTION_MARK;
306 oop anObj;
307 assert(obj->is_constantPool(), "must be constantPool");
308 Klass::oop_print_on(obj, st);
309 constantPoolOop cp = constantPoolOop(obj);
|
269 // pool.
270 if (cp->tags() != NULL) {
271 oop* base = (oop*)cp->base();
272 for (int i = 0; i < cp->length(); ++i, ++base) {
273 if (cp->is_pointer_entry(i)) {
274 PSParallelCompact::adjust_pointer(base);
275 }
276 }
277 }
278 PSParallelCompact::adjust_pointer(cp->tags_addr());
279 PSParallelCompact::adjust_pointer(cp->cache_addr());
280 PSParallelCompact::adjust_pointer(cp->operands_addr());
281 PSParallelCompact::adjust_pointer(cp->pool_holder_addr());
282 return cp->object_size();
283 }
284
285 void constantPoolKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
286 assert(obj->is_constantPool(), "should be constant pool");
287 constantPoolOop cp = (constantPoolOop) obj;
288 if (cp->tags() != NULL &&
289 (!JavaObjectsInPerm || (EnableInvokeDynamic && cp->has_pseudo_string()))) {
290 for (int i = 1; i < cp->length(); ++i) {
291 if (cp->tag_at(i).is_string()) {
292 oop* base = cp->obj_at_addr_raw(i);
293 if (PSScavenge::should_scavenge(base)) {
294 pm->claim_or_forward_depth(base);
295 }
296 }
297 }
298 }
299 }
300 #endif // SERIALGC
301
302 // Printing
303
304 void constantPoolKlass::oop_print_on(oop obj, outputStream* st) {
305 EXCEPTION_MARK;
306 oop anObj;
307 assert(obj->is_constantPool(), "must be constantPool");
308 Klass::oop_print_on(obj, st);
309 constantPoolOop cp = constantPoolOop(obj);
|