summaryrefslogtreecommitdiff
path: root/mini_builtin.c
diff options
context:
space:
mode:
authorSatoshi Tagomori <[email protected]>2025-04-30 13:48:02 +0900
committerSatoshi Tagomori <[email protected]>2025-05-11 23:32:50 +0900
commit382645d440d5da66a0c04557f3ff2ca226de3a27 (patch)
treeb7453449930197237e739d0985561b664f51b0f3 /mini_builtin.c
parent49742414f6444960838bb968bab43db27f5872c1 (diff)
namespace on read
Diffstat (limited to 'mini_builtin.c')
-rw-r--r--mini_builtin.c19
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);
+ }
}