summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2025-06-18 09:56:22 +0100
committerJean Boussier <jean.boussier@gmail.com>2025-06-23 10:04:58 +0100
commit393e9a5f3e3e4173579e204a642e9fe55ddaf461 (patch)
tree50cd670e75d9a7d56e2bf9eed16027ce4246db88 /internal
parentce38cba528b4da8fe306377dc9bb6eaf7a639c53 (diff)
Optimize `rb_namespace_available`
Rather than to lazily check the env using a trinary value, we can more straightforwardly check for the env during the VM boot. This allow `rb_namespace_available` to just be a pointer dereference.
Diffstat (limited to 'internal')
-rw-r--r--internal/inits.h3
-rw-r--r--internal/namespace.h9
2 files changed, 11 insertions, 1 deletions
diff --git a/internal/inits.h b/internal/inits.h
index 03de289dd4..e618d87cc3 100644
--- a/internal/inits.h
+++ b/internal/inits.h
@@ -25,6 +25,9 @@ int Init_enc_set_filesystem_encoding(void);
/* newline.c */
void Init_newline(void);
+/* namespace.c */
+void Init_enable_namespace(void);
+
/* vm.c */
void Init_BareVM(void);
void Init_vm_objects(void);
diff --git a/internal/namespace.h b/internal/namespace.h
index ad1507b50c..54ab129d6e 100644
--- a/internal/namespace.h
+++ b/internal/namespace.h
@@ -51,7 +51,14 @@ typedef struct rb_namespace_struct rb_namespace_t;
#define NAMESPACE_CC(cc) (cc ? NAMESPACE_METHOD_ENTRY(cc->cme_) : NULL)
#define NAMESPACE_CC_ENTRIES(ccs) (ccs ? NAMESPACE_METHOD_ENTRY(ccs->cme) : NULL)
-int rb_namespace_available(void);
+RUBY_EXTERN bool ruby_namespace_enabled;
+
+static inline bool
+rb_namespace_available(void)
+{
+ return ruby_namespace_enabled;
+}
+
void rb_namespace_enable_builtin(void);
void rb_namespace_disable_builtin(void);
void rb_namespace_push_loading_namespace(const rb_namespace_t *);