{"action":"created","comment":{"url":"https://api.github.com/repos/Samsung/jerryscript/pulls/comments/60666737","id":60666737,"diff_hunk":"@@ -917,227 +919,497 @@ ecma_number_to_int32 (ecma_number_t num) /**< ecma-number */\n } /* ecma_number_to_int32 */\n \n #if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64\n+\n+#define GRISU3_SIGN_BIT                 0x8000000000000000ULL\n+#define GRISU3_EXPONENT_MASK            0x7FF0000000000000ULL\n+#define GRISU3_FRACTION_MASK            0x000FFFFFFFFFFFFFULL\n+#define GRISU3_IMPLICIT_ONE             0x0010000000000000ULL\n+#define GRISU3_EXPONENT_POSITION        52\n+#define GRISU3_EXPONENT_BIAS            1075\n+#define GRISU3_1_LOG2_10                0.30102999566398114 /* 1 / lg(10) */\n+#define GRISU3_MIN_TARGET_EXP           -60\n+#define GRISU3_32_BIT_MASK              0xFFFFFFFFULL\n+#define GRISU3_ENCODED_FLOAT_FRACT_SIZE 64\n+#define GRISU3_MIN_CACHED_EXP           -348\n+#define GRISU3_CACHED_EXP_STEP          8\n+\n /**\n-  * Perform conversion of 128-bit binary representation of number\n-  * to decimal representation with decimal exponent.\n-  */\n-static void\n-ecma_number_helper_binary_to_decimal (ECMA_NUMBER_CONVERSION_128BIT_INTEGER_ARG (fraction_uint128), /**< mantissa */\n-                                      int32_t binary_exponent, /**< binary exponent */\n-                                      int32_t *out_decimal_exp_p) /**< [out] decimal exponent */\n+ * Encoded floating point type\n+ */\n+typedef struct\n {\n-  int32_t decimal_exp = 0;\n+  uint64_t fract;\n+  int exp;\n+} encoded_float_t;\n \n-  if (binary_exponent > 0)\n-  {\n-    while (binary_exponent > 0)\n-    {\n-      if (!ECMA_NUMBER_CONVERSION_128BIT_INTEGER_IS_HIGH_BIT_MASK_ZERO (fraction_uint128, 124))\n-      {\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER_INC (fraction_uint128);\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER_RIGHT_SHIFT (fraction_uint128);\n-        binary_exponent++;\n-      }\n-      else\n-      {\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER (fraction_uint128_tmp);\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER_COPY (fraction_uint128_tmp, fraction_uint128);\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER_DIV_10 (fraction_uint128_tmp);\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER_MUL_10 (fraction_uint128_tmp);\n+/**\n+ * Power type\n+ */\n+typedef struct\n+{\n+  uint64_t fract;\n+  int16_t b_exp;\n+  int16_t d_exp;\n+} power_t;\n \n-        if (!ECMA_NUMBER_CONVERSION_128BIT_INTEGER_ARE_EQUAL (fraction_uint128, fraction_uint128_tmp)\n-            && ECMA_NUMBER_CONVERSION_128BIT_INTEGER_IS_HIGH_BIT_MASK_ZERO (fraction_uint128, 123))\n-        {\n-          ECMA_NUMBER_CONVERSION_128BIT_INTEGER_LEFT_SHIFT (fraction_uint128);\n-          binary_exponent--;\n-        }\n-        else\n-        {\n-          ECMA_NUMBER_CONVERSION_128BIT_INTEGER_DIV_10 (fraction_uint128);\n-          decimal_exp++;\n-        }\n-      }\n-    }\n-  }\n-  else if (binary_exponent < 0)\n-  {\n-    while (binary_exponent < 0)\n-    {\n-      if (ECMA_NUMBER_CONVERSION_128BIT_INTEGER_IS_LOW_BIT_MASK_ZERO (fraction_uint128, 0)\n-          || !ECMA_NUMBER_CONVERSION_128BIT_INTEGER_IS_HIGH_BIT_MASK_ZERO (fraction_uint128, 124))\n-      {\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER_RIGHT_SHIFT (fraction_uint128);\n+#define POWER_CACHE_ITEM(fract, b_exp, d_exp) \\\n+  { fract, b_exp, d_exp }\n \n-        binary_exponent++;\n-      }\n-      else\n-      {\n-        ECMA_NUMBER_CONVERSION_128BIT_INTEGER_MUL_10 (fraction_uint128);\n+static const power_t power_cache[] =\n+{\n+  POWER_CACHE_ITEM (0xfa8fd5a0081c0288ULL, -1220, -348),\n+  POWER_CACHE_ITEM (0xbaaee17fa23ebf76ULL, -1193, -340),\n+  POWER_CACHE_ITEM (0x8b16fb203055ac76ULL, -1166, -332),\n+  POWER_CACHE_ITEM (0xcf42894a5dce35eaULL, -1140, -324),\n+  POWER_CACHE_ITEM (0x9a6bb0aa55653b2dULL, -1113, -316),\n+  POWER_CACHE_ITEM (0xe61acf033d1a45dfULL, -1087, -308),\n+  POWER_CACHE_ITEM (0xab70fe17c79ac6caULL, -1060, -300),\n+  POWER_CACHE_ITEM (0xff77b1fcbebcdc4fULL, -1034, -292),\n+  POWER_CACHE_ITEM (0xbe5691ef416bd60cULL, -1007, -284),\n+  POWER_CACHE_ITEM (0x8dd01fad907ffc3cULL,  -980, -276),\n+  POWER_CACHE_ITEM (0xd3515c2831559a83ULL,  -954, -268),\n+  POWER_CACHE_ITEM (0x9d71ac8fada6c9b5ULL,  -927, -260),\n+  POWER_CACHE_ITEM (0xea9c227723ee8bcbULL,  -901, -252),\n+  POWER_CACHE_ITEM (0xaecc49914078536dULL,  -874, -244),\n+  POWER_CACHE_ITEM (0x823c12795db6ce57ULL,  -847, -236),\n+  POWER_CACHE_ITEM (0xc21094364dfb5637ULL,  -821, -228),\n+  POWER_CACHE_ITEM (0x9096ea6f3848984fULL,  -794, -220),\n+  POWER_CACHE_ITEM (0xd77485cb25823ac7ULL,  -768, -212),\n+  POWER_CACHE_ITEM (0xa086cfcd97bf97f4ULL,  -741, -204),\n+  POWER_CACHE_ITEM (0xef340a98172aace5ULL,  -715, -196),\n+  POWER_CACHE_ITEM (0xb23867fb2a35b28eULL,  -688, -188),\n+  POWER_CACHE_ITEM (0x84c8d4dfd2c63f3bULL,  -661, -180),\n+  POWER_CACHE_ITEM (0xc5dd44271ad3cdbaULL,  -635, -172),\n+  POWER_CACHE_ITEM (0x936b9fcebb25c996ULL,  -608, -164),\n+  POWER_CACHE_ITEM (0xdbac6c247d62a584ULL,  -582, -156),\n+  POWER_CACHE_ITEM (0xa3ab66580d5fdaf6ULL,  -555, -148),\n+  POWER_CACHE_ITEM (0xf3e2f893dec3f126ULL,  -529, -140),\n+  POWER_CACHE_ITEM (0xb5b5ada8aaff80b8ULL,  -502, -132),\n+  POWER_CACHE_ITEM (0x87625f056c7c4a8bULL,  -475, -124),\n+  POWER_CACHE_ITEM (0xc9bcff6034c13053ULL,  -449, -116),\n+  POWER_CACHE_ITEM (0x964e858c91ba2655ULL,  -422, -108),\n+  POWER_CACHE_ITEM (0xdff9772470297ebdULL,  -396, -100),\n+  POWER_CACHE_ITEM (0xa6dfbd9fb8e5b88fULL,  -369,  -92),\n+  POWER_CACHE_ITEM (0xf8a95fcf88747d94ULL,  -343,  -84),\n+  POWER_CACHE_ITEM (0xb94470938fa89bcfULL,  -316,  -76),\n+  POWER_CACHE_ITEM (0x8a08f0f8bf0f156bULL,  -289,  -68),\n+  POWER_CACHE_ITEM (0xcdb02555653131b6ULL,  -263,  -60),\n+  POWER_CACHE_ITEM (0x993fe2c6d07b7facULL,  -236,  -52),\n+  POWER_CACHE_ITEM (0xe45c10c42a2b3b06ULL,  -210,  -44),\n+  POWER_CACHE_ITEM (0xaa242499697392d3ULL,  -183,  -36),\n+  POWER_CACHE_ITEM (0xfd87b5f28300ca0eULL,  -157,  -28),\n+  POWER_CACHE_ITEM (0xbce5086492111aebULL,  -130,  -20),\n+  POWER_CACHE_ITEM (0x8cbccc096f5088ccULL,  -103,  -12),\n+  POWER_CACHE_ITEM (0xd1b71758e219652cULL,   -77,   -4),\n+  POWER_CACHE_ITEM (0x9c40000000000000ULL,   -50,    4),\n+  POWER_CACHE_ITEM (0xe8d4a51000000000ULL,   -24,   12),\n+  POWER_CACHE_ITEM (0xad78ebc5ac620000ULL,     3,   20),\n+  POWER_CACHE_ITEM (0x813f3978f8940984ULL,    30,   28),\n+  POWER_CACHE_ITEM (0xc097ce7bc90715b3ULL,    56,   36),\n+  POWER_CACHE_ITEM (0x8f7e32ce7bea5c70ULL,    83,   44),\n+  POWER_CACHE_ITEM (0xd5d238a4abe98068ULL,   109,   52),\n+  POWER_CACHE_ITEM (0x9f4f2726179a2245ULL,   136,   60),\n+  POWER_CACHE_ITEM (0xed63a231d4c4fb27ULL,   162,   68),\n+  POWER_CACHE_ITEM (0xb0de65388cc8ada8ULL,   189,   76),\n+  POWER_CACHE_ITEM (0x83c7088e1aab65dbULL,   216,   84),\n+  POWER_CACHE_ITEM (0xc45d1df942711d9aULL,   242,   92),\n+  POWER_CACHE_ITEM (0x924d692ca61be758ULL,   269,  100),\n+  POWER_CACHE_ITEM (0xda01ee641a708deaULL,   295,  108),\n+  POWER_CACHE_ITEM (0xa26da3999aef774aULL,   322,  116),\n+  POWER_CACHE_ITEM (0xf209787bb47d6b85ULL,   348,  124),\n+  POWER_CACHE_ITEM (0xb454e4a179dd1877ULL,   375,  132),\n+  POWER_CACHE_ITEM (0x865b86925b9bc5c2ULL,   402,  140),\n+  POWER_CACHE_ITEM (0xc83553c5c8965d3dULL,   428,  148),\n+  POWER_CACHE_ITEM (0x952ab45cfa97a0b3ULL,   455,  156),\n+  POWER_CACHE_ITEM (0xde469fbd99a05fe3ULL,   481,  164),\n+  POWER_CACHE_ITEM (0xa59bc234db398c25ULL,   508,  172),\n+  POWER_CACHE_ITEM (0xf6c69a72a3989f5cULL,   534,  180),\n+  POWER_CACHE_ITEM (0xb7dcbf5354e9beceULL,   561,  188),\n+  POWER_CACHE_ITEM (0x88fcf317f22241e2ULL,   588,  196),\n+  POWER_CACHE_ITEM (0xcc20ce9bd35c78a5ULL,   614,  204),\n+  POWER_CACHE_ITEM (0x98165af37b2153dfULL,   641,  212),\n+  POWER_CACHE_ITEM (0xe2a0b5dc971f303aULL,   667,  220),\n+  POWER_CACHE_ITEM (0xa8d9d1535ce3b396ULL,   694,  228),\n+  POWER_CACHE_ITEM (0xfb9b7cd9a4a7443cULL,   720,  236),\n+  POWER_CACHE_ITEM (0xbb764c4ca7a44410ULL,   747,  244),\n+  POWER_CACHE_ITEM (0x8bab8eefb6409c1aULL,   774,  252),\n+  POWER_CACHE_ITEM (0xd01fef10a657842cULL,   800,  260),\n+  POWER_CACHE_ITEM (0x9b10a4e5e9913129ULL,   827,  268),\n+  POWER_CACHE_ITEM (0xe7109bfba19c0c9dULL,   853,  276),\n+  POWER_CACHE_ITEM (0xac2820d9623bf429ULL,   880,  284),\n+  POWER_CACHE_ITEM (0x80444b5e7aa7cf85ULL,   907,  292),\n+  POWER_CACHE_ITEM (0xbf21e44003acdd2dULL,   933,  300),\n+  POWER_CACHE_ITEM (0x8e679c2f5e44ff8fULL,   960,  308),\n+  POWER_CACHE_ITEM (0xd433179d9c8cb841ULL,   986,  316),\n+  POWER_CACHE_ITEM (0x9e19db92b4e31ba9ULL,  1013,  324),\n+  POWER_CACHE_ITEM (0xeb96bf6ebadf77d9ULL,  1039,  332),\n+  POWER_CACHE_ITEM (0xaf87023b9bf0ee6bULL,  1066,  340)\n+};\n \n-        decimal_exp--;\n-      }\n-    }\n-  }\n+/**\n+ * Get power from the chache\n+ *\n+ * @return chached power\n+ */\n+static int\n+ecma_find_power_in_cache (int exp, /**< exponent */\n+                          encoded_float_t *fp_value) /**< float value */\n+{\n+  int k = (int) ceil ((exp + GRISU3_ENCODED_FLOAT_FRACT_SIZE - 1) * GRISU3_1_LOG2_10); /* k_computation */\n+  int i = (k - GRISU3_MIN_CACHED_EXP - 1) / GRISU3_CACHED_EXP_STEP + 1;\n+  fp_value->fract = power_cache[i].fract;\n+  fp_value->exp = power_cache[i].b_exp;\n+  return power_cache[i].d_exp;\n+} /* ecma_find_power_in_cache */\n+\n+/**\n+ * Subtract two floating point value\n+ *\n+ * Note: Figure 2/a (ISBN: 978-1-4503-0019-3)\n+ *\n+ * @return result of subtraction\n+ */\n+static encoded_float_t\n+ecma_subtract_encoded_fp (encoded_float_t fp_value_1, /**< first float value */\n+                          encoded_float_t fp_value_2) /**< second float value */\n+{\n+  encoded_float_t result;\n \n-  *out_decimal_exp_p = decimal_exp;\n-} /* ecma_number_helper_binary_to_decimal */\n+  result.fract = fp_value_1.fract - fp_value_2.fract;\n+  result.exp = fp_value_1.exp;\n \n-#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */\n+  JERRY_ASSERT (fp_value_1.exp == fp_value_2.exp && fp_value_1.fract >= fp_value_2.fract);\n+\n+  return result;\n+} /* ecma_subtract_encoded_fp */\n \n /**\n-  * Perform conversion of ecma-number to decimal representation with decimal exponent\n-  *\n-  * Note:\n-  *      The calculated values correspond to s, n, k parameters in ECMA-262 v5, 9.8.1, item 5:\n-  *         - s represents digits of the number;\n-  *         - k is the number of digits;\n-  *         - n is the decimal exponent.\n-  */\n-void\n-ecma_number_to_decimal (ecma_number_t num, /**< ecma-number */\n-                        uint64_t *out_digits_p, /**< [out] digits */\n-                        int32_t *out_digits_num_p, /**< [out] number of digits */\n-                        int32_t *out_decimal_exp_p) /**< [out] decimal exponent */\n+ * Multiply two floating point number\n+ *\n+ * Note: Figure 2/b (ISBN: 978-1-4503-0019-3)\n+ *\n+ * @return product arithmetical\n+ */\n+static encoded_float_t\n+ecma_multiply_encoded_fp (encoded_float_t fp_value_1, /**< first float value */\n+                          encoded_float_t fp_value_2) /**< second float value */\n {\n-  JERRY_ASSERT (!ecma_number_is_nan (num));\n-  JERRY_ASSERT (!ecma_number_is_zero (num));\n-  JERRY_ASSERT (!ecma_number_is_infinity (num));\n+  encoded_float_t result;\n \n-#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64\n-  ecma_number_t num_m1 = ecma_number_get_prev (num);\n-  ecma_number_t num_p1 = ecma_number_get_next (num);\n+  uint64_t a = fp_value_1.fract >> 32;\n+  uint64_t b = fp_value_1.fract & GRISU3_32_BIT_MASK;\n+  uint64_t c = fp_value_2.fract >> 32;\n+  uint64_t d = fp_value_2.fract & GRISU3_32_BIT_MASK;\n \n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER (fraction_uint128);\n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER (fraction_uint128_m1);\n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER (fraction_uint128_p1);\n+  uint64_t ac = a * c;\n+  uint64_t bc = b * c;\n+  uint64_t ad = a * d;\n+  uint64_t bd = b * d;\n \n-  uint64_t fraction_uint64, fraction_uint64_m1, fraction_uint64_p1;\n-  int32_t binary_exponent, binary_exponent_m1, binary_exponent_p1;\n-  int32_t decimal_exp, decimal_exp_m1, decimal_exp_p1;\n-  int32_t dot_shift, dot_shift_m1, dot_shift_p1;\n+  uint64_t tmp = (bd >> 32) + (ad & GRISU3_32_BIT_MASK) + (bc & GRISU3_32_BIT_MASK);\n \n-  dot_shift_m1 = ecma_number_get_fraction_and_exponent (num_m1, &fraction_uint64_m1, &binary_exponent_m1);\n-  dot_shift = ecma_number_get_fraction_and_exponent (num, &fraction_uint64, &binary_exponent);\n-  dot_shift_p1 = ecma_number_get_fraction_and_exponent (num_p1, &fraction_uint64_p1, &binary_exponent_p1);\n+  tmp += 1U << 31; /* round */\n+  result.fract = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32);\n+  result.exp = fp_value_1.exp + fp_value_2.exp + 64;\n \n-  binary_exponent_m1 -= dot_shift_m1;\n-  binary_exponent -= dot_shift;\n-  binary_exponent_p1 -= dot_shift_p1;\n+  return result;\n+} /* ecma_multiply_encoded_fp */\n \n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER_INIT (fraction_uint128,\n-                                              0ull,\n-                                              0ull,\n-                                              (fraction_uint64) >> 32u,\n-                                              ((fraction_uint64) << 32u) >> 32u);\n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER_INIT (fraction_uint128_m1,\n-                                              0ull,\n-                                              0ull,\n-                                              (fraction_uint64_m1) >> 32u,\n-                                              ((fraction_uint64_m1) << 32u) >> 32u);\n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER_INIT (fraction_uint128_p1,\n-                                              0ull,\n-                                              0ull,\n-                                              (fraction_uint64_p1) >> 32u,\n-                                              ((fraction_uint64_p1) << 32u) >> 32u);\n-\n-  ecma_number_helper_binary_to_decimal (fraction_uint128, binary_exponent, &decimal_exp);\n-  ecma_number_helper_binary_to_decimal (fraction_uint128_m1, binary_exponent_m1, &decimal_exp_m1);\n-  ecma_number_helper_binary_to_decimal (fraction_uint128_p1, binary_exponent_p1, &decimal_exp_p1);\n-\n-  if (ECMA_NUMBER_CONVERSION_128BIT_INTEGER_IS_ZERO (fraction_uint128_m1))\n+/**\n+ * Normalize a floating point value\n+ *\n+ * @return normalized encoded_fp\n+ */\n+static encoded_float_t\n+ecma_normalize_encoded_fp (encoded_float_t fp_value) /**< float value */\n+{\n+  JERRY_ASSERT (fp_value.fract != 0);\n+\n+  while (!(fp_value.fract & 0xFFC0000000000000ULL))\n   {\n-    decimal_exp_m1 = decimal_exp;\n+    fp_value.fract <<= 10;\n+    fp_value.exp -= 10;\n   }\n \n-  while (decimal_exp != decimal_exp_m1\n-         || decimal_exp != decimal_exp_p1)\n+  while (!(fp_value.fract & GRISU3_SIGN_BIT))\n   {\n-    while (decimal_exp > decimal_exp_m1\n-           || decimal_exp > decimal_exp_p1)\n-    {\n-      ECMA_NUMBER_CONVERSION_128BIT_INTEGER_MUL_10 (fraction_uint128);\n-      decimal_exp--;\n-    }\n-    while (decimal_exp_m1 > decimal_exp\n-           || decimal_exp_m1 > decimal_exp_p1)\n-    {\n-      ECMA_NUMBER_CONVERSION_128BIT_INTEGER_MUL_10 (fraction_uint128_m1);\n-      decimal_exp_m1--;\n-    }\n-    while (decimal_exp_p1 > decimal_exp\n-           || decimal_exp_p1 > decimal_exp_m1)\n-    {\n-      ECMA_NUMBER_CONVERSION_128BIT_INTEGER_MUL_10 (fraction_uint128_p1);\n-      decimal_exp_p1--;\n-    }\n+    fp_value.fract <<= 1;\n+    --fp_value.exp;\n   }\n \n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER_ADD (fraction_uint128_m1, fraction_uint128);\n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER_RIGHT_SHIFT (fraction_uint128_m1);\n-\n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER_ADD (fraction_uint128_p1, fraction_uint128);\n-  ECMA_NUMBER_CONVERSION_128BIT_INTEGER_RIGHT_SHIFT (fraction_uint128_p1);\n+  return fp_value;\n+} /* ecma_normalize_encoded_fp */\n \n-  /* While fraction doesn't fit to integer, divide it by 10\n-       and simultaneously increment decimal exponent */\n-  uint64_t digits_min, digits_max;\n+/**\n+ * Convert ecma number to encoded_fp\n+ *\n+ * @return encoded_fp\n+ */\n+static inline encoded_float_t __attr_always_inline___\n+ecma_number_to_encoded_fp (ecma_number_t value) /**< ecma number */\n+{\n+  encoded_float_t fp;\n+  uint64_t *tmp = (uint64_t *) &value;","path":"jerry-core/ecma/base/ecma-helpers-conversion.c","position":383,"original_position":383,"commit_id":"c1d65e1471cbad1abb002293e312459691b0d73d","original_commit_id":"c1d65e1471cbad1abb002293e312459691b0d73d","user":{"login":"akiss77","id":9976482,"avatar_url":"https://avatars.githubusercontent.com/u/9976482?v=3","gravatar_id":"","url":"https://api.github.com/users/akiss77","html_url":"https://github.com/akiss77","followers_url":"https://api.github.com/users/akiss77/followers","following_url":"https://api.github.com/users/akiss77/following{/other_user}","gists_url":"https://api.github.com/users/akiss77/gists{/gist_id}","starred_url":"https://api.github.com/users/akiss77/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akiss77/subscriptions","organizations_url":"https://api.github.com/users/akiss77/orgs","repos_url":"https://api.github.com/users/akiss77/repos","events_url":"https://api.github.com/users/akiss77/events{/privacy}","received_events_url":"https://api.github.com/users/akiss77/received_events","type":"User","site_admin":false},"body":"`value` is an `ecma_number_t`, which can be either `double` or `float`. In the latter case, this cast is incorrect.","created_at":"2016-04-21T22:41:03Z","updated_at":"2016-04-21T22:41:03Z","html_url":"https://github.com/Samsung/jerryscript/pull/1017#discussion_r60666737","pull_request_url":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017","_links":{"self":{"href":"https://api.github.com/repos/Samsung/jerryscript/pulls/comments/60666737"},"html":{"href":"https://github.com/Samsung/jerryscript/pull/1017#discussion_r60666737"},"pull_request":{"href":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017"}}},"pull_request":{"url":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017","id":67000973,"html_url":"https://github.com/Samsung/jerryscript/pull/1017","diff_url":"https://github.com/Samsung/jerryscript/pull/1017.diff","patch_url":"https://github.com/Samsung/jerryscript/pull/1017.patch","issue_url":"https://api.github.com/repos/Samsung/jerryscript/issues/1017","number":1017,"state":"open","locked":false,"title":"Implement Grisu3 for more precise double to string conversions","user":{"login":"LaszloLango","id":10030017,"avatar_url":"https://avatars.githubusercontent.com/u/10030017?v=3","gravatar_id":"","url":"https://api.github.com/users/LaszloLango","html_url":"https://github.com/LaszloLango","followers_url":"https://api.github.com/users/LaszloLango/followers","following_url":"https://api.github.com/users/LaszloLango/following{/other_user}","gists_url":"https://api.github.com/users/LaszloLango/gists{/gist_id}","starred_url":"https://api.github.com/users/LaszloLango/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LaszloLango/subscriptions","organizations_url":"https://api.github.com/users/LaszloLango/orgs","repos_url":"https://api.github.com/users/LaszloLango/repos","events_url":"https://api.github.com/users/LaszloLango/events{/privacy}","received_events_url":"https://api.github.com/users/LaszloLango/received_events","type":"User","site_admin":false},"body":"JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com","created_at":"2016-04-19T11:19:51Z","updated_at":"2016-04-21T22:41:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"aad3c42b2e611665fadfd3871e78cf2f43446941","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017/commits","review_comments_url":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017/comments","review_comment_url":"https://api.github.com/repos/Samsung/jerryscript/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Samsung/jerryscript/issues/1017/comments","statuses_url":"https://api.github.com/repos/Samsung/jerryscript/statuses/c1d65e1471cbad1abb002293e312459691b0d73d","head":{"label":"LaszloLango:improve-ecma-string-to-utf8-string","ref":"improve-ecma-string-to-utf8-string","sha":"c1d65e1471cbad1abb002293e312459691b0d73d","user":{"login":"LaszloLango","id":10030017,"avatar_url":"https://avatars.githubusercontent.com/u/10030017?v=3","gravatar_id":"","url":"https://api.github.com/users/LaszloLango","html_url":"https://github.com/LaszloLango","followers_url":"https://api.github.com/users/LaszloLango/followers","following_url":"https://api.github.com/users/LaszloLango/following{/other_user}","gists_url":"https://api.github.com/users/LaszloLango/gists{/gist_id}","starred_url":"https://api.github.com/users/LaszloLango/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LaszloLango/subscriptions","organizations_url":"https://api.github.com/users/LaszloLango/orgs","repos_url":"https://api.github.com/users/LaszloLango/repos","events_url":"https://api.github.com/users/LaszloLango/events{/privacy}","received_events_url":"https://api.github.com/users/LaszloLango/received_events","type":"User","site_admin":false},"repo":{"id":38432323,"name":"jerryscript","full_name":"LaszloLango/jerryscript","owner":{"login":"LaszloLango","id":10030017,"avatar_url":"https://avatars.githubusercontent.com/u/10030017?v=3","gravatar_id":"","url":"https://api.github.com/users/LaszloLango","html_url":"https://github.com/LaszloLango","followers_url":"https://api.github.com/users/LaszloLango/followers","following_url":"https://api.github.com/users/LaszloLango/following{/other_user}","gists_url":"https://api.github.com/users/LaszloLango/gists{/gist_id}","starred_url":"https://api.github.com/users/LaszloLango/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LaszloLango/subscriptions","organizations_url":"https://api.github.com/users/LaszloLango/orgs","repos_url":"https://api.github.com/users/LaszloLango/repos","events_url":"https://api.github.com/users/LaszloLango/events{/privacy}","received_events_url":"https://api.github.com/users/LaszloLango/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/LaszloLango/jerryscript","description":"","fork":true,"url":"https://api.github.com/repos/LaszloLango/jerryscript","forks_url":"https://api.github.com/repos/LaszloLango/jerryscript/forks","keys_url":"https://api.github.com/repos/LaszloLango/jerryscript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LaszloLango/jerryscript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LaszloLango/jerryscript/teams","hooks_url":"https://api.github.com/repos/LaszloLango/jerryscript/hooks","issue_events_url":"https://api.github.com/repos/LaszloLango/jerryscript/issues/events{/number}","events_url":"https://api.github.com/repos/LaszloLango/jerryscript/events","assignees_url":"https://api.github.com/repos/LaszloLango/jerryscript/assignees{/user}","branches_url":"https://api.github.com/repos/LaszloLango/jerryscript/branches{/branch}","tags_url":"https://api.github.com/repos/LaszloLango/jerryscript/tags","blobs_url":"https://api.github.com/repos/LaszloLango/jerryscript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LaszloLango/jerryscript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LaszloLango/jerryscript/git/refs{/sha}","trees_url":"https://api.github.com/repos/LaszloLango/jerryscript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LaszloLango/jerryscript/statuses/{sha}","languages_url":"https://api.github.com/repos/LaszloLango/jerryscript/languages","stargazers_url":"https://api.github.com/repos/LaszloLango/jerryscript/stargazers","contributors_url":"https://api.github.com/repos/LaszloLango/jerryscript/contributors","subscribers_url":"https://api.github.com/repos/LaszloLango/jerryscript/subscribers","subscription_url":"https://api.github.com/repos/LaszloLango/jerryscript/subscription","commits_url":"https://api.github.com/repos/LaszloLango/jerryscript/commits{/sha}","git_commits_url":"https://api.github.com/repos/LaszloLango/jerryscript/git/commits{/sha}","comments_url":"https://api.github.com/repos/LaszloLango/jerryscript/comments{/number}","issue_comment_url":"https://api.github.com/repos/LaszloLango/jerryscript/issues/comments{/number}","contents_url":"https://api.github.com/repos/LaszloLango/jerryscript/contents/{+path}","compare_url":"https://api.github.com/repos/LaszloLango/jerryscript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LaszloLango/jerryscript/merges","archive_url":"https://api.github.com/repos/LaszloLango/jerryscript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LaszloLango/jerryscript/downloads","issues_url":"https://api.github.com/repos/LaszloLango/jerryscript/issues{/number}","pulls_url":"https://api.github.com/repos/LaszloLango/jerryscript/pulls{/number}","milestones_url":"https://api.github.com/repos/LaszloLango/jerryscript/milestones{/number}","notifications_url":"https://api.github.com/repos/LaszloLango/jerryscript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LaszloLango/jerryscript/labels{/name}","releases_url":"https://api.github.com/repos/LaszloLango/jerryscript/releases{/id}","deployments_url":"https://api.github.com/repos/LaszloLango/jerryscript/deployments","created_at":"2015-07-02T12:47:42Z","updated_at":"2016-02-17T14:18:30Z","pushed_at":"2016-04-21T07:38:19Z","git_url":"git://github.com/LaszloLango/jerryscript.git","ssh_url":"git@github.com:LaszloLango/jerryscript.git","clone_url":"https://github.com/LaszloLango/jerryscript.git","svn_url":"https://github.com/LaszloLango/jerryscript","homepage":null,"size":7488,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Samsung:master","ref":"master","sha":"b523cf3cd10c02d96cfa43b4469508eabd58cf52","user":{"login":"Samsung","id":6210390,"avatar_url":"https://avatars.githubusercontent.com/u/6210390?v=3","gravatar_id":"","url":"https://api.github.com/users/Samsung","html_url":"https://github.com/Samsung","followers_url":"https://api.github.com/users/Samsung/followers","following_url":"https://api.github.com/users/Samsung/following{/other_user}","gists_url":"https://api.github.com/users/Samsung/gists{/gist_id}","starred_url":"https://api.github.com/users/Samsung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Samsung/subscriptions","organizations_url":"https://api.github.com/users/Samsung/orgs","repos_url":"https://api.github.com/users/Samsung/repos","events_url":"https://api.github.com/users/Samsung/events{/privacy}","received_events_url":"https://api.github.com/users/Samsung/received_events","type":"Organization","site_admin":false},"repo":{"id":33339660,"name":"jerryscript","full_name":"Samsung/jerryscript","owner":{"login":"Samsung","id":6210390,"avatar_url":"https://avatars.githubusercontent.com/u/6210390?v=3","gravatar_id":"","url":"https://api.github.com/users/Samsung","html_url":"https://github.com/Samsung","followers_url":"https://api.github.com/users/Samsung/followers","following_url":"https://api.github.com/users/Samsung/following{/other_user}","gists_url":"https://api.github.com/users/Samsung/gists{/gist_id}","starred_url":"https://api.github.com/users/Samsung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Samsung/subscriptions","organizations_url":"https://api.github.com/users/Samsung/orgs","repos_url":"https://api.github.com/users/Samsung/repos","events_url":"https://api.github.com/users/Samsung/events{/privacy}","received_events_url":"https://api.github.com/users/Samsung/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Samsung/jerryscript","description":"Ultra-lightweight JavaScript engine for Internet of Things. http://www.jerryscript.net","fork":false,"url":"https://api.github.com/repos/Samsung/jerryscript","forks_url":"https://api.github.com/repos/Samsung/jerryscript/forks","keys_url":"https://api.github.com/repos/Samsung/jerryscript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Samsung/jerryscript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Samsung/jerryscript/teams","hooks_url":"https://api.github.com/repos/Samsung/jerryscript/hooks","issue_events_url":"https://api.github.com/repos/Samsung/jerryscript/issues/events{/number}","events_url":"https://api.github.com/repos/Samsung/jerryscript/events","assignees_url":"https://api.github.com/repos/Samsung/jerryscript/assignees{/user}","branches_url":"https://api.github.com/repos/Samsung/jerryscript/branches{/branch}","tags_url":"https://api.github.com/repos/Samsung/jerryscript/tags","blobs_url":"https://api.github.com/repos/Samsung/jerryscript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Samsung/jerryscript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Samsung/jerryscript/git/refs{/sha}","trees_url":"https://api.github.com/repos/Samsung/jerryscript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Samsung/jerryscript/statuses/{sha}","languages_url":"https://api.github.com/repos/Samsung/jerryscript/languages","stargazers_url":"https://api.github.com/repos/Samsung/jerryscript/stargazers","contributors_url":"https://api.github.com/repos/Samsung/jerryscript/contributors","subscribers_url":"https://api.github.com/repos/Samsung/jerryscript/subscribers","subscription_url":"https://api.github.com/repos/Samsung/jerryscript/subscription","commits_url":"https://api.github.com/repos/Samsung/jerryscript/commits{/sha}","git_commits_url":"https://api.github.com/repos/Samsung/jerryscript/git/commits{/sha}","comments_url":"https://api.github.com/repos/Samsung/jerryscript/comments{/number}","issue_comment_url":"https://api.github.com/repos/Samsung/jerryscript/issues/comments{/number}","contents_url":"https://api.github.com/repos/Samsung/jerryscript/contents/{+path}","compare_url":"https://api.github.com/repos/Samsung/jerryscript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Samsung/jerryscript/merges","archive_url":"https://api.github.com/repos/Samsung/jerryscript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Samsung/jerryscript/downloads","issues_url":"https://api.github.com/repos/Samsung/jerryscript/issues{/number}","pulls_url":"https://api.github.com/repos/Samsung/jerryscript/pulls{/number}","milestones_url":"https://api.github.com/repos/Samsung/jerryscript/milestones{/number}","notifications_url":"https://api.github.com/repos/Samsung/jerryscript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Samsung/jerryscript/labels{/name}","releases_url":"https://api.github.com/repos/Samsung/jerryscript/releases{/id}","deployments_url":"https://api.github.com/repos/Samsung/jerryscript/deployments","created_at":"2015-04-03T01:10:31Z","updated_at":"2016-04-21T11:16:09Z","pushed_at":"2016-04-21T22:29:36Z","git_url":"git://github.com/Samsung/jerryscript.git","ssh_url":"git@github.com:Samsung/jerryscript.git","clone_url":"https://github.com/Samsung/jerryscript.git","svn_url":"https://github.com/Samsung/jerryscript","homepage":"","size":11474,"stargazers_count":1241,"watchers_count":1241,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":136,"mirror_url":null,"open_issues_count":58,"forks":136,"open_issues":58,"watchers":1241,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017"},"html":{"href":"https://github.com/Samsung/jerryscript/pull/1017"},"issue":{"href":"https://api.github.com/repos/Samsung/jerryscript/issues/1017"},"comments":{"href":"https://api.github.com/repos/Samsung/jerryscript/issues/1017/comments"},"review_comments":{"href":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017/comments"},"review_comment":{"href":"https://api.github.com/repos/Samsung/jerryscript/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Samsung/jerryscript/pulls/1017/commits"},"statuses":{"href":"https://api.github.com/repos/Samsung/jerryscript/statuses/c1d65e1471cbad1abb002293e312459691b0d73d"}}}}