2 * sgen-simple-nursery.c: Simple always promote nursery.
4 * Copyright 2001-2003 Ximian, Inc
5 * Copyright 2003-2010 Novell, Inc.
6 * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
7 * Copyright (C) 2012 Xamarin Inc
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public
11 * License 2.0 as published by the Free Software Foundation;
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public
19 * License 2.0 along with this library; if not, write to the Free
20 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 #include "mono/sgen/sgen-gc.h"
29 #include "mono/sgen/sgen-protocol.h"
30 #include "mono/sgen/sgen-layout-stats.h"
31 #include "mono/sgen/sgen-client.h"
33 static inline GCObject*
34 alloc_for_promotion (GCVTable vtable, GCObject *obj, size_t objsize, gboolean has_references)
36 return major_collector.alloc_object (vtable, objsize, has_references);
40 build_fragments_get_exclude_head (void)
46 build_fragments_release_exclude_head (void)
51 build_fragments_finish (SgenFragmentAllocator *allocator)
56 prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
61 clear_fragments (void)
66 init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
68 sgen_fragment_allocator_add (allocator, start, end);
72 /******************************************Copy/Scan functins ************************************************/
74 #define SGEN_SIMPLE_NURSERY
76 #define SERIAL_COPY_OBJECT simple_nursery_serial_copy_object
77 #define SERIAL_COPY_OBJECT_FROM_OBJ simple_nursery_serial_copy_object_from_obj
79 #include "sgen-minor-copy-object.h"
80 #include "sgen-minor-scan-object.h"
83 sgen_simple_nursery_init (SgenMinorCollector *collector)
85 collector->is_split = FALSE;
87 collector->alloc_for_promotion = alloc_for_promotion;
89 collector->prepare_to_space = prepare_to_space;
90 collector->clear_fragments = clear_fragments;
91 collector->build_fragments_get_exclude_head = build_fragments_get_exclude_head;
92 collector->build_fragments_release_exclude_head = build_fragments_release_exclude_head;
93 collector->build_fragments_finish = build_fragments_finish;
94 collector->init_nursery = init_nursery;
96 FILL_MINOR_COLLECTOR_COPY_OBJECT (collector);
97 FILL_MINOR_COLLECTOR_SCAN_OBJECT (collector);