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)
18771877
18781878#if USE_MMTK
18791879 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 );
18841883
18851884 // Note: the limit is currently broken for NoGC, but we still attempt to
18861885 // initialise it properly regardless.
18871886 // 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 );
18891889
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 );
18941891 }
18951892#endif
18961893
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ extern "C" {
1313#define MMTK_MIN_OBJ_ALIGN 8
1414#define MMTK_OBJREF_OFFSET 8
1515
16+ typedef void * MMTk_Builder ;
1617typedef void * MMTk_Mutator ;
1718typedef void * MMTk_TraceLocal ;
1819
@@ -38,10 +39,21 @@ typedef struct {
3839 void (* scan_object_ruby_style )(void * object );
3940} RubyUpcalls ;
4041
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+
4153/**
4254 * Initialization
4355 */
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 );
4557extern void mmtk_initialize_collection (void * tls );
4658extern void mmtk_enable_collection ();
4759
You can’t perform that action at this time.
0 commit comments