Fixing number bitwise operations.

This commit is contained in:
Ruben Ayrapetyan
2014-10-20 13:47:21 +04:00
parent 9e890827f7
commit 2d5a5c37b0
+5 -5
View File
@@ -60,7 +60,7 @@ do_number_bitwise_logic (int_data_t *int_data, /**< interpreter context */
ecma_number_t* res_p = ecma_alloc_number (); ecma_number_t* res_p = ecma_alloc_number ();
int32_t left_int32 = ecma_number_to_int32 (*left_p); int32_t left_int32 = ecma_number_to_int32 (*left_p);
int32_t right_int32 = ecma_number_to_int32 (*right_p); // int32_t right_int32 = ecma_number_to_int32 (*right_p);
uint32_t left_uint32 = ecma_number_to_uint32 (*left_p); uint32_t left_uint32 = ecma_number_to_uint32 (*left_p);
uint32_t right_uint32 = ecma_number_to_uint32 (*right_p); uint32_t right_uint32 = ecma_number_to_uint32 (*right_p);
@@ -69,17 +69,17 @@ do_number_bitwise_logic (int_data_t *int_data, /**< interpreter context */
{ {
case number_bitwise_logic_and: case number_bitwise_logic_and:
{ {
*res_p = ecma_int32_to_number (left_int32 & right_int32); *res_p = ecma_int32_to_number ((int32_t) (left_uint32 & right_uint32));
break; break;
} }
case number_bitwise_logic_or: case number_bitwise_logic_or:
{ {
*res_p = ecma_int32_to_number (left_int32 | right_int32); *res_p = ecma_int32_to_number ((int32_t) (left_uint32 | right_uint32));
break; break;
} }
case number_bitwise_logic_xor: case number_bitwise_logic_xor:
{ {
*res_p = ecma_int32_to_number (left_int32 ^ right_int32); *res_p = ecma_int32_to_number ((int32_t) (left_uint32 ^ right_uint32));
break; break;
} }
case number_bitwise_shift_left: case number_bitwise_shift_left:
@@ -99,7 +99,7 @@ do_number_bitwise_logic (int_data_t *int_data, /**< interpreter context */
} }
case number_bitwise_not: case number_bitwise_not:
{ {
*res_p = ecma_int32_to_number (~right_int32); *res_p = ecma_int32_to_number ((int32_t) ~right_uint32);
break; break;
} }
} }