Merge branch 'master' into mono4-continuations_fix
[mono.git] / mono / sgen / sgen-simple-nursery.c
1 /*
2  * sgen-simple-nursery.c: Simple always promote nursery.
3  *
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
8  *
9  * Licensed under the MIT license. See LICENSE file in the project root for full license information.
10  */
11
12 #include "config.h"
13 #ifdef HAVE_SGEN_GC
14
15 #include <string.h>
16
17 #include "mono/sgen/sgen-gc.h"
18 #include "mono/sgen/sgen-protocol.h"
19 #include "mono/sgen/sgen-layout-stats.h"
20 #include "mono/sgen/sgen-client.h"
21
22 static inline GCObject*
23 alloc_for_promotion (GCVTable vtable, GCObject *obj, size_t objsize, gboolean has_references)
24 {
25         total_promoted_size += objsize;
26         return major_collector.alloc_object (vtable, objsize, has_references);
27 }
28
29 static SgenFragment*
30 build_fragments_get_exclude_head (void)
31 {
32         return NULL;
33 }
34
35 static void
36 build_fragments_release_exclude_head (void)
37 {
38 }
39
40 static void
41 build_fragments_finish (SgenFragmentAllocator *allocator)
42 {
43 }
44
45 static void
46 prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
47 {
48 }
49
50 static void
51 clear_fragments (void)
52 {       
53 }
54
55 static void
56 init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
57 {
58         sgen_fragment_allocator_add (allocator, start, end);
59 }
60
61
62 /******************************************Copy/Scan functins ************************************************/
63
64 #define SGEN_SIMPLE_NURSERY
65
66 #define SERIAL_COPY_OBJECT simple_nursery_serial_copy_object
67 #define SERIAL_COPY_OBJECT_FROM_OBJ simple_nursery_serial_copy_object_from_obj
68
69 #include "sgen-minor-copy-object.h"
70 #include "sgen-minor-scan-object.h"
71
72 void
73 sgen_simple_nursery_init (SgenMinorCollector *collector)
74 {
75         collector->is_split = FALSE;
76
77         collector->alloc_for_promotion = alloc_for_promotion;
78
79         collector->prepare_to_space = prepare_to_space;
80         collector->clear_fragments = clear_fragments;
81         collector->build_fragments_get_exclude_head = build_fragments_get_exclude_head;
82         collector->build_fragments_release_exclude_head = build_fragments_release_exclude_head;
83         collector->build_fragments_finish = build_fragments_finish;
84         collector->init_nursery = init_nursery;
85
86         FILL_MINOR_COLLECTOR_COPY_OBJECT (collector);
87         FILL_MINOR_COLLECTOR_SCAN_OBJECT (collector);
88 }
89
90
91 #endif