Mercurial > hg > release > icedtea7-forest-2.6 > hotspot
changeset 6670:b4d5ee13399f
8207345, PR3614: Trampoline generation code reads from uninitialized memory
Reviewed-by: shade
author | aph |
---|---|
date | Wed, 18 Jul 2018 23:47:37 +0100 |
parents | 7b5dbfab9d89 |
children | e200fdadc487 |
files | src/cpu/aarch64/vm/assembler_aarch64.cpp |
diffstat | 1 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/assembler_aarch64.cpp Wed Jul 18 23:40:56 2018 +0100 +++ b/src/cpu/aarch64/vm/assembler_aarch64.cpp Wed Jul 18 23:47:37 2018 +0100 @@ -2181,8 +2181,17 @@ unsigned int start_offset = offset(); #ifdef COMPILER2 - if (far_branches() && !Compile::current()->in_scratch_emit_size()) { - emit_trampoline_stub(offset(), entry.target()); + // We need a trampoline if branches are far. + if (far_branches()) { + // We don't want to emit a trampoline if C2 is generating dummy + // code during its branch shortening phase. + CompileTask* task = ciEnv::current()->task(); + bool in_scratch_emit_size = + ((task != NULL) && is_c2_compile(task->comp_level()) + && Compile::current()->in_scratch_emit_size()); + if (! in_scratch_emit_size) { + emit_trampoline_stub(start_offset, entry.target()); + } } #endif