mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
numeric.c: micro optimizations
* numeric.c (flo_to_s, rb_fix2str): use rb_usascii_str_new instead of rb_usascii_str_new_cstr, when the length can be calculated. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7c14876b2f
commit
53ec85b5b4
1 changed files with 7 additions and 5 deletions
12
numeric.c
12
numeric.c
|
@ -733,8 +733,11 @@ flo_to_s(VALUE flt)
|
||||||
char *p, *e;
|
char *p, *e;
|
||||||
int sign, decpt, digs;
|
int sign, decpt, digs;
|
||||||
|
|
||||||
if (isinf(value))
|
if (isinf(value)) {
|
||||||
return rb_usascii_str_new2(value < 0 ? "-Infinity" : "Infinity");
|
static const char minf[] = "-Infinity";
|
||||||
|
const int pos = (value > 0); /* skip "-" */
|
||||||
|
return rb_usascii_str_new(minf+pos, strlen(minf)-pos);
|
||||||
|
}
|
||||||
else if (isnan(value))
|
else if (isnan(value))
|
||||||
return rb_usascii_str_new2("NaN");
|
return rb_usascii_str_new2("NaN");
|
||||||
|
|
||||||
|
@ -2863,7 +2866,7 @@ fix_uminus(VALUE num)
|
||||||
VALUE
|
VALUE
|
||||||
rb_fix2str(VALUE x, int base)
|
rb_fix2str(VALUE x, int base)
|
||||||
{
|
{
|
||||||
char buf[SIZEOF_VALUE*CHAR_BIT + 2], *b = buf + sizeof buf;
|
char buf[SIZEOF_VALUE*CHAR_BIT + 1], *const e = buf + sizeof buf, *b = e;
|
||||||
long val = FIX2LONG(x);
|
long val = FIX2LONG(x);
|
||||||
int neg = 0;
|
int neg = 0;
|
||||||
|
|
||||||
|
@ -2877,7 +2880,6 @@ rb_fix2str(VALUE x, int base)
|
||||||
val = -val;
|
val = -val;
|
||||||
neg = 1;
|
neg = 1;
|
||||||
}
|
}
|
||||||
*--b = '\0';
|
|
||||||
do {
|
do {
|
||||||
*--b = ruby_digitmap[(int)(val % base)];
|
*--b = ruby_digitmap[(int)(val % base)];
|
||||||
} while (val /= base);
|
} while (val /= base);
|
||||||
|
@ -2885,7 +2887,7 @@ rb_fix2str(VALUE x, int base)
|
||||||
*--b = '-';
|
*--b = '-';
|
||||||
}
|
}
|
||||||
|
|
||||||
return rb_usascii_str_new2(b);
|
return rb_usascii_str_new(b, e - b);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue