mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-27 10:54:40 +00:00
* coding.h (struct coding_system): Remove 'error_positions' (unused)
and 'errors' (set but unused) fields. Use bitfields for 'eol_seen', 'mode', 'common_flags' and 'result' fields, adjust layout to avoid extra padding and shrink struct coding_system by 56 bytes (x86_64). * coding.c (decode_coding_utf_8, decode_coding_utf_16) (decode_coding_emacs_mule, decode_coding_iso_2022, decode_coding_sjis) (decode_coding_big5, decode_coding_charset, decode_coding) (encode_coding): Adjust users.
This commit is contained in:
parent
09880d8533
commit
80fb41cd90
@ -1,3 +1,14 @@
|
||||
2014-07-10 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* coding.h (struct coding_system): Remove 'error_positions' (unused)
|
||||
and 'errors' (set but unused) fields. Use bitfields for 'eol_seen',
|
||||
'mode', 'common_flags' and 'result' fields, adjust layout to avoid
|
||||
extra padding and shrink struct coding_system by 56 bytes (x86_64).
|
||||
* coding.c (decode_coding_utf_8, decode_coding_utf_16)
|
||||
(decode_coding_emacs_mule, decode_coding_iso_2022, decode_coding_sjis)
|
||||
(decode_coding_big5, decode_coding_charset, decode_coding)
|
||||
(encode_coding): Adjust users.
|
||||
|
||||
2014-07-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* syntax.c (back_comment): Use more-natural location for label.
|
||||
|
10
src/coding.c
10
src/coding.c
@ -1486,7 +1486,6 @@ decode_coding_utf_8 (struct coding_system *coding)
|
||||
consumed_chars = consumed_chars_base;
|
||||
ONE_MORE_BYTE (c);
|
||||
*charbuf++ = ASCII_CHAR_P (c) ? c : BYTE8_TO_CHAR (c);
|
||||
coding->errors++;
|
||||
}
|
||||
|
||||
no_more_source:
|
||||
@ -1685,7 +1684,6 @@ decode_coding_utf_16 (struct coding_system *coding)
|
||||
/* The first two bytes are not BOM. Treat them as bytes
|
||||
for a normal character. */
|
||||
src = src_base;
|
||||
coding->errors++;
|
||||
}
|
||||
CODING_UTF_16_BOM (coding) = utf_without_bom;
|
||||
}
|
||||
@ -1742,7 +1740,6 @@ decode_coding_utf_16 (struct coding_system *coding)
|
||||
c1 = surrogate & 0xFF, c2 = surrogate >> 8;
|
||||
*charbuf++ = c1;
|
||||
*charbuf++ = c2;
|
||||
coding->errors++;
|
||||
if (UTF_16_HIGH_SURROGATE_P (c))
|
||||
CODING_UTF_16_SURROGATE (coding) = surrogate = c;
|
||||
else
|
||||
@ -2598,7 +2595,6 @@ decode_coding_emacs_mule (struct coding_system *coding)
|
||||
ONE_MORE_BYTE (c);
|
||||
*charbuf++ = ASCII_CHAR_P (c) ? c : BYTE8_TO_CHAR (c);
|
||||
char_offset++;
|
||||
coding->errors++;
|
||||
}
|
||||
|
||||
no_more_source:
|
||||
@ -4006,7 +4002,6 @@ decode_coding_iso_2022 (struct coding_system *coding)
|
||||
ONE_MORE_BYTE (c);
|
||||
*charbuf++ = c < 0 ? -c : ASCII_CHAR_P (c) ? c : BYTE8_TO_CHAR (c);
|
||||
char_offset++;
|
||||
coding->errors++;
|
||||
/* Reset the invocation and designation status to the safest
|
||||
one; i.e. designate ASCII to the graphic register 0, and
|
||||
invoke that register to the graphic plane 0. This typically
|
||||
@ -4837,7 +4832,6 @@ decode_coding_sjis (struct coding_system *coding)
|
||||
ONE_MORE_BYTE (c);
|
||||
*charbuf++ = c < 0 ? -c : BYTE8_TO_CHAR (c);
|
||||
char_offset++;
|
||||
coding->errors++;
|
||||
}
|
||||
|
||||
no_more_source:
|
||||
@ -4933,7 +4927,6 @@ decode_coding_big5 (struct coding_system *coding)
|
||||
ONE_MORE_BYTE (c);
|
||||
*charbuf++ = c < 0 ? -c : BYTE8_TO_CHAR (c);
|
||||
char_offset++;
|
||||
coding->errors++;
|
||||
}
|
||||
|
||||
no_more_source:
|
||||
@ -5642,7 +5635,6 @@ decode_coding_charset (struct coding_system *coding)
|
||||
ONE_MORE_BYTE (c);
|
||||
*charbuf++ = c < 0 ? -c : ASCII_CHAR_P (c) ? c : BYTE8_TO_CHAR (c);
|
||||
char_offset++;
|
||||
coding->errors++;
|
||||
}
|
||||
|
||||
no_more_source:
|
||||
@ -7375,7 +7367,6 @@ decode_coding (struct coding_system *coding)
|
||||
coding->produced = coding->produced_char = 0;
|
||||
coding->chars_at_source = 0;
|
||||
record_conversion_result (coding, CODING_RESULT_SUCCESS);
|
||||
coding->errors = 0;
|
||||
|
||||
ALLOC_CONVERSION_WORK_AREA (coding, coding->src_bytes);
|
||||
|
||||
@ -7771,7 +7762,6 @@ encode_coding (struct coding_system *coding)
|
||||
coding->consumed = coding->consumed_char = 0;
|
||||
coding->produced = coding->produced_char = 0;
|
||||
record_conversion_result (coding, CODING_RESULT_SUCCESS);
|
||||
coding->errors = 0;
|
||||
|
||||
ALLOC_CONVERSION_WORK_AREA (coding, coding->src_chars);
|
||||
|
||||
|
61
src/coding.h
61
src/coding.h
@ -434,11 +434,37 @@ struct coding_system
|
||||
|
||||
/* Flag bits of the coding system. The meaning of each bit is common
|
||||
to all types of coding systems. */
|
||||
int common_flags;
|
||||
unsigned common_flags : 14;
|
||||
|
||||
/* Mode bits of the coding system. See the comments of the macros
|
||||
CODING_MODE_XXX. */
|
||||
unsigned int mode;
|
||||
unsigned mode : 5;
|
||||
|
||||
/* The following two members specify how binary 8-bit code 128..255
|
||||
are represented in source and destination text respectively. True
|
||||
means they are represented by 2-byte sequence, false means they are
|
||||
represented by 1-byte as is (see the comment in character.h). */
|
||||
bool_bf src_multibyte : 1;
|
||||
bool_bf dst_multibyte : 1;
|
||||
|
||||
/* True if the source of conversion is not in the member
|
||||
`charbuf', but at `src_object'. */
|
||||
bool_bf chars_at_source : 1;
|
||||
|
||||
/* Nonzero if the result of conversion is in `destination'
|
||||
buffer rather than in `dst_object'. */
|
||||
bool_bf raw_destination : 1;
|
||||
|
||||
/* Set to true if charbuf contains an annotation. */
|
||||
bool_bf annotated : 1;
|
||||
|
||||
/* Used internally in coding.c. See the comment of detect_ascii. */
|
||||
unsigned eol_seen : 3;
|
||||
|
||||
/* Finish status of code conversion. */
|
||||
ENUM_BF (coding_result_code) result : 3;
|
||||
|
||||
int max_charset_id;
|
||||
|
||||
/* Detailed information specific to each type of coding system. */
|
||||
union
|
||||
@ -451,16 +477,8 @@ struct coding_system
|
||||
struct undecided_spec undecided;
|
||||
} spec;
|
||||
|
||||
int max_charset_id;
|
||||
unsigned char *safe_charsets;
|
||||
|
||||
/* The following two members specify how binary 8-bit code 128..255
|
||||
are represented in source and destination text respectively. True
|
||||
means they are represented by 2-byte sequence, false means they are
|
||||
represented by 1-byte as is (see the comment in character.h). */
|
||||
bool_bf src_multibyte : 1;
|
||||
bool_bf dst_multibyte : 1;
|
||||
|
||||
/* How may heading bytes we can skip for decoding. This is set to
|
||||
-1 in setup_coding_system, and updated by detect_coding. So,
|
||||
when this is equal to the byte length of the text being
|
||||
@ -472,21 +490,9 @@ struct coding_system
|
||||
sequence. Set by detect_coding_utf_8. */
|
||||
ptrdiff_t detected_utf8_bytes, detected_utf8_chars;
|
||||
|
||||
/* Used internally in coding.c. See the comment of detect_ascii. */
|
||||
int eol_seen;
|
||||
|
||||
/* The following members are set by encoding/decoding routine. */
|
||||
ptrdiff_t produced, produced_char, consumed, consumed_char;
|
||||
|
||||
/* Number of error source data found in a decoding routine. */
|
||||
ptrdiff_t errors;
|
||||
|
||||
/* Store the positions of error source data. */
|
||||
ptrdiff_t *error_positions;
|
||||
|
||||
/* Finish status of code conversion. */
|
||||
enum coding_result_code result;
|
||||
|
||||
ptrdiff_t src_pos, src_pos_byte, src_chars, src_bytes;
|
||||
Lisp_Object src_object;
|
||||
const unsigned char *source;
|
||||
@ -510,17 +516,6 @@ struct coding_system
|
||||
int *charbuf;
|
||||
int charbuf_size, charbuf_used;
|
||||
|
||||
/* True if the source of conversion is not in the member
|
||||
`charbuf', but at `src_object'. */
|
||||
bool_bf chars_at_source : 1;
|
||||
|
||||
/* Nonzero if the result of conversion is in `destination'
|
||||
buffer rather than in `dst_object'. */
|
||||
bool_bf raw_destination : 1;
|
||||
|
||||
/* Set to true if charbuf contains an annotation. */
|
||||
bool_bf annotated : 1;
|
||||
|
||||
unsigned char carryover[64];
|
||||
int carryover_bytes;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user