Mercurial > hg > release > icedtea7-forest-2.1 > hotspot
changeset 2957:51380f2370a7
Fix JIT bug that miscompiles org.eclipse.ui.internal.contexts.ContextAuthority.sourceChanged
2012-06-06 Andrew Haley <aph@redhat.com>
* thumb2.cpp (Thumb2_Compile): Ask the CompilerOracle if we should
compile this method.
(Thumb2_iOp): Use a temporary to hold the shift count.
author | aph |
---|---|
date | Wed, 06 Jun 2012 10:09:22 -0400 |
parents | d11542907511 |
children | 883fc064689b |
files | src/cpu/zero/vm/thumb2.cpp |
diffstat | 1 files changed, 16 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/zero/vm/thumb2.cpp Thu May 31 06:42:18 2012 -0400 +++ b/src/cpu/zero/vm/thumb2.cpp Wed Jun 06 10:09:22 2012 -0400 @@ -68,6 +68,7 @@ #include <ucontext.h> #include "precompiled.hpp" #include "interpreter/bytecodes.hpp" +#include "compiler/compilerOracle.hpp" #define opc_nop 0x00 #define opc_aconst_null 0x01 @@ -3969,8 +3970,12 @@ case opc_ishl: case opc_ishr: case opc_iushr: - and_imm(jinfo->codebuf, r_rho, r_rho, 31); - break; + { + unsigned tmp_reg = Thumb2_Tmp(jinfo, 1 << r_lho | 1 << r_rho | 1 << r); + and_imm(jinfo->codebuf, tmp_reg, r_rho, 31); + r_rho = tmp_reg; + break; + } } dop_reg(jinfo->codebuf, dOps[opc-opc_iadd], r, r_lho, r_rho, 0, 0); } @@ -7044,10 +7049,15 @@ if (!(CPUInfo & ARCH_THUMB2)) UseCompiler = false; - if (!UseCompiler || method->is_not_compilable()) { - ic->set(ic->state(), 1); - bc->set(ic->state(), 1); - return 0; + { + bool ignore; + methodHandle mh(thread, method); + if (!UseCompiler || method->is_not_compilable() + || CompilerOracle::should_exclude(mh, ignore)) { + ic->set(ic->state(), 1); + bc->set(ic->state(), 1); + return 0; + } } slow_entry = *(unsigned *)method->from_interpreted_entry();