summaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-11 17:46:52 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-11 17:46:52 +0000
commiteb424f60cd2f4d6a97bdf4ca24a072689d09b05f (patch)
tree641874edebfc4982c6ffac04db4eb5f8a01ee5fe /parse.y
parent44b86ef7ec1a9ba6eb65effd44541e4e3ab22ab0 (diff)
downloadruby-eb424f60cd2f4d6a97bdf4ca24a072689d09b05f.tar.gz
ruby-eb424f60cd2f4d6a97bdf4ca24a072689d09b05f.tar.xz
ruby-eb424f60cd2f4d6a97bdf4ca24a072689d09b05f.zip
* range.c (range_include): specialize single character string
case (e.g. (?a ..?z).include(?x)) for performance. [ruby-core:15481] * string.c (rb_str_upto): specialize single character case. * string.c (rb_str_hash): omit coderange scan for performance. * object.c (rb_check_to_integer): check Fixnum first. * object.c (rb_to_integer): ditto. * string.c (rb_str_equal): inline memcmp to avoid unnecessary rb_str_comparable(). * parse.y (rb_intern2): use US-ASCII encoding. * parse.y (rb_intern_str): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y16
1 files changed, 9 insertions, 7 deletions
diff --git a/parse.y b/parse.y
index 39cd51df9..8ca7c8627 100644
--- a/parse.y
+++ b/parse.y
@@ -271,7 +271,7 @@ struct parser_params {
#define STR_NEW0() rb_enc_str_new(0,0,rb_usascii_encoding())
#define STR_NEW2(p) rb_enc_str_new((p),strlen(p),parser->enc)
#define STR_NEW3(p,n,e,func) parser_str_new((p),(n),(e),(func),parser->enc)
-#define STR_ENC(m) ((m)?parser->enc:rb_ascii8bit_encoding())
+#define STR_ENC(m) ((m)?parser->enc:rb_usascii_encoding())
#define ENC_SINGLE(cr) ((cr)==ENC_CODERANGE_7BIT)
#define TOK_INTERN(mb) rb_intern3(tok(), toklen(), STR_ENC(mb))
@@ -9043,7 +9043,7 @@ rb_intern3(const char *name, long len, rb_encoding *enc)
ID
rb_intern2(const char *name, long len)
{
- return rb_intern3(name, len, rb_ascii8bit_encoding());
+ return rb_intern3(name, len, rb_usascii_encoding());
}
#undef rb_intern
@@ -9056,14 +9056,16 @@ rb_intern(const char *name)
ID
rb_intern_str(VALUE str)
{
- int idx = 0;
+ rb_encoding *enc;
ID id;
- if (rb_enc_str_coderange(str) != ENC_CODERANGE_7BIT) {
- idx = rb_enc_get_index(str);
+ if (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT) {
+ enc = rb_usascii_encoding();
+ }
+ else {
+ enc = rb_enc_get(str);
}
- id = rb_intern3(RSTRING_PTR(str), RSTRING_LEN(str),
- rb_enc_from_index(idx));
+ id = rb_intern3(RSTRING_PTR(str), RSTRING_LEN(str), enc);
RB_GC_GUARD(str);
return id;
}