changeset 1636:f61d795ce6de

6939845: zero needs fallback path in C++ interpreter for platform dependent fast bytecodes Reviewed-by: never Contributed-by: ed@camswl.com
author never
date Wed, 31 Mar 2010 11:54:03 -0700
parents 747d26efc5fa
children 7f4deda46b04
files src/share/vm/interpreter/bytecodeInterpreter.cpp
diffstat 1 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Mar 30 00:57:55 2010 -0700
+++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Wed Mar 31 11:54:03 2010 -0700
@@ -2328,6 +2328,17 @@
       }
 
       DEFAULT:
+#ifdef ZERO
+          // Some zero configurations use the C++ interpreter as a
+          // fallback interpreter and have support for platform
+          // specific fast bytecodes which aren't supported here, so
+          // redispatch to the equivalent non-fast bytecode when they
+          // are encountered.
+          if (Bytecodes::is_defined((Bytecodes::Code)opcode)) {
+              opcode = (jubyte)Bytecodes::java_code((Bytecodes::Code)opcode);
+              goto opcode_switch;
+          }
+#endif
           fatal2("\t*** Unimplemented opcode: %d = %s\n",
                  opcode, Bytecodes::name((Bytecodes::Code)opcode));
           goto finish;