Mercurial > hg > truffle
diff src/cpu/x86/vm/x86_64.ad @ 989:148e5441d916
6863023: need non-perm oops in code cache for JSR 292
Summary: Make a special root-list for those few nmethods which might contain non-perm oops.
Reviewed-by: twisti, kvn, never, jmasa, ysr
author | jrose |
---|---|
date | Tue, 15 Sep 2009 21:53:47 -0700 |
parents | 62001a362ce9 |
children | 97125851f396 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/x86_64.ad Tue Sep 15 11:09:34 2009 -0700 +++ b/src/cpu/x86/vm/x86_64.ad Tue Sep 15 21:53:47 2009 -0700 @@ -683,7 +683,7 @@ #ifdef ASSERT if (rspec.reloc()->type() == relocInfo::oop_type && d32 != 0 && d32 != (intptr_t) Universe::non_oop_word()) { - assert(oop((intptr_t)d32)->is_oop() && oop((intptr_t)d32)->is_perm(), "cannot embed non-perm oops in code"); + assert(oop((intptr_t)d32)->is_oop() && (ScavengeRootsInCode || !oop((intptr_t)d32)->is_scavengable()), "cannot embed scavengable oops in code"); } #endif cbuf.relocate(cbuf.inst_mark(), rspec, format); @@ -721,8 +721,8 @@ #ifdef ASSERT if (rspec.reloc()->type() == relocInfo::oop_type && d64 != 0 && d64 != (int64_t) Universe::non_oop_word()) { - assert(oop(d64)->is_oop() && oop(d64)->is_perm(), - "cannot embed non-perm oops in code"); + assert(oop(d64)->is_oop() && (ScavengeRootsInCode || !oop(d64)->is_scavengable()), + "cannot embed scavengable oops in code"); } #endif cbuf.relocate(cbuf.inst_mark(), rspec, format);