Reduce `is_ascii_string` function dependency for parser
authorS-H-GAMELINKS <[email protected]>
Thu, 26 Sep 2024 13:04:49 +0000 (26 22:04 +0900)
committerNobuyoshi Nakada <[email protected]>
Fri, 27 Sep 2024 10:34:35 +0000 (27 19:34 +0900)
Changed to use `rb_parser_is_ascii_string` function instead of `is_ascii_string` function

parse.y
ruby_parser.c
rubyparser.h
universal_parser.c

diff --git a/parse.y b/parse.y
index 94c4c5d..3e0a903 100644 (file)
--- a/parse.y
+++ b/parse.y
@@ -7694,16 +7694,21 @@ static VALUE
 parser_str_new(struct parser_params *p, const char *ptr, long len, rb_encoding *enc, int func, rb_encoding *enc0)
 {
     VALUE str;
+    rb_parser_string_t *pstr;
+
+    pstr = rb_parser_encoding_string_new(p, ptr, len, enc);
+    str = rb_str_new_mutable_parser_string(pstr);
 
-    str = rb_enc_str_new(ptr, len, enc);
     if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
-        if (is_ascii_string(str)) {
+        if (rb_parser_is_ascii_string(p, pstr)) {
         }
         else if (rb_is_usascii_enc((void *)enc0) && enc != rb_utf8_encoding()) {
             rb_enc_associate(str, rb_ascii8bit_encoding());
         }
     }
 
+    rb_parser_string_free(p, pstr);
+
     return str;
 }
 
index a965fc4..8a87b3a 100644 (file)
 
 #define parser_encoding const void
 
-static int
-is_ascii_string2(VALUE str)
-{
-    return is_ascii_string(str);
-}
-
 RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 6, 0)
 static VALUE
 syntax_error_append(VALUE exc, VALUE file, int line, int column,
@@ -375,7 +369,6 @@ static const rb_parser_config_t rb_global_parser_config = {
     .str_new = rb_str_new,
     .str_new_cstr = rb_str_new_cstr,
     .str_to_interned_str = rb_str_to_interned_str,
-    .is_ascii_string = is_ascii_string2,
     .enc_str_new = enc_str_new,
     .str_vcatf = rb_str_vcatf,
     .rb_sprintf = rb_sprintf,
index 2e7e6b6..99e8b27 100644 (file)
@@ -1221,7 +1221,6 @@ typedef struct rb_parser_config_struct {
     VALUE (*str_new)(const char *ptr, long len);
     VALUE (*str_new_cstr)(const char *ptr);
     VALUE (*str_to_interned_str)(VALUE);
-    int (*is_ascii_string)(VALUE str);
     VALUE (*enc_str_new)(const char *ptr, long len, rb_encoding *enc);
     RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 0)
     VALUE (*str_vcatf)(VALUE str, const char *fmt, va_list ap);
index 9ba7bef..afe5e47 100644 (file)
 #undef rb_str_new_cstr
 #define rb_str_new_cstr                   p->config->str_new_cstr
 #define rb_str_to_interned_str            p->config->str_to_interned_str
-#define is_ascii_string                   p->config->is_ascii_string
 #define rb_enc_str_new                    p->config->enc_str_new
 #define rb_str_vcatf                      p->config->str_vcatf
 #define rb_sprintf                        p->config->rb_sprintf