@@ -124,33 +124,23 @@ ecma_builtin_math_object_max_min (bool is_max, /**< 'max' or 'min' operation */
124
124
uint32_t args_number ) /**< number of arguments */
125
125
{
126
126
ecma_number_t result_num = ecma_number_make_infinity (is_max );
127
- bool nan_found = false;
128
127
129
128
while (args_number > 0 )
130
129
{
131
130
ecma_number_t arg_num ;
131
+ ecma_value_t value = ecma_op_to_number (* arg , & arg_num );
132
132
133
- if (ecma_is_value_number ( * arg ))
133
+ if (ECMA_IS_VALUE_ERROR ( value ))
134
134
{
135
- arg_num = ecma_get_number_from_value (* arg );
136
- }
137
- else
138
- {
139
- ecma_value_t value = ecma_op_to_number (* arg , & arg_num );
140
-
141
- if (ECMA_IS_VALUE_ERROR (value ))
142
- {
143
- return value ;
144
- }
135
+ return value ;
145
136
}
146
137
147
138
arg ++ ;
148
139
args_number -- ;
149
140
150
- if (JERRY_UNLIKELY ( nan_found || ecma_number_is_nan (arg_num ) ))
141
+ if (ecma_number_is_nan (arg_num ))
151
142
{
152
- nan_found = true;
153
- continue ;
143
+ result_num = arg_num ;
154
144
}
155
145
156
146
if (ecma_number_is_zero (arg_num ) && ecma_number_is_zero (result_num ))
@@ -171,11 +161,6 @@ ecma_builtin_math_object_max_min (bool is_max, /**< 'max' or 'min' operation */
171
161
}
172
162
}
173
163
174
- if (JERRY_UNLIKELY (nan_found ))
175
- {
176
- result_num = ecma_number_make_nan ();
177
- }
178
-
179
164
return ecma_make_number_value (result_num );
180
165
} /* ecma_builtin_math_object_max_min */
181
166
@@ -198,54 +183,37 @@ ecma_builtin_math_object_hypot (const ecma_value_t *arg, /**< arguments list */
198
183
return ecma_make_number_value (0.0 );
199
184
}
200
185
201
- bool nan_found = false;
202
- bool inf_found = false;
203
186
ecma_number_t result_num = 0 ;
187
+ bool inf = false;
204
188
205
189
while (args_number > 0 )
206
190
{
207
191
ecma_number_t arg_num ;
208
- if (ecma_is_value_number (* arg ))
192
+ ecma_value_t value = ecma_op_to_number (* arg , & arg_num );
193
+ if (ECMA_IS_VALUE_ERROR (value ))
209
194
{
210
- arg_num = ecma_get_number_from_value (* arg );
211
- }
212
- else
213
- {
214
- ecma_value_t value = ecma_op_to_number (* arg , & arg_num );
215
- if (ECMA_IS_VALUE_ERROR (value ))
216
- {
217
- return value ;
218
- }
195
+ return value ;
219
196
}
220
197
221
198
arg ++ ;
222
199
args_number -- ;
223
200
224
- if (JERRY_UNLIKELY ( inf_found || ecma_number_is_infinity ( arg_num )) )
201
+ if (ecma_number_is_nan ( arg_num ) && ! inf )
225
202
{
226
- inf_found = true ;
203
+ result_num = arg_num ;
227
204
continue ;
228
205
}
229
206
230
- if (JERRY_UNLIKELY ( nan_found || ecma_number_is_nan ( arg_num ) ))
207
+ if (ecma_number_is_infinity ( arg_num ))
231
208
{
232
- nan_found = true;
209
+ inf = true;
210
+ result_num = ecma_number_make_infinity (false);
233
211
continue ;
234
212
}
235
213
236
214
result_num += arg_num * arg_num ;
237
215
}
238
216
239
- if (JERRY_UNLIKELY (inf_found ))
240
- {
241
- return ecma_make_number_value (ecma_number_make_infinity (false));
242
- }
243
-
244
- if (JERRY_UNLIKELY (nan_found ))
245
- {
246
- return ecma_make_nan_value ();
247
- }
248
-
249
217
return ecma_make_number_value (sqrt (result_num ));
250
218
} /* ecma_builtin_math_object_hypot */
251
219
@@ -344,18 +312,11 @@ ecma_builtin_math_dispatch_routine (uint8_t builtin_routine_id, /**< built-in wi
344
312
345
313
if (arguments_number >= 1 )
346
314
{
347
- if (ecma_is_value_number (arguments_list [0 ]))
348
- {
349
- x = ecma_get_number_from_value (arguments_list [0 ]);
350
- }
351
- else
352
- {
353
- ecma_value_t value = ecma_op_to_number (arguments_list [0 ], & x );
315
+ ecma_value_t value = ecma_op_to_number (arguments_list [0 ], & x );
354
316
355
- if (ECMA_IS_VALUE_ERROR (value ))
356
- {
357
- return value ;
358
- }
317
+ if (ECMA_IS_VALUE_ERROR (value ))
318
+ {
319
+ return value ;
359
320
}
360
321
}
361
322
0 commit comments