From 339dfc32a7854104729f8a334b64d272550781f9 Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 1 Sep 2008 13:21:06 +0000 Subject: [PATCH] * tool/transcode-tblgen.rb: make offsets arrays into single array. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19032 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ tool/transcode-tblgen.rb | 24 ++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11f09dad2b..ea308a7330 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Sep 1 22:20:22 2008 Tanaka Akira + + * tool/transcode-tblgen.rb: make offsets arrays into single array. + Mon Sep 1 21:46:18 2008 Tanaka Akira * tool/transcode-tblgen.rb: gather offsets array at top. diff --git a/tool/transcode-tblgen.rb b/tool/transcode-tblgen.rb index ecacd93509..507b56f503 100644 --- a/tool/transcode-tblgen.rb +++ b/tool/transcode-tblgen.rb @@ -236,7 +236,7 @@ class ActionMap def format_offsets(min, max, offsets) offsets = offsets[min..max] - code = "{ %d, %d,\n" % [min, max] + code = "%d, %d,\n" % [min, max] 0.step(offsets.length-1,16) {|i| code << " " code << offsets[i,8].map {|off| "%3d," % off.to_s }.join('') @@ -246,7 +246,6 @@ class ActionMap end code << "\n" } - code << '}' code end @@ -322,15 +321,24 @@ class ActionMap offsets_key = [min, max, offsets[min..max]] if n = OffsetsMemo[offsets_key] offsets_name = n - offsets_code = '' else offsets_name = "#{name}_offsets" - offsets_code = <<"End" -static const unsigned char -#{offsets_name}[#{2+max-min+1}] = #{format_offsets(min,max,offsets)}; -End OffsetsMemo[offsets_key] = offsets_name - bytes_code << offsets_code + if bytes_code.empty? + bytes_code << <<"End" +static const unsigned char +byte_array[0] = { +}; +End + end + size = bytes_code[/\[\d+\]/][1...-1].to_i + bytes_code.sub!(/^(\};\n\z)/) { + "\#define #{offsets_name} (byte_array+#{size})\n" + + format_offsets(min,max,offsets) + "\n" + + $1 + } + size += 2+max-min+1 + bytes_code.sub!(/\[\d+\]/) { "[#{size}]" } end if n = InfosMemo[infos]