diff options
Diffstat (limited to 'mini_builtin.c')
-rw-r--r-- | mini_builtin.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/mini_builtin.c b/mini_builtin.c index adcb4f965f..4e5fe98f93 100644 --- a/mini_builtin.c +++ b/mini_builtin.c @@ -1,5 +1,6 @@ #include "internal.h" #include "internal/array.h" +#include "internal/eval.h" #include "iseq.h" #include "vm_core.h" #include "builtin.h" @@ -95,9 +96,23 @@ builtin_iseq_load(const char *feature_name, const struct rb_builtin_function *ta return iseq; } +static void +load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table) +{ + const rb_iseq_t *iseq = builtin_iseq_load(feature_name, table); + rb_namespace_enable_builtin(); + rb_iseq_eval_with_refinement(iseq, rb_mNamespaceRefiner); + rb_namespace_disable_builtin(); +} + void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table) { - const rb_iseq_t *iseq = builtin_iseq_load(feature_name, table); - rb_iseq_eval(iseq); + const rb_iseq_t *iseq; + if (rb_namespace_available() && rb_mNamespaceRefiner) { + load_with_builtin_functions(feature_name, table); + } else { + iseq = builtin_iseq_load(feature_name, table); + rb_iseq_eval(iseq); + } } |