aboutsummaryrefslogtreecommitdiff
path: root/iconvdata/iso-2022-jp.c
diff options
context:
space:
mode:
Diffstat (limited to 'iconvdata/iso-2022-jp.c')
-rw-r--r--iconvdata/iso-2022-jp.c82
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; \