зеркало из https://github.com/github/ruby.git
string.c: optimize String#times
* string.c (rb_str_times): optimize for the argument 0 and 1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52071 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
8f4e6f14d8
Коммит
9fe491e788
|
@ -1,3 +1,7 @@
|
|||
Wed Oct 7 17:30:50 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* string.c (rb_str_times): optimize for the argument 0 and 1.
|
||||
|
||||
Wed Oct 7 01:20:46 2015 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* gc.h, gc.c: introduce new debug function rb_obj_info_dump(VALUE obj)
|
||||
|
|
9
string.c
9
string.c
|
@ -1598,6 +1598,15 @@ rb_str_times(VALUE str, VALUE times)
|
|||
char *ptr2;
|
||||
int termlen;
|
||||
|
||||
if (times == INT2FIX(1)) {
|
||||
return rb_str_dup(str);
|
||||
}
|
||||
if (times == INT2FIX(0)) {
|
||||
str2 = str_alloc(rb_obj_class(str));
|
||||
rb_enc_copy(str2, str);
|
||||
OBJ_INFECT(str2, str);
|
||||
return str2;
|
||||
}
|
||||
len = NUM2LONG(times);
|
||||
if (len < 0) {
|
||||
rb_raise(rb_eArgError, "negative argument");
|
||||
|
|
Загрузка…
Ссылка в новой задаче