projects
/
cacao.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7c34bdf
)
* src/vm/vm.c (vm_call_method_objectarray): Moved primitive_box into the native
author
Michael Starzinger
<michi@complang.tuwien.ac.at>
Sat, 13 Oct 2007 13:18:49 +0000
(15:18 +0200)
committer
Michael Starzinger
<michi@complang.tuwien.ac.at>
Sat, 13 Oct 2007 13:18:49 +0000
(15:18 +0200)
world.
src/vm/vm.c
patch
|
blob
|
history
diff --git
a/src/vm/vm.c
b/src/vm/vm.c
index 279d4daf04f5a766210997ac57ba522412475fd4..2a9b9cbc8bf0d20f56e34c34007065eff2436624 100644
(file)
--- 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) {
}
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:
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);
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);
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);
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);
break;
case PRIMITIVETYPE_DOUBLE:
value.d = vm_call_double_array(m, array);
- ro = primitive_box(m->parseddesc->returntype.decltype, value);
break;
case TYPE_ADR:
break;
case TYPE_ADR:
@@
-2543,6
+2538,11
@@
java_handle_t *vm_call_method_objectarray(methodinfo *m, java_handle_t *o,
THREAD_NATIVEWORLD_ENTER;
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();
/* check for an exception */
xptr = exceptions_get_exception();