Skip to content

Commit 0035c98

Browse files
authored
Merge pull request ruby#15 from mmtk/strongly-typed-options
Use new API for setting MMTk options
2 parents cf8e768 + 0dd0610 commit 0035c98

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

gc.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff 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

mmtk.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff 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;
1617
typedef void* MMTk_Mutator;
1718
typedef 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);
4557
extern void mmtk_initialize_collection(void *tls);
4658
extern void mmtk_enable_collection();
4759

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy