[前][次][番号順一覧][スレッド一覧]

ruby-changes:14980

From: mame <ko1@a...>
Date: Tue, 9 Mar 2010 12:21:26 +0900 (JST)
Subject: [ruby-changes:14980] Ruby:r26852 (trunk): * tool/transcode-tblgen.rb (StrSet#parse, ActionMap#generate_node):

mame	2010-03-09 12:21:07 +0900 (Tue, 09 Mar 2010)

  New Revision: 26852

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26852

  Log:
    * tool/transcode-tblgen.rb (StrSet#parse, ActionMap#generate_node):
      optimization (reusing object and improving memoize).
      [ruby-dev:40582]

  Modified files:
    trunk/ChangeLog
    trunk/tool/transcode-tblgen.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 26851)
+++ ChangeLog	(revision 26852)
@@ -1,7 +1,17 @@
+Tue Mar  9 12:17:34 2010  Yusuke Endoh  <mame@t...>
+
+	* tool/transcode-tblgen.rb (StrSet#parse, ActionMap#generate_node):
+	  optimization (reusing object and improving memoize).
+	  [ruby-dev:40582]
+
 Sun Mar  7 02:27:03 2010  Alexander Zavorine  <alexandre.zavorine@n...>
 
-	* dln.c [DLN_NEEDS_ALT_SEPARATOR] (translit_separator): small typo fixed.
-	* symbian/setup (*.pkg): Shared library installation path fixed to match changes in version.c.
+	* dln.c [DLN_NEEDS_ALT_SEPARATOR] (translit_separator): small typo
+	  fixed.
+
+	* symbian/setup (*.pkg): Shared library installation path fixed to
+	  match changes in version.c.
+
 	* symbian/setup (ruby.mmp): SOURCE dln_find.c added.
 
 Sun Mar  7 23:14:22 2010  Tanaka Akira  <akr@f...>
Index: tool/transcode-tblgen.rb
===================================================================
--- tool/transcode-tblgen.rb	(revision 26851)
+++ tool/transcode-tblgen.rb	(revision 26852)
@@ -23,6 +23,8 @@
 class StrSet
   attr_reader :pat
 
+  SINGLE_BYTE_RANGES = (0..255).map {|i| [i..i] }
+
   def self.parse(pattern)
     if /\A\s*((#{HEX2}|\{(#{HEX2}|#{HEX2}-#{HEX2})(,(#{HEX2}|#{HEX2}-#{HEX2}))*\})+(\s+|\z))*\z/o !~ pattern
       raise ArgumentError, "invalid pattern: #{pattern.inspect}"
@@ -33,7 +35,7 @@
       while !seq.empty?
         if /\A(#{HEX2})/o =~ seq
           byte = $1.to_i(16)
-          seq_result << [byte..byte]
+          seq_result << SINGLE_BYTE_RANGES[byte]
           seq = $'
         elsif /\A\{([^\}]+)\}/ =~ seq
           set = $1
@@ -448,7 +450,7 @@
     }
 
     if n = PostMemo[table]
-      return n
+      return PreMemo[[self,valid_encoding]] = n
     end
 
     if !name_hint

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]