Mercurial > hg > truffle
diff src/share/vm/oops/constantPoolKlass.cpp @ 2379:b099aaf51bf8
6962931: move interned strings out of the perm gen
Reviewed-by: never, coleenp, ysr, jwilhelm
author | jcoomes |
---|---|
date | Tue, 22 Mar 2011 13:36:33 -0700 |
parents | 183658a2d0b3 |
children | 38fea01eb669 a0de1dfd1933 |
line wrap: on
line diff
--- a/src/share/vm/oops/constantPoolKlass.cpp Mon Mar 21 18:38:00 2011 -0700 +++ b/src/share/vm/oops/constantPoolKlass.cpp Tue Mar 22 13:36:33 2011 -0700 @@ -285,10 +285,11 @@ void constantPoolKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { assert(obj->is_constantPool(), "should be constant pool"); constantPoolOop cp = (constantPoolOop) obj; - if (AnonymousClasses && cp->has_pseudo_string() && cp->tags() != NULL) { - oop* base = (oop*)cp->base(); - for (int i = 0; i < cp->length(); ++i, ++base) { + if (cp->tags() != NULL && + (!JavaObjectsInPerm || (AnonymousClasses && cp->has_pseudo_string()))) { + for (int i = 1; i < cp->length(); ++i) { if (cp->tag_at(i).is_string()) { + oop* base = cp->obj_at_addr_raw(i); if (PSScavenge::should_scavenge(base)) { pm->claim_or_forward_depth(base); } @@ -460,7 +461,8 @@ if (cp->tag_at(i).is_string()) { if (!cp->has_pseudo_string()) { if (entry.is_oop()) { - guarantee(entry.get_oop()->is_perm(), "should be in permspace"); + guarantee(!JavaObjectsInPerm || entry.get_oop()->is_perm(), + "should be in permspace"); guarantee(entry.get_oop()->is_instance(), "should be instance"); } } else {