Skip to content

Commit

Permalink
gc.c: Load GC tuning settings earlier during boot.
Browse files Browse the repository at this point in the history
* gc.c (ruby_gc_set_params): Accept safe_level argument so GC tuning
  settings can be applied before rb_safe_level() is available.
* internal.h (rb_gc_set_params): ditto.
* ruby.c (process_options): Apply GC tuning early during boot process
  so boot-time allocations can benefit. This also benefits any code
  loaded in via `ruby -r`.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
tmm1 committed Dec 5, 2013
1 parent 46b4eca commit 53e0d46
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 5 deletions.
9 changes: 9 additions & 0 deletions ChangeLog
@@ -1,3 +1,12 @@
Thu Dec 5 09:07:59 2013 Aman Gupta <ruby@tmm1.net>

* gc.c (ruby_gc_set_params): Accept safe_level argument so GC tuning
settings can be applied before rb_safe_level() is available.
* internal.h (rb_gc_set_params): ditto.
* ruby.c (process_options): Apply GC tuning early during boot process
so boot-time allocations can benefit. This also benefits any code
loaded in via `ruby -r`.

Wed Dec 4 13:02:13 2013 Aman Gupta <ruby@tmm1.net>

* vm_trace.c (rb_suppress_tracing): Fix initialization of stack
Expand Down
6 changes: 3 additions & 3 deletions gc.c
Expand Up @@ -5386,9 +5386,9 @@ gc_set_initial_pages(void)
*/

void
ruby_gc_set_params(void)
ruby_gc_set_params(int safe_level)
{
if (rb_safe_level() > 0) return;
if (safe_level > 0) return;

/* RUBY_GC_HEAP_FREE_SLOTS */
if (get_envparam_int ("RUBY_FREE_MIN", &gc_params.heap_free_slots, 0)) {
Expand Down Expand Up @@ -5419,7 +5419,7 @@ ruby_gc_set_params(void)
#endif
}

RUBY_ALIAS_FUNCTION_VOID(rb_gc_set_params(void), ruby_gc_set_params, ())
RUBY_ALIAS_FUNCTION_VOID(rb_gc_set_params(void), ruby_gc_set_params, (rb_safe_level()))

void
rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data)
Expand Down
2 changes: 1 addition & 1 deletion internal.h
Expand Up @@ -453,7 +453,7 @@ void *ruby_mimmalloc(size_t size);
void ruby_mimfree(void *ptr);
void rb_objspace_set_event_hook(const rb_event_flag_t event);
void rb_gc_writebarrier_remember_promoted(VALUE obj);
void ruby_gc_set_params(void);
void ruby_gc_set_params(int safe_level);

#if defined(HAVE_MALLOC_USABLE_SIZE) || defined(HAVE_MALLOC_SIZE) || defined(_WIN32)
#define ruby_sized_xrealloc(ptr, new_size, old_size) ruby_xrealloc(ptr, new_size)
Expand Down
2 changes: 1 addition & 1 deletion ruby.c
Expand Up @@ -1405,6 +1405,7 @@ process_options(int argc, char **argv, struct cmdline_options *opt)
translit_char(RSTRING_PTR(opt->script_name), '\\', '/');
#endif

ruby_gc_set_params(opt->safe_level);
ruby_init_loadpath_safe(opt->safe_level);
Init_enc();
rb_enc_find_index("encdb");
Expand Down Expand Up @@ -1568,7 +1569,6 @@ process_options(int argc, char **argv, struct cmdline_options *opt)
rb_define_readonly_boolean("$-a", opt->do_split);

rb_set_safe_level(opt->safe_level);
ruby_gc_set_params();

return iseq;
}
Expand Down

0 comments on commit 53e0d46

Please sign in to comment.