changeset 2434:17560fb7d842

More (untested)
author Gary Benson <gbenson@redhat.com>
date Mon, 28 Mar 2011 11:43:24 +0100
parents 79a27a49c1fe
children dfa8e5680ab9
files src/cpu/zero/vm/cppInterpreter_zero.cpp
diffstat 1 files changed, 31 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Mon Mar 28 11:01:17 2011 +0100
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Mon Mar 28 11:43:24 2011 +0100
@@ -836,7 +836,37 @@
         SET_VMSLOTS_OBJECT(arg, arg_slot);
       }
       else {
-        Unimplemented();
+        jvalue arg_value;
+        arg_type = java_lang_boxing_object::get_value(arg, &arg_value);
+        switch (arg_type) {
+        case T_BOOLEAN:
+          SET_VMSLOTS_INT(arg_value.z, arg_slot);
+          break;
+        case T_CHAR:
+          SET_VMSLOTS_INT(arg_value.c, arg_slot);
+          break;
+        case T_BYTE:
+          SET_VMSLOTS_INT(arg_value.b, arg_slot);
+          break;
+        case T_SHORT:
+          SET_VMSLOTS_INT(arg_value.s, arg_slot);
+          break;
+        case T_INT:
+          SET_VMSLOTS_INT(arg_value.i, arg_slot);
+          break;
+        case T_FLOAT:
+          SET_VMSLOTS_FLOAT(arg_value.f, arg_slot);
+          break;
+        case T_LONG:
+          SET_VMSLOTS_LONG(arg_value.j, arg_slot + 1);
+          break;
+        case T_DOUBLE:
+          SET_VMSLOTS_DOUBLE(arg_value.d, arg_slot + 1);
+          break;
+        default:
+          tty->print_cr("unhandled type %s", type2name(arg_type));
+          ShouldNotReachHere();
+        }
       }
     }
     break;