summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean Boussier <[email protected]>2025-06-18 09:56:22 +0100
committerJean Boussier <[email protected]>2025-06-23 10:04:58 +0100
commit393e9a5f3e3e4173579e204a642e9fe55ddaf461 ()
tree50cd670e75d9a7d56e2bf9eed16027ce4246db88
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.
-rw-r--r--eval.c1
-rw-r--r--internal/inits.h3
-rw-r--r--internal/namespace.h9
-rw-r--r--namespace.c30
4 files changed, 22 insertions, 21 deletions
@@ -78,6 +78,7 @@ ruby_setup(void)
#endif
Init_BareVM();
rb_vm_encoded_insn_data_table_init();
Init_vm_objects();
Init_fstring_table();
@@ -25,6 +25,9 @@ int Init_enc_set_filesystem_encoding(void);
/* newline.c */
void Init_newline(void);
/* vm.c */
void Init_BareVM(void);
void Init_vm_objects(void);
@@ -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);
void rb_namespace_enable_builtin(void);
void rb_namespace_disable_builtin(void);
void rb_namespace_push_loading_namespace(const rb_namespace_t *);
@@ -47,29 +47,10 @@ static bool tmp_dir_has_dirsep;
# define DIRSEP "/"
#endif
-static int namespace_availability = 0;
VALUE rb_resolve_feature_path(VALUE klass, VALUE fname);
static VALUE rb_namespace_inspect(VALUE obj);
-
-int
-rb_namespace_available(void)
-{
- const char *env;
- if (namespace_availability) {
- return namespace_availability > 0 ? 1 : 0;
- }
- env = getenv("RUBY_NAMESPACE");
- if (env && strlen(env) > 0) {
- if (strcmp(env, "1") == 0) {
- namespace_availability = 1;
- return 1;
- }
- }
- namespace_availability = -1;
- return 0;
-}
-
static void namespace_push(rb_thread_t *th, VALUE namespace);
static VALUE namespace_pop(VALUE th_value);
@@ -1032,6 +1013,15 @@ namespace_define_loader_method(const char *name)
}
void
Init_Namespace(void)
{
tmp_dir = system_tmpdir();