X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fsgen%2Fsgen-split-nursery.c;h=3b7ae668a203d537bd2372d15d62e7630c5db7e6;hb=509292348536096444fa279d0543ce1e6b7a9e3d;hp=ea427f6a21fee793d5738222aa793cdf3ee52bf8;hpb=ad600a087f534a16073e5294024b520168257eed;p=mono.git diff --git a/mono/sgen/sgen-split-nursery.c b/mono/sgen/sgen-split-nursery.c index ea427f6a21f..3b7ae668a20 100644 --- a/mono/sgen/sgen-split-nursery.c +++ b/mono/sgen/sgen-split-nursery.c @@ -9,18 +9,7 @@ * Copyright 2011-2012 Xamarin Inc (http://www.xamarin.com) * Copyright (C) 2012 Xamarin Inc * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License 2.0 as published by the Free Software Foundation; - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License 2.0 along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #include "config.h" @@ -179,8 +168,8 @@ mark_bit (char *space_bitmap, char *pos) static void mark_bits_in_range (char *space_bitmap, char *start, char *end) { - start = align_down (start, SGEN_TO_SPACE_GRANULE_BITS); - end = align_up (end, SGEN_TO_SPACE_GRANULE_BITS); + start = (char *)align_down (start, SGEN_TO_SPACE_GRANULE_BITS); + end = (char *)align_up (end, SGEN_TO_SPACE_GRANULE_BITS); for (;start < end; start += SGEN_TO_SPACE_GRANULE_IN_BYTES) mark_bit (space_bitmap, start); @@ -244,7 +233,7 @@ alloc_for_promotion_slow_path (int age, size_t objsize) size_t allocated_size; size_t aligned_objsize = (size_t)align_up (objsize, SGEN_TO_SPACE_GRANULE_BITS); - p = sgen_fragment_allocator_serial_range_alloc ( + p = (char *)sgen_fragment_allocator_serial_range_alloc ( &collector_allocator, MAX (aligned_objsize, AGE_ALLOC_BUFFER_DESIRED_SIZE), MAX (aligned_objsize, AGE_ALLOC_BUFFER_MIN_SIZE), @@ -265,8 +254,10 @@ alloc_for_promotion (GCVTable vtable, GCObject *obj, size_t objsize, gboolean ha int age; age = get_object_age (obj); - if (age >= promote_age) + if (age >= promote_age) { + total_promoted_size += objsize; return major_collector.alloc_object (vtable, objsize, has_references); + } /* Promote! */ ++age; @@ -276,8 +267,10 @@ alloc_for_promotion (GCVTable vtable, GCObject *obj, size_t objsize, gboolean ha age_alloc_buffers [age].next += objsize; } else { p = alloc_for_promotion_slow_path (age, objsize); - if (!p) + if (!p) { + total_promoted_size += objsize; return major_collector.alloc_object (vtable, objsize, has_references); + } } /* FIXME: assumes object layout */ @@ -336,8 +329,8 @@ prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size) previous = &collector_allocator.alloc_head; for (frag = *previous; frag; frag = *previous) { - char *start = align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS); - char *end = align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS); + char *start = (char *)align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS); + char *end = (char *)align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS); /* Fragment is too small to be usable. */ if ((end - start) < SGEN_MAX_NURSERY_WASTE) { @@ -378,12 +371,12 @@ static void init_nursery (SgenFragmentAllocator *allocator, char *start, char *end) { int alloc_quote = (int)((end - start) * alloc_ratio); - promotion_barrier = align_down (start + alloc_quote, 3); + promotion_barrier = (char *)align_down (start + alloc_quote, 3); sgen_fragment_allocator_add (allocator, start, promotion_barrier); sgen_fragment_allocator_add (&collector_allocator, promotion_barrier, end); region_age_size = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS; - region_age = g_malloc0 (region_age_size); + region_age = (char *)g_malloc0 (region_age_size); } static gboolean