>From e764c6b1a0299bf3fc7dc31c39389099c87e36bc Mon Sep 17 00:00:00 2001 From: Vegard Nossum <vegard.nos...@gmail.com> Date: Fri, 26 Jun 2009 14:11:31 +0200 Subject: [PATCH] vm/object: set class->object for array allocations
This is the proper solution for the workaround: commit 85d16d96051c2d9a246aa427405c003d13ba9ef8 Author: Pekka Enberg <penb...@cs.helsinki.fi> Date: Fri Jun 26 13:09:39 2009 +0300 vm: Fix array check and array store check crashes which can be reverted now. --- vm/object.c | 41 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 39 insertions(+), 2 deletions(-) diff --git a/vm/object.c b/vm/object.c index 60153a8..bb34b86 100644 --- a/vm/object.c +++ b/vm/object.c @@ -35,10 +35,47 @@ struct vm_object *vm_object_alloc_native_array(int type, int count) /* XXX: Use the right size... */ res = zalloc(sizeof(*res) + 8 * count); - if (res) { - res->array_length = count; + if (!res) { + NOT_IMPLEMENTED; + return NULL; + } + + switch (type) { + case T_BOOLEAN: + res->class = classloader_load("[Z"); + break; + case T_CHAR: + res->class = classloader_load("[C"); + break; + case T_FLOAT: + res->class = classloader_load("[F"); + break; + case T_DOUBLE: + res->class = classloader_load("[D"); + break; + case T_BYTE: + res->class = classloader_load("[B"); + break; + case T_SHORT: + res->class = classloader_load("[S"); + break; + case T_INT: + res->class = classloader_load("[I"); + break; + case T_LONG: + res->class = classloader_load("[J"); + break; + default: + NOT_IMPLEMENTED; } + if (!res->class) { + NOT_IMPLEMENTED; + return NULL; + } + + res->array_length = count; + if (pthread_mutex_init(&res->mutex, NULL)) NOT_IMPLEMENTED; -- 1.6.0.4 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel