diff options
author | Pekka Enberg <penberg@kernel.org> | 2013-03-10 18:16:35 +0200 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2013-03-10 18:16:35 +0200 |
commit | 4c43f40e263abd54e5e3523ed8f463c820e0eef5 (patch) | |
tree | fede5039600e88da96e5fb8177f6190a242e01dd | |
parent | db0c745cc273e1ee8e7323525f57cc8d9f922938 (diff) | |
download | jato-4c43f40e263abd54e5e3523ed8f463c820e0eef5.tar.gz |
x86-64: Fix infinite loop in compiler when method is missing
Don't add the same call instruction twice to the compilation unit;
otherwise the compile will enter an infinite loop in the liveness
analysis.
Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r-- | arch/x86/insn-selector_64.brg | 4 | ||||
-rwxr-xr-x | tools/test.py | 2 |
2 files changed, 1 insertions, 5 deletions
diff --git a/arch/x86/insn-selector_64.brg b/arch/x86/insn-selector_64.brg index 18662d21..06261f2c 100644 --- a/arch/x86/insn-selector_64.brg +++ b/arch/x86/insn-selector_64.brg @@ -2559,8 +2559,6 @@ static void invokevirtual(struct _MBState *state, struct basic_block *s, struct if (vm_method_is_missing(method)) { call_insn = rel_insn(INSN_CALL_REL, (unsigned long) jit_no_such_method_stub); - - select_safepoint_insn(s, tree, call_insn); } else { /* object reference */ call_target = state->left->reg1; @@ -2604,8 +2602,6 @@ static void invokeinterface(struct _MBState *state, struct basic_block *s, struc if (vm_method_is_missing(method)) { call_insn = rel_insn(INSN_CALL_REL, (unsigned long) jit_no_such_method_stub); - - select_safepoint_insn(s, tree, call_insn); } else { /* object reference */ call_target = state->left->reg1; diff --git a/tools/test.py b/tools/test.py index a213aeba..dbb7b776 100755 --- a/tools/test.py +++ b/tools/test.py @@ -65,7 +65,7 @@ TESTS = [ , ( "jvm.MethodInvocationExceptionsTest", 0, NO_SYSTEM_CLASSLOADER, [ "i386", "x86_64" ] ) , ( "jvm.MultithreadingTest", 0, [ ], [ "i386", "x86_64" ] ) , ( "jvm.MethodOverridingFinal", 1, NO_SYSTEM_CLASSLOADER, [ "i386", "x86_64" ] ) -, ( "jvm.NoSuchMethodErrorTest", 0, NO_SYSTEM_CLASSLOADER, [ "i386" ] ) +, ( "jvm.NoSuchMethodErrorTest", 0, NO_SYSTEM_CLASSLOADER, [ "i386", "x86_64" ] ) , ( "jvm.ObjectArrayTest", 0, NO_SYSTEM_CLASSLOADER, [ "i386", "x86_64" ] ) , ( "jvm.ObjectCreationAndManipulationExceptionsTest", 0, NO_SYSTEM_CLASSLOADER, [ "i386", "x86_64" ] ) , ( "jvm.ObjectCreationAndManipulationTest", 0, NO_SYSTEM_CLASSLOADER, [ "i386", "x86_64" ] ) |