[runtime] Add a FIXME.
[mono.git] / mono / metadata / sgen-descriptor.c
index 286c186cf3ca8ce777f79e84f5a660aafcc2a2d9..1e3bc152e7932f2574fafd13c17fe7b577513c75 100644 (file)
@@ -161,7 +161,7 @@ mono_gc_make_descr_for_object (gsize *bitmap, int numbits, size_t obj_size)
        }
 
        /* we know the 2-word header is ptr-free */
-       if (last_set < SMALL_BITMAP_SIZE + OBJECT_HEADER_WORDS) {
+       if (last_set < SMALL_BITMAP_SIZE + OBJECT_HEADER_WORDS && stored_size < (1 << SMALL_BITMAP_SHIFT)) {
                desc = DESC_TYPE_SMALL_BITMAP | stored_size | ((*bitmap >> OBJECT_HEADER_WORDS) << SMALL_BITMAP_SHIFT);
                SGEN_LOG (6, "Smallbitmap descriptor %p, size: %zd, last set: %d", (void*)desc, stored_size, last_set);
                return (void*) desc;
@@ -210,7 +210,7 @@ mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_
                }
                /* FIXME: try run-len first */
                /* Note: we can't skip the object header here, because it's not present */
-               if (last_set <= SMALL_BITMAP_SIZE) {
+               if (last_set < SMALL_BITMAP_SIZE) {
                        return (void*)(desc | VECTOR_SUBTYPE_BITMAP | (*elem_bitmap << 16));
                }
        }