Improve performance Kernel#Float with using Primitive.mandatory_only? method [Feature #18344] (#5133)

This commit is contained in:
S.H 2021-11-18 13:26:40 +09:00 коммит произвёл GitHub
Родитель cb69c19e8a
Коммит 05a3dc1a65
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@ -169,6 +169,10 @@ module Kernel
# Float("123.0_badstring", exception: false) #=> nil
#
def Float(arg, exception: true)
Primitive.rb_f_float(arg, exception)
if Primitive.mandatory_only?
Primitive.rb_f_float1(arg)
else
Primitive.rb_f_float(arg, exception)
end
end
end

Просмотреть файл

@ -3531,6 +3531,12 @@ rb_Float(VALUE val)
return rb_convert_to_float(val, TRUE);
}
static VALUE
rb_f_float1(rb_execution_context_t *ec, VALUE obj, VALUE arg)
{
return rb_convert_to_float(arg, TRUE);
}
static VALUE
rb_f_float(rb_execution_context_t *ec, VALUE obj, VALUE arg, VALUE opts)
{