diff src/cpu/zero/vm/cppInterpreter_zero.cpp @ 23648:cc78c97abff8 jdk8u75-b12

8146518: Zero interpreter broken with better byte behaviour Reviewed-by: coleenp
author kevinw
date Wed, 02 Mar 2016 19:16:30 +0000
parents 32b682649973
children b5f3a471e646 8f58998958ca
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Mon Feb 29 10:30:03 2016 -0800
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Wed Mar 02 19:16:30 2016 +0000
@@ -93,6 +93,7 @@
     case T_SHORT:
       return (intptr_t)(jshort)result;
     case T_OBJECT:  // nothing to do fall through
+    case T_ARRAY:
     case T_LONG:
     case T_INT:
     case T_FLOAT:
@@ -183,7 +184,7 @@
     }
     else if (istate->msg() == BytecodeInterpreter::return_from_method) {
       // Copy the result into the caller's frame
-      result_slots = type2size[result_type_of(method)];
+      result_slots = type2size[method->result_type()];
       assert(result_slots >= 0 && result_slots <= 2, "what?");
       result = istate->stack() + result_slots;
       break;
@@ -221,7 +222,7 @@
     // Adjust result to smaller
     intptr_t res = result[-i];
     if (result_slots == 1) {
-      res = narrow(result_type_of(method), res);
+      res = narrow(method->result_type(), res);
     }
     stack->push(res);
   }
@@ -435,7 +436,7 @@
 
   // Push our result
   if (!HAS_PENDING_EXCEPTION) {
-    BasicType type = result_type_of(method);
+    BasicType type = method->result_type();
     stack->set_sp(stack->sp() - type2size[type]);
 
     switch (type) {
@@ -795,26 +796,6 @@
   return i;
 }
 
-BasicType CppInterpreter::result_type_of(Method* method) {
-  BasicType t;
-  switch (method->result_index()) {
-    case 0 : t = T_BOOLEAN; break;
-    case 1 : t = T_CHAR;    break;
-    case 2 : t = T_BYTE;    break;
-    case 3 : t = T_SHORT;   break;
-    case 4 : t = T_INT;     break;
-    case 5 : t = T_LONG;    break;
-    case 6 : t = T_VOID;    break;
-    case 7 : t = T_FLOAT;   break;
-    case 8 : t = T_DOUBLE;  break;
-    case 9 : t = T_OBJECT;  break;
-    default: ShouldNotReachHere();
-  }
-  assert(AbstractInterpreter::BasicType_as_index(t) == method->result_index(),
-         "out of step with AbstractInterpreter::BasicType_as_index");
-  return t;
-}
-
 address InterpreterGenerator::generate_empty_entry() {
   if (!UseFastEmptyMethods)
     return NULL;