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);
|
||||
Real *pv;
|
||||
VALUE obj;
|
||||
|
||||
if (argc > 0 && CLASS_OF(argv[0]) == rb_cBigDecimal) {
|
||||
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);
|
||||
if (pv == NULL) return Qnil;
|
||||
SAVE(pv);
|
||||
if (ToValue(pv)) pv = VpCopy(NULL, pv);
|
||||
RTYPEDDATA_DATA(obj) = pv;
|
||||
RB_OBJ_FREEZE(obj);
|
||||
return pv->obj = obj;
|
||||
pv->obj = TypedData_Wrap_Struct(rb_cBigDecimal, &BigDecimal_data_type, pv);
|
||||
RB_OBJ_FREEZE(pv->obj);
|
||||
return pv->obj;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue