* Copyright 2011 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.
*/
/*
frag->next = frag->next_in_order = NULL;
return frag;
}
- frag = sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
+ frag = (SgenFragment *)sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
frag->next = frag->next_in_order = NULL;
return frag;
}
fragment->fragment_start = start;
fragment->fragment_next = start;
fragment->fragment_end = end;
- fragment->next_in_order = fragment->next = unmask (allocator->region_head);
+ fragment->next_in_order = fragment->next = (SgenFragment *)unmask (allocator->region_head);
allocator->region_head = allocator->alloc_head = fragment;
g_assert (fragment->fragment_end > fragment->fragment_start);
printf ("retry count for fppf is %d\n", count);
#endif
- cur = unmask (*prev);
+ cur = (SgenFragment *)unmask (*prev);
while (1) {
if (cur == NULL)
return prev;
prev = &cur->next;
} else {
- next = unmask (next);
+ next = (SgenFragment *)unmask (next);
if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) != cur)
goto try_again;
/*we must make sure that the next from cur->next happens after*/
mono_memory_write_barrier ();
}
- cur = unmask (next);
+ cur = (SgenFragment *)unmask (next);
}
return NULL;
}
#endif
restart:
- for (frag = unmask (allocator->alloc_head); unmask (frag); frag = unmask (frag->next)) {
+ for (frag = (SgenFragment *)unmask (allocator->alloc_head); unmask (frag); frag = (SgenFragment *)unmask (frag->next)) {
HEAVY_STAT (++stat_alloc_iterations);
if (size <= (size_t)(frag->fragment_end - frag->fragment_next)) {
previous = &allocator->alloc_head;
for (frag = *previous; frag; frag = *previous) {
- char *p = serial_alloc_from_fragment (previous, frag, size);
+ char *p = (char *)serial_alloc_from_fragment (previous, frag, size);
HEAVY_STAT (++stat_alloc_iterations);
InterlockedIncrement (&alloc_count);
#endif
- for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+ for (frag = (SgenFragment *)unmask (allocator->alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
size_t frag_size = frag->fragment_end - frag->fragment_next;
HEAVY_STAT (++stat_alloc_range_iterations);
{
SgenFragment *frag;
- for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+ for (frag = (SgenFragment *)unmask (allocator->alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
SGEN_LOG (4, "Clear nursery frag %p-%p", frag->fragment_next, frag->fragment_end);
sgen_clear_range (frag->fragment_next, frag->fragment_end);
#ifdef NALLOC_DEBUG
addr0 = addr1 = sgen_nursery_end;
if (pin_entry < pin_end)
- addr0 = *pin_entry;
+ addr0 = (char *)*pin_entry;
if (frags_ranges)
addr1 = frags_ranges->fragment_start;
if (!unmask (mutator_allocator.alloc_head)) {
SGEN_LOG (1, "Nursery fully pinned");
for (pin_entry = pin_start; pin_entry < pin_end; ++pin_entry) {
- void *p = *pin_entry;
+ GCObject *p = (GCObject *)*pin_entry;
SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", p, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (p)), sgen_safe_object_get_size (p));
}
}
size = SGEN_ALIGN_UP (size);
- for (frag = unmask (mutator_allocator.alloc_head); frag; frag = unmask (frag->next)) {
+ for (frag = (SgenFragment *)unmask (mutator_allocator.alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
if ((size_t)(frag->fragment_end - frag->fragment_next) >= size)
return TRUE;
}
* since the nursery size must be a power of 2.
*/
sgen_space_bitmap_size = (end - start + SGEN_TO_SPACE_GRANULE_IN_BYTES * 8 - 1) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8);
- sgen_space_bitmap = g_malloc0 (sgen_space_bitmap_size);
+ sgen_space_bitmap = (char *)g_malloc0 (sgen_space_bitmap_size);
/* Setup the single first large fragment */
sgen_minor_collector.init_nursery (&mutator_allocator, start, end);