diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-01 17:40:32 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-01 17:40:32 +0000 |
commit | 7908180df1364bc6a20cdbf2cb1365f1f0da21fa (patch) | |
tree | 4caf1aa63bc2e4fe3b3ef506a074a5fd2a2cf18d /transcode.c | |
parent | 6c835ee50ae152daf75d4bd3a63570b7480b1c89 (diff) | |
download | ruby-7908180df1364bc6a20cdbf2cb1365f1f0da21fa.tar.gz |
* tool/transcode-tblgen.rb: record offsets array as index of
byte_array to avoid relocation.
* transcode.c (transcode_restartable0): add byte_array to get offsets
array.
* transcode_data.h (BYTE_LOOKUP_BASE): change return type to
uintptr_t.
(rb_transcoder): add fields: byte_array, word_array and word_size.
* enc/trans/newline.trans: follow rb_transcoder change.
* enc/trans/iso2022.trans: ditto.
* enc/trans/utf_16_32.trans: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode.c')
-rw-r--r-- | transcode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/transcode.c b/transcode.c index f4409a39ab..bc1597e5b0 100644 --- a/transcode.c +++ b/transcode.c @@ -493,10 +493,11 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, next_byte = (unsigned char)*in_p++; follow_byte: - if (next_byte < BYTE_LOOKUP_BASE(next_table)[0] || BYTE_LOOKUP_BASE(next_table)[1] < next_byte) +#define BL_BASE(next_table) (tr->byte_array + BYTE_LOOKUP_BASE(next_table)) + if (next_byte < BL_BASE(next_table)[0] || BL_BASE(next_table)[1] < next_byte) next_info = INVALID; else { - unsigned int next_offset = BYTE_LOOKUP_BASE(next_table)[2+next_byte-BYTE_LOOKUP_BASE(next_table)[0]]; + unsigned int next_offset = BL_BASE(next_table)[2+next_byte-BL_BASE(next_table)[0]]; next_info = (VALUE)BYTE_LOOKUP_INFO(next_table)[next_offset]; } follow_info: |