mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/bigdecimal] Reduce needless object allocation in f_BigDecimal
5c808eeabb
This commit is contained in:
parent
06b44f819e
commit
d11b78f9c4
1 changed files with 3 additions and 5 deletions
|
@ -2870,19 +2870,17 @@ f_BigDecimal(int argc, VALUE *argv, VALUE self)
|
||||||
{
|
{
|
||||||
ENTER(1);
|
ENTER(1);
|
||||||
Real *pv;
|
Real *pv;
|
||||||
VALUE obj;
|
|
||||||
|
|
||||||
if (argc > 0 && CLASS_OF(argv[0]) == rb_cBigDecimal) {
|
if (argc > 0 && CLASS_OF(argv[0]) == rb_cBigDecimal) {
|
||||||
if (argc == 1 || (argc == 2 && RB_TYPE_P(argv[1], T_HASH))) return argv[0];
|
if (argc == 1 || (argc == 2 && RB_TYPE_P(argv[1], T_HASH))) return argv[0];
|
||||||
}
|
}
|
||||||
obj = TypedData_Wrap_Struct(rb_cBigDecimal, &BigDecimal_data_type, 0);
|
|
||||||
pv = VpNewVarArg(argc, argv);
|
pv = VpNewVarArg(argc, argv);
|
||||||
if (pv == NULL) return Qnil;
|
if (pv == NULL) return Qnil;
|
||||||
SAVE(pv);
|
SAVE(pv);
|
||||||
if (ToValue(pv)) pv = VpCopy(NULL, pv);
|
if (ToValue(pv)) pv = VpCopy(NULL, pv);
|
||||||
RTYPEDDATA_DATA(obj) = pv;
|
pv->obj = TypedData_Wrap_Struct(rb_cBigDecimal, &BigDecimal_data_type, pv);
|
||||||
RB_OBJ_FREEZE(obj);
|
RB_OBJ_FREEZE(pv->obj);
|
||||||
return pv->obj = obj;
|
return pv->obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue