From: Michael Starzinger Date: Sat, 13 Oct 2007 13:18:49 +0000 (+0200) Subject: * src/vm/vm.c (vm_call_method_objectarray): Moved primitive_box into the native X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=b42089da345591772a4f9c641eca56c1b176889f;p=cacao.git * src/vm/vm.c (vm_call_method_objectarray): Moved primitive_box into the native world. --- diff --git a/src/vm/vm.c b/src/vm/vm.c index 279d4daf0..2a9b9cbc8 100644 --- a/src/vm/vm.c +++ b/src/vm/vm.c @@ -2498,9 +2498,8 @@ java_handle_t *vm_call_method_objectarray(methodinfo *m, java_handle_t *o, } switch (m->parseddesc->returntype.decltype) { - case TYPE_VOID: - (void) vm_call_array(m, array); - ro = NULL; + case PRIMITIVETYPE_VOID: + value.a = vm_call_array(m, array); break; case PRIMITIVETYPE_BOOLEAN: @@ -2509,22 +2508,18 @@ java_handle_t *vm_call_method_objectarray(methodinfo *m, java_handle_t *o, case PRIMITIVETYPE_SHORT: case PRIMITIVETYPE_INT: value.i = vm_call_int_array(m, array); - ro = primitive_box(m->parseddesc->returntype.decltype, value); break; case PRIMITIVETYPE_LONG: value.l = vm_call_long_array(m, array); - ro = primitive_box(m->parseddesc->returntype.decltype, value); break; case PRIMITIVETYPE_FLOAT: value.f = vm_call_float_array(m, array); - ro = primitive_box(m->parseddesc->returntype.decltype, value); break; case PRIMITIVETYPE_DOUBLE: value.d = vm_call_double_array(m, array); - ro = primitive_box(m->parseddesc->returntype.decltype, value); break; case TYPE_ADR: @@ -2543,6 +2538,11 @@ java_handle_t *vm_call_method_objectarray(methodinfo *m, java_handle_t *o, THREAD_NATIVEWORLD_ENTER; + /* box the return value if necesarry */ + + if (m->parseddesc->returntype.decltype != TYPE_ADR) + ro = primitive_box(m->parseddesc->returntype.decltype, value); + /* check for an exception */ xptr = exceptions_get_exception();