[前][次][番号順一覧][スレッド一覧]

ruby-changes:41699

From: nobu <ko1@a...>
Date: Mon, 8 Feb 2016 12:41:10 +0900 (JST)
Subject: [ruby-changes:41699] nobu:r53773 (trunk): string.c: use encoding index

nobu	2016-02-08 12:41:16 +0900 (Mon, 08 Feb 2016)

  New Revision: 53773

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53773

  Log:
    string.c: use encoding index
    
    * string.c (rb_external_str_with_enc, rb_str_concat, rb_str_dump):
      use encoding index as shortcut without rb_encoding.

  Modified files:
    trunk/string.c
Index: string.c
===================================================================
--- string.c	(revision 53772)
+++ string.c	(revision 53773)
@@ -952,12 +952,13 @@ rb_external_str_new_with_enc(const char https://github.com/ruby/ruby/blob/trunk/string.c#L952
 VALUE
 rb_external_str_with_enc(VALUE str, rb_encoding *eenc)
 {
-    if (eenc == rb_usascii_encoding() &&
+    int eidx = rb_enc_to_index(eenc);
+    if (eidx == rb_usascii_encindex() &&
 	rb_enc_str_coderange(str) != ENC_CODERANGE_7BIT) {
-	rb_enc_associate(str, rb_ascii8bit_encoding());
+	rb_enc_associate_index(str, rb_ascii8bit_encindex());
 	return str;
     }
-    rb_enc_associate(str, eenc);
+    rb_enc_associate_index(str, eidx);
     return rb_str_conv_enc(str, eenc, rb_default_internal_encoding());
 }
 
@@ -2680,7 +2681,7 @@ rb_str_concat(VALUE str1, VALUE str2) https://github.com/ruby/ruby/blob/trunk/string.c#L2681
 	}
 	rb_str_cat(str1, buf, 1);
 	if (code > 127) {
-	    rb_enc_associate(str1, rb_ascii8bit_encoding());
+	    rb_enc_associate_index(str1, rb_ascii8bit_encindex());
 	    ENC_CODERANGE_SET(str1, ENC_CODERANGE_VALID);
 	}
     }
@@ -5475,12 +5476,13 @@ rb_str_inspect(VALUE str) https://github.com/ruby/ruby/blob/trunk/string.c#L5476
 VALUE
 rb_str_dump(VALUE str)
 {
-    rb_encoding *enc = rb_enc_get(str);
+    int encidx = rb_enc_get_index(str);
+    rb_encoding *enc = rb_enc_from_index(encidx);
     long len;
     const char *p, *pend;
     char *q, *qend;
     VALUE result;
-    int u8 = (enc == rb_utf8_encoding());
+    int u8 = (encidx == rb_utf8_encindex());
 
     len = 2;			/* "" */
     p = RSTRING_PTR(str); pend = p + RSTRING_LEN(str);
@@ -5594,11 +5596,11 @@ rb_str_dump(VALUE str) https://github.com/ruby/ruby/blob/trunk/string.c#L5596
     *q = '\0';
     if (!rb_enc_asciicompat(enc)) {
 	snprintf(q, qend-q, ".force_encoding(\"%s\")", enc->name);
-	enc = rb_ascii8bit_encoding();
+	encidx = rb_ascii8bit_encindex();
     }
     OBJ_INFECT_RAW(result, str);
     /* result from dump is ASCII */
-    rb_enc_associate(result, enc);
+    rb_enc_associate_index(result, encidx);
     ENC_CODERANGE_SET(result, ENC_CODERANGE_7BIT);
     return result;
 }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]