Mercurial > hg > truffle
comparison src/cpu/x86/vm/x86_32.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 |
comparison
equal
deleted
inserted
replaced
987:00977607da34 | 989:148e5441d916 |
---|---|
377 // emit 32 bit value and construct relocation entry from RelocationHolder | 377 // emit 32 bit value and construct relocation entry from RelocationHolder |
378 void emit_d32_reloc(CodeBuffer &cbuf, int d32, RelocationHolder const& rspec, | 378 void emit_d32_reloc(CodeBuffer &cbuf, int d32, RelocationHolder const& rspec, |
379 int format) { | 379 int format) { |
380 #ifdef ASSERT | 380 #ifdef ASSERT |
381 if (rspec.reloc()->type() == relocInfo::oop_type && d32 != 0 && d32 != (int)Universe::non_oop_word()) { | 381 if (rspec.reloc()->type() == relocInfo::oop_type && d32 != 0 && d32 != (int)Universe::non_oop_word()) { |
382 assert(oop(d32)->is_oop() && oop(d32)->is_perm(), "cannot embed non-perm oops in code"); | 382 assert(oop(d32)->is_oop() && (ScavengeRootsInCode || !oop(d32)->is_scavengable()), "cannot embed scavengable oops in code"); |
383 } | 383 } |
384 #endif | 384 #endif |
385 cbuf.relocate(cbuf.inst_mark(), rspec, format); | 385 cbuf.relocate(cbuf.inst_mark(), rspec, format); |
386 | 386 |
387 *((int *)(cbuf.code_end())) = d32; | 387 *((int *)(cbuf.code_end())) = d32; |