diff options
Diffstat (limited to 'iconvdata/iso-2022-jp.c')
-rw-r--r-- | iconvdata/iso-2022-jp.c | 82 |
1 files changed, 49 insertions, 33 deletions
diff --git a/iconvdata/iso-2022-jp.c b/iconvdata/iso-2022-jp.c index 51420fb43f..25ca75c2df 100644 --- a/iconvdata/iso-2022-jp.c +++ b/iconvdata/iso-2022-jp.c @@ -141,7 +141,7 @@ gconv_init (struct __gconv_step *step) } result = __GCONV_NOCONV; - if (dir != illegal_dir) + if (__builtin_expect (dir, from_iso2022jp) != illegal_dir) { new_data = (struct iso2022jp_data *) malloc (sizeof (struct iso2022jp_data)); @@ -208,7 +208,7 @@ gconv_end (struct __gconv_step *data) \ /* We are not in the initial state. To switch back we have \ to emit the sequence `Esc ( B'. */ \ - if (outbuf + 3 > data->__outbufend) \ + if (__builtin_expect (outbuf + 3 > data->__outbufend, 0)) \ /* We don't have enough room in the output buffer. */ \ status = __GCONV_FULL_OUTPUT; \ else \ @@ -217,8 +217,6 @@ gconv_end (struct __gconv_step *data) *outbuf++ = ESC; \ *outbuf++ = '('; \ *outbuf++ = 'B'; \ - if (data->__flags & __GCONV_IS_LAST) \ - *written += 3; \ data->__outbuf = outbuf; \ /* Note that this also clears the G2 designation. */ \ data->__statep->__count &= ~7; \ @@ -247,16 +245,16 @@ gconv_end (struct __gconv_step *data) uint32_t ch = *inptr; \ \ /* Recognize escape sequences. */ \ - if (ch == ESC) \ + if (__builtin_expect (ch, 0) == ESC) \ { \ /* We now must be prepared to read two to three more \ chracters. If we have a match in the first character but \ then the input buffer ends we terminate with an error since \ we must not risk missing an escape sequence just because it \ is not entirely in the current input buffer. */ \ - if (inptr + 2 >= inend \ + if (__builtin_expect (inptr + 2 >= inend, 0) \ || (var == iso2022jp2 && inptr[1] == '$' && inptr[2] == '(' \ - && inptr + 3 >= inend)) \ + && __builtin_expect (inptr + 3 >= inend, 0))) \ { \ /* Not enough input available. */ \ result = __GCONV_EMPTY_INPUT; \ @@ -357,7 +355,7 @@ gconv_end (struct __gconv_step *data) ch = inptr[2] | 0x80; \ inptr += 3; \ } \ - else if (set2 == ISO88597_set) \ + else if (__builtin_expect (set2, ISO88597_set) == ISO88597_set) \ { \ /* We use the table from the ISO 8859-7 module. */ \ if (inptr[2] < 0x20 || inptr[2] > 0x80) \ @@ -407,7 +405,7 @@ gconv_end (struct __gconv_step *data) { \ /* Use the JIS X 0201 table. */ \ ch = jisx0201_to_ucs4 (ch); \ - if (ch == __UNKNOWN_10646_CHAR) \ + if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR) \ { \ if (! ignore_errors_p ()) \ { \ @@ -425,7 +423,7 @@ gconv_end (struct __gconv_step *data) { \ /* Use the JIS X 0201 table. */ \ ch = jisx0201_to_ucs4 (ch + 0x80); \ - if (ch == __UNKNOWN_10646_CHAR) \ + if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR) \ { \ if (! ignore_errors_p ()) \ { \ @@ -465,12 +463,12 @@ gconv_end (struct __gconv_step *data) NEED_LENGTH_TEST ? inend - inptr : 2, 0); \ } \ \ - if (NEED_LENGTH_TEST && ch == 0) \ + if (NEED_LENGTH_TEST && __builtin_expect (ch, 1) == 0) \ { \ result = __GCONV_EMPTY_INPUT; \ break; \ } \ - else if (ch == __UNKNOWN_10646_CHAR) \ + else if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR) \ { \ if (! ignore_errors_p ()) \ { \ @@ -575,7 +573,7 @@ gconv_end (struct __gconv_step *data) ? outend - outptr : 2)); \ } \ \ - if (NEED_LENGTH_TEST && written == 0) \ + if (NEED_LENGTH_TEST && __builtin_expect (written, 1) == 0) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -633,7 +631,7 @@ gconv_end (struct __gconv_step *data) { \ /* We must encode using ASCII. First write out the \ escape sequence. */ \ - if (NEED_LENGTH_TEST && outptr + 3 > outend) \ + if (NEED_LENGTH_TEST && __builtin_expect (outptr + 3 > outend, 0))\ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -644,7 +642,7 @@ gconv_end (struct __gconv_step *data) *outptr++ = 'B'; \ set = ASCII_set; \ \ - if (NEED_LENGTH_TEST && outptr + 1 > outend) \ + if (NEED_LENGTH_TEST && __builtin_expect (outptr + 1 > outend, 0))\ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -668,7 +666,8 @@ gconv_end (struct __gconv_step *data) if (written != __UNKNOWN_10646_CHAR && buf[0] < 0x80) \ { \ /* We use JIS X 0201. */ \ - if (NEED_LENGTH_TEST && outptr + 3 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 3 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -679,7 +678,8 @@ gconv_end (struct __gconv_step *data) *outptr++ = 'J'; \ set = JISX0201_Roman_set; \ \ - if (NEED_LENGTH_TEST && outptr + 1 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 1 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -692,7 +692,8 @@ gconv_end (struct __gconv_step *data) if (written != __UNKNOWN_10646_CHAR) \ { \ /* We use JIS X 0208. */ \ - if (NEED_LENGTH_TEST && outptr + 3 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 3 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -703,7 +704,8 @@ gconv_end (struct __gconv_step *data) *outptr++ = 'B'; \ set = JISX0208_1983_set; \ \ - if (NEED_LENGTH_TEST && outptr + 2 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 2 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -711,7 +713,7 @@ gconv_end (struct __gconv_step *data) *outptr++ = buf[0]; \ *outptr++ = buf[1]; \ } \ - else if (var == iso2022jp) \ + else if (__builtin_expect (var, iso2022jp2) == iso2022jp) \ { \ /* We have no other choice. */ \ if (! ignore_errors_p ()) \ @@ -728,7 +730,8 @@ gconv_end (struct __gconv_step *data) if (written != __UNKNOWN_10646_CHAR) \ { \ /* We use JIS X 0212. */ \ - if (NEED_LENGTH_TEST && outptr + 4 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 4 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -739,7 +742,8 @@ gconv_end (struct __gconv_step *data) *outptr++ = 'D'; \ set = JISX0212_set; \ \ - if (NEED_LENGTH_TEST && outptr + 2 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 2 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -754,7 +758,8 @@ gconv_end (struct __gconv_step *data) && buf[0] >= 0x80) \ { \ /* We use JIS X 0201. */ \ - if (NEED_LENGTH_TEST && outptr + 3 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 3 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -765,7 +770,8 @@ gconv_end (struct __gconv_step *data) *outptr++ = 'I'; \ set = JISX0201_Kana_set; \ \ - if (NEED_LENGTH_TEST && outptr + 1 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 1 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -775,7 +781,8 @@ gconv_end (struct __gconv_step *data) else if (ch != 0xa5 && ch >= 0x80 && ch <= 0xff) \ { \ /* ISO 8859-1 upper half. */ \ - if (NEED_LENGTH_TEST && outptr + 3 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 3 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -786,7 +793,8 @@ gconv_end (struct __gconv_step *data) *outptr++ = 'A'; \ set2 = ISO88591_set; \ \ - if (NEED_LENGTH_TEST && outptr + 3 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 3 > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -801,7 +809,9 @@ gconv_end (struct __gconv_step *data) if (written != __UNKNOWN_10646_CHAR) \ { \ /* We use GB 2312. */ \ - if (NEED_LENGTH_TEST && outptr + 3 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 3 > outend, \ + 0) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -812,7 +822,9 @@ gconv_end (struct __gconv_step *data) *outptr++ = 'A'; \ set = GB2312_set; \ \ - if (NEED_LENGTH_TEST && outptr + 2 > outend) \ + if (NEED_LENGTH_TEST \ + && __builtin_expect (outptr + 2 > outend, \ + 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -827,7 +839,8 @@ gconv_end (struct __gconv_step *data) { \ /* We use KSC 5601. */ \ if (NEED_LENGTH_TEST \ - && outptr + 4 > outend) \ + && __builtin_expect (outptr + 4 \ + > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -839,7 +852,8 @@ gconv_end (struct __gconv_step *data) set = KSC5601_set; \ \ if (NEED_LENGTH_TEST \ - && outptr + 2 > outend) \ + && __builtin_expect (outptr + 2 \ + > outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -860,11 +874,12 @@ gconv_end (struct __gconv_step *data) gch = iso88597_from_ucs4[ch]; \ } \ \ - if (gch != 0) \ + if (__builtin_expect (gch, 1) != 0) \ { \ /* We use ISO 8859-7 greek. */ \ if (NEED_LENGTH_TEST \ - && outptr + 3 > outend) \ + && __builtin_expect (outptr + 3 \ + > outend, 0))\ { \ result = __GCONV_FULL_OUTPUT; \ break; \ @@ -875,7 +890,8 @@ gconv_end (struct __gconv_step *data) set2 = ISO88597_set; \ \ if (NEED_LENGTH_TEST \ - && outptr + 3 > outend) \ + && __builtin_expect (outptr + 3 \ + > outend, 0))\ { \ result = __GCONV_FULL_OUTPUT; \ break; \ |