diff options
author | Satoshi Tagomori <[email protected]> | 2025-04-30 13:48:02 +0900 |
---|---|---|
committer | Satoshi Tagomori <[email protected]> | 2025-05-11 23:32:50 +0900 |
commit | 382645d440d5da66a0c04557f3ff2ca226de3a27 (patch) | |
tree | b7453449930197237e739d0985561b664f51b0f3 /mini_builtin.c | |
parent | 49742414f6444960838bb968bab43db27f5872c1 (diff) |
namespace on read
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); + } } |