Fixes PR52.
[cacao.git] / src / vm / array.c
index f19177ac14e8aeb506f3aa0d409d10151b4b311b..30f231d3e720a8a60ae388a7dfb5abed406b3114 100644 (file)
@@ -304,30 +304,21 @@ void array_##name##array_element_set(java_handle_##name##array_t *a, int32_t ind
 
 void array_objectarray_element_set(java_handle_objectarray_t *a, int32_t index, java_handle_t *value)
 {
-       arraydescriptor *ad;
-       classinfo *cc;
-       int32_t    size;
+       int32_t size;
 
        if (a == NULL) {
                exceptions_throw_nullpointerexception();
                return;
        }
 
-       /* TODO Write inline functions for that and use LLNI. */
-
-       LLNI_CRITICAL_START;
-
-       ad = a->header.objheader.vftbl->arraydesc;
-       cc = ad->componentvftbl->class;
+       /* Sanity check. */
 
-       LLNI_CRITICAL_END;
+       assert(a->header.objheader.vftbl->arraydesc->arraytype == ARRAYTYPE_OBJECT);
 
-       if (ad->arraytype == ARRAYTYPE_OBJECT) {
-               if (value != NULL) {
-                       if (builtin_instanceof(value, cc) == false) {
-                               exceptions_throw_illegalargumentexception();
-                               return;
-                       }
+       if (value != NULL) {
+               if (builtin_canstore(a, value) == false) {
+                       exceptions_throw_illegalargumentexception();
+                       return;
                }
        }