File tree Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Original file line number Diff line number Diff line change @@ -1877,20 +1877,17 @@ rb_objspace_alloc(void)
1877
1877
1878
1878
#if USE_MMTK
1879
1879
if (rb_mmtk_enabled_p ()) {
1880
- if (!mmtk_env_plan && setenv ("MMTK_PLAN" , mmtk_chosen_plan , 0 ) != 0 ) {
1881
- fputs ("[FATAL] could not set MMTK_PLAN\n" , stderr );
1882
- exit (EXIT_FAILURE );
1883
- }
1880
+ MMTk_Builder mmtk_builder = mmtk_builder_default ();
1881
+
1882
+ mmtk_builder_set_plan (mmtk_builder , mmtk_chosen_plan );
1884
1883
1885
1884
// Note: the limit is currently broken for NoGC, but we still attempt to
1886
1885
// initialise it properly regardless.
1887
1886
// See https://github.com/mmtk/mmtk-core/issues/214
1888
- mmtk_init_binding (rb_mmtk_heap_limit (), & ruby_upcalls );
1887
+ size_t heap_size = rb_mmtk_heap_limit ();
1888
+ mmtk_builder_set_heap_size (mmtk_builder , heap_size );
1889
1889
1890
- if (!mmtk_env_plan && unsetenv ("MMTK_PLAN" ) != 0 ) {
1891
- fputs ("[FATAL] could not unset MMTK_PLAN\n" , stderr );
1892
- exit (EXIT_FAILURE );
1893
- }
1890
+ mmtk_init_binding (mmtk_builder , & ruby_upcalls );
1894
1891
}
1895
1892
#endif
1896
1893
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ extern "C" {
13
13
#define MMTK_MIN_OBJ_ALIGN 8
14
14
#define MMTK_OBJREF_OFFSET 8
15
15
16
+ typedef void * MMTk_Builder ;
16
17
typedef void * MMTk_Mutator ;
17
18
typedef void * MMTk_TraceLocal ;
18
19
@@ -38,10 +39,21 @@ typedef struct {
38
39
void (* scan_object_ruby_style )(void * object );
39
40
} RubyUpcalls ;
40
41
42
+ /**
43
+ * MMTK builder and options
44
+ */
45
+ MMTk_Builder mmtk_builder_default ();
46
+
47
+ void mmtk_builder_set_heap_size (MMTk_Builder builder , uintptr_t heap_size );
48
+
49
+ void mmtk_builder_set_plan (MMTk_Builder builder , const char * plan_name );
50
+
51
+ void mmtk_init_binding (MMTk_Builder builder , const RubyUpcalls * upcalls );
52
+
41
53
/**
42
54
* Initialization
43
55
*/
44
- extern void mmtk_init_binding (size_t heap_size , RubyUpcalls * ruby_upcalls );
56
+ extern void mmtk_init_binding (MMTk_Builder builder , const RubyUpcalls * upcalls );
45
57
extern void mmtk_initialize_collection (void * tls );
46
58
extern void mmtk_enable_collection ();
47
59
You can’t perform that action at this time.
0 commit comments