aboutsummaryrefslogtreecommitdiffstats
path: root/symbol.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2024-02-13 13:44:08 -0500
committerPeter Zhu <peter@peterzhu.ca>2024-02-13 15:30:06 -0500
commit4d3fc96b8ba885a9f61238aa1bd51dbc056f2f5d (patch)
tree137be08fe73bdc299ee960778a3b408cea141287 /symbol.c
parentb1964a92044f97f3b71ec98906c02083e28a7226 (diff)
downloadruby-4d3fc96b8ba885a9f61238aa1bd51dbc056f2f5d.tar.gz
Change dsymbol_alloc to use NEWOBJ_OF
Diffstat (limited to 'symbol.c')
-rw-r--r--symbol.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/symbol.c b/symbol.c
index bdbfbae831..dba18e4cc4 100644
--- a/symbol.c
+++ b/symbol.c
@@ -630,22 +630,23 @@ dsymbol_alloc(rb_symbols_t *symbols, const VALUE klass, const VALUE str, rb_enco
{
ASSERT_vm_locking();
- const VALUE dsym = rb_newobj_of(klass, T_SYMBOL | FL_WB_PROTECTED);
+ NEWOBJ_OF(obj, struct RSymbol, klass, T_SYMBOL | FL_WB_PROTECTED, sizeof(struct RSymbol), 0);
+
long hashval;
- rb_enc_set_index(dsym, rb_enc_to_index(enc));
- OBJ_FREEZE(dsym);
- RB_OBJ_WRITE(dsym, &RSYMBOL(dsym)->fstr, str);
- RSYMBOL(dsym)->id = type;
+ rb_enc_set_index((VALUE)obj, rb_enc_to_index(enc));
+ OBJ_FREEZE((VALUE)obj);
+ RB_OBJ_WRITE((VALUE)obj, &obj->fstr, str);
+ obj->id = type;
/* we want hashval to be in Fixnum range [ruby-core:15713] r15672 */
hashval = (long)rb_str_hash(str);
- RSYMBOL(dsym)->hashval = RSHIFT((long)hashval, 1);
- register_sym(symbols, str, dsym);
+ obj->hashval = RSHIFT((long)hashval, 1);
+ register_sym(symbols, str, (VALUE)obj);
rb_hash_aset(symbols->dsymbol_fstr_hash, str, Qtrue);
- RUBY_DTRACE_CREATE_HOOK(SYMBOL, RSTRING_PTR(RSYMBOL(dsym)->fstr));
+ RUBY_DTRACE_CREATE_HOOK(SYMBOL, RSTRING_PTR(obj->fstr));
- return dsym;
+ return (VALUE)obj;
}
static inline VALUE