Skip to content

Commit 4c87f0a

Browse files
author
Zsolt Borbély
committed
Various enhancements
Modifications: * eliminate unnecessary variables, functions * use ECMA_NUMBER macros where it is possible * simplify code * minor style fix (comments, increase-decrease operators) JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély [email protected]
1 parent 9d79780 commit 4c87f0a

13 files changed

+74
-216
lines changed

jerry-core/ecma/base/ecma-helpers-conversion.c

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ ecma_utf8_string_to_number (const lit_utf8_byte_t *str_p, /**< utf-8 string */
404404
/* Hex literal handling */
405405
begin_p += 2;
406406

407-
ecma_number_t num = 0;
407+
ecma_number_t num = ECMA_NUMBER_ZERO;
408408

409409
for (const lit_utf8_byte_t * iter_p = begin_p;
410410
iter_p <= end_p;
@@ -796,7 +796,7 @@ ecma_uint32_to_utf8_string (uint32_t value, /**< value to convert */
796796
*p-- = digits[value % 10];
797797
value /= 10;
798798

799-
bytes_copied ++;
799+
bytes_copied++;
800800
}
801801
while (value != 0);
802802

@@ -818,25 +818,21 @@ ecma_uint32_to_utf8_string (uint32_t value, /**< value to convert */
818818
*
819819
* @return number - result of conversion.
820820
*/
821-
ecma_number_t
821+
ecma_number_t __attr_always_inline___
822822
ecma_uint32_to_number (uint32_t value) /**< unsigned 32-bit integer value */
823823
{
824-
ecma_number_t num_value = (ecma_number_t) value;
825-
826-
return num_value;
824+
return (ecma_number_t) value;
827825
} /* ecma_uint32_to_number */
828826

829827
/**
830828
* ECMA-defined conversion of Int32 value to Number value
831829
*
832830
* @return number - result of conversion.
833831
*/
834-
ecma_number_t
832+
ecma_number_t __attr_always_inline___
835833
ecma_int32_to_number (int32_t value) /**< signed 32-bit integer value */
836834
{
837-
ecma_number_t num_value = (ecma_number_t) value;
838-
839-
return num_value;
835+
return (ecma_number_t) value;
840836
} /* ecma_int32_to_number */
841837

842838
/**
@@ -857,17 +853,8 @@ ecma_number_to_uint32 (ecma_number_t num) /**< ecma-number */
857853
return 0;
858854
}
859855

860-
bool sign = ecma_number_is_negative (num);
861-
ecma_number_t abs_num;
862-
863-
if (sign)
864-
{
865-
abs_num = ecma_number_negate (num);
866-
}
867-
else
868-
{
869-
abs_num = num;
870-
}
856+
const bool sign = ecma_number_is_negative (num);
857+
const ecma_number_t abs_num = sign ? ecma_number_negate (num) : num;
871858

872859
// 2 ^ 32
873860
const uint64_t uint64_2_pow_32 = (1ull << 32);
@@ -890,16 +877,7 @@ ecma_number_to_uint32 (ecma_number_t num) /**< ecma-number */
890877
JERRY_ASSERT (num_in_uint32_range < uint64_2_pow_32);
891878
uint32_t uint32_num = (uint32_t) num_in_uint32_range;
892879

893-
uint32_t ret;
894-
895-
if (sign)
896-
{
897-
ret = -uint32_num;
898-
}
899-
else
900-
{
901-
ret = uint32_num;
902-
}
880+
const uint32_t ret = sign ? -uint32_num : uint32_num;
903881

904882
#ifndef JERRY_NDEBUG
905883
if (sign

jerry-core/ecma/base/ecma-helpers-number.c

Lines changed: 23 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
#include "ecma-globals.h"
2525
#include "ecma-helpers.h"
2626

27+
#define ECMA_NUMBER_SIGN_POS (ECMA_NUMBER_FRACTION_WIDTH + \
28+
ECMA_NUMBER_BIASED_EXP_WIDTH)
29+
2730
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT32
2831
JERRY_STATIC_ASSERT (sizeof (ecma_number_t) == sizeof (uint32_t));
2932

@@ -37,16 +40,12 @@ ecma_number_pack (bool sign, /**< sign */
3740
uint32_t biased_exp, /**< biased exponent */
3841
uint64_t fraction) /**< fraction */
3942
{
40-
const uint32_t fraction_pos = 0;
41-
const uint32_t biased_exp_pos = fraction_pos + ECMA_NUMBER_FRACTION_WIDTH;
42-
const uint32_t sign_pos = biased_exp_pos + ECMA_NUMBER_BIASED_EXP_WIDTH;
43-
4443
JERRY_ASSERT ((biased_exp & ~((1u << ECMA_NUMBER_BIASED_EXP_WIDTH) - 1)) == 0);
4544
JERRY_ASSERT ((fraction & ~((1ull << ECMA_NUMBER_FRACTION_WIDTH) - 1)) == 0);
4645

47-
uint32_t packed_value = (((sign ? 1u : 0u) << sign_pos) |
48-
(biased_exp << biased_exp_pos) |
49-
(((uint32_t) fraction) << fraction_pos));
46+
uint32_t packed_value = (((sign ? 1u : 0u) << ECMA_NUMBER_SIGN_POS) |
47+
(biased_exp << ECMA_NUMBER_FRACTION_WIDTH) |
48+
((uint32_t) fraction));
5049

5150
union
5251
{
@@ -68,10 +67,6 @@ ecma_number_unpack (ecma_number_t num, /**< ecma-number */
6867
uint32_t *biased_exp_p, /**< optional out: biased exponent */
6968
uint64_t *fraction_p) /**< optional out: fraction */
7069
{
71-
const uint32_t fraction_pos = 0;
72-
const uint32_t biased_exp_pos = fraction_pos + ECMA_NUMBER_FRACTION_WIDTH;
73-
const uint32_t sign_pos = biased_exp_pos + ECMA_NUMBER_BIASED_EXP_WIDTH;
74-
7570
union
7671
{
7772
uint32_t u32_value;
@@ -84,12 +79,12 @@ ecma_number_unpack (ecma_number_t num, /**< ecma-number */
8479

8580
if (sign_p != NULL)
8681
{
87-
*sign_p = ((packed_value >> sign_pos) != 0);
82+
*sign_p = ((packed_value >> ECMA_NUMBER_SIGN_POS) != 0);
8883
}
8984

9085
if (biased_exp_p != NULL)
9186
{
92-
*biased_exp_p = (((packed_value) & ~(1u << sign_pos)) >> biased_exp_pos);
87+
*biased_exp_p = (((packed_value) & ~(1u << ECMA_NUMBER_SIGN_POS)) >> ECMA_NUMBER_FRACTION_WIDTH);
9388
}
9489

9590
if (fraction_p != NULL)
@@ -106,10 +101,6 @@ ecma_number_unpack (ecma_number_t num, /**< ecma-number */
106101
*/
107102
const int32_t ecma_number_exponent_bias = 127;
108103

109-
/**
110-
* Relative precision used in calculation with ecma-numbers
111-
*/
112-
const ecma_number_t ecma_number_relative_eps = 1.0e-10f;
113104
#elif CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
114105
JERRY_STATIC_ASSERT (sizeof (ecma_number_t) == sizeof (uint64_t));
115106

@@ -123,13 +114,9 @@ ecma_number_pack (bool sign, /**< sign */
123114
uint32_t biased_exp, /**< biased exponent */
124115
uint64_t fraction) /**< fraction */
125116
{
126-
const uint32_t fraction_pos = 0;
127-
const uint32_t biased_exp_pos = fraction_pos + ECMA_NUMBER_FRACTION_WIDTH;
128-
const uint32_t sign_pos = biased_exp_pos + ECMA_NUMBER_BIASED_EXP_WIDTH;
129-
130-
uint64_t packed_value = (((sign ? 1ull : 0ull) << sign_pos) |
131-
(((uint64_t) biased_exp) << biased_exp_pos) |
132-
(fraction << fraction_pos));
117+
uint64_t packed_value = (((sign ? 1ull : 0ull) << ECMA_NUMBER_SIGN_POS) |
118+
(((uint64_t) biased_exp) << ECMA_NUMBER_FRACTION_WIDTH) |
119+
fraction);
133120

134121
JERRY_ASSERT ((biased_exp & ~((1u << ECMA_NUMBER_BIASED_EXP_WIDTH) - 1)) == 0);
135122
JERRY_ASSERT ((fraction & ~((1ull << ECMA_NUMBER_FRACTION_WIDTH) - 1)) == 0);
@@ -154,10 +141,6 @@ ecma_number_unpack (ecma_number_t num, /**< ecma-number */
154141
uint32_t *biased_exp_p, /**< optional out: biased exponent */
155142
uint64_t *fraction_p) /**< optional out: fraction */
156143
{
157-
const uint32_t fraction_pos = 0;
158-
const uint32_t biased_exp_pos = fraction_pos + ECMA_NUMBER_FRACTION_WIDTH;
159-
const uint32_t sign_pos = biased_exp_pos + ECMA_NUMBER_BIASED_EXP_WIDTH;
160-
161144
union
162145
{
163146
uint64_t u64_value;
@@ -169,12 +152,12 @@ ecma_number_unpack (ecma_number_t num, /**< ecma-number */
169152

170153
if (sign_p != NULL)
171154
{
172-
*sign_p = ((packed_value >> sign_pos) != 0);
155+
*sign_p = ((packed_value >> ECMA_NUMBER_SIGN_POS) != 0);
173156
}
174157

175158
if (biased_exp_p != NULL)
176159
{
177-
*biased_exp_p = (uint32_t) (((packed_value) & ~(1ull << sign_pos)) >> biased_exp_pos);
160+
*biased_exp_p = (uint32_t) (((packed_value) & ~(1ull << ECMA_NUMBER_SIGN_POS)) >> ECMA_NUMBER_FRACTION_WIDTH);
178161
}
179162

180163
if (fraction_p != NULL)
@@ -191,10 +174,6 @@ ecma_number_unpack (ecma_number_t num, /**< ecma-number */
191174
*/
192175
const int32_t ecma_number_exponent_bias = 1023;
193176

194-
/**
195-
* Relative precision used in calculation with ecma-numbers
196-
*/
197-
const ecma_number_t ecma_number_relative_eps = 1.0e-16;
198177
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
199178

200179
/**
@@ -636,7 +615,7 @@ ecma_number_trunc (ecma_number_t num) /**< ecma-number */
636615

637616
if (exponent < 0)
638617
{
639-
return 0;
618+
return ECMA_NUMBER_ZERO;
640619
}
641620
else if (exponent < dot_shift)
642621
{
@@ -672,21 +651,18 @@ ecma_number_t
672651
ecma_number_calc_remainder (ecma_number_t left_num, /**< left operand */
673652
ecma_number_t right_num) /**< right operand */
674653
{
675-
ecma_number_t n = left_num, d = right_num;
676-
677-
JERRY_ASSERT (!ecma_number_is_nan (n)
678-
&& !ecma_number_is_zero (n)
679-
&& !ecma_number_is_infinity (n));
680-
JERRY_ASSERT (!ecma_number_is_nan (d)
681-
&& !ecma_number_is_zero (d)
682-
&& !ecma_number_is_infinity (d));
683-
684-
ecma_number_t q = ecma_number_trunc (ecma_number_divide (n, d));
654+
JERRY_ASSERT (!ecma_number_is_nan (left_num)
655+
&& !ecma_number_is_zero (left_num)
656+
&& !ecma_number_is_infinity (left_num));
657+
JERRY_ASSERT (!ecma_number_is_nan (right_num)
658+
&& !ecma_number_is_zero (right_num)
659+
&& !ecma_number_is_infinity (right_num));
685660

686-
ecma_number_t r = ecma_number_substract (n, ecma_number_multiply (d, q));
661+
const ecma_number_t q = ecma_number_trunc (ecma_number_divide (left_num, right_num));
662+
ecma_number_t r = ecma_number_substract (left_num, ecma_number_multiply (right_num, q));
687663

688664
if (ecma_number_is_zero (r)
689-
&& ecma_number_is_negative (n))
665+
&& ecma_number_is_negative (left_num))
690666
{
691667
r = ecma_number_negate (r);
692668
}

0 commit comments

Comments
 (0)