Mercurial > hg > graal-compiler
changeset 4040:754110e02bd5
7103380: assertion failure with -XX:+PrintNativeNMethods
Reviewed-by: kvn, iveresov
author | never |
---|---|
date | Sun, 23 Oct 2011 12:31:20 -0700 |
parents | e5928e7dab26 |
children | 42783d1414b2 |
files | src/share/vm/asm/codeBuffer.cpp |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/asm/codeBuffer.cpp Mon Oct 17 21:38:29 2011 -0700 +++ b/src/share/vm/asm/codeBuffer.cpp Sun Oct 23 12:31:20 2011 -0700 @@ -632,7 +632,8 @@ // CodeBuffer gets the final layout (consts, insts, stubs in order of // ascending address). void CodeBuffer::relocate_code_to(CodeBuffer* dest) const { - DEBUG_ONLY(address dest_end = dest->_total_start + dest->_total_size); + address dest_end = dest->_total_start + dest->_total_size; + address dest_filled = NULL; for (int n = (int) SECT_FIRST; n < (int) SECT_LIMIT; n++) { // pull code out of each section const CodeSection* cs = code_section(n); @@ -654,6 +655,8 @@ Copy::fill_to_bytes(dest_cs->end(), dest_cs->remaining(), Assembler::code_fill_byte()); } + // Keep track of the highest filled address + dest_filled = MAX2(dest_filled, dest_cs->end() + dest_cs->remaining()); assert(cs->locs_start() != (relocInfo*)badAddress, "this section carries no reloc storage, but reloc was attempted"); @@ -668,6 +671,14 @@ } } } + + if (dest->blob() == NULL) { + // Destination is a final resting place, not just another buffer. + // Normalize uninitialized bytes in the final padding. + Copy::fill_to_bytes(dest_filled, dest_end - dest_filled, + Assembler::code_fill_byte()); + + } } csize_t CodeBuffer::figure_expanded_capacities(CodeSection* which_cs,