string.c: add fastpath in str_ensure_byte_pos
If the string only contain single byte characters we can skips all the costly checks.
This commit is contained in:
parent
a332367dad
commit
3bac5f6af5
Notes:
git
2024-08-09 20:07:03 +00:00
2
string.c
2
string.c
@ -4254,6 +4254,7 @@ rb_str_index_m(int argc, VALUE *argv, VALUE str)
|
|||||||
static void
|
static void
|
||||||
str_ensure_byte_pos(VALUE str, long pos)
|
str_ensure_byte_pos(VALUE str, long pos)
|
||||||
{
|
{
|
||||||
|
if (!single_byte_optimizable(str)) {
|
||||||
const char *s = RSTRING_PTR(str);
|
const char *s = RSTRING_PTR(str);
|
||||||
const char *e = RSTRING_END(str);
|
const char *e = RSTRING_END(str);
|
||||||
const char *p = s + pos;
|
const char *p = s + pos;
|
||||||
@ -4262,6 +4263,7 @@ str_ensure_byte_pos(VALUE str, long pos)
|
|||||||
"offset %ld does not land on character boundary", pos);
|
"offset %ld does not land on character boundary", pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user