diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-12 23:01:19 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-12 23:01:19 +0000 |
commit | fd81221a8e2c3a8c77599602fe38cd563d86191d (patch) | |
tree | 47faf15269b927feb9e4b13fe2d09a51dae4ddfd | |
parent | 1a4b93cf920d0850061ce4b53351b4cdc7d464c7 (diff) |
set svn:eol-style
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
81 files changed, 13317 insertions, 13317 deletions
diff --git a/benchmark/bm_app_answer.rb b/benchmark/bm_app_answer.rb index 00f830e1dc..3cd8a8fd37 100644 --- a/benchmark/bm_app_answer.rb +++ b/benchmark/bm_app_answer.rb @@ -1,15 +1,15 @@ -def ack(m, n)
- if m == 0 then
- n + 1
- elsif n == 0 then
- ack(m - 1, 1)
- else
- ack(m - 1, ack(m, n - 1))
- end
-end
-
-def the_answer_to_life_the_universe_and_everything
- (ack(3,7).to_s.split(//).inject(0){|s,x| s+x.to_i}.to_s + "2" ).to_i
-end
-
-answer = the_answer_to_life_the_universe_and_everything
+def ack(m, n) + if m == 0 then + n + 1 + elsif n == 0 then + ack(m - 1, 1) + else + ack(m - 1, ack(m, n - 1)) + end +end + +def the_answer_to_life_the_universe_and_everything + (ack(3,7).to_s.split(//).inject(0){|s,x| s+x.to_i}.to_s + "2" ).to_i +end + +answer = the_answer_to_life_the_universe_and_everything diff --git a/benchmark/bm_app_factorial.rb b/benchmark/bm_app_factorial.rb index cfafd626a8..a5a5de0426 100644 --- a/benchmark/bm_app_factorial.rb +++ b/benchmark/bm_app_factorial.rb @@ -1,11 +1,11 @@ -def fact(n)
- if(n > 1)
- n * fact(n-1)
- else
- 1
- end
-end
-
-8.times{
- fact(5000)
+def fact(n) + if(n > 1) + n * fact(n-1) + else + 1 + end +end + +8.times{ + fact(5000) }
\ No newline at end of file diff --git a/benchmark/bm_app_fib.rb b/benchmark/bm_app_fib.rb index 65a149e5c4..34a7b2e725 100644 --- a/benchmark/bm_app_fib.rb +++ b/benchmark/bm_app_fib.rb @@ -1,10 +1,10 @@ -def fib n
- if n < 3
- 1
- else
- fib(n-1) + fib(n-2)
- end
-end
-
-fib(34)
-
+def fib n + if n < 3 + 1 + else + fib(n-1) + fib(n-2) + end +end + +fib(34) + diff --git a/benchmark/bm_app_mandelbrot.rb b/benchmark/bm_app_mandelbrot.rb index e981775ad3..a0dcf5e874 100644 --- a/benchmark/bm_app_mandelbrot.rb +++ b/benchmark/bm_app_mandelbrot.rb @@ -1,23 +1,23 @@ -require 'complex'
-
-def mandelbrot? z
- i = 0
- while i<100
- i+=1
- z = z * z
- return false if z.abs > 2
- end
- true
-end
-
-ary = []
-
-(0..100).each{|dx|
- (0..100).each{|dy|
- x = dx / 50.0
- y = dy / 50.0
- c = Complex(x, y)
- ary << c if mandelbrot?(c)
- }
-}
-
+require 'complex' + +def mandelbrot? z + i = 0 + while i<100 + i+=1 + z = z * z + return false if z.abs > 2 + end + true +end + +ary = [] + +(0..100).each{|dx| + (0..100).each{|dy| + x = dx / 50.0 + y = dy / 50.0 + c = Complex(x, y) + ary << c if mandelbrot?(c) + } +} + diff --git a/benchmark/bm_app_pentomino.rb b/benchmark/bm_app_pentomino.rb index 4aa144542a..59c63f358e 100644 --- a/benchmark/bm_app_pentomino.rb +++ b/benchmark/bm_app_pentomino.rb @@ -1,259 +1,259 @@ -#!/usr/local/bin/ruby
-# This program is contributed by Shin Nishiyama
-
-
-# modified by K.Sasada
-
-NP = 5
-ROW = 8 + NP
-COL = 8
-
-$p = []
-$b = []
-$no = 0
-
-def piece(n, a, nb)
- nb.each{|x|
- a[n] = x
- if n == NP-1
- $p << [a.sort]
- else
- nbc=nb.dup
- [-ROW, -1, 1, ROW].each{|d|
- if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
- nbc << x+d
- end
- }
- nbc.delete x
- piece(n+1,a[0..n],nbc)
- end
- }
-end
-
-def kikaku(a)
- a.collect {|x| x - a[0]}
-end
-def ud(a)
- kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
-end
-def rl(a)
- kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
-end
-def xy(a)
- kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
-end
-
-def mkpieces
- piece(0,[],[0])
- $p.each do |a|
- a0 = a[0]
- a[1] = ud(a0)
- a[2] = rl(a0)
- a[3] = ud(rl(a0))
- a[4] = xy(a0)
- a[5] = ud(xy(a0))
- a[6] = rl(xy(a0))
- a[7] = ud(rl(xy(a0)))
- a.sort!
- a.uniq!
- end
- $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
-end
-
-def mkboard
- (0...ROW*COL).each{|i|
- if i % ROW >= ROW-NP
- $b[i] = -2
- else
- $b[i] = -1
- end
- $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
- }
-end
-
-def pboard
- return # skip print
- print "No. #$no\n"
- (0...COL).each{|i|
- print "|"
- (0...ROW-NP).each{|j|
- x = $b[i*ROW+j]
- if x < 0
- print "..|"
- else
- printf "%2d|",x+1
- end
- }
- print "\n"
- }
- print "\n"
-end
-
-$pnum=[]
-def setpiece(a,pos)
- if a.length == $p.length then
- $no += 1
- pboard
- return
- end
- while $b[pos] != -1
- pos += 1
- end
- ($pnum - a).each do |i|
- $p[i].each do |x|
- f = 0
- x.each{|s|
- if $b[pos+s] != -1
- f=1
- break
- end
- }
- if f == 0 then
- x.each{|s|
- $b[pos+s] = i
- }
- a << i
- setpiece(a.dup, pos)
- a.pop
- x.each{|s|
- $b[pos+s] = -1
- }
- end
- end
- end
-end
-
-mkpieces
-mkboard
-$p[4] = [$p[4][0]]
-$pnum = (0...$p.length).to_a
-setpiece([],0)
-
-
-__END__
-
-# original
-
-NP = 5
-ROW = 8 + NP
-COL = 8
-
-$p = []
-$b = []
-$no = 0
-
-def piece(n,a,nb)
- for x in nb
- a[n] = x
- if n == NP-1
- $p << [a.sort]
- else
- nbc=nb.dup
- for d in [-ROW, -1, 1, ROW]
- if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
- nbc << x+d
- end
- end
- nbc.delete x
- piece(n+1,a[0..n],nbc)
- end
- end
-end
-
-def kikaku(a)
- a.collect {|x| x - a[0]}
-end
-def ud(a)
- kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
-end
-def rl(a)
- kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
-end
-def xy(a)
- kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
-end
-
-def mkpieces
- piece(0,[],[0])
- $p.each do |a|
- a0 = a[0]
- a[1] = ud(a0)
- a[2] = rl(a0)
- a[3] = ud(rl(a0))
- a[4] = xy(a0)
- a[5] = ud(xy(a0))
- a[6] = rl(xy(a0))
- a[7] = ud(rl(xy(a0)))
- a.sort!
- a.uniq!
- end
- $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
-end
-
-def mkboard
- for i in 0...ROW*COL
- if i % ROW >= ROW-NP
- $b[i] = -2
- else
- $b[i] = -1
- end
- $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
- end
-end
-
-def pboard
- print "No. #$no\n"
- for i in 0...COL
- print "|"
- for j in 0...ROW-NP
- x = $b[i*ROW+j]
- if x < 0
- print "..|"
- else
- printf "%2d|",x+1
- end
- end
- print "\n"
- end
- print "\n"
-end
-
-$pnum=[]
-def setpiece(a,pos)
- if a.length == $p.length then
- $no += 1
- pboard
- return
- end
- while $b[pos] != -1
- pos += 1
- end
- ($pnum - a).each do |i|
- $p[i].each do |x|
- f = 0
- for s in x do
- if $b[pos+s] != -1
- f=1
- break
- end
- end
- if f == 0 then
- for s in x do
- $b[pos+s] = i
- end
- a << i
- setpiece(a.dup, pos)
- a.pop
- for s in x do
- $b[pos+s] = -1
- end
- end
- end
- end
-end
-
-mkpieces
-mkboard
-$p[4] = [$p[4][0]]
-$pnum = (0...$p.length).to_a
-setpiece([],0)
+#!/usr/local/bin/ruby +# This program is contributed by Shin Nishiyama + + +# modified by K.Sasada + +NP = 5 +ROW = 8 + NP +COL = 8 + +$p = [] +$b = [] +$no = 0 + +def piece(n, a, nb) + nb.each{|x| + a[n] = x + if n == NP-1 + $p << [a.sort] + else + nbc=nb.dup + [-ROW, -1, 1, ROW].each{|d| + if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d) + nbc << x+d + end + } + nbc.delete x + piece(n+1,a[0..n],nbc) + end + } +end + +def kikaku(a) + a.collect {|x| x - a[0]} +end +def ud(a) + kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort) +end +def rl(a) + kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort) +end +def xy(a) + kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort) +end + +def mkpieces + piece(0,[],[0]) + $p.each do |a| + a0 = a[0] + a[1] = ud(a0) + a[2] = rl(a0) + a[3] = ud(rl(a0)) + a[4] = xy(a0) + a[5] = ud(xy(a0)) + a[6] = rl(xy(a0)) + a[7] = ud(rl(xy(a0))) + a.sort! + a.uniq! + end + $p.uniq!.sort! {|x,y| x[0] <=> y[0] } +end + +def mkboard + (0...ROW*COL).each{|i| + if i % ROW >= ROW-NP + $b[i] = -2 + else + $b[i] = -1 + end + $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2 + } +end + +def pboard + return # skip print + print "No. #$no\n" + (0...COL).each{|i| + print "|" + (0...ROW-NP).each{|j| + x = $b[i*ROW+j] + if x < 0 + print "..|" + else + printf "%2d|",x+1 + end + } + print "\n" + } + print "\n" +end + +$pnum=[] +def setpiece(a,pos) + if a.length == $p.length then + $no += 1 + pboard + return + end + while $b[pos] != -1 + pos += 1 + end + ($pnum - a).each do |i| + $p[i].each do |x| + f = 0 + x.each{|s| + if $b[pos+s] != -1 + f=1 + break + end + } + if f == 0 then + x.each{|s| + $b[pos+s] = i + } + a << i + setpiece(a.dup, pos) + a.pop + x.each{|s| + $b[pos+s] = -1 + } + end + end + end +end + +mkpieces +mkboard +$p[4] = [$p[4][0]] +$pnum = (0...$p.length).to_a +setpiece([],0) + + +__END__ + +# original + +NP = 5 +ROW = 8 + NP +COL = 8 + +$p = [] +$b = [] +$no = 0 + +def piece(n,a,nb) + for x in nb + a[n] = x + if n == NP-1 + $p << [a.sort] + else + nbc=nb.dup + for d in [-ROW, -1, 1, ROW] + if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d) + nbc << x+d + end + end + nbc.delete x + piece(n+1,a[0..n],nbc) + end + end +end + +def kikaku(a) + a.collect {|x| x - a[0]} +end +def ud(a) + kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort) +end +def rl(a) + kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort) +end +def xy(a) + kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort) +end + +def mkpieces + piece(0,[],[0]) + $p.each do |a| + a0 = a[0] + a[1] = ud(a0) + a[2] = rl(a0) + a[3] = ud(rl(a0)) + a[4] = xy(a0) + a[5] = ud(xy(a0)) + a[6] = rl(xy(a0)) + a[7] = ud(rl(xy(a0))) + a.sort! + a.uniq! + end + $p.uniq!.sort! {|x,y| x[0] <=> y[0] } +end + +def mkboard + for i in 0...ROW*COL + if i % ROW >= ROW-NP + $b[i] = -2 + else + $b[i] = -1 + end + $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2 + end +end + +def pboard + print "No. #$no\n" + for i in 0...COL + print "|" + for j in 0...ROW-NP + x = $b[i*ROW+j] + if x < 0 + print "..|" + else + printf "%2d|",x+1 + end + end + print "\n" + end + print "\n" +end + +$pnum=[] +def setpiece(a,pos) + if a.length == $p.length then + $no += 1 + pboard + return + end + while $b[pos] != -1 + pos += 1 + end + ($pnum - a).each do |i| + $p[i].each do |x| + f = 0 + for s in x do + if $b[pos+s] != -1 + f=1 + break + end + end + if f == 0 then + for s in x do + $b[pos+s] = i + end + a << i + setpiece(a.dup, pos) + a.pop + for s in x do + $b[pos+s] = -1 + end + end + end + end +end + +mkpieces +mkboard +$p[4] = [$p[4][0]] +$pnum = (0...$p.length).to_a +setpiece([],0) diff --git a/benchmark/bm_app_raise.rb b/benchmark/bm_app_raise.rb index 0e3297e62e..01d2ae3219 100644 --- a/benchmark/bm_app_raise.rb +++ b/benchmark/bm_app_raise.rb @@ -1,8 +1,8 @@ -i=0
-while i<300000
- i+=1
- begin
- raise
- rescue
- end
-end
+i=0 +while i<300000 + i+=1 + begin + raise + rescue + end +end diff --git a/benchmark/bm_app_strconcat.rb b/benchmark/bm_app_strconcat.rb index cc0e929da1..c6ef817263 100644 --- a/benchmark/bm_app_strconcat.rb +++ b/benchmark/bm_app_strconcat.rb @@ -1,5 +1,5 @@ -i=0
-while i<500000
- "#{1+1} #{1+1} #{1+1}"
- i+=1
-end
+i=0 +while i<500000 + "#{1+1} #{1+1} #{1+1}" + i+=1 +end diff --git a/benchmark/bm_app_tak.rb b/benchmark/bm_app_tak.rb index d70d5db8f8..efe5380f4e 100644 --- a/benchmark/bm_app_tak.rb +++ b/benchmark/bm_app_tak.rb @@ -1,13 +1,13 @@ -
-def tak x, y, z
- unless y < x
- z
- else
- tak( tak(x-1, y, z),
- tak(y-1, z, x),
- tak(z-1, x, y))
- end
-end
-
-tak(18, 9, 0)
-
+ +def tak x, y, z + unless y < x + z + else + tak( tak(x-1, y, z), + tak(y-1, z, x), + tak(z-1, x, y)) + end +end + +tak(18, 9, 0) + diff --git a/benchmark/bm_app_tarai.rb b/benchmark/bm_app_tarai.rb index 851f36d990..4c146f5ccf 100644 --- a/benchmark/bm_app_tarai.rb +++ b/benchmark/bm_app_tarai.rb @@ -1,10 +1,10 @@ -def tarai( x, y, z )
- if x <= y
- then y
- else tarai(tarai(x-1, y, z),
- tarai(y-1, z, x),
- tarai(z-1, x, y))
- end
-end
-
-tarai(12, 6, 0)
+def tarai( x, y, z ) + if x <= y + then y + else tarai(tarai(x-1, y, z), + tarai(y-1, z, x), + tarai(z-1, x, y)) + end +end + +tarai(12, 6, 0) diff --git a/benchmark/bm_loop_times.rb b/benchmark/bm_loop_times.rb index 6bda28d8f6..c5317b8228 100644 --- a/benchmark/bm_loop_times.rb +++ b/benchmark/bm_loop_times.rb @@ -1 +1 @@ -30000000.times{|e|}
+30000000.times{|e|} diff --git a/benchmark/bm_loop_whileloop.rb b/benchmark/bm_loop_whileloop.rb index 59b89cc519..5500af6d09 100644 --- a/benchmark/bm_loop_whileloop.rb +++ b/benchmark/bm_loop_whileloop.rb @@ -1,4 +1,4 @@ -i = 0
-while i<30000000 # benchmark loop 1
- i+=1
-end
+i = 0 +while i<30000000 # benchmark loop 1 + i+=1 +end diff --git a/benchmark/bm_loop_whileloop2.rb b/benchmark/bm_loop_whileloop2.rb index 976d4a9bad..56480f31ba 100644 --- a/benchmark/bm_loop_whileloop2.rb +++ b/benchmark/bm_loop_whileloop2.rb @@ -1,5 +1,5 @@ -i=0
-while i<6000000 # benchmark loop 2
- i+=1
-end
-
+i=0 +while i<6000000 # benchmark loop 2 + i+=1 +end + diff --git a/benchmark/bm_so_ackermann.rb b/benchmark/bm_so_ackermann.rb index fce9585825..7db5be9050 100644 --- a/benchmark/bm_so_ackermann.rb +++ b/benchmark/bm_so_ackermann.rb @@ -1,19 +1,19 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: ackermann-ruby.code,v 1.4 2004/11/13 07:40:41 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-
-def ack(m, n)
- if m == 0 then
- n + 1
- elsif n == 0 then
- ack(m - 1, 1)
- else
- ack(m - 1, ack(m, n - 1))
- end
-end
-
-NUM = 9
-ack(3, NUM)
-
-
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: ackermann-ruby.code,v 1.4 2004/11/13 07:40:41 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ + +def ack(m, n) + if m == 0 then + n + 1 + elsif n == 0 then + ack(m - 1, 1) + else + ack(m - 1, ack(m, n - 1)) + end +end + +NUM = 9 +ack(3, NUM) + + diff --git a/benchmark/bm_so_array.rb b/benchmark/bm_so_array.rb index a82a37cf16..2b8fce8f99 100644 --- a/benchmark/bm_so_array.rb +++ b/benchmark/bm_so_array.rb @@ -1,23 +1,23 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: ary-ruby.code,v 1.4 2004/11/13 07:41:27 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# with help from Paul Brannan and Mark Hubbart
-
-n = 9000 # Integer(ARGV.shift || 1)
-
-x = Array.new(n)
-y = Array.new(n, 0)
-
-n.times{|bi|
- x[bi] = bi + 1
-}
-
-(0 .. 999).each do |e|
- (n-1).step(0,-1) do |bi|
- y[bi] += x.at(bi)
- end
-end
-# puts "#{y.first} #{y.last}"
-
-
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: ary-ruby.code,v 1.4 2004/11/13 07:41:27 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ +# with help from Paul Brannan and Mark Hubbart + +n = 9000 # Integer(ARGV.shift || 1) + +x = Array.new(n) +y = Array.new(n, 0) + +n.times{|bi| + x[bi] = bi + 1 +} + +(0 .. 999).each do |e| + (n-1).step(0,-1) do |bi| + y[bi] += x.at(bi) + end +end +# puts "#{y.first} #{y.last}" + + diff --git a/benchmark/bm_so_concatenate.rb b/benchmark/bm_so_concatenate.rb index 153efea1db..82629688b7 100644 --- a/benchmark/bm_so_concatenate.rb +++ b/benchmark/bm_so_concatenate.rb @@ -1,18 +1,18 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: strcat-ruby.code,v 1.4 2004/11/13 07:43:28 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
-
-STUFF = "hello\n"
-i=0
-while i<10
- i+=1
- hello = ''
- 400000.times do |e|
- hello << STUFF
- end
-end
-# puts hello.length
-
-
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: strcat-ruby.code,v 1.4 2004/11/13 07:43:28 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ +# based on code from Aristarkh A Zagorodnikov and Dat Nguyen + +STUFF = "hello\n" +i=0 +while i<10 + i+=1 + hello = '' + 400000.times do |e| + hello << STUFF + end +end +# puts hello.length + + diff --git a/benchmark/bm_so_count_words.rb b/benchmark/bm_so_count_words.rb index a24062d258..a208004a9a 100644 --- a/benchmark/bm_so_count_words.rb +++ b/benchmark/bm_so_count_words.rb @@ -1,18 +1,18 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: wc-ruby.code,v 1.4 2004/11/13 07:43:32 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# with help from Paul Brannan
-
-input = open(File.join(File.dirname($0), 'wc.input'), 'rb')
-
-nl = nw = nc = 0
-while true
- data = (input.read(4096) or break) << (input.gets || "")
- nc += data.length
- nl += data.count("\n")
- ((data.strip! || data).tr!("\n", " ") || data).squeeze!
- #nw += data.count(" ") + 1
-end
-# STDERR.puts "#{nl} #{nw} #{nc}"
-
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: wc-ruby.code,v 1.4 2004/11/13 07:43:32 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ +# with help from Paul Brannan + +input = open(File.join(File.dirname($0), 'wc.input'), 'rb') + +nl = nw = nc = 0 +while true + data = (input.read(4096) or break) << (input.gets || "") + nc += data.length + nl += data.count("\n") + ((data.strip! || data).tr!("\n", " ") || data).squeeze! + #nw += data.count(" ") + 1 +end +# STDERR.puts "#{nl} #{nw} #{nc}" + diff --git a/benchmark/bm_so_exception.rb b/benchmark/bm_so_exception.rb index d829474750..d8b461290c 100644 --- a/benchmark/bm_so_exception.rb +++ b/benchmark/bm_so_exception.rb @@ -1,61 +1,61 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-
-$HI = 0
-$LO = 0
-NUM = 250000 # Integer(ARGV[0] || 1)
-
-
-class Lo_Exception < Exception
- def initialize(num)
- @value = num
- end
-end
-
-class Hi_Exception < Exception
- def initialize(num)
- @value = num
- end
-end
-
-def some_function(num)
- begin
- hi_function(num)
- rescue
- print "We shouldn't get here, exception is: #{$!.type}\n"
- end
-end
-
-def hi_function(num)
- begin
- lo_function(num)
- rescue Hi_Exception
- $HI = $HI + 1
- end
-end
-
-def lo_function(num)
- begin
- blowup(num)
- rescue Lo_Exception
- $LO = $LO + 1
- end
-end
-
-def blowup(num)
- if num % 2 == 0
- raise Lo_Exception.new(num)
- else
- raise Hi_Exception.new(num)
- end
-end
-
-
-i = 1
-max = NUM+1
-while i < max
- i+=1
- some_function(i+1)
-end
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ + +$HI = 0 +$LO = 0 +NUM = 250000 # Integer(ARGV[0] || 1) + + +class Lo_Exception < Exception + def initialize(num) + @value = num + end +end + +class Hi_Exception < Exception + def initialize(num) + @value = num + end +end + +def some_function(num) + begin + hi_function(num) + rescue + print "We shouldn't get here, exception is: #{$!.type}\n" + end +end + +def hi_function(num) + begin + lo_function(num) + rescue Hi_Exception + $HI = $HI + 1 + end +end + +def lo_function(num) + begin + blowup(num) + rescue Lo_Exception + $LO = $LO + 1 + end +end + +def blowup(num) + if num % 2 == 0 + raise Lo_Exception.new(num) + else + raise Hi_Exception.new(num) + end +end + + +i = 1 +max = NUM+1 +while i < max + i+=1 + some_function(i+1) +end diff --git a/benchmark/bm_so_lists.rb b/benchmark/bm_so_lists.rb index 1fcf24bbc6..3652288881 100644 --- a/benchmark/bm_so_lists.rb +++ b/benchmark/bm_so_lists.rb @@ -1,47 +1,47 @@ -#from http://www.bagley.org/~doug/shootout/bench/lists/lists.ruby
-
-NUM = 100
-SIZE = 10000
-
-def test_lists()
- # create a list of integers (Li1) from 1 to SIZE
- li1 = (1..SIZE).to_a
- # copy the list to li2 (not by individual items)
- li2 = li1.dup
- # remove each individual item from left side of li2 and
- # append to right side of li3 (preserving order)
- li3 = Array.new
- while (not li2.empty?)
- li3.push(li2.shift)
- end
- # li2 must now be empty
- # remove each individual item from right side of li3 and
- # append to right side of li2 (reversing list)
- while (not li3.empty?)
- li2.push(li3.pop)
- end
- # li3 must now be empty
- # reverse li1 in place
- li1.reverse!
- # check that first item is now SIZE
- if li1[0] != SIZE then
- p "not SIZE"
- 0
- else
- # compare li1 and li2 for equality
- if li1 != li2 then
- return(0)
- else
- # return the length of the list
- li1.length
- end
- end
-end
-
-i = 0
-while i<NUM
- i+=1
- result = test_lists()
-end
-
-result
+#from http://www.bagley.org/~doug/shootout/bench/lists/lists.ruby + +NUM = 100 +SIZE = 10000 + +def test_lists() + # create a list of integers (Li1) from 1 to SIZE + li1 = (1..SIZE).to_a + # copy the list to li2 (not by individual items) + li2 = li1.dup + # remove each individual item from left side of li2 and + # append to right side of li3 (preserving order) + li3 = Array.new + while (not li2.empty?) + li3.push(li2.shift) + end + # li2 must now be empty + # remove each individual item from right side of li3 and + # append to right side of li2 (reversing list) + while (not li3.empty?) + li2.push(li3.pop) + end + # li3 must now be empty + # reverse li1 in place + li1.reverse! + # check that first item is now SIZE + if li1[0] != SIZE then + p "not SIZE" + 0 + else + # compare li1 and li2 for equality + if li1 != li2 then + return(0) + else + # return the length of the list + li1.length + end + end +end + +i = 0 +while i<NUM + i+=1 + result = test_lists() +end + +result diff --git a/benchmark/bm_so_matrix.rb b/benchmark/bm_so_matrix.rb index 2ba22205dc..0f274ad06c 100644 --- a/benchmark/bm_so_matrix.rb +++ b/benchmark/bm_so_matrix.rb @@ -1,48 +1,48 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-
-n = 60 #Integer(ARGV.shift || 1)
-
-size = 30
-
-def mkmatrix(rows, cols)
- count = 1
- mx = Array.new(rows)
- (0 .. (rows - 1)).each do |bi|
- row = Array.new(cols, 0)
- (0 .. (cols - 1)).each do |j|
- row[j] = count
- count += 1
- end
- mx[bi] = row
- end
- mx
-end
-
-def mmult(rows, cols, m1, m2)
- m3 = Array.new(rows)
- (0 .. (rows - 1)).each do |bi|
- row = Array.new(cols, 0)
- (0 .. (cols - 1)).each do |j|
- val = 0
- (0 .. (cols - 1)).each do |k|
- val += m1.at(bi).at(k) * m2.at(k).at(j)
- end
- row[j] = val
- end
- m3[bi] = row
- end
- m3
-end
-
-m1 = mkmatrix(size, size)
-m2 = mkmatrix(size, size)
-mm = Array.new
-n.times do
- mm = mmult(size, size, m1, m2)
-end
-# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
-
-
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ + +n = 60 #Integer(ARGV.shift || 1) + +size = 30 + +def mkmatrix(rows, cols) + count = 1 + mx = Array.new(rows) + (0 .. (rows - 1)).each do |bi| + row = Array.new(cols, 0) + (0 .. (cols - 1)).each do |j| + row[j] = count + count += 1 + end + mx[bi] = row + end + mx +end + +def mmult(rows, cols, m1, m2) + m3 = Array.new(rows) + (0 .. (rows - 1)).each do |bi| + row = Array.new(cols, 0) + (0 .. (cols - 1)).each do |j| + val = 0 + (0 .. (cols - 1)).each do |k| + val += m1.at(bi).at(k) * m2.at(k).at(j) + end + row[j] = val + end + m3[bi] = row + end + m3 +end + +m1 = mkmatrix(size, size) +m2 = mkmatrix(size, size) +mm = Array.new +n.times do + mm = mmult(size, size, m1, m2) +end +# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}" + + diff --git a/benchmark/bm_so_nested_loop.rb b/benchmark/bm_so_nested_loop.rb index 4667d1b183..a0513f8c47 100644 --- a/benchmark/bm_so_nested_loop.rb +++ b/benchmark/bm_so_nested_loop.rb @@ -1,24 +1,24 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: nestedloop-ruby.code,v 1.4 2004/11/13 07:42:22 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# from Avi Bryant
-
-n = 16 # Integer(ARGV.shift || 1)
-x = 0
-n.times do
- n.times do
- n.times do
- n.times do
- n.times do
- n.times do
- x += 1
- end
- end
- end
- end
- end
-end
-# puts x
-
-
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: nestedloop-ruby.code,v 1.4 2004/11/13 07:42:22 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ +# from Avi Bryant + +n = 16 # Integer(ARGV.shift || 1) +x = 0 +n.times do + n.times do + n.times do + n.times do + n.times do + n.times do + x += 1 + end + end + end + end + end +end +# puts x + + diff --git a/benchmark/bm_so_object.rb b/benchmark/bm_so_object.rb index a900177f4c..e8607c7199 100644 --- a/benchmark/bm_so_object.rb +++ b/benchmark/bm_so_object.rb @@ -1,56 +1,56 @@ -#!/usr/bin/ruby
-# -*- mode: ruby -*-
-# $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# with help from Aristarkh Zagorodnikov
-
-class Toggle
- def initialize(start_state)
- @bool = start_state
- end
-
- def value
- @bool
- end
-
- def activate
- @bool = !@bool
- self
- end
-end
-
-class NthToggle < Toggle
- def initialize(start_state, max_counter)
- super start_state
- @count_max = max_counter
- @counter = 0
- end
-
- def activate
- @counter += 1
- if @counter >= @count_max
- @bool = !@bool
- @counter = 0
- end
- self
- end
-end
-
-n = 1500000 # (ARGV.shift || 1).to_i
-
-toggle = Toggle.new 1
-5.times do
- toggle.activate.value ? 'true' : 'false'
-end
-n.times do
- toggle = Toggle.new 1
-end
-
-ntoggle = NthToggle.new 1, 3
-8.times do
- ntoggle.activate.value ? 'true' : 'false'
-end
-n.times do
- ntoggle = NthToggle.new 1, 3
-end
-
+#!/usr/bin/ruby +# -*- mode: ruby -*- +# $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $ +# http://www.bagley.org/~doug/shootout/ +# with help from Aristarkh Zagorodnikov + +class Toggle + def initialize(start_state) + @bool = start_state + end + + def value + @bool + end + + def activate + @bool = !@bool + self + end +end + +class NthToggle < Toggle + def initialize(start_state, max_counter) + super start_state + @count_max = max_counter + @counter = 0 + end + + def activate + @counter += 1 + if @counter >= @count_max + @bool = !@bool + @counter = 0 + end + self + end +end + +n = 1500000 # (ARGV.shift || 1).to_i + +toggle = Toggle.new 1 +5.times do + toggle.activate.value ? 'true' : 'false' +end +n.times do + toggle = Toggle.new 1 +end + +ntoggle = NthToggle.new 1, 3 +8.times do + ntoggle.activate.value ? 'true' : 'false' +end +n.times do + ntoggle = NthToggle.new 1, 3 +end + diff --git a/benchmark/bm_so_random.rb b/benchmark/bm_so_random.rb index 8bc30841a8..83c0d6d380 100644 --- a/benchmark/bm_so_random.rb +++ b/benchmark/bm_so_random.rb @@ -1,20 +1,20 @@ -# from http://www.bagley.org/~doug/shootout/bench/random/random.ruby
-
-IM = 139968.0
-IA = 3877.0
-IC = 29573.0
-
-$last = 42.0
-
-def gen_random(max)
- (max * ($last = ($last * IA + IC) % IM)) / IM
-end
-
-N = 1000000
-
-i=0
-while i<N
- i+=1
- gen_random(100.0)
-end
-# "%.9f" % gen_random(100.0)
+# from http://www.bagley.org/~doug/shootout/bench/random/random.ruby + +IM = 139968.0 +IA = 3877.0 +IC = 29573.0 + +$last = 42.0 + +def gen_random(max) + (max * ($last = ($last * IA + IC) % IM)) / IM +end + +N = 1000000 + +i=0 +while i<N + i+=1 + gen_random(100.0) +end +# "%.9f" % gen_random(100.0) diff --git a/benchmark/bm_so_sieve.rb b/benchmark/bm_so_sieve.rb index c84d5bfcb2..dbe2bfa63d 100644 --- a/benchmark/bm_so_sieve.rb +++ b/benchmark/bm_so_sieve.rb @@ -1,24 +1,24 @@ -# from http://www.bagley.org/~doug/shootout/bench/sieve/sieve.ruby
-num = 40
-count = i = j = 0
-flags0 = Array.new(8192,1)
-k = 0
-while k < num
- k+=1
- count = 0
- flags = flags0.dup
- i = 2
- while i<8192
- i+=1
- if flags[i]
- # remove all multiples of prime: i
- j = i*i
- while j < 8192
- j += i
- flags[j] = nil
- end
- count += 1
- end
- end
-end
-count
+# from http://www.bagley.org/~doug/shootout/bench/sieve/sieve.ruby +num = 40 +count = i = j = 0 +flags0 = Array.new(8192,1) +k = 0 +while k < num + k+=1 + count = 0 + flags = flags0.dup + i = 2 + while i<8192 + i+=1 + if flags[i] + # remove all multiples of prime: i + j = i*i + while j < 8192 + j += i + flags[j] = nil + end + count += 1 + end + end +end +count diff --git a/benchmark/bm_vm1_block.rb b/benchmark/bm_vm1_block.rb index 1a7f98b3ce..2dc4e72be5 100644 --- a/benchmark/bm_vm1_block.rb +++ b/benchmark/bm_vm1_block.rb @@ -1,10 +1,10 @@ -def m
- yield
-end
-
-i=0
-while i<30000000 # while loop 1
- i+=1
- m{
- }
+def m + yield +end + +i=0 +while i<30000000 # while loop 1 + i+=1 + m{ + } end
\ No newline at end of file diff --git a/benchmark/bm_vm1_const.rb b/benchmark/bm_vm1_const.rb index 0077592045..3e395d9478 100644 --- a/benchmark/bm_vm1_const.rb +++ b/benchmark/bm_vm1_const.rb @@ -1,8 +1,8 @@ -Const = 1
-
-i = 0
-while i<30000000 # while loop 1
- i+= 1
- j = Const
- k = Const
-end
+Const = 1 + +i = 0 +while i<30000000 # while loop 1 + i+= 1 + j = Const + k = Const +end diff --git a/benchmark/bm_vm1_ensure.rb b/benchmark/bm_vm1_ensure.rb index cdb4444c4c..c3b71ead5a 100644 --- a/benchmark/bm_vm1_ensure.rb +++ b/benchmark/bm_vm1_ensure.rb @@ -1,11 +1,11 @@ -i=0
-while i<30000000 # benchmark loop 1
- i+=1
- begin
- begin
- ensure
- end
- ensure
- end
-end
-
+i=0 +while i<30000000 # benchmark loop 1 + i+=1 + begin + begin + ensure + end + ensure + end +end + diff --git a/benchmark/bm_vm1_length.rb b/benchmark/bm_vm1_length.rb index 764d77bc42..2d7d7f0b52 100644 --- a/benchmark/bm_vm1_length.rb +++ b/benchmark/bm_vm1_length.rb @@ -1,9 +1,9 @@ -a = 'abc'
-b = [1, 2, 3]
-i=0
-while i<30000000 # while loop 1
- i+=1
- a.length
- b.length
-end
-
+a = 'abc' +b = [1, 2, 3] +i=0 +while i<30000000 # while loop 1 + i+=1 + a.length + b.length +end + diff --git a/benchmark/bm_vm1_rescue.rb b/benchmark/bm_vm1_rescue.rb index 2904e1a105..0c98d00e0d 100644 --- a/benchmark/bm_vm1_rescue.rb +++ b/benchmark/bm_vm1_rescue.rb @@ -1,7 +1,7 @@ -i=0
-while i<30000000 # while loop 1
- i+=1
- begin
- rescue
- end
-end
+i=0 +while i<30000000 # while loop 1 + i+=1 + begin + rescue + end +end diff --git a/benchmark/bm_vm1_simplereturn.rb b/benchmark/bm_vm1_simplereturn.rb index c0a20ba184..c843ee3d97 100644 --- a/benchmark/bm_vm1_simplereturn.rb +++ b/benchmark/bm_vm1_simplereturn.rb @@ -1,9 +1,9 @@ -def m
- return 1
-end
-i=0
-while i<30000000 # while loop 1
- i+=1
- m
-end
-
+def m + return 1 +end +i=0 +while i<30000000 # while loop 1 + i+=1 + m +end + diff --git a/benchmark/bm_vm1_swap.rb b/benchmark/bm_vm1_swap.rb index 785c999ab1..a565b6f6dc 100644 --- a/benchmark/bm_vm1_swap.rb +++ b/benchmark/bm_vm1_swap.rb @@ -1,8 +1,8 @@ -a = 1
-b = 2
-i=0
-while i<30000000 # while loop 1
- i+=1
- a, b = b, a
-end
-
+a = 1 +b = 2 +i=0 +while i<30000000 # while loop 1 + i+=1 + a, b = b, a +end + diff --git a/benchmark/bm_vm2_array.rb b/benchmark/bm_vm2_array.rb index d1a989c7e5..e29c11200f 100644 --- a/benchmark/bm_vm2_array.rb +++ b/benchmark/bm_vm2_array.rb @@ -1,5 +1,5 @@ -i=0
-while i<6000000 # benchmark loop 2
- i+=1
- a = [1,2,3,4,5,6,7,8,9,10]
-end
+i=0 +while i<6000000 # benchmark loop 2 + i+=1 + a = [1,2,3,4,5,6,7,8,9,10] +end diff --git a/benchmark/bm_vm2_method.rb b/benchmark/bm_vm2_method.rb index 4c9734f9c1..cc94b8ab3d 100644 --- a/benchmark/bm_vm2_method.rb +++ b/benchmark/bm_vm2_method.rb @@ -1,9 +1,9 @@ -def m
- nil
-end
-
-i=0
-while i<6000000 # benchmark loop 2
- i+=1
- m; m; m; m; m; m; m; m;
-end
+def m + nil +end + +i=0 +while i<6000000 # benchmark loop 2 + i+=1 + m; m; m; m; m; m; m; m; +end diff --git a/benchmark/bm_vm2_poly_method.rb b/benchmark/bm_vm2_poly_method.rb index 3341ce6912..ac9953ce5f 100644 --- a/benchmark/bm_vm2_poly_method.rb +++ b/benchmark/bm_vm2_poly_method.rb @@ -1,20 +1,20 @@ -class C1
- def m
- 1
- end
-end
-class C2
- def m
- 2
- end
-end
-
-o1 = C1.new
-o2 = C2.new
-
-i=0
-while i<6000000 # benchmark loop 2
- o = (i % 2 == 0) ? o1 : o2
- o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
- i+=1
-end
+class C1 + def m + 1 + end +end +class C2 + def m + 2 + end +end + +o1 = C1.new +o2 = C2.new + +i=0 +while i<6000000 # benchmark loop 2 + o = (i % 2 == 0) ? o1 : o2 + o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m + i+=1 +end diff --git a/benchmark/bm_vm2_poly_method_ov.rb b/benchmark/bm_vm2_poly_method_ov.rb index b5255f8797..856ba9b161 100644 --- a/benchmark/bm_vm2_poly_method_ov.rb +++ b/benchmark/bm_vm2_poly_method_ov.rb @@ -1,20 +1,20 @@ -class C1
- def m
- 1
- end
-end
-class C2
- def m
- 2
- end
-end
-
-o1 = C1.new
-o2 = C2.new
-
-i=0
-while i<6000000 # benchmark loop 2
- o = (i % 2 == 0) ? o1 : o2
-# o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
- i+=1
-end
+class C1 + def m + 1 + end +end +class C2 + def m + 2 + end +end + +o1 = C1.new +o2 = C2.new + +i=0 +while i<6000000 # benchmark loop 2 + o = (i % 2 == 0) ? o1 : o2 +# o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m + i+=1 +end diff --git a/benchmark/bm_vm2_proc.rb b/benchmark/bm_vm2_proc.rb index d2892386b5..0bd05b9544 100644 --- a/benchmark/bm_vm2_proc.rb +++ b/benchmark/bm_vm2_proc.rb @@ -1,14 +1,14 @@ -def m &b
- b
-end
-
-pr = m{
- a = 1
-}
-
-i=0
-while i<6000000 # benchmark loop 2
- i+=1
- pr.call
-end
-
+def m &b + b +end + +pr = m{ + a = 1 +} + +i=0 +while i<6000000 # benchmark loop 2 + i+=1 + pr.call +end + diff --git a/benchmark/bm_vm2_regexp.rb b/benchmark/bm_vm2_regexp.rb index 515cd0e531..44f6ed402e 100644 --- a/benchmark/bm_vm2_regexp.rb +++ b/benchmark/bm_vm2_regexp.rb @@ -1,6 +1,6 @@ -i=0
-str = 'xxxhogexxx'
-while i<6000000 # benchmark loop 2
- /hoge/ =~ str
- i+=1
-end
+i=0 +str = 'xxxhogexxx' +while i<6000000 # benchmark loop 2 + /hoge/ =~ str + i+=1 +end diff --git a/benchmark/bm_vm2_send.rb b/benchmark/bm_vm2_send.rb index 5b23a24dab..c20dbdd26c 100644 --- a/benchmark/bm_vm2_send.rb +++ b/benchmark/bm_vm2_send.rb @@ -1,12 +1,12 @@ -class C
- def m
- end
-end
-
-o = C.new
-
-i=0
-while i<6000000 # benchmark loop 2
- i+=1
- o.__send__ :m
-end
+class C + def m + end +end + +o = C.new + +i=0 +while i<6000000 # benchmark loop 2 + i+=1 + o.__send__ :m +end diff --git a/benchmark/bm_vm2_super.rb b/benchmark/bm_vm2_super.rb index 7511f7be87..70c86b376f 100644 --- a/benchmark/bm_vm2_super.rb +++ b/benchmark/bm_vm2_super.rb @@ -1,20 +1,20 @@ -
-class C
- def m
- 1
- end
-end
-
-class CC < C
- def m
- super()
- end
-end
-
-obj = CC.new
-
-i = 0
-while i<6000000 # benchmark loop 2
- obj.m
- i+=1
-end
+ +class C + def m + 1 + end +end + +class CC < C + def m + super() + end +end + +obj = CC.new + +i = 0 +while i<6000000 # benchmark loop 2 + obj.m + i+=1 +end diff --git a/benchmark/bm_vm2_unif1.rb b/benchmark/bm_vm2_unif1.rb index 4df6c9fa84..e12bd2ade0 100644 --- a/benchmark/bm_vm2_unif1.rb +++ b/benchmark/bm_vm2_unif1.rb @@ -1,8 +1,8 @@ -i = 0
-def m a, b
-end
-
-while i<6000000 # benchmark loop 2
- i+=1
- m 100, 200
-end
+i = 0 +def m a, b +end + +while i<6000000 # benchmark loop 2 + i+=1 + m 100, 200 +end diff --git a/benchmark/bm_vm2_zsuper.rb b/benchmark/bm_vm2_zsuper.rb index c829bb9292..3a75960403 100644 --- a/benchmark/bm_vm2_zsuper.rb +++ b/benchmark/bm_vm2_zsuper.rb @@ -1,20 +1,20 @@ -i = 0
-
-class C
- def m a
- 1
- end
-end
-
-class CC < C
- def m a
- super
- end
-end
-
-obj = CC.new
-
-while i<6000000 # benchmark loop 2
- obj.m 10
- i+=1
-end
+i = 0 + +class C + def m a + 1 + end +end + +class CC < C + def m a + super + end +end + +obj = CC.new + +while i<6000000 # benchmark loop 2 + obj.m 10 + i+=1 +end diff --git a/benchmark/bm_vm3_thread_create_join.rb b/benchmark/bm_vm3_thread_create_join.rb index a99451a58b..c459242b0e 100644 --- a/benchmark/bm_vm3_thread_create_join.rb +++ b/benchmark/bm_vm3_thread_create_join.rb @@ -1,6 +1,6 @@ -i=0
-while i<1000 # benchmark loop 3
- i+=1
- Thread.new{
- }.join
-end
+i=0 +while i<1000 # benchmark loop 3 + i+=1 + Thread.new{ + }.join +end diff --git a/benchmark/other-lang/ack.pl b/benchmark/other-lang/ack.pl index 8933c33ae5..201e22ddfa 100644 --- a/benchmark/other-lang/ack.pl +++ b/benchmark/other-lang/ack.pl @@ -1,11 +1,11 @@ -use integer;
-
-sub Ack {
- return $_[0] ? ($_[1] ? Ack($_[0]-1, Ack($_[0], $_[1]-1))
- : Ack($_[0]-1, 1))
- : $_[1]+1;
-}
-
-my $NUM = 9;
-$NUM = 1 if ($NUM < 1);
-my $ack = Ack(3, $NUM);
+use integer; + +sub Ack { + return $_[0] ? ($_[1] ? Ack($_[0]-1, Ack($_[0], $_[1]-1)) + : Ack($_[0]-1, 1)) + : $_[1]+1; +} + +my $NUM = 9; +$NUM = 1 if ($NUM < 1); +my $ack = Ack(3, $NUM); diff --git a/benchmark/other-lang/ack.py b/benchmark/other-lang/ack.py index 971796f689..9968e7cfcf 100644 --- a/benchmark/other-lang/ack.py +++ b/benchmark/other-lang/ack.py @@ -1,16 +1,16 @@ -import sys
-sys.setrecursionlimit(5000000)
-
-def Ack(M, N):
- if (not M):
- return( N + 1 )
- if (not N):
- return( Ack(M-1, 1) )
- return( Ack(M-1, Ack(M, N-1)) )
-
-def main():
- NUM = 9
- sys.setrecursionlimit(10000)
- Ack(3, NUM)
-
-main()
+import sys +sys.setrecursionlimit(5000000) + +def Ack(M, N): + if (not M): + return( N + 1 ) + if (not N): + return( Ack(M-1, 1) ) + return( Ack(M-1, Ack(M, N-1)) ) + +def main(): + NUM = 9 + sys.setrecursionlimit(10000) + Ack(3, NUM) + +main() diff --git a/benchmark/other-lang/ack.rb b/benchmark/other-lang/ack.rb index 7886183ff0..7451bed6c4 100644 --- a/benchmark/other-lang/ack.rb +++ b/benchmark/other-lang/ack.rb @@ -1,12 +1,12 @@ -def ack(m, n)
- if m == 0 then
- n + 1
- elsif n == 0 then
- ack(m - 1, 1)
- else
- ack(m - 1, ack(m, n - 1))
- end
-end
-
-NUM = 9
-ack(3, NUM)
+def ack(m, n) + if m == 0 then + n + 1 + elsif n == 0 then + ack(m - 1, 1) + else + ack(m - 1, ack(m, n - 1)) + end +end + +NUM = 9 +ack(3, NUM) diff --git a/benchmark/other-lang/ack.scm b/benchmark/other-lang/ack.scm index e9e1886933..a80b73ba55 100644 --- a/benchmark/other-lang/ack.scm +++ b/benchmark/other-lang/ack.scm @@ -1,7 +1,7 @@ -(define (ack m n)
- (cond ((zero? m) (+ n 1))
- ((zero? n) (ack (- m 1) 1))
- (else (ack (- m 1) (ack m (- n 1))))))
-
-(ack 3 9)
-
+(define (ack m n) + (cond ((zero? m) (+ n 1)) + ((zero? n) (ack (- m 1) 1)) + (else (ack (- m 1) (ack m (- n 1)))))) + +(ack 3 9) + diff --git a/benchmark/other-lang/eval.rb b/benchmark/other-lang/eval.rb index e6ff94d294..3875927389 100644 --- a/benchmark/other-lang/eval.rb +++ b/benchmark/other-lang/eval.rb @@ -1,66 +1,66 @@ -
-Bench = %w(
- loop
- ack
- fib
- tak
- fact
-)
-
-Lang = <<EOP.map{|l| l.strip}
- ruby-cyg
- ../../../test6/miniruby
- perl
- python
- gosh
-EOP
-
-Bench.replace ['loop2']
-Lang.replace ['ruby-cyg']
-
-Ext = %w(
- .rb
- .rb
- .pl
- .py
- .scm
-)
-
-p Bench
-p Lang
-
-require 'benchmark'
-
-def bench cmd
- m = Benchmark.measure{
- #p cmd
- system(cmd)
- }
- [m.utime, m.real]
-end
-
-Result = []
-Bench.each{|b|
- r = []
- Lang.each_with_index{|l, idx|
- cmd = "#{l} #{b}#{Ext[idx]}"
- r << bench(cmd)
- }
- Result << r
-}
-
-require 'pp'
-# utime
-puts Lang.join("\t")
-Bench.each_with_index{|b, bi|
- print b, "\t"
- puts Result[bi].map{|e| e[0]}.join("\t")
-}
-
-# rtime
-puts Lang.join("\t")
-Bench.each_with_index{|b, bi|
- print b, "\t"
- puts Result[bi].map{|e| e[1]}.join("\t")
-}
-
+ +Bench = %w( + loop + ack + fib + tak + fact +) + +Lang = <<EOP.map{|l| l.strip} + ruby-cyg + ../../../test6/miniruby + perl + python + gosh +EOP + +Bench.replace ['loop2'] +Lang.replace ['ruby-cyg'] + +Ext = %w( + .rb + .rb + .pl + .py + .scm +) + +p Bench +p Lang + +require 'benchmark' + +def bench cmd + m = Benchmark.measure{ + #p cmd + system(cmd) + } + [m.utime, m.real] +end + +Result = [] +Bench.each{|b| + r = [] + Lang.each_with_index{|l, idx| + cmd = "#{l} #{b}#{Ext[idx]}" + r << bench(cmd) + } + Result << r +} + +require 'pp' +# utime +puts Lang.join("\t") +Bench.each_with_index{|b, bi| + print b, "\t" + puts Result[bi].map{|e| e[0]}.join("\t") +} + +# rtime +puts Lang.join("\t") +Bench.each_with_index{|b, bi| + print b, "\t" + puts Result[bi].map{|e| e[1]}.join("\t") +} + diff --git a/benchmark/other-lang/fact.pl b/benchmark/other-lang/fact.pl index 2cef18534c..a9b0b69cdf 100644 --- a/benchmark/other-lang/fact.pl +++ b/benchmark/other-lang/fact.pl @@ -1,13 +1,13 @@ -sub fact{
- my $n = @_[0];
- if($n < 2){
- return 1;
- }
- else{
- return $n * fact($n-1);
- }
-}
-
-for($i=0; $i<10000; $i++){
- &fact(100);
-}
+sub fact{ + my $n = @_[0]; + if($n < 2){ + return 1; + } + else{ + return $n * fact($n-1); + } +} + +for($i=0; $i<10000; $i++){ + &fact(100); +} diff --git a/benchmark/other-lang/fact.py b/benchmark/other-lang/fact.py index 460e4057f4..01593965d9 100644 --- a/benchmark/other-lang/fact.py +++ b/benchmark/other-lang/fact.py @@ -1,18 +1,18 @@ -#import sys
-#sys.setrecursionlimit(1000)
-
-def factL(n):
- r = 1
- for x in range(2, n):
- r *= x
- return r
-
-def factR(n):
- if n < 2:
- return 1
- else:
- return n * factR(n-1)
-
-for i in range(10000):
- factR(100)
-
+#import sys +#sys.setrecursionlimit(1000) + +def factL(n): + r = 1 + for x in range(2, n): + r *= x + return r + +def factR(n): + if n < 2: + return 1 + else: + return n * factR(n-1) + +for i in range(10000): + factR(100) + diff --git a/benchmark/other-lang/fact.rb b/benchmark/other-lang/fact.rb index c75320824c..7e97b22b39 100644 --- a/benchmark/other-lang/fact.rb +++ b/benchmark/other-lang/fact.rb @@ -1,13 +1,13 @@ -def fact(n)
- if n < 2
- 1
- else
- n * fact(n-1)
- end
-end
-
-i=0
-while i<10000
- i+=1
- fact(100)
-end
+def fact(n) + if n < 2 + 1 + else + n * fact(n-1) + end +end + +i=0 +while i<10000 + i+=1 + fact(100) +end diff --git a/benchmark/other-lang/fact.scm b/benchmark/other-lang/fact.scm index 511990f797..c98a7fedd3 100644 --- a/benchmark/other-lang/fact.scm +++ b/benchmark/other-lang/fact.scm @@ -1,8 +1,8 @@ -(define (fact n)
- (if (< n 2)
- 1
- (* n (fact (- n 1)))))
-
-(dotimes (i 10000)
- (fact 100))
-
+(define (fact n) + (if (< n 2) + 1 + (* n (fact (- n 1))))) + +(dotimes (i 10000) + (fact 100)) + diff --git a/benchmark/other-lang/fib.pl b/benchmark/other-lang/fib.pl index d660a2337b..a46f666d1e 100644 --- a/benchmark/other-lang/fib.pl +++ b/benchmark/other-lang/fib.pl @@ -1,11 +1,11 @@ -sub fib{
- my $n = $_[0];
- if($n < 3){
- return 1;
- }
- else{
- return fib($n-1) + fib($n-2);
- }
-};
-
-&fib(34);
+sub fib{ + my $n = $_[0]; + if($n < 3){ + return 1; + } + else{ + return fib($n-1) + fib($n-2); + } +}; + +&fib(34); diff --git a/benchmark/other-lang/fib.py b/benchmark/other-lang/fib.py index 40f87f3e9c..45f2bceb8d 100644 --- a/benchmark/other-lang/fib.py +++ b/benchmark/other-lang/fib.py @@ -1,7 +1,7 @@ -def fib(n):
- if n < 3:
- return 1
- else:
- return fib(n-1) + fib(n-2)
-
-fib(34)
+def fib(n): + if n < 3: + return 1 + else: + return fib(n-1) + fib(n-2) + +fib(34) diff --git a/benchmark/other-lang/fib.rb b/benchmark/other-lang/fib.rb index 7e0e8daa7e..ec587eabe0 100644 --- a/benchmark/other-lang/fib.rb +++ b/benchmark/other-lang/fib.rb @@ -1,9 +1,9 @@ -def fib n
- if n < 3
- 1
- else
- fib(n-1) + fib(n-2)
- end
-end
-
-fib(34)
+def fib n + if n < 3 + 1 + else + fib(n-1) + fib(n-2) + end +end + +fib(34) diff --git a/benchmark/other-lang/fib.scm b/benchmark/other-lang/fib.scm index ea63503b11..2fc4e225bd 100644 --- a/benchmark/other-lang/fib.scm +++ b/benchmark/other-lang/fib.scm @@ -1,7 +1,7 @@ -(define (fib n)
- (if (< n 3)
- 1
- (+ (fib (- n 1)) (fib (- n 2)))))
-
-(fib 34)
-
+(define (fib n) + (if (< n 3) + 1 + (+ (fib (- n 1)) (fib (- n 2))))) + +(fib 34) + diff --git a/benchmark/other-lang/loop.pl b/benchmark/other-lang/loop.pl index ecacef4477..2777490aaa 100644 --- a/benchmark/other-lang/loop.pl +++ b/benchmark/other-lang/loop.pl @@ -1,3 +1,3 @@ -for($i=0; $i<30000000; $i++){
-}
-
+for($i=0; $i<30000000; $i++){ +} + diff --git a/benchmark/other-lang/loop.py b/benchmark/other-lang/loop.py index b47089fd39..003749bf3a 100644 --- a/benchmark/other-lang/loop.py +++ b/benchmark/other-lang/loop.py @@ -1,2 +1,2 @@ -for i in xrange(30000000):
- pass
+for i in xrange(30000000): + pass diff --git a/benchmark/other-lang/loop.rb b/benchmark/other-lang/loop.rb index 35cd67a7a3..d43cef61f3 100644 --- a/benchmark/other-lang/loop.rb +++ b/benchmark/other-lang/loop.rb @@ -1,4 +1,4 @@ -i=0
-while i<30000000
- i+=1
-end
+i=0 +while i<30000000 + i+=1 +end diff --git a/benchmark/other-lang/loop.scm b/benchmark/other-lang/loop.scm index 1646ac3c1d..3364f7e679 100644 --- a/benchmark/other-lang/loop.scm +++ b/benchmark/other-lang/loop.scm @@ -1 +1 @@ -(dotimes (x 30000000))
+(dotimes (x 30000000)) diff --git a/benchmark/other-lang/loop2.rb b/benchmark/other-lang/loop2.rb index f3085926a3..df8fffc1ff 100644 --- a/benchmark/other-lang/loop2.rb +++ b/benchmark/other-lang/loop2.rb @@ -1 +1 @@ -30000000.times{}
+30000000.times{} diff --git a/benchmark/other-lang/tak.pl b/benchmark/other-lang/tak.pl index c7bb626e61..7e748a67c6 100644 --- a/benchmark/other-lang/tak.pl +++ b/benchmark/other-lang/tak.pl @@ -1,11 +1,11 @@ -sub tak {
- local($x, $y, $z) = @_;
- if (!($y < $x)) {
- return $z;
- } else {
- return &tak(&tak($x - 1, $y, $z),
- &tak($y - 1, $z, $x),
- &tak($z - 1, $x, $y));
- }
-}
-&tak(18, 9, 0);
+sub tak { + local($x, $y, $z) = @_; + if (!($y < $x)) { + return $z; + } else { + return &tak(&tak($x - 1, $y, $z), + &tak($y - 1, $z, $x), + &tak($z - 1, $x, $y)); + } +} +&tak(18, 9, 0); diff --git a/benchmark/other-lang/tak.py b/benchmark/other-lang/tak.py index 9b7bd8f23c..04f3f6829c 100644 --- a/benchmark/other-lang/tak.py +++ b/benchmark/other-lang/tak.py @@ -1,8 +1,8 @@ -def tak(x, y, z):
- if not(y<x):
- return z
- else:
- return tak(tak(x-1, y, z),
- tak(y-1, z, x),
- tak(z-1, x, y))
-tak(18, 9, 0)
+def tak(x, y, z): + if not(y<x): + return z + else: + return tak(tak(x-1, y, z), + tak(y-1, z, x), + tak(z-1, x, y)) +tak(18, 9, 0) diff --git a/benchmark/other-lang/tak.rb b/benchmark/other-lang/tak.rb index d70d5db8f8..efe5380f4e 100644 --- a/benchmark/other-lang/tak.rb +++ b/benchmark/other-lang/tak.rb @@ -1,13 +1,13 @@ -
-def tak x, y, z
- unless y < x
- z
- else
- tak( tak(x-1, y, z),
- tak(y-1, z, x),
- tak(z-1, x, y))
- end
-end
-
-tak(18, 9, 0)
-
+ +def tak x, y, z + unless y < x + z + else + tak( tak(x-1, y, z), + tak(y-1, z, x), + tak(z-1, x, y)) + end +end + +tak(18, 9, 0) + diff --git a/benchmark/other-lang/tak.scm b/benchmark/other-lang/tak.scm index 45cc576767..52a7629ee5 100644 --- a/benchmark/other-lang/tak.scm +++ b/benchmark/other-lang/tak.scm @@ -1,10 +1,10 @@ -(define (tak x y z)
- (if (not (< y x))
- z
- (tak (tak (- x 1) y z)
- (tak (- y 1) z x)
- (tak (- z 1) x y))))
-
-(tak 18 9 0)
-
-
+(define (tak x y z) + (if (not (< y x)) + z + (tak (tak (- x 1) y z) + (tak (- y 1) z x) + (tak (- z 1) x y)))) + +(tak 18 9 0) + + diff --git a/benchmark/report.rb b/benchmark/report.rb index 99def55aee..8305330b45 100644 --- a/benchmark/report.rb +++ b/benchmark/report.rb @@ -1,81 +1,81 @@ -#
-# YARV benchmark driver
-#
-
-require 'yarvutil'
-require 'benchmark'
-require 'rbconfig'
-
-def exec_command type, file, w
- <<-EOP
- $DRIVER_PATH = '#{File.dirname($0)}'
- $LOAD_PATH.replace $LOAD_PATH | #{$LOAD_PATH.inspect}
- require 'benchmark'
- require 'yarvutil'
-# print '#{type}'
- begin
- puts Benchmark.measure{
- #{w}('#{file}')
- }.utime
- rescue Exception => exec_command_error_variable
- puts "\t" + exec_command_error_variable.message
- end
- EOP
-end
-
-def benchmark cmd
- rubybin = ENV['RUBY'] || File.join(
- Config::CONFIG["bindir"],
- Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"])
-
- IO.popen(rubybin, 'r+'){|io|
- io.write cmd
- io.close_write
- return io.gets
- }
-end
-
-def ruby_exec file
- prog = exec_command 'ruby', file, 'load'
- benchmark prog
-end
-
-def yarv_exec file
- prog = exec_command 'yarv', file, 'YARVUtil.load_bm'
- benchmark prog
-end
-
-$wr = $wy = nil
-
-def measure bench
- file = File.dirname($0) + "/bm_#{bench}.rb"
- r = ruby_exec(file).to_f
- y = yarv_exec(file).to_f
- puts "#{bench}\t#{r}\t#{y}"
-end
-
-def measure2
- r = ruby_exec.to_f
- y = yarv_exec.to_f
- puts r/y
-end
-
-if $0 == __FILE__
- %w{
- whileloop
- whileloop2
- times
- const
- method
- poly_method
- block
- rescue
- rescue2
- }.each{|bench|
- measure bench
- }
-end
-
-
-
-
+# +# YARV benchmark driver +# + +require 'yarvutil' +require 'benchmark' +require 'rbconfig' + +def exec_command type, file, w + <<-EOP + $DRIVER_PATH = '#{File.dirname($0)}' + $LOAD_PATH.replace $LOAD_PATH | #{$LOAD_PATH.inspect} + require 'benchmark' + require 'yarvutil' +# print '#{type}' + begin + puts Benchmark.measure{ + #{w}('#{file}') + }.utime + rescue Exception => exec_command_error_variable + puts "\t" + exec_command_error_variable.message + end + EOP +end + +def benchmark cmd + rubybin = ENV['RUBY'] || File.join( + Config::CONFIG["bindir"], + Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"]) + + IO.popen(rubybin, 'r+'){|io| + io.write cmd + io.close_write + return io.gets + } +end + +def ruby_exec file + prog = exec_command 'ruby', file, 'load' + benchmark prog +end + +def yarv_exec file + prog = exec_command 'yarv', file, 'YARVUtil.load_bm' + benchmark prog +end + +$wr = $wy = nil + +def measure bench + file = File.dirname($0) + "/bm_#{bench}.rb" + r = ruby_exec(file).to_f + y = yarv_exec(file).to_f + puts "#{bench}\t#{r}\t#{y}" +end + +def measure2 + r = ruby_exec.to_f + y = yarv_exec.to_f + puts r/y +end + +if $0 == __FILE__ + %w{ + whileloop + whileloop2 + times + const + method + poly_method + block + rescue + rescue2 + }.each{|bench| + measure bench + } +end + + + + diff --git a/benchmark/run.rb b/benchmark/run.rb index e121db497b..7f4899e7dd 100644 --- a/benchmark/run.rb +++ b/benchmark/run.rb @@ -1,123 +1,123 @@ -#
-# Ruby benchmark driver
-#
-
-require 'benchmark'
-require 'rbconfig'
-
-$matzrubyonly = false
-$rubyonly = false
-
-$results = []
-
-# prepare 'wc.input'
-def prepare_wc_input
- wcinput = File.join(File.dirname($0), 'wc.input')
- wcbase = File.join(File.dirname($0), 'wc.input.base')
- unless FileTest.exist?(wcinput)
- data = File.read(wcbase)
- 13.times{
- data << data
- }
- open(wcinput, 'w'){|f| f.write data}
- end
-end
-
-prepare_wc_input
-
-def bm file
- prog = File.readlines(file).map{|e| e.rstrip}.join("\n")
- return if prog.empty?
-
- /[a-z]+_(.+)\.rb/ =~ file
- bm_name = $1
- puts '-----------------------------------------------------------' unless $rubyonly || $matzrubyonly
- puts "#{bm_name}: "
-
-
-puts <<EOS unless $matzrubyonly || $rubyonly
-#{prog}
---
-EOS
- begin
- result = [bm_name]
- result << matzruby_exec(file) unless $rubyonly
- result << ruby_exec(file) unless $matzrubyonly
- $results << result
-
- rescue Exception => e
- puts
- puts "** benchmark failure: #{e}"
- puts e.backtrace
- end
-end
-
-def benchmark file, bin
- m = Benchmark.measure{
- `#{bin} #{$opts} #{file}`
- }
- sec = '%.3f' % m.real
- puts " #{sec}"
- sec
-end
-
-def ruby_exec file
- print 'ruby'
- benchmark file, $ruby_program
-end
-
-def matzruby_exec file
- print 'matz'
- benchmark file, $matzruby_program
-end
-
-if $0 == __FILE__
- ARGV.each{|arg|
- case arg
- when /\A--ruby=(.+)/
- $ruby_program = $1
- when /\A--matzruby=(.+)/
- $matzruby_program = $1
- when /\A--opts=(.+)/
- $opts = $1
- when /\A(-r|--only-ruby)\z/
- $rubyonly = true
- when /\A(-m|--only-matzruby)\z/
- $matzrubyonly = true
- end
- }
- ARGV.delete_if{|arg|
- /\A-/ =~ arg
- }
-
- puts "MatzRuby:"
- system("#{$matzruby_program} -v")
- puts "Ruby:"
- system("#{$ruby_program} -v")
- puts
-
- if ARGV.empty?
- Dir.glob(File.dirname(__FILE__) + '/bm_*.rb').sort.each{|file|
- bm file
- }
- else
- ARGV.each{|file|
- Dir.glob(File.join(File.dirname(__FILE__), file + '*')){|ef|
- # file = "#{File.dirname(__FILE__)}/#{file}.rb"
- bm ef
- }
- }
- end
-
- puts
- puts "-- benchmark summary ---------------------------"
- $results.each{|res|
- print res.shift, "\t"
- (res||[]).each{|result|
- /([\d\.]+)/ =~ result
- print $1 + "\t" if $1
- }
- puts
- }
-end
-
+# +# Ruby benchmark driver +# + +require 'benchmark' +require 'rbconfig' + +$matzrubyonly = false +$rubyonly = false + +$results = [] + +# prepare 'wc.input' +def prepare_wc_input + wcinput = File.join(File.dirname($0), 'wc.input') + wcbase = File.join(File.dirname($0), 'wc.input.base') + unless FileTest.exist?(wcinput) + data = File.read(wcbase) + 13.times{ + data << data + } + open(wcinput, 'w'){|f| f.write data} + end +end + +prepare_wc_input + +def bm file + prog = File.readlines(file).map{|e| e.rstrip}.join("\n") + return if prog.empty? + + /[a-z]+_(.+)\.rb/ =~ file + bm_name = $1 + puts '-----------------------------------------------------------' unless $rubyonly || $matzrubyonly + puts "#{bm_name}: " + + +puts <<EOS unless $matzrubyonly || $rubyonly +#{prog} +-- +EOS + begin + result = [bm_name] + result << matzruby_exec(file) unless $rubyonly + result << ruby_exec(file) unless $matzrubyonly + $results << result + + rescue Exception => e + puts + puts "** benchmark failure: #{e}" + puts e.backtrace + end +end + +def benchmark file, bin + m = Benchmark.measure{ + `#{bin} #{$opts} #{file}` + } + sec = '%.3f' % m.real + puts " #{sec}" + sec +end + +def ruby_exec file + print 'ruby' + benchmark file, $ruby_program +end + +def matzruby_exec file + print 'matz' + benchmark file, $matzruby_program +end + +if $0 == __FILE__ + ARGV.each{|arg| + case arg + when /\A--ruby=(.+)/ + $ruby_program = $1 + when /\A--matzruby=(.+)/ + $matzruby_program = $1 + when /\A--opts=(.+)/ + $opts = $1 + when /\A(-r|--only-ruby)\z/ + $rubyonly = true + when /\A(-m|--only-matzruby)\z/ + $matzrubyonly = true + end + } + ARGV.delete_if{|arg| + /\A-/ =~ arg + } + + puts "MatzRuby:" + system("#{$matzruby_program} -v") + puts "Ruby:" + system("#{$ruby_program} -v") + puts + + if ARGV.empty? + Dir.glob(File.dirname(__FILE__) + '/bm_*.rb').sort.each{|file| + bm file + } + else + ARGV.each{|file| + Dir.glob(File.join(File.dirname(__FILE__), file + '*')){|ef| + # file = "#{File.dirname(__FILE__)}/#{file}.rb" + bm ef + } + } + end + + puts + puts "-- benchmark summary ---------------------------" + $results.each{|res| + print res.shift, "\t" + (res||[]).each{|result| + /([\d\.]+)/ =~ result + print $1 + "\t" if $1 + } + puts + } +end + diff --git a/benchmark/runc.rb b/benchmark/runc.rb index 20e06b2355..14ab171c12 100644 --- a/benchmark/runc.rb +++ b/benchmark/runc.rb @@ -1,29 +1,29 @@ -#
-#
-#
-
-require 'benchmark'
-require 'rbconfig'
-
-$rubybin = ENV['RUBY'] || File.join(
- Config::CONFIG["bindir"],
- Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"])
-
-def runfile file
- puts file
- file = File.join(File.dirname($0), 'contrib', file)
- Benchmark.bm{|x|
- x.report('ruby'){
- system("#{$rubybin} #{file}")
- }
- x.report('yarv'){
- system("#{$rubybin} -rite -I.. #{file}")
- }
- }
-end
-
-ARGV.each{|file|
- runfile file
-}
-
-
+# +# +# + +require 'benchmark' +require 'rbconfig' + +$rubybin = ENV['RUBY'] || File.join( + Config::CONFIG["bindir"], + Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"]) + +def runfile file + puts file + file = File.join(File.dirname($0), 'contrib', file) + Benchmark.bm{|x| + x.report('ruby'){ + system("#{$rubybin} #{file}") + } + x.report('yarv'){ + system("#{$rubybin} -rite -I.. #{file}") + } + } +end + +ARGV.each{|file| + runfile file +} + + diff --git a/benchmark/wc.input.base b/benchmark/wc.input.base index 88b5c69c96..41143fbac0 100644 --- a/benchmark/wc.input.base +++ b/benchmark/wc.input.base @@ -1,25 +1,25 @@ -Subject: Re: Who was Izchak Miller?
-From: "Jane D. Anonymous" <[email protected]>
-Date: 1996/04/28
-Message-Id: <[email protected]>
-References: <[email protected]> <[email protected]>
-To: [email protected]
-Content-Type: text/plain; charset=us-ascii
-Organization: Yale University
-X-Url: news:[email protected]
-Mime-Version: 1.0
-Newsgroups: rec.games.roguelike.nethack
-X-Mailer: Mozilla 1.1N (Macintosh; I; 68K)
-
-Hello there, Izchak Miller was my father. When I was younger I spent
-many a night, hunched over the keyboard with a cup of tea, playing
-nethack with him and my brother. my dad was a philosopher with a strong
-weakness for fantasy/sci fi. I remember when he started to get involved
-with the Nethack team- my brother's Dungeons and Dragons monster book
-found a regular place beside my dad's desk. it's nice to see him living
-on in the game he loved so much :-).
- Tamar Miller
-
-The following is a really long word of 5000 characters:
-
-wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
+Subject: Re: Who was Izchak Miller? +From: "Jane D. Anonymous" <[email protected]> +Date: 1996/04/28 +Message-Id: <[email protected]> +References: <[email protected]> <[email protected]> +To: [email protected] +Content-Type: text/plain; charset=us-ascii +Organization: Yale University +X-Url: news:[email protected] +Mime-Version: 1.0 +Newsgroups: rec.games.roguelike.nethack +X-Mailer: Mozilla 1.1N (Macintosh; I; 68K) + +Hello there, Izchak Miller was my father. When I was younger I spent +many a night, hunched over the keyboard with a cup of tea, playing +nethack with him and my brother. my dad was a philosopher with a strong +weakness for fantasy/sci fi. I remember when he started to get involved +with the Nethack team- my brother's Dungeons and Dragons monster book +found a regular place beside my dad's desk. it's nice to see him living +on in the game he loved so much :-). + Tamar Miller + +The following is a really long word of 5000 characters: + +wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww diff --git a/doc/ChangeLog-YARV b/doc/ChangeLog-YARV index 48b00f272c..c9d32916cf 100644 --- a/doc/ChangeLog-YARV +++ b/doc/ChangeLog-YARV @@ -1,6917 +1,6917 @@ -# $Id: ChangeLog 590 2006-12-31 09:02:34Z ko1 $
-#
-# YARV ChangeLog
-# from Mon, 03 May 2004 01:24:19 +0900
-#
-
-Sun Dec 31 18:01:50 2006 Koichi Sasada <[email protected]>
-
- * bin/* : ruby/trunk/bin 11437
-
-
-Sun Dec 31 17:42:05 2006 Koichi Sasada <[email protected]>
-
- * eval.c : remove old Kernel#funcall definition
-
-
-2006-12-30(Sat) 07:59:26 +0900 Koichi Sasada <[email protected]>
-
- * catch up ruby/trunk 11437
-
- * eval_intern.h : reorder tag initialization
-
- * eval.c : fix to support __send!, funcall and prohibit funcall as
- send
-
- * eval_error.h, eval_jump.h, eval_safe.h : fix prototypes
-
- * eval_method.h, vm.c : check re-definition at rb_add_method()
-
- * yarvcore.h : fix typo
-
- * compile.c : fix white spaces
-
- * lib/delegate.rb : fix to support __send, ...
-
- * lib/getoptlong.rb : fix to work on YARV
-
- * lib/rss/parser.rb : use __send! instead of __send__
-
- * sample/test.rb : comment out codes which use |&b| type block parameter
-
- * ext/ripper/extconf.rb : turn off
-
- * test/ripper/test_files.rb, test_parser_events.rb,
- test_scanner_events.rb : fix to check it has ripper module
-
- * vm_dump.c : remove showing file path length limitation
-
- * yarvtest/test_eval.rb : use __send! instead of __send__
-
-
-2006-12-19(Tue) 11:46:08 +0900 Koichi Sasada <[email protected]>
-
- * doc/* : added
-
- * ext/openssl : added
-
- * ext/ripper : added
-
- * test/openssl : added
-
- * test/ripper : added
-
- * misc : added
-
- * rb/ -> tool/ : renamed
-
- * common.mk : fixed for above change
-
- * ruby_doc/* : move to topdir
-
- * sample/* : added
-
- * test2.rb : removed
-
-
-2006-12-15(Fri) 09:42:46 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : remove obsolete codes
-
- * insns.def : fix a comment of getconstant
-
-
-2006-12-13(Wed) 16:26:06 +0900 Koichi Sasada <[email protected]>
-
- * blockinlining.c, compile.c, compile.h, debug.c, debug.h,
- insnhelper.h, insns.def, iseq.c, thread.c, thread_pthread.ci,
- thread_pthread.h, thread_win32.ci, thread_win32.h, vm.c, vm.h,
- vm_dump.c, vm_evalbody.ci, vm_opts.h.base, yarv.h,
- yarv_version.h, yarvcore.c, yarvcore.h :
- add a header includes copyright
-
-
-2006-12-12(Tue) 13:13:32 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb : add PREFETCH() statement
-
- * vm.h : ditto
-
- * yarvcore.h : fix LIKELY(x) and
- remove main_thread_val field from yarv_vm_t
-
- * yarvcore.c : ditto
-
- * thread.c : support fork
-
- * eval_thread.c : ditto
-
- * process.c : ditto
-
- * signal.c : ditto
-
- * test/ruby/test_signal.rb :
-
- * thread_pthread.ci : rename timer thread functions
-
- * thread_win32.ci : ditto
-
-
-2006-11-10(Fri) 21:29:13 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix to compile arguments
-
- * insns.def : fix to duplicate first array value on concatarray
- instruction
-
- * yarvtest/test_bin.rb : add a test for above change
-
- * sample/test.rb : fix to catch up Ruby HEAD (fix to remove test about
- module duplicate)
-
-
-2006-11-10(Fri) 12:49:11 +0900 Koichi Sasada <[email protected]>
-
- * vm_macro.def : fix to inherit visibility on
- NODE_SUPER method invocation
-
-
-2006-11-10(Fri) 09:13:46 +0900 Koichi Sasada <[email protected]>
-
- * class.c : revert module duplicate inclusion
-
- * parse.y : catch up current Ruby HEAD
-
- * node.h : ditto
-
- * compile.c : ditto
-
- * gc.c : ditto
-
- * iseq.c : ditto
-
- * eval_thread.c : define Continuation (null class)
-
- * vm_dump.c : fix to output backtrae to stderr
-
- * yarvtest/test_block.rb : remove unsupported test
-
- * yarvtest/test_class.rb : add a test about super
-
- * yarvtest/test_syntax.rb : add a test about case/when
-
-
-2006-11-09(Thu) 10:22:59 +0900 Koichi Sasada <[email protected]>
-
- * call_cfunc.h -> call_cfunc.ci : renamed
-
- * vm_evalbody.h, vm_evalbody.ci : ditto
-
- * thread_pthread.h, thread_pthread.ci : separate declaration and
- implementation
-
- * thread_win32.h, thread_win32.ci : ditto
-
- * thread.c : use *.ci instead of *.c as implementation
-
- * vm.c : ditto
-
- * common.mk : fix rules for above changes
-
-
-2006-11-08(Wed) 17:23:23 +0900 Koichi Sasada <[email protected]>
-
- * vm_dump.c : show C level backtrace (pointer only) with
- backtrace() function (glibc feature)
-
- * configure.in : ditto
-
- * yarvcore.c : add NSDR method (show C level backtrace)
-
- * error.c : fix indent
-
-
-2006-11-07(Tue) 13:17:10 +0900 Koichi Sasada <[email protected]>
-
- * eval.c (rb_set_errinfo) : added
-
- * ruby.h : ditto
-
- * version.h : fix version number
-
- * lib/webrick/utils.rb : fix to remove Thread.critical
-
- * ext/dbm, dl, gdbm, iconv, io, pty, sdbm : added
-
- * test/dbm, gdbm, io, logger, net, readline, sdbm, soap,
- webrick, win32ole, wsdl, xsd : added
-
-
-2006-11-06(Mon) 22:32:18 +0900 Koichi Sasada <[email protected]>
-
- * array.c : import Ruby HEAD
-
- * ext/socket/extconf.rb : ditto
-
- * ext/socket/socket.c : ditto
-
- * gc.c : ditto
-
- * lib/date.rb : ditto
-
- * lib/net/imap.rb : ditto
-
- * lib/rss/0.9.rb : ditto
-
- * lib/set.rb : ditto
-
- * lib/soap/mapping/rubytypeFactory.rb : ditto
-
- * lib/soap/mimemessage.rb : ditto
-
- * lib/soap/property.rb : ditto
-
- * lib/webrick/httprequest.rb : ditto
-
- * lib/webrick/httputils.rb : ditto
-
- * lib/xmlrpc/create.rb : ditto
-
- * lib/xsd/codegen/gensupport.rb : ditto
-
- * object.c : ditto
-
- * ruby.h : ditto
-
- * string.c : ditto
-
- * version.h : ditto
-
- * rb/ir.rb : fix to use "diffs" directory
-
- * vm_dump.c : add "const"
-
-
-2006-11-06(Mon) 16:36:47 +0900 Koichi Sasada <[email protected]>
-
- * eval_proc.c : remove "static" from external global variables
-
- * eval_thread.c : ditto
-
- * array.c : fix indent
-
- * insns.def : add a suitable cast
-
- * vm_macro.def : allow scalar value on splat arguments
-
- * yarvtest/test_block.rb : fix to synchronize Ruby HEAD
-
- * rb/insns2vm.rb : remove String#each for 1.9
-
- * template/vm.inc.tmpl : ditto (remove String#each_with_index)
-
-
-2006-11-06(Mon) 13:22:34 +0900 Koichi Sasada <[email protected]>
-
- * iseq.c : fixed GC debugging outputs
-
- * rb/parse.rb : fixed output format
-
-
-2006-11-04(Sat) 09:46:50 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix to duplicate "#{'foo'}" string
-
- * yarvtest/test_bin.rb : add a test for above
-
- * ext/readline/readline.c : import Ruby HEAD
-
- * keywords : ditto
-
- * lex.c : ditto
-
- * parse.y : ditto
-
- * lib/mkmf.rb : ditto
-
- * test/ruby/test_hash.rb : fix to current specification
-
- * test/ruby/test_string.rb : ditto
-
-
-2006-11-03(Fri) 20:58:36 +0900 Koichi Sasada <[email protected]>
-
- * ext/nkf/nkf-utf8/utf8tbl.h : missed to add
-
- * configure.in : import ruby HEAD
-
- * test/ruby/test_array.rb : ditto
-
- * test/ruby/test_assignment.rb : ditto
-
- * test/ruby/test_clone.rb : ditto
-
- * test/socket/test_socket.rb : ditto
-
- * test/socket/test_unix.rb : ditto
-
- * test/strscan/test_stringscanner.rb : ditto
-
- * test/testunit/collector/test_dir.rb : ditto
-
-
-2006-11-03(Fri) 20:22:24 +0900 Koichi Sasada <[email protected]>
-
- * array.c : import current ruby HEAD and apply API changes
- This version has some known bugs
-
- * bignum.c : ditto
-
- * blockinlining.c : ditto
-
- * class.c : ditto
-
- * compile.c : ditto
-
- * dir.c : ditto
-
- * dln.c : ditto
-
- * enum.c : ditto
-
- * enumerator.c : ditto
-
- * error.c : ditto
-
- * eval.c : ditto
-
- * eval_error.h : ditto
-
- * eval_jump.h : ditto
-
- * eval_load.c : ditto
-
- * eval_proc.c : ditto
-
- * ext/*
-
- * file.c : ditto
-
- * gc.c : ditto
-
- * hash.c : ditto
-
- * insns.def : ditto
-
- * instruby.rb : ditto
-
- * intern.h : ditto
-
- * io.c : ditto
-
- * iseq.c : ditto
-
- * lib/*
-
- * marshal.c : ditto
-
- * math.c : ditto
-
- * missing/vsnprintf.c : ditto
-
- * mkconfig.rb : ditto
-
- * node.h : ditto
-
- * numeric.c : ditto
-
- * object.c : ditto
-
- * oniguruma.h : ditto
-
- * pack.c : ditto
-
- * parse.y : ditto
-
- * prec.c : ditto
-
- * process.c : ditto
-
- * random.c : ditto
-
- * range.c : ditto
-
- * rb/ir.rb : ditto
-
- * re.c : ditto
-
- * regcomp.c : ditto
-
- * regerror.c : ditto
-
- * regexec.c : ditto
-
- * regint.h : ditto
-
- * regparse.c : ditto
-
- * regparse.h : ditto
-
- * ruby.c : ditto
-
- * ruby.h : ditto
-
- * rubytest.rb : ditto
-
- * runruby.rb : ditto
-
- * sample/test.rb : ditto
-
- * signal.c : ditto
-
- * sprintf.c : ditto
-
- * st.c : ditto
-
- * st.h : ditto
-
- * string.c : ditto
-
- * struct.c : ditto
-
- * test/*
-
- * thread.c : ditto
-
- * time.c : ditto
-
- * util.c : ditto
-
- * variable.c : ditto
-
- * version.h : ditto
-
- * vm.c : ditto
-
- * vm_dump.c : ditto
-
- * vm_macro.def : ditto
-
- * win32/*
-
-
-2006-10-31(Tue) 22:47:50 +0900 Koichi Sasada <[email protected]>
-
- * parse.y : fix NEWHEAP bugs (import HEAD)
-
- * ruby.c, intern.h, yarvcore.c (rb_load_file) : change to
- return parsed node pointer
-
- * rb/ir.rb : add check mode
-
-
-2006-09-01(Fri) 22:05:28 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix a bug of peephole optimization and enable
- regexp optimization
-
-
-2006-08-21(Mon) 05:27:48 +0900 Koichi Sasada <[email protected]>
-
- * lib/mathn.rb : remove "remove_method :gcd2"
-
- * opt_insn_unif.def : unset opt setting
-
- * opt_operand.def : ditto
-
-
-2006-08-18(Fri) 17:55:31 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add dependency of yarvcore.h to thread.o
-
- * gc.c : change comment line
-
- * thread.c : remove some line break
-
- * yarvcore.c : reoder initialize sequence to mark main thread
-
-
-2006-08-18(Fri) 16:51:34 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : add a support for cache values per thread
-
- * yarvcore.c : ditto
-
- * gc.c : ditto
-
- * thread.c : move a expression after acquiring lock
-
- * compile.c : add a cast to remove warning
-
-
-2006-08-18(Fri) 02:07:45 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix to return rhs value on ATTRASGIN
-
- * insns.def (setn) : add insn setn
-
- * yarvtest/test_bin.rb : add tests for above
-
-
-2006-08-17(Thu) 22:46:08 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : clear callee_id ([yarv-dev:1073])
-
-
-2006-08-17(Thu) 22:14:15 +0900 Koichi Sasada <[email protected]>
-
- * thread_pthread.h : fix error message
-
-
-2006-08-17(Thu) 12:23:52 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : change initilize routine order ([yarv-dev:1067])
-
- * yarvcore.c (Init_yarv) : init th->machine_stack_start
-
- * thread_pthread.h : add malloc value check ([yarv-dev:1066])
-
- * insns.def (opt_eq) : fix typo ([yarv-dev:1072])
-
- * yarvtest/test_opts.rb : add a test for above
-
- * yarvtest/test_class.rb : add a test for last commit
-
-
-2006-08-17(Thu) 11:02:16 +0900 Koichi Sasada <[email protected]>
-
- * class.c (clone_method) : check undef-ed method ([yarv-dev:1068])
-
-
-2006-08-15(Tue) 15:07:43 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix opt_plus routine ([yarv-dev-en:149])
-
- * yarvtest/test_opts.rb : add tests for above
-
-
-2006-08-06(Sun) 06:24:51 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : fix build rule (build only ruby binary when benchmark)
-
- * yarvcore.[ch] : fix and add yarv_iseq_new_with_* API
-
- * blockinlining.c : ditto
-
- * compile.c : ditto
-
- * compile.h : ditto
-
- * iseq.c : ditto
-
- * eval_method.h : check redefinition for specialized instruction
-
- * insnhelper.h : ditto
-
- * insns.def : ditto
-
- * vm.c : ditto
-
- * vm.h : ditto
-
- * numeric.c : add Fixnum#succ
-
- * thread.c : remove duplicated method Thread#current
-
- * yarvcore.c : remove duplicated method Proc#clone
-
- * yarvtest/test_opts.rb : added
-
-
-2006-07-20(Thu) 04:10:13 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix [yarv-dev:1041] problem (raise TypeError)
-
- * eval.c : rb_funcall2 send as NOEX_PRIVATE and check scope
-
-
-2006-07-20(Thu) 03:38:46 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : fix [yarv-dev:1040] bug
-
-
-2006-07-18(Tue) 18:45:52 +0900 Koichi Sasada <[email protected]>
-
- * some files : set property "svn:eol-style" as native
-
-
-2006-07-18(Tue) 18:35:55 +0900 Koichi Sasada <[email protected]>
-
- * gc.h : fix a static function name
-
- * vm.c : remove Japanese comments
-
- * yarvcore.c : add a comment
-
- * some files : set property "svn:eol-style" as native
-
-
-2006-07-18(Tue) 16:48:01 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : remove unused code
-
- * compile.c : add checking value
-
- * iseq.c : ditto
-
- * yarvcore.c : fix yarv_th_eval prototype declaration
-
- * yarvtest/yarvtest.rb : use compile instead of parse method
-
-
-2006-07-12(Wed) 15:18:58 +0900 Koichi Sasada <[email protected]>
-
- * yarv_version.h : 0.4.1
-
- * Changes : ditto
-
-
-2006-07-12(Wed) 13:38:03 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : fix indent
-
- * gc.h : fix syntax bug
-
- * thread_pthread.h : vanish warnning message
-
- * iseq.c : ditto
-
- * compile.c : ditto
-
- * thread.c : ditto
-
- * vm.c : ditto
-
- * yarvcore.c : prohibit tail call optimization to mark
- iseq object
-
- * yarvcore.h : add some allocator function declaration
-
- * yarvtest/test_eval.rb : remove output
-
-
-2006-07-12(Wed) 05:01:23 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : undef alloc funcs
-
- * eval_proc.c : ditto (use factory faction)
-
- * thread.c : ditto
-
- * vm.c : ditto
-
- * iseq.c : fix compile option creation
-
- * rb/allload.rb : use compile_file method
-
- * rb/compile.rb : ditto
-
- * rb/parse.rb : ditto
-
- * template/insnstbl.html : hide mail addr
-
-
-2006-07-11(Tue) 21:34:29 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_dir.rb: new test test_JVN_13947696.
-
-
-2006-07-11(Tue) 21:26:41 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_alias.rb: new test test_JVN_83768862.
-
-
-2006-07-11(Tue) 11:33:49 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix compile error on C90
-
-
-2006-07-11(Tue) 10:40:23 +0900 Koichi Sasada <[email protected]>
-
- * disasm.c : removed
-
- * iseq.c : added
-
- * common.mk : ditto
-
- * blockinlining.c : Get*Val => Get*Ptr
-
- * eval.c : ditto
-
- * yarvcore.c : ditto
-
- * eval_proc.c : ditto
-
- * vm_dump.c : ditto
-
- * vm_macro.def : ditto
-
- * signal.c : ditto
-
- * vm.c : ditto
-
- * thread.c : ditto
-
- * compile.c : rename local variable insnobj => iobj
-
- * compile.c : support yarv_compile_option_t
-
- * gc.h : added
-
- * insns.def : use OPT_CHECKED_RUN instead of IGNORE_OPTIMIZE
-
- * rb/compile.rb : use compile option
-
- * template/optinsn.inc.tmpl : fix function name
-
- * vm_opts.h.base : change macros
-
- * rb/insns2vm.rb : ditto
-
- * yarv.h : fix yarvcore_eval_parsed parameter type
-
- * yarvcore.c : fix some interfaces (functions)
-
- * yarvcore.h : add a type yarv_compile_option_t
-
-
-2006-07-06(Thu) 13:45:20 +0900 Koichi Sasada <[email protected]>
-
- * lib/yasm.rb : pass builder object if block arity == 1
-
-
-2006-07-05(Wed) 11:23:50 +0900 Koichi Sasada <[email protected]>
-
- * lib/yasm.rb : fix method name
-
- * vm.c (th_set_top_stack) : check toplevel or not
-
-
-2006-07-04(Tue) 20:05:38 +0900 Koichi Sasada <[email protected]>
-
- * rb/compile.rb : added
-
- * yarvtest/yarvtest.rb : disable load/store test
-
-
-2006-07-04(Tue) 18:17:15 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix some bugs about load iseq data
-
- * disasm.c : ditto (store)
-
- * eval.c (rb_f_local_variables) : fix bugs
-
- * insns.def : fix otp_ltlt condition bug
-
- * vm.c : ditto
-
- * yarvcore.c : rename some functions
-
- * yarvtest/yarvtest.rb : add iseq load/store tests
- (to enable this, remove comment)
-
-
-2006-07-03(Mon) 01:54:23 +0900 Koichi Sasada <[email protected]>
-
- * eval_thread.c : add parameter "th" to thread_set_raised
-
- * yarvcore.h : ditto
-
- * eval_intern.h : ditto
-
- * eval.c : ditto
-
- * eval_error.h : declare with ANSI style
-
- * disasm.c : rename iseq_iseq2simpledata() to iseq_data_to_ary
-
- * lib/yasm.rb : rename Instruction#to_simpledata to
- Instruction#to_a
-
- * yarvcore.c : ditto
-
- * vm.c : fix bug (Proc.new{|*args| p args}.call(1) #=> 1)
-
- * yarvtest/test_proc.rb : add a tests for above
-
-
-2006-06-21(Wed) 09:19:06 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : remove yarv_iseq_t#catch_table_ary and
- add yarv_iseq_t#compile_data#catch_table_ary
-
- * compile.h : ditto
-
- * yarvcore.c : ditto
-
- * yarvcore.h : ditto
-
- * eval_thread.c : remove unused code
-
- * thread.c : add rb_gc_mark_threads() (from eval_thread.c)
-
-
-2006-05-31(Wed) 21:26:38 +0900 Koichi Sasada <[email protected]>
-
- * parse.y : prohibit tail call optimization to mark vparsr
- object
-
-
-2006-05-25(Thu) 15:37:11 +0900 Koichi Sasada <[email protected]>
-
- * blockinlining.c : support NEW_ATTRASGN node
-
- * class.c : skip undefined method to collect ([yarv-dev:999])
-
- * yarvtest/test_class.rb : add a test for above
-
- * compile.c : fix opt_regexpmatch1 condition
-
- * lib/monitor.rb : fix [yarv-dev:1009]
-
- * rb/insns2vm.rb : fix typo
-
- * thread.c : prohibit unlock by not mutex owner thread
-
- * vm_opts.h.base : change default option
-
-
-2006-05-18(Thu) 16:00:50 +0900 Koichi Sasada <[email protected]>
-
- * intern.h : fix prototype declarations for last re.c change
-
-
-2006-05-18(Thu) 12:12:03 +0900 Koichi Sasada <[email protected]>
-
- * rb/runruby.rb : added
-
- * thread.c (rb_thread_alone) : check if vm->living_threads
- is available
-
-
-2006-05-18(Thu) 12:05:35 +0900 Koichi Sasada <[email protected]>
-
- * signal.c : not mask SIGSEGV
-
- * thread.c : fix debug output on Win32
-
- * thread.c, thread_pthread.h : add some debug prints
-
- * yarvcore.c : mark machine registers on thread_mark
-
-
-2006-05-17(Wed) 18:09:20 +900 Yukihiro Matsumoto <[email protected]>
-
- * dir.c (sys_warning): should not call a vararg function
- rb_sys_warning() indirectly. [ruby-core:07886]
-
-
-2006-05-17(Wed) 16:41:41 +900 Yukihiro Matsumoto <[email protected]>
-
- * re.c (rb_reg_initialize): should not allow modifying literal
- regexps. frozen check moved from rb_reg_initialize_m as well.
-
- * re.c (rb_reg_initialize): should not modify untainted objects in
- safe levels higher than 3.
-
- * re.c (rb_memcmp): type change from char* to const void*.
-
- * dir.c (dir_close): should not close untainted dir stream.
-
- * dir.c (GetDIR): add tainted/frozen check for each dir operation.
-
-
-2006-05-07(Sun) 21:06:28 +0900 Koichi Sasada <[email protected]>
-
- * thread.c : remove Mutex#unlock_and_stop and add Mutex#sleep
-
- * lib/monitor.rb : ditto
-
- * lib/thread.rb : ditto
-
- * thread_pthread.h : fix stack size
-
- * thread_win32.h : fix sleep
-
- * yarvcore.h : disable to use get/setcontext
-
- * lib/webrick/server.rb : add experimental implementation
- using thraeds pool
-
-
-2006-05-05(Fri) 13:59:00 +0900 Koichi Sasada <[email protected]>
-
- * test/ruby/test_signal.rb : disable a test
-
- * thread.c : do trylock before lock on mutex_lock
-
- * thread_win32.h : use CriticalSection instead of Mutex
-
-
-2006-05-05(Fri) 03:03:22 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : vtune rule make run test.rb
-
- * disasm.c : fix syntax errors (on VC)
-
- * yarvcore.c : ditto
-
- * lib/thread.rb : Mutex#synchronize is defined here
-
- * lib/*.rb : ditto
-
- * signal.c : separate pthread or not
-
- * thread.c : support lightweight wakeup
-
- * thread_pthread.h : ditto
-
- * thread_win32.h : ditto
-
- * yarvcore.h : ditto
-
- * yarvtest/test_thread.rb : restore last change
-
-
-2006-05-04(Thu) 18:11:43 +0900 Koichi Sasada <[email protected]>
-
- * eval_thread.c : remove rb_thread_interrupt
-
- * intern.h : ditto
-
- * signal.c : change signal transfer route
-
- * thread.c : ditto
-
- * thread_pthread.h : ditto
-
- * thread_win32.h : ditto
-
- * yarv.h : support GET_VM()
-
- * yarvcore.h : change yarv_thread_t/yarv_vm_t structure
-
- * yarvtest/test_thread.rb : decrease threads to test
-
-
-2006-05-04(Thu) 00:26:18 +0900 Koichi Sasada <[email protected]>
-
- * thread_pthread.h : experimental support of thread cache
-
-
-2006-04-25(Tue) 22:30:14 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : remove struct yarv_cmethod_info, add
- data structure for profiling and extend yarv_control_frame_t
-
- * vm.c : make pop_frame() and apply above change
-
- * eval.c : ditto
-
- * vm_dump.c : ditto
-
- * vm_macro.def : ditto
-
- * insns.def (leave): use pop_frame() instead of
- POP_CONTROL_STACK_FRAME() macro
-
- * insnhelper.h : remove some macros
-
- * yarvcore.c : change th_set_top_stack() prototype
-
-
-2006-04-18(Tue) 18:37:08 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, disasm.c : support export/import exception
- information
-
- * yarvcore.h : change "struct catch_table_entry" member variable
- order
-
-
-2006-04-13(Thu) 17:11:30 +0900 Koichi Sasada <[email protected]>
-
- * bignum.c : import ruby 1.9 HEAD (Ruby 1.9.0 2006-04-08)
-
- * dir.c : ditto
-
- * enumerator.c : ditto
-
- * ext/.document : ditto
-
- * ext/extmk.rb : ditto
-
- * ext/nkf/lib/kconv.rb : ditto
-
- * ext/nkf/nkf-utf8/nkf.c : ditto
-
- * ext/nkf/nkf-utf8/utf8tbl.c : ditto
-
- * ext/nkf/nkf.c : ditto
-
- * ext/nkf/test.rb : ditto
-
- * ext/socket/.cvsignore : ditto
-
- * ext/win32ole/sample/excel2.rb : ditto
-
- * ext/win32ole/tests/testOLEMETHOD.rb : ditto
-
- * ext/win32ole/tests/testOLEPARAM.rb : ditto
-
- * ext/win32ole/tests/testOLETYPE.rb : ditto
-
- * ext/win32ole/tests/testOLETYPELIB.rb : ditto
-
- * ext/win32ole/tests/testOLEVARIABLE.rb : ditto
-
- * ext/win32ole/tests/testOLEVARIANT.rb : ditto
-
- * ext/win32ole/tests/testWIN32OLE.rb : ditto
-
- * ext/win32ole/tests/testall.rb : ditto
-
- * ext/win32ole/win32ole.c : ditto
-
- * gc.c : ditto
-
- * instruby.rb : ditto
-
- * io.c : ditto
-
- * lib/delegate.rb : ditto
-
- * lib/fileutils.rb : ditto
-
- * lib/find.rb : ditto
-
- * lib/irb/ruby-lex.rb : ditto
-
- * lib/mkmf.rb : ditto
-
- * lib/net/http.rb : ditto
-
- * lib/open-uri.rb : ditto
-
- * lib/pathname.rb : ditto
-
- * lib/rational.rb : ditto
-
- * lib/rdoc/parsers/parse_rb.rb : ditto
-
- * lib/rdoc/ri/ri_paths.rb : ditto
-
- * lib/resolv.rb : ditto
-
- * lib/test/unit/collector/objectspace.rb : ditto
-
- * lib/webrick/httpservlet/cgihandler.rb : ditto
-
- * math.c : ditto
-
- * mkconfig.rb : ditto
-
- * object.c : ditto
-
- * oniguruma.h : ditto
-
- * pack.c : ditto
-
- * parse.y : ditto
-
- * re.c : ditto
-
- * re.h : ditto
-
- * regcomp.c : ditto
-
- * regerror.c : ditto
-
- * regparse.c : ditto
-
- * ruby.h : ditto
-
- * rubytest.rb : ditto
-
- * runruby.rb : ditto
-
- * string.c : ditto
-
- * test/digest/test_digest.rb : ditto
-
- * test/pathname/test_pathname.rb : ditto
-
- * test/ruby/envutil.rb : ditto
-
- * test/ruby/test_float.rb : ditto
-
- * test/ruby/test_pack.rb : ditto
-
- * time.c : ditto
-
- * util.c : ditto
-
- * version.h : ditto
-
- * win32/mkexports.rb : ditto
-
- * win32/resource.rb : ditto
-
- * win32/win32.c : ditto
-
-
-2006-04-11(Tue) 11:26:53 +0900 Koichi Sasada <[email protected]>
-
- * rb/yasm.rb : move to lib/yasm.rb
-
-
-2006-04-09(Sun) 03:04:04 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : change to accept method iseq object when loading from
- simple data
-
- * yarvcore.c : add a debug output
-
- * rb/yasm.rb : change some interfaces
-
-
-2006-04-07(Fri) 20:25:03 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix miss about range of catch "next"
-
- * eval.c : add braces
-
-
-2006-04-07(Fri) 11:09:43 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : fix some make rules
-
- * insns.def : rename some instructions name
-
- * rb/insns2vm.rb : change some operand type name
-
- * vm_evalbody.h : ditto
-
- * template/insns.inc.tmpl : add YARV_MAX_INSTRUCTION_SIZE macro
-
- * compile.c, disasm.c, yarvcore.c : support load/store iseq from/to simple
- data structure such as array, literals, and so on
-
- * rb/yasm.rb : supported
-
- * vm.c : change interface of eval_define_method
-
- * yarvcore.h : remove unused externals
-
-
-2006-03-08(Wed) 10:31:29 +0900 Minero Aoki <[email protected]>
-
- * lib/delegate.rb (DelegateClass): do not delegate #send and
- #funcall.
-
-
-2006-02-27(Mon) 22:39:17 +0900 Minero Aoki <[email protected]>
-
- * lib/thread.rb: last commit causes busy loop, revert it. [yarv-dev:990]
-
- * lib/thread.rb: non_block=true wrongly caused ThreadError.
-
-
-2006-02-27(Mon) 21:33:49 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : fix to display command line
-
- * compile.c : fix comparison between a pointer and 0
-
- * debug.c : fix to output stder
-
- * disasm.c : add debug function
-
- * vm_dump.c : ditto
-
- * eval_proc.c : fix to skip class definition
-
- * ruby.h : fix T_VALUE to T_VALUES
-
- * gc.c : ditto
-
- * node.h : fix prototypes
-
- * vm.c : add VM_DEBUG macro
-
- * vm.c : fix compile error on VC++
-
- * vm.c : fix to inherit last lfp[0] on th_set_finish_env
-
- * vm.c : fix to add one svar location for any frame
-
- * vm_macro.def : ditto
-
- * yarvcore.h : add YARV_CLASS_SPECIAL_P() and YARV_BLOCK_PTR_P()
-
- * rdoc/ : removed
-
- * insns.def : fix to propagete throw state
-
-
-2006-02-27(Mon) 13:54:47 +0900 Minero Aoki <[email protected]>
-
- * ext/syslog: imported from Ruby CVS trunk HEAD.
-
- * ext/racc: ditto.
-
-
-2006-02-27(Mon) 12:47:10 +0900 Minero Aoki <[email protected]>
-
- * parse.y: follow coding style change.
-
-
-2006-02-27(Mon) 11:53:07 +0900 Minero Aoki <[email protected]>
-
- * lib/README: imported from Ruby CVS trunk HEAD.
-
- * lib/gserver.rb: ditto.
-
- * lib/readbytes.rb: ditto.
-
- * lib/parsearg.rb: ditto.
-
- * lib/racc: ditto.
-
- * lib/rinda: ditto.
-
-
-2006-02-27(Mon) 11:27:19 +0900 Minero Aoki <[email protected]>
-
- * lib/thread.rb (Queue#pop): faster code. [yarv-dev:973]
-
- * lib/thread.rb (Queue#pop): avoid to push same thread in to
- @waiting.
-
-
-2006-02-23(Thu) 23:32:53 +0900 Minero Aoki <[email protected]>
-
- * lib/open3.rb: imported from Ruby CVS trunk HEAD (rev 1.12).
-
-
-2006-02-23(Thu) 15:10:09 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : support rb_frame_self()
-
- * eval_intern.h (th_get_ruby_level_cfp) : return 0 if no cfp
-
- * eval_load.c : comment out scope set
-
- * yarvcore.c : fix to initialize/free process of iseq
-
- * vm.c (th_invoke_proc) : fix to set special cref always
-
- * yarvtest/test_proc.rb : add a test for above
-
-
-2006-02-22(Wed) 23:33:47 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add rule "runruby"
-
- * eval_thread.c : remove obsolete comment
-
- * eval.c : remove unused functions
-
- * signal.c : ditto
-
- * gc.c : add rb_register_mark_object() and use it
-
- * eval_load.c : ditto
-
- * eval_proc.c : ditto
-
- * ext/etc/etc.c : ditto
-
- * ext/win32ole/win32ole.c : ditto
-
- * ruby.h : ditto
-
- * yarvcore.h : ditto
-
- * thread.c : add rb_thread_run_parallel()
-
- * yarvcore.c : change bootstrap
-
-
-2006-02-22(Wed) 19:27:33 +0900 Koichi Sasada <[email protected]>
-
- * ext/win32ole/.cvsignore : removed
-
- * ext/win32ole/.document : ditto
-
-
-2006-02-22(Wed) 18:17:06 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : set Binding as YARVCore::VM::Binding
-
-
-2006-02-22(Wed) 12:54:45 +0900 Koichi Sasada <[email protected]>
-
- * ChangeLog : remove needless line
-
-
-2006-02-22(Wed) 12:49:02 +0900 Koichi Sasada <[email protected]>
-
- * rubysig.h : remove CHECK_INTS
-
- * eval.c : ditto
-
- * eval_load.c : ditto
-
- * ext/readline/readline.c : ditto
-
- * thread.c : ditto
-
- * win32/win32.c : ditto
-
- * yarv_version.h : 0.4.0
-
- * Changes : ditto
-
-
-2006-02-22(Wed) 11:36:04 +0900 Koichi Sasada <[email protected]>
-
- * test.rb : removed
-
-
-2006-02-22(Wed) 11:12:17 +0900 Koichi Sasada <[email protected]>
-
- * README : renewed
-
- * version.c : fixed version message
-
- * yarvext/ : removed
-
-
-2006-02-22(Wed) 10:33:04 +0900 Koichi Sasada <[email protected]>
-
- * lib/.document : imported from Ruby 1.9 HEAD
-
- * .document : ditto
-
- * ext/.document : ditto
-
- * lib/ftools.rb : ditto
-
- * lib/rdoc/ : ditto
-
- * eval_thread.c : remove unused functions
-
- * process.c : ditto
-
- * rb/insns2vm.rb : compare modified date of vm_opts.h and
- vm_opts.h.base
-
- * ruby.h : rename RValue to RValues
-
- * gc.c : ditto
-
- * vm.c : ditto
-
-
-2006-02-22(Wed) 06:32:10 +0900 Koichi Sasada <[email protected]>
-
- * configure.in : remove last commit
-
-
-2006-02-22(Wed) 06:18:53 +0900 Koichi Sasada <[email protected]>
-
- * configure.in : add default program prefix "-yarv"
-
-
-2006-02-22(Wed) 06:11:36 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : change default rule (same as HEAD)
-
- * configure : removed
-
- * eval.c : remove last commit
-
- * vm.c : fix stack traverse
-
- * yarvcore.c : initialize top of control frame
-
- * version.c : 2.0
-
- * version.h : ditto
-
-
-2006-02-22(Wed) 04:50:42 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : change to rewind C level control frame
-
- * vm.c : change to initialize cfp#proc and fix comparison of
- cfp and limit_cfp
-
- * yarvcore.c : remove last commit
-
-
-2006-02-22(Wed) 03:25:56 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : initialize each stack of thread
-
-
-2006-02-22(Wed) 00:02:08 +0900 Koichi Sasada <[email protected]>
-
- * thread.c : fix synchornize return value ([yarv-dev:957])
- and some synchornization error
-
- * thread_pthread.h : add debug helper function
-
-
-2006-02-21(Tue) 20:54:28 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : fix place of rb_thread_terminate_all()
-
- * eval_thread.c : remove unused functions
-
- * yarv.h : remove GET_VM()
-
- * eval_jump.h : ditto
-
- * insns.def : ditto
-
- * vm_dump.c :
-
- * intern.h : change rb_thread_signal_raise/exit interface
-
- * signal.c : ditto
-
- * thread.c : ditto
-
- * test/ruby/test_beginendblock.rb : use block with IO.popen
-
- * thread_pthread.h : fix interrupt process
-
- * thread_win32.h : ditto
-
- * yarvcore.c : fix thread free process
-
- * yarvcore.h : remove yarv_vm_t#thread_critical, etc
-
-
-2006-02-21(Tue) 12:42:44 +0900 Koichi Sasada <[email protected]>
-
- * eval_thread.c : remove unused function rb_thread_schedule()
-
- * thread.c : rename yarv_thread_schedule to rb_thread_schedule()
-
- * thread.c, eval.c : fix to terminate all thread and barrier at
- eval.c#ruby_cleanup()
-
- * thread_win32.h : remove native_thread_cleanup()
-
- * thread_pthread.h : ditto
-
- * yarvcore.c : ditto
-
- * yarvtest/test_thread.rb : separete assersions to tests
-
-
-2006-02-21(Tue) 02:13:33 +900 Yukihiro Matsumoto <[email protected]>
-
- * parse.y (f_arglist): should set command_start = Qtrue for
- command body. [ruby-talk:180648]
-
-
-2006-02-20(Mon) 20:41:07 +0900 Koichi Sasada <[email protected]>
-
- * thread.c : fix to synchronize signal_thread_list access
- and fix typo
-
-
-2006-02-20(Mon) 17:54:58 +0900 Koichi Sasada <[email protected]>
-
- * eval_proc.c : remove unused Binding functions and
- set is_lambda of Proc used define_method
-
- * yarvcore.c : support Proc#dup/clone, Binding#dup/clone
-
- * sample/test.rb : remove unsupport features (Proc as Binding)
-
-
-2006-02-20(Mon) 16:28:59 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add a dependency to vm.c on eval_intern.h
-
- * eval_intern.h : fix to initialize tag->tag
-
- * yarvtest/test_jump.rb : add tests for above
-
- * eval_jump.h : use local variable
-
-
-2006-02-20(Mon) 15:13:24 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bm_vm3_thread_create_join.rb : added
-
- * test/yaml/test_yaml.rb : imported from Ruby CVS trunk HEAD
-
-
-2006-02-20(Mon) 14:49:46 +0900 Minero Aoki <[email protected]>
-
- * lib/yaml.rb: imported from Ruby CVS trunk HEAD.
-
- * lib/yaml: ditto.
-
- * ext/syck: ditto.
-
-
-2006-02-20(Mon) 13:58:03 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support block parameter which is NODE_ATTRASGN
-
- * yarvtest/test_block.rb : add tests for above
-
- * compile.c : fix NODE_DASGN_CURR level check
-
- * compile.c : fix "||=" (at firtst, check "defined? val")
-
- * compile.c : fix NODE_MATCH3 (permute receiver and argument)
-
- * yarvtest/test_bin.rb : add tests for above
-
- * eval.c : add rb_each()
-
- * test/ruby/test_signal.rb : increment a timeout value
-
- * thread.c, yarvcore.h : fix "join" flow
-
- * thread_pthread.h : ditto
-
- * thread_win32.h : ditto
-
- * yarvtest/test_thread.rb : add a test for above
-
- * vm.h, vm.c, vm_dump.c, insns.def : add FRAME_MAGIC_LAMBDA and
- support return from lambda (especially retrun from method defined
- by "define_method")
-
- * yarvtest/test_method.rb : add a test for above
-
- * yarvcore.c : remove unused functions
-
-
-2006-02-20(Mon) 11:22:31 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_eval.rb: now Object#funcall is defined.
-
-
-2006-02-20(Mon) 11:04:32 +0900 Minero Aoki <[email protected]>
-
- * lib/irb/lc/ja/CVS: removed.
-
-
-2006-02-20(Mon) 10:55:59 +0900 Minero Aoki <[email protected]>
-
- * lib/mutex_m.rb: imported from Ruby CVS trunk HEAD.
-
- * lib/observer.rb: ditto.
-
- * lib/wsdl: ditto.
-
- * lib/monitor.rb: ditto (removing Thread.critical=).
-
- * lib/xsd: ditto.
-
- * lib/soap: ditto.
-
- * lib/drb.rb: ditto.
-
- * lib/drb: ditto.
-
-
-2006-02-20(Mon) 10:49:31 +0900 Minero Aoki <[email protected]>
-
- * yarvcore.c (Init_yarvcore): fix typo (duo -> dup).
-
-
-2006-02-19(Sun) 01:27:08 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : "return" from lambda{} break block
-
- * eval.c : Unsupport Proc as Binding
-
- * test/ruby/test_eval.rb : apply above changes
-
- * yarvcore.c : remove unused function yarv_yield_values()
-
-
-2006-02-18(Sat) 03:19:36 +0900 Koichi Sasada <[email protected]>
-
- * thread.c, insns.def : fix passing value when thread killed
-
- * yarvtest/test_thread.rb : add tests for above
-
-
-2006-02-19(Sun) 01:19:42 +0900 Minero Aoki <[email protected]>
-
- * lib/thread.rb (SizedQueue): didn't work. This patch was
- contributed by yukimizake. [yarv-dev:916]
-
-
-2006-02-18(Sat) 03:19:36 +0900 Koichi Sasada <[email protected]>
-
- * thread.c, insns.def : fix passing value when thread killed
-
- * yarvtest/test_thread.rb : add tests for above
-
-
-2006-02-18(Sat) 02:40:18 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, vm.c, vm_macro.def : change BMETHOD algorithm
- ([yarv-dev:914])
-
- * yarvtest/test_class.rb : add a test for above
-
-
-2006-02-17(Fri) 23:59:51 +0900 Koichi Sasada <[email protected]>
-
- * vm.c, yarv.h : change th_invoke_proc() interface
-
- * eval_proc.c : ditto
-
- * signal.c : ditto
-
- * thread.c : ditto
-
- * yarvcore.c : ditto
-
- * vm_macro.def : ditto and fix NODE_BMETHOD call
-
- * vm.c : change name ("th_set_env()" to "push_frame()") and
- change interface
-
- * insns.def : ditto
-
- * eval.c : remove proc_jump_error()
-
- * benchmark/bm_app_answer.rb : added
-
- * vm_opts.h.base : add optimize option
-
-
-2006-02-17(Fri) 13:37:57 +0900 Koichi Sasada <[email protected]>
-
- * eval.c, ruby.h : add rb_errinfo()
-
- * eval_error.h (error_pos) : fix process order
-
- * bin/erb : imported from ruby 1.9
-
- * bin/irb : ditto
-
- * bin/rdoc : ditto
-
- * bin/ri : ditto
-
- * bin/testrb : ditto
-
- * ext/curses/.cvsignore : ditto
-
- * ext/curses/curses.c : ditto
-
- * ext/curses/depend : ditto
-
- * ext/curses/extconf.rb : ditto
-
- * ext/curses/hello.rb : ditto
-
- * ext/curses/mouse.rb : ditto
-
- * ext/curses/rain.rb : ditto
-
- * ext/curses/view.rb : ditto
-
- * ext/curses/view2.rb : ditto
-
- * ext/fcntl/.cvsignore : ditto
-
- * ext/fcntl/depend : ditto
-
- * ext/fcntl/extconf.rb : ditto
-
- * ext/fcntl/fcntl.c : ditto
-
- * ext/readline/README : ditto
-
- * ext/readline/README.ja : ditto
-
- * ext/readline/depend : ditto
-
- * ext/readline/extconf.rb : ditto
-
- * ext/readline/readline.c : ditto
-
- * ext/win32ole/.document : ditto
-
- * ext/zlib/doc/zlib.rd : ditto
-
- * ext/zlib/extconf.rb : ditto
-
- * ext/zlib/zlib.c : ditto
-
- * lib/cgi/.document : ditto
-
- * lib/cgi/session.rb : ditto
-
- * lib/cgi/session/pstore.rb : ditto
-
- * lib/shell/builtin-command.rb : ditto
-
- * lib/shell/command-processor.rb : ditto
-
- * lib/shell/error.rb : ditto
-
- * lib/shell/filter.rb : ditto
-
- * lib/shell/process-controller.rb : ditto
-
- * lib/shell/system-command.rb : ditto
-
- * lib/shell/version.rb : ditto
-
- * lib/xmlrpc/.document : ditto
-
- * lib/xmlrpc/README.rdoc : ditto
-
- * lib/xmlrpc/README.txt : ditto
-
- * lib/xmlrpc/base64.rb : ditto
-
- * lib/xmlrpc/client.rb : ditto
-
- * lib/xmlrpc/config.rb : ditto
-
- * lib/xmlrpc/create.rb : ditto
-
- * lib/xmlrpc/datetime.rb : ditto
-
- * lib/xmlrpc/httpserver.rb : ditto
-
- * lib/xmlrpc/marshal.rb : ditto
-
- * lib/xmlrpc/parser.rb : ditto
-
- * lib/xmlrpc/server.rb : ditto
-
- * lib/xmlrpc/utils.rb : ditto
-
- * rdoc/README : ditto
-
- * rdoc/code_objects.rb : ditto
-
- * rdoc/diagram.rb : ditto
-
- * rdoc/dot/dot.rb : ditto
-
- * rdoc/generators/chm_generator.rb : ditto
-
- * rdoc/generators/html_generator.rb : ditto
-
- * rdoc/generators/ri_generator.rb : ditto
-
- * rdoc/generators/template/chm/chm.rb : ditto
-
- * rdoc/generators/template/html/hefss.rb : ditto
-
- * rdoc/generators/template/html/html.rb : ditto
-
- * rdoc/generators/template/html/kilmer.rb : ditto
-
- * rdoc/generators/template/html/old_html.rb : ditto
-
- * rdoc/generators/template/html/one_page_html.rb : ditto
-
- * rdoc/generators/template/xml/rdf.rb : ditto
-
- * rdoc/generators/template/xml/xml.rb : ditto
-
- * rdoc/generators/xml_generator.rb : ditto
-
- * rdoc/markup/sample/rdoc2latex.rb : ditto
-
- * rdoc/markup/sample/sample.rb : ditto
-
- * rdoc/markup/simple_markup.rb : ditto
-
- * rdoc/markup/simple_markup/fragments.rb : ditto
-
- * rdoc/markup/simple_markup/inline.rb : ditto
-
- * rdoc/markup/simple_markup/lines.rb : ditto
-
- * rdoc/markup/simple_markup/preprocess.rb : ditto
-
- * rdoc/markup/simple_markup/to_flow.rb : ditto
-
- * rdoc/markup/simple_markup/to_html.rb : ditto
-
- * rdoc/markup/simple_markup/to_latex.rb : ditto
-
- * rdoc/markup/test/AllTests.rb : ditto
-
- * rdoc/markup/test/TestInline.rb : ditto
-
- * rdoc/markup/test/TestParse.rb : ditto
-
- * rdoc/options.rb : ditto
-
- * rdoc/parsers/parse_c.rb : ditto
-
- * rdoc/parsers/parse_f95.rb : ditto
-
- * rdoc/parsers/parse_rb.rb : ditto
-
- * rdoc/parsers/parse_simple.rb : ditto
-
- * rdoc/parsers/parserfactory.rb : ditto
-
- * rdoc/rdoc.rb : ditto
-
- * rdoc/ri/ri_cache.rb : ditto
-
- * rdoc/ri/ri_descriptions.rb : ditto
-
- * rdoc/ri/ri_display.rb : ditto
-
- * rdoc/ri/ri_driver.rb : ditto
-
- * rdoc/ri/ri_formatter.rb : ditto
-
- * rdoc/ri/ri_options.rb : ditto
-
- * rdoc/ri/ri_paths.rb : ditto
-
- * rdoc/ri/ri_reader.rb : ditto
-
- * rdoc/ri/ri_util.rb : ditto
-
- * rdoc/ri/ri_writer.rb : ditto
-
- * rdoc/template.rb : ditto
-
- * rdoc/tokenstream.rb : ditto
-
- * rdoc/usage.rb : ditto
-
- * test/xmlrpc/data/bug_bool.expected : ditto
-
- * test/xmlrpc/data/bug_bool.xml : ditto
-
- * test/xmlrpc/data/bug_cdata.expected : ditto
-
- * test/xmlrpc/data/bug_cdata.xml : ditto
-
- * test/xmlrpc/data/bug_covert.expected : ditto
-
- * test/xmlrpc/data/bug_covert.xml : ditto
-
- * test/xmlrpc/data/datetime_iso8601.xml : ditto
-
- * test/xmlrpc/data/fault.xml : ditto
-
- * test/xmlrpc/data/value.expected : ditto
-
- * test/xmlrpc/data/value.xml : ditto
-
- * test/xmlrpc/data/xml1.expected : ditto
-
- * test/xmlrpc/data/xml1.xml : ditto
-
- * test/xmlrpc/test_datetime.rb : ditto
-
- * test/xmlrpc/test_features.rb : ditto
-
- * test/xmlrpc/test_marshal.rb : ditto
-
- * test/xmlrpc/test_parser.rb : ditto
-
- * test/xmlrpc/test_webrick_server.rb : ditto
-
- * test/xmlrpc/webrick_testing.rb : ditto
-
- * test/zlib/test_zlib.rb : ditto
-
-
-2006-02-17(Fri) 09:41:35 +900 Yukihiro Matsumoto <[email protected]>
-
- * thread.c (sleep_timeval): sleep should always sleep for
- specified amount of time. [ruby-talk:180067]
-
-
-2006-02-17(Fri) 02:20:32 +0900 Koichi Sasada <[email protected]>
-
- * eval_safe.h, ruby.h : remove ruby_safe_level and add
- rb_safe_level() and rb_set_safe_level_force()
-
- * eval.c : use above functions
-
- * eval_jump.h : ditto
-
- * eval_load.c : ditto
-
- * eval_method.h : ditto
-
- * eval_proc.c : ditto
-
- * eval_thread.c : ditto
-
- * gc.c : ditto
-
- * signal.c : ditto
-
- * variable.c : ditto
-
- * ext/win32ole/win32ole.c : ditto
-
- * vm.c (th_invoke_proc) : save and restore safe level
-
- * yarvtest/test_proc.rb : add tests for above
-
- * thread.c : remove unused functions
-
-
-2006-02-17(Fri) 01:08:23 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : remove a setspecial second unused operand
-
- * eval_load.c : remove unused variable th
-
- * eval_proc.c, yarvcore.c : remove some functions from eval_proc.c
- and move to yarvcore.c
-
- * insns.def : fix to delete warnings
-
- * sample/test.rb : comment out Proc#clone tests
-
- * version.c : add constant RUBY_VM_DATE
-
- * vm.c : fix some functions
-
-
-2006-02-16(Thu) 22:58:27 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, vm.c : use th_yield_setup_args at yield and Proc#call
-
-
-2006-02-16(Thu) 19:51:52 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix analysis of block parameter
-
- * disasm.c : remove rb_bug() (temporarily)
-
- * insns.def, vm.c : fix passing block parameter
-
- * sample/test.rb : add "Proc = YARVCore::VM::Proc"
-
- * test/ruby/test_readpartial.rb : disable on mswin32
-
- * test/socket/test_tcp.rb : ditto
-
- * thread.c : fix syntax error (for non GCC)
-
-
-2006-02-15(Wed) 22:34:04 +0900 Koichi Sasada <[email protected]>
-
- * eval_method.h : move rb_clear_cache_by_id position
-
- * thread.c : fix Thread#kill
-
- * test/ruby/test_readpartial.rb : enable tests except cygwin version
-
- * test/ruby/test_signal.rb : ditto and enable timeout
-
-
-2006-02-15(Wed) 22:13:29 +0900 Minero Aoki <[email protected]>
-
- * lib/runit: forgot to commit.
-
-
-2006-02-15(Wed) 22:12:25 +0900 Minero Aoki <[email protected]>
-
- * lib/weakref.rb: do not use Thread.critical=.
-
- * lib/singleton.rb: ditto.
-
- * lib/timeout.rb: ditto.
-
- * lib/thread.rb: ditto.
-
- * test/inlinetest.rb: forgot to commit.
-
-
-2006-02-15(Wed) 21:34:17 +0900 Minero Aoki <[email protected]>
-
- * test/test_pp.rb: imported from Ruby CVS trunk HEAD.
-
- * test/test_shellwords.rb: ditto.
-
- * test/test_set.rb: ditto.
-
- * test/test_time.rb: ditto.
-
- * test/test_ipaddr.rb: ditto.
-
- * test/test_prettyprint.rb: ditto.
-
- * test/test_tsort.rb: ditto.
-
- * test/strscan: ditto.
-
- * test/testunit: ditto.
-
-
-2006-02-15(Wed) 20:03:21 +0900 Koichi Sasada <[email protected]>
-
- * eval_method.h : duplicate NODE_METHOD at make an alias
-
- * yarvtest/test_method.rb : add a test for above
-
-
-2006-02-15(Wed) 19:48:59 +0900 Minero Aoki <[email protected]>
-
- * test/rss: imported from Ruby CVS trunk HEAD.
-
-
-2006-02-15(Wed) 19:47:51 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, compile.c, vm.c : remove methoddef, singletonmethoddef
- instructions and make new insn definemethod
-
- * yarvcore.c : set toplevel visibility to private
-
-
-2006-02-15(Wed) 17:39:16 +0900 Koichi Sasada <[email protected]>
-
- * eval_intern.h :
-
- * eval_jump.h, vm.c : localjump_error() and jump_tag_but_local_jump()
- move to th_localjump_error and th_jump_tag_but_local_jump at vm.c
-
- * eval.c : ditto
-
- * eval_load.c : ditto
-
- * insns.def : ditto
-
- * vm.c : ditto
-
- * vm.c (th_make_jump_tag_but_local_jump) : added
-
- * opt_insn_unif.def : fix indnet (revert change)
-
- * opt_operand.def : ditto
-
- * rb/insns2vm.rb : fix error message
-
- * thread.c : raise exception at join if illegal local jump
-
-
-2006-02-15(Wed) 14:21:45 +900 Yukihiro Matsumoto <[email protected]>
-
- * ChangeLog: add local variables line to support Emacs.
-
- * eval.c (rb_obj_instance_exec): add new method from 1.9.
-
- * eval.c (rb_mod_module_exec): ditto.
-
- * eval.c (yield_under_i): should not pass self as an argument to
- the block for instance_eval. [ruby-core:07364]
-
- * eval.c (rb_obj_instance_eval): should be no singleton classes for
- true, false, and nil. [ruby-dev:28186]
-
-
-2006-02-14(Tue) 19:30:20 +0900 Koichi Sasada <[email protected]>
-
- * array.c : fix indent
-
- * eval.c : fix block_given
-
- * gc.c : add STACK_START and use it as a substitute for
- rb_gc_stack_start
-
- * vm.c : fix to raise error if th_yield doesn't have block given
-
- * yarvcore.c : fix to skip iseq mark array at ObjectSpace.each_object
-
-
-2006-02-14(Tue) 18:15:03 +0900 Koichi Sasada <[email protected]>
-
- * configure.in : enable pthread by deafult
-
- * ascii.c : import ruby 1.9 HEAD
-
- * bignum.c : ditto
-
- * compar.c : ditto
-
- * configure : ditto
-
- * defines.h : ditto
-
- * dln.c : ditto
-
- * dln.h : ditto
-
- * enum.c : ditto
-
- * enumerator.c : ditto
-
- * euc_jp.c : ditto
-
- * ext/win32ole/tests/testWIN32OLE.rb : ditto
-
- * ext/win32ole/win32ole.c : ditto
-
- * file.c : ditto
-
- * hash.c : ditto
-
- * io.c : ditto
-
- * lex.c : ditto
-
- * lib/irb/init.rb : ditto
-
- * lib/rexml/document.rb : ditto
-
- * main.c : ditto
-
- * marshal.c : ditto
-
- * math.c : ditto
-
- * missing.h : ditto
-
- * object.c : ditto
-
- * oniguruma.h : ditto
-
- * pack.c : ditto
-
- * process.c : ditto
-
- * random.c : ditto
-
- * range.c : ditto
-
- * rb/ir.rb : ditto
-
- * re.c : ditto
-
- * regcomp.c : ditto
-
- * regenc.c : ditto
-
- * regenc.h : ditto
-
- * regerror.c : ditto
-
- * regexec.c : ditto
-
- * regint.h : ditto
-
- * regparse.c : ditto
-
- * regparse.h : ditto
-
- * ruby.c : ditto
-
- * ruby.h : ditto
-
- * rubyio.h : ditto
-
- * sjis.c : ditto
-
- * sprintf.c : ditto
-
- * st.c : ditto
-
- * st.h : ditto
-
- * struct.c : ditto
-
- * test/ruby/envutil.rb : ditto
-
- * test/ruby/test_struct.rb : ditto
-
- * time.c : ditto
-
- * utf8.c : ditto
-
- * util.c : ditto
-
- * util.h : ditto
-
- * version.h : ditto
-
- * win32/Makefile.sub : ditto
-
- * win32/win32.c : ditto
-
-
-2006-02-14(Tue) 16:40:01 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, eval_proc.c : fix rb_proc_arity
-
- * eval.c : declare funcall same as send (temporarily)
-
- * lib/thread.rb : added
-
- * test/pathname/test_pathname.rb : imported from ruby 1.9
-
- * test/scanf/data.txt : ditto
-
- * test/scanf/test_scanf.rb : ditto
-
- * test/scanf/test_scanfblocks.rb : ditto
-
- * test/scanf/test_scanfio.rb : ditto
-
- * test/socket/test_socket.rb : ditto
-
- * test/socket/test_tcp.rb : ditto
-
- * test/socket/test_udp.rb : ditto
-
- * test/socket/test_unix.rb : ditto
-
- * test/stringio/test_stringio.rb : ditto
-
- * test/uri/test_common.rb : ditto
-
- * test/uri/test_ftp.rb : ditto
-
- * test/uri/test_generic.rb : ditto
-
- * test/uri/test_http.rb : ditto
-
- * test/uri/test_ldap.rb : ditto
-
- * test/uri/test_mailto.rb : ditto
-
-
-2006-02-14(Tue) 15:59:28 +0900 Koichi Sasada <[email protected]>
-
- * thread.c : Change Thread.critical warnning message
-
- * lib/webrick.rb : imported from ruby 1.9
-
- * lib/webrick/accesslog.rb : ditto
-
- * lib/webrick/cgi.rb : ditto
-
- * lib/webrick/compat.rb : ditto
-
- * lib/webrick/config.rb : ditto
-
- * lib/webrick/cookie.rb : ditto
-
- * lib/webrick/htmlutils.rb : ditto
-
- * lib/webrick/httpauth.rb : ditto
-
- * lib/webrick/httpauth/authenticator.rb : ditto
-
- * lib/webrick/httpauth/basicauth.rb : ditto
-
- * lib/webrick/httpauth/digestauth.rb : ditto
-
- * lib/webrick/httpauth/htdigest.rb : ditto
-
- * lib/webrick/httpauth/htgroup.rb : ditto
-
- * lib/webrick/httpauth/htpasswd.rb : ditto
-
- * lib/webrick/httpauth/userdb.rb : ditto
-
- * lib/webrick/httpproxy.rb : ditto
-
- * lib/webrick/httprequest.rb : ditto
-
- * lib/webrick/httpresponse.rb : ditto
-
- * lib/webrick/https.rb : ditto
-
- * lib/webrick/httpserver.rb : ditto
-
- * lib/webrick/httpservlet.rb : ditto
-
- * lib/webrick/httpservlet/abstract.rb : ditto
-
- * lib/webrick/httpservlet/cgi_runner.rb : ditto
-
- * lib/webrick/httpservlet/cgihandler.rb : ditto
-
- * lib/webrick/httpservlet/erbhandler.rb : ditto
-
- * lib/webrick/httpservlet/filehandler.rb : ditto
-
- * lib/webrick/httpservlet/prochandler.rb : ditto
-
- * lib/webrick/httpstatus.rb : ditto
-
- * lib/webrick/httputils.rb : ditto
-
- * lib/webrick/httpversion.rb : ditto
-
- * lib/webrick/log.rb : ditto
-
- * lib/webrick/server.rb : ditto
-
- * lib/webrick/ssl.rb : ditto
-
- * lib/webrick/utils.rb : ditto
-
- * lib/webrick/version.rb : ditto
-
-
-2006-02-14(Tue) 14:55:51 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : support "defined?($1)", ...
-
- * yarvtest/test_syntax.rb : add a test for above
-
- * rb/makedocs.rb : fix template directory path
-
- * vm.c : fix to handle break from proc
-
-
-2006-02-14(Tue) 12:42:59 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : fix rb_iterate hook
-
- * yarvtest/test_block.rb : add a tests for above
-
- * vm.c : remove unused comment
-
-
-2006-02-14(Tue) 12:01:06 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : fix to check passed block at block_given_p
-
- * eval_proc.c : fix to pass block at Method#call
-
- * runruby.rb : fix to apply ruby
-
- * test/runner.rb : GC.stress (comment out)
-
- * vm.c : fix indnet
-
-
-2006-02-14(Tue) 08:04:33 +0900 Minero Aoki <[email protected]>
-
- * lib/tempfile.rb: use Mutex instead of Thread.critical.
-
- * lib/rss/dublincore.rb: |x,| -> |x,_| to avoid YARV bug (tmp).
-
- * lib/rexml: imported from ruby CVS trunk HEAD.
-
- * test/digest: ditto.
-
- * test/fileutils: ditto.
-
- * test/ostruct: ditto.
-
- * test/erb: ditto.
-
- * test/optparse: ditto.
-
- * test/ruby/test_signal.rb: turn off a test to avoid unknown error
- (tmp).
-
-
-2006-02-14(Tue) 07:52:03 +0900 Minero Aoki <[email protected]>
-
- * test/digest: imported from ruby CVS trunk HEAD.
-
- * test/fileutils: ditto.
-
- * test/ostruct: ditto.
-
- * test/erb: ditto.
-
- * test/optparse: ditto.
-
-
-2006-02-14(Tue) 06:26:21 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, parse.y : support BEGIN{} (remove local scope)
-
- * test/ruby/beginmainend.rb : fix to apply YARV's specification
-
- * test/ruby/test_beginendblock.rb : enable BEGIN{} test
-
- * signal.c : exit at double segv
-
- * insns.def (preexe) : remove instruction "preexe"
-
-
-2006-02-14(Tue) 05:53:56 +0900 Minero Aoki <[email protected]>
-
- * eval.c (ruby_cleanup): th->errinfo contains a NODE while
- break'ing, check it before refering klass.
-
-
-2006-02-14(Tue) 05:45:07 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix stack calc of send
-
- * sample/test.rb : remove SEGV causing code
-
-
-2006-02-14(Tue) 02:24:21 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_module.rb: list order is not a matter.
-
- * test/csv: imported from ruby CVS trunk HEAD.
-
-
-2006-02-14(Tue) 02:06:25 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_beginendblock.rb: unlock tests.
-
- * test/ruby/beginmainend.rb: new file (imported from ruby CVS
- trunk HEAD).
-
- * test/ruby/endblockwarn.rb: new file (imported from ruby CVS
- trunk HEAD).
-
- * test/ruby/test_file.rb: new file (imported from ruby CVS trunk
- HEAD).
-
-
-2006-02-14(Tue) 01:42:11 +0900 Koichi Sasada <[email protected]>
-
- * error.c : fix include file positon
-
- * test/ruby/test_signal.rb : skip test_exit_action on cygwin
-
-
-2006-02-14(Tue) 01:36:57 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_class.rb: new file (imported from rubicon).
-
-
-2006-02-14(Tue) 01:32:23 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_module.rb: ignore PP mixins.
-
-
-2006-02-14(Tue) 01:24:56 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_lambda.rb: removed (->(){...} syntax is
- obsolete).
-
-
-2006-02-14(Tue) 01:20:54 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_module.rb: import many tests from rubicon.
-
-
-2006-02-14(Tue) 01:06:57 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix to avoid stack consistency error
-
- * yarvtest/test_exception.rb : add a test for above
-
-
-2006-02-14(Tue) 00:42:47 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, vm_macro.def : rename VM_CALL_SUPER to VM_CALL_SUPER_BIT
-
- * insns.def (send) : set a flag of super as fcall
-
- * yarvtest/test_class.rb : add a test for above
-
-
-2006-02-14(Tue) 00:31:24 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_eval.rb: fix typo.
-
- * test/ruby/test_signal.rb: unlock tests.
-
-
-2006-02-13(Mon) 23:53:27 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, vm_macro.def : fix NODE_ZSUPER dispatch and
- fix error message when super without suitable method ([yarv-dev:846])
-
- * yarvcore.h : add VM_CALL_SUPER definition
-
- * yarvtest/test_method.rb : add a test of Module#private_class_method
-
-
-2006-02-13(Mon) 22:49:42 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : traverse all iseq to find super method ([yarv-dev:859])
-
- * yarvtest/test_class.rb : add a test for above
-
- * yarvcore.c : add clear iseq->defined_method_id
-
- * signal.c : fix to prohibit double segv handler kicked
-
-
-2006-02-13(Mon) 22:09:12 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_DECL, NODE_CLASS with NODE_CLON3 prefix
-
- * yarvtest/test_class.rb : add tests for above
-
-
-2006-02-13(Mon) 21:20:57 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix indent
-
- * compile.c : fix to prohibit "redo" from eval expression
-
-
-2006-02-13(Mon) 20:36:06 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : fix constant search bug ([yarv-dev:788])
-
- * yarvtest/test_class.rb : add a test of [yarv-dev:788]
-
-
-2006-02-13(Mon) 18:09:28 +0900 Koichi Sasada <[email protected]>
-
- * test/ruby/test_clone.rb : enable tests with Class#clone
-
- * test/ruby/test_marshal.rb : ditto
-
-
-2006-02-13(Mon) 17:42:37 +0900 Koichi Sasada <[email protected]>
-
- * class.c : support Class#clone
-
- * compile.c, insns.def : remove popcref
-
- * yarvcore.h, vm.c, insns.def : remove yarv_thread_t#cref_stack
-
- * eval.c, eval_intern.h, eval_load.c : ditto
-
- * yarvtest/test_class.rb : add tests for singleton class
-
- * gc.c : remove "FRAME *" unused variable
-
- * insnhelper.h : fix COPY_CREF
-
- * rb/mklog.rb : add default message
-
- * vm_macro.def : support NODE_ZSUPER as method type
-
-
-2006-02-13(Mon) 00:11:17 +0900 Koichi Sasada <[email protected]>
-
- * blockinlining.c : refoctoring with CFLAGS+=-Wunused
-
- * eval.c : ditto
-
- * eval_intern.h : ditto
-
- * eval_load.c : ditto
-
- * eval_method.h : ditto
-
- * eval_proc.c : ditto
-
- * eval_thread.c : ditto
-
- * insns.def : ditto
-
- * parse.y : ditto
-
- * thread.c : ditto
-
- * vm.c : ditto
-
-
-2006-02-13(Mon) 02:32:34 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_const.rb: show better message.
-
- * test/ruby/test_eval.rb: ditto.
-
- * test/ruby/test_module.rb: new file.
-
-
-2006-02-12(Sun) 22:22:35 +0900 Koichi Sasada <[email protected]>
-
- * array.c : revert last commit
-
- * ascii.c : ditto
-
- * bignum.c : ditto
-
- * class.c : ditto
-
- * compar.c : ditto
-
- * defines.h : ditto
-
- * dir.c : ditto
-
- * dln.c : ditto
-
- * dln.h : ditto
-
- * enum.c : ditto
-
- * enumerator.c : ditto
-
- * error.c : ditto
-
- * euc_jp.c : ditto
-
- * file.c : ditto
-
- * gc.c : ditto
-
- * hash.c : ditto
-
- * intern.h : ditto
-
- * io.c : ditto
-
- * lex.c : ditto
-
- * main.c : ditto
-
- * marshal.c : ditto
-
- * math.c : ditto
-
- * missing.h : ditto
-
- * node.h : ditto
-
- * numeric.c : ditto
-
- * object.c : ditto
-
- * oniguruma.h : ditto
-
- * pack.c : ditto
-
- * prec.c : ditto
-
- * process.c : ditto
-
- * random.c : ditto
-
- * range.c : ditto
-
- * rb/mklog.rb : ditto
-
- * re.c : ditto
-
- * regcomp.c : ditto
-
- * regenc.c : ditto
-
- * regenc.h : ditto
-
- * regerror.c : ditto
-
- * regex.h : ditto
-
- * regexec.c : ditto
-
- * regint.h : ditto
-
- * regparse.c : ditto
-
- * regparse.h : ditto
-
- * ruby.c : ditto
-
- * ruby.h : ditto
-
- * rubyio.h : ditto
-
- * rubysig.h : ditto
-
- * signal.c : ditto
-
- * sjis.c : ditto
-
- * sprintf.c : ditto
-
- * st.c : ditto
-
- * st.h : ditto
-
- * string.c : ditto
-
- * struct.c : ditto
-
- * time.c : ditto
-
- * utf8.c : ditto
-
- * util.c : ditto
-
- * util.h : ditto
-
- * variable.c : ditto
-
- * version.c : ditto
-
-
-2006-02-12(Sun) 21:33:10 +0900 Koichi Sasada <[email protected]>
-
- * array.c : fix to ruby's indent
-
- * ascii.c : ditto
-
- * bignum.c : ditto
-
- * blockinlining.c : ditto
-
- * call_cfunc.h : ditto
-
- * class.c : ditto
-
- * compar.c : ditto
-
- * compile.c : ditto
-
- * compile.h : ditto
-
- * debug.c : ditto
-
- * debug.h : ditto
-
- * defines.h : ditto
-
- * dir.c : ditto
-
- * disasm.c : ditto
-
- * dln.c : ditto
-
- * dln.h : ditto
-
- * enum.c : ditto
-
- * enumerator.c : ditto
-
- * error.c : ditto
-
- * euc_jp.c : ditto
-
- * eval.c : ditto
-
- * eval_error.h : ditto
-
- * eval_intern.h : ditto
-
- * eval_jump.h : ditto
-
- * eval_load.c : ditto
-
- * eval_method.h : ditto
-
- * eval_proc.c : ditto
-
- * eval_safe.h : ditto
-
- * eval_thread.c : ditto
-
- * file.c : ditto
-
- * gc.c : ditto
-
- * hash.c : ditto
-
- * insnhelper.h : ditto
-
- * insns.def : ditto
-
- * intern.h : ditto
-
- * io.c : ditto
-
- * lex.c : ditto
-
- * main.c : ditto
-
- * marshal.c : ditto
-
- * math.c : ditto
-
- * missing.h : ditto
-
- * node.h : ditto
-
- * numeric.c : ditto
-
- * object.c : ditto
-
- * oniguruma.h : ditto
-
- * opt_insn_unif.def : ditto
-
- * opt_operand.def : ditto
-
- * pack.c : ditto
-
- * prec.c : ditto
-
- * process.c : ditto
-
- * random.c : ditto
-
- * range.c : ditto
-
- * re.c : ditto
-
- * re.h : ditto
-
- * regcomp.c : ditto
-
- * regenc.c : ditto
-
- * regenc.h : ditto
-
- * regerror.c : ditto
-
- * regex.h : ditto
-
- * regexec.c : ditto
-
- * regint.h : ditto
-
- * regparse.c : ditto
-
- * regparse.h : ditto
-
- * ruby.c : ditto
-
- * ruby.h : ditto
-
- * rubyio.h : ditto
-
- * rubysig.h : ditto
-
- * signal.c : ditto
-
- * sjis.c : ditto
-
- * sprintf.c : ditto
-
- * st.c : ditto
-
- * st.h : ditto
-
- * string.c : ditto
-
- * struct.c : ditto
-
- * test.rb : ditto
-
- * thread.c : ditto
-
- * thread_pthread.h : ditto
-
- * thread_win32.h : ditto
-
- * time.c : ditto
-
- * utf8.c : ditto
-
- * util.c : ditto
-
- * util.h : ditto
-
- * variable.c : ditto
-
- * version.c : ditto
-
- * vm.c : ditto
-
- * vm.h : ditto
-
- * vm_dump.c : ditto
-
- * vm_evalbody.h : ditto
-
- * vm_macro.def : ditto
-
- * yarv.h : ditto
-
- * yarv_version.h : ditto
-
- * yarvcore.c : ditto
-
- * yarvcore.h : ditto
-
-
-2006-02-12(Sun) 15:53:21 +0900 Koichi Sasada <[email protected]>
-
- * lib/abbrev.rb : added
-
- * lib/base64.rb : ditto
-
- * lib/cgi-lib.rb : ditto
-
- * lib/csv.rb : ditto
-
- * lib/date2.rb : ditto
-
- * lib/eregex.rb : ditto
-
- * lib/ipaddr.rb : ditto
-
- * lib/irb.rb : ditto
-
- * lib/irb/cmd/chws.rb : ditto
-
- * lib/irb/cmd/fork.rb : ditto
-
- * lib/irb/cmd/help.rb : ditto
-
- * lib/irb/cmd/load.rb : ditto
-
- * lib/irb/cmd/nop.rb : ditto
-
- * lib/irb/cmd/pushws.rb : ditto
-
- * lib/irb/cmd/subirb.rb : ditto
-
- * lib/irb/completion.rb : ditto
-
- * lib/irb/context.rb : ditto
-
- * lib/irb/ext/change-ws.rb : ditto
-
- * lib/irb/ext/history.rb : ditto
-
- * lib/irb/ext/loader.rb : ditto
-
- * lib/irb/ext/math-mode.rb : ditto
-
- * lib/irb/ext/multi-irb.rb : ditto
-
- * lib/irb/ext/save-history.rb : ditto
-
- * lib/irb/ext/tracer.rb : ditto
-
- * lib/irb/ext/use-loader.rb : ditto
-
- * lib/irb/ext/workspaces.rb : ditto
-
- * lib/irb/extend-command.rb : ditto
-
- * lib/irb/frame.rb : ditto
-
- * lib/irb/help.rb : ditto
-
- * lib/irb/init.rb : ditto
-
- * lib/irb/input-method.rb : ditto
-
- * lib/irb/lc/error.rb : ditto
-
- * lib/irb/lc/help-message : ditto
-
- * lib/irb/lc/ja/CVS/Entries : ditto
-
- * lib/irb/lc/ja/CVS/Repository : ditto
-
- * lib/irb/lc/ja/CVS/Root : ditto
-
- * lib/irb/lc/ja/error.rb : ditto
-
- * lib/irb/lc/ja/help-message : ditto
-
- * lib/irb/locale.rb : ditto
-
- * lib/irb/notifier.rb : ditto
-
- * lib/irb/output-method.rb : ditto
-
- * lib/irb/ruby-lex.rb : ditto
-
- * lib/irb/ruby-token.rb : ditto
-
- * lib/irb/slex.rb : ditto
-
- * lib/irb/version.rb : ditto
-
- * lib/irb/workspace.rb : ditto
-
- * lib/irb/ws-for-case-2.rb : ditto
-
- * lib/irb/xmp.rb : ditto
-
- * lib/jcode.rb : ditto
-
- * lib/logger.rb : ditto
-
- * lib/mailread.rb : ditto
-
- * lib/mathn.rb : ditto
-
- * lib/parsedate.rb : ditto
-
- * lib/pathname.rb : ditto
-
- * lib/ping.rb : ditto
-
- * lib/pstore.rb : ditto
-
- * lib/resolv-replace.rb : ditto
-
- * lib/resolv.rb : ditto
-
- * lib/rss.rb : ditto
-
- * lib/rss/0.9.rb : ditto
-
- * lib/rss/1.0.rb : ditto
-
- * lib/rss/2.0.rb : ditto
-
- * lib/rss/content.rb : ditto
-
- * lib/rss/converter.rb : ditto
-
- * lib/rss/dublincore.rb : ditto
-
- * lib/rss/image.rb : ditto
-
- * lib/rss/maker.rb : ditto
-
- * lib/rss/maker/0.9.rb : ditto
-
- * lib/rss/maker/1.0.rb : ditto
-
- * lib/rss/maker/2.0.rb : ditto
-
- * lib/rss/maker/base.rb : ditto
-
- * lib/rss/maker/content.rb : ditto
-
- * lib/rss/maker/dublincore.rb : ditto
-
- * lib/rss/maker/image.rb : ditto
-
- * lib/rss/maker/syndication.rb : ditto
-
- * lib/rss/maker/taxonomy.rb : ditto
-
- * lib/rss/maker/trackback.rb : ditto
-
- * lib/rss/parser.rb : ditto
-
- * lib/rss/rexmlparser.rb : ditto
-
- * lib/rss/rss.rb : ditto
-
- * lib/rss/syndication.rb : ditto
-
- * lib/rss/taxonomy.rb : ditto
-
- * lib/rss/trackback.rb : ditto
-
- * lib/rss/utils.rb : ditto
-
- * lib/rss/xml-stylesheet.rb : ditto
-
- * lib/rss/xmlparser.rb : ditto
-
- * lib/rss/xmlscanner.rb : ditto
-
- * lib/rubyunit.rb : ditto
-
- * lib/scanf.rb : ditto
-
- * lib/shell.rb : ditto
-
- * lib/singleton.rb : ditto
-
- * lib/tsort.rb : ditto
-
- * lib/weakref.rb : ditto
-
- * eval_jump.c : removed
-
-
-2006-02-12(Sun) 15:39:09 +0900 Koichi Sasada <[email protected]>
-
- * parse.y : fix to remove including env.h
-
- * yarvtest/test_exception.rb : fix syntax (add 'end')
-
-
-2006-02-12(Sun) 15:14:44 +0900 Koichi Sasada <[email protected]>
-
- * env.h : removed
-
- * common.mk : remove env.h dependency
-
- * compile.c, eval_intern.h : remove include env.h
-
- * vm.c : ditto
-
- * ruby.h, gc.c, error.c : remove T_SCOPE, T_VARMAP
-
- * parse.y, eval.c : use rb_parse_in_eval() instead of ruby_in_eval
-
- * yarvcore.c, yarvcore.h : add a prase_in_eval member to yarv_thread_t
-
- * insns.def : add push value to throw instruction
- for stack consistency
-
- * yarvtest/test_exception.rb : add a test for above
-
- * test/ruby/test_gc.rb : fix typo
-
-
-2006-02-12(Sun) 05:05:02 +0900 Koichi Sasada <[email protected]>
-
- * eval.c, eval_intern.h, eval_load.c, eval_proc.c, node.h,
- insnhelper.h, insns.def, vm.c, yarvcore.c, yarvcore.h :
- change cref data structure and unify ruby_class and ruby_cbase
- and some refoctoring
-
-
-2006-02-11(Sat) 23:41:11 +0900 Koichi Sasada <[email protected]>
-
- * insns.def (methoddef) : fix method declaration in method
-
- * thread.c : Thread.critical to show warning (no effect)
-
-
-2006-02-11(Sat) 20:20:18 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix [yarv-dev:831]
-
- * yarvtest/test_class.rb : add a test for above
-
-
-2006-02-11(Sat) 14:29:01 +0900 Koichi Sasada <[email protected]>
-
- * rb/mklog.rb : use svk
-
- * error.c : remove newline
-
- * eval.c (rb_block_call) : added
-
- * eval_thread.c : remove some unused functions, comments
-
- * thread.c : add comments (move from eval_thread.c) and support Mutex
-
- * thread.c (rb_thread_select) : supported
-
- * thread_pthread.h (native_mutex_trylock) : added (macro)
-
- * thread_win32.h (native_mutex_trylock) : added
-
- * yarvcore.c : remove unused code
-
- * array.c : import ruby 1.9
-
- * compar.c : ditto
-
- * dln.c : ditto
-
- * enum.c : ditto
-
- * enumerator.c : ditto
-
- * ext/digest/digest.c : ditto
-
- * ext/digest/digest.h : ditto
-
- * ext/digest/sha2/sha2.c : ditto
-
- * ext/etc/etc.c : ditto
-
- * ext/win32ole/win32ole.c : ditto
-
- * hash.c : ditto
-
- * intern.h : ditto
-
- * io.c : ditto
-
- * main.c : ditto
-
- * missing.h : ditto
-
- * missing/flock.c : ditto
-
- * missing/isinf.c : ditto
-
- * missing/vsnprintf.c : ditto
-
- * lib/cgi.rb : ditto
-
- * lib/complex.rb : ditto
-
- * lib/delegate.rb : ditto
-
- * lib/erb.rb : ditto
-
- * lib/fileutils.rb : ditto
-
- * lib/matrix.rb : ditto
-
- * lib/mkmf.rb : ditto
-
- * lib/optparse.rb : ditto
-
- * lib/ostruct.rb : ditto
-
- * lib/pp.rb : ditto
-
- * lib/timeout.rb : ditto
-
- * lib/tmpdir.rb : ditto
-
- * lib/test/unit/autorunner.rb : ditto
-
- * node.h : ditto
-
- * object.c : ditto
-
- * parse.y : ditto
-
- * ruby.c : ditto
-
- * sample/test.rb : ditto
-
- * sprintf.c : ditto
-
- * st.c : ditto
-
- * test/ruby/test_whileuntil.rb : ditto
-
- * test/runner.rb : ditto
-
- * time.c : ditto
-
- * lib/net/.document : added
-
- * lib/net/ftp.rb : ditto
-
- * lib/net/http.rb : ditto
-
- * lib/net/https.rb : ditto
-
- * lib/net/imap.rb : ditto
-
- * lib/net/pop.rb : ditto
-
- * lib/net/protocol.rb : ditto
-
- * lib/net/smtp.rb : ditto
-
- * lib/net/telnet.rb : ditto
-
- * lib/open-uri.rb : ditto
-
-
-2006-02-10(Fri) 08:07:34 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def, yarvcore.h : support defined?(private_method) and
- defined?(protected_method) (separate DEFINE_METHOD / DEFINE_FUNC)
-
- * yarvtest/test_syntax.rb : add a test for above
-
- * compile.c (iseq_compile_each) : fix NODE_RETURN bug
- (double ensure invoke)
-
- * yarvtest/test_flow.rb : add a test for above
-
- * eval.c (get_errinfo) : fix to search $!
-
- * yarvtest/test_exception.rb : add tests for above
-
- * eval_safe.h : support $SAFE
-
- * ext/socket/socket.c : import ruby 1.9
-
- * gc.c (gc_mark_children) : fix making T_VALUE
-
- * test/ruby/test_gc.rb : use GC.stress
-
- * signal.c (sighandler) : send interrupt signal if thread blocked
-
- * test/ruby/test_proc.rb : remove assert false
-
- * test/ruby/test_readpartial.rb : change fail message
-
- * test/ruby/test_signal.rb : remove assert false
-
- * thread.c (thread_start_func_2) : set local_lfp/local_svar
- at thread creation
-
- * thread_pthread.h : export native_thread_interrupt
-
- * thread_win32.h : export native_thread_interrupt
-
- * version.h : import ruby 1.9
-
- * vm.c (lfp_svar), yarvcore.h : fix to use Thread local svar
-
- * yarvtest/test_thread.rb : add a test for above
-
- * win32/Makefile.sub : import ruby 1.9
-
- * win32/dir.h : ditto
-
- * win32/setup.mak : ditto
-
- * win32/win32.c : ditto
-
- * yarvtest/yarvtest.rb : fix to remove using ARGV
-
-
-2006-02-10(Fri) 01:04:58 +0900 Yukihiro Matsumoto <[email protected]>
-
- * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
- invoking finalizers.
-
- * gc.c (rb_gc_finalize_deferred): ditto.
-
-
-2006-02-08(Wed) 23:17:44 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_proc.rb: method names were wrongly duplicated.
-
-
-2006-02-08(Wed) 21:30:01 +0900 Minero Aoki <[email protected]>
-
- * ext/nkf: added (imported from ruby CVS trunk HEAD).
-
- * ext/nkf/depend: new file (rev 1.5).
-
- * ext/nkf/extconf.rb: new file (rev 1.2).
-
- * ext/nkf/nkf.c: new file (rev 1.12).
-
- * ext/nkf/test.rb: new file (rev 1.7).
-
- * ext/nkf/nkf-utf8/nkf.c: new file (rev 1.17).
-
- * ext/nkf/nkf-utf8/config.h: new file (rev 1.4).
-
- * ext/nkf/nkf-utf8/utf8tbl.c: new file (rev 1.6).
-
- * ext/nkf/lib/kconv.rb: new file (rev 1.13).
-
- * test/nkf: added (imported from ruby CVS trunk HEAD).
-
- * test/nkf/test_kconv.rb: new file (rev 1.1).
-
- * test/nkf/test_nkf.rb: new file (rev 1.1).
-
-
-2006-02-08(Wed) 21:07:36 +0900 Minero Aoki <[email protected]>
-
- * lib/find.rb: new file (imported from ruby CVS trunk HEAD,
- rev 1.15).
-
-
-2006-02-07(Tue) 17:58:18 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : support BEGIN{} and add preexe instruction
-
- * insns.def : fix getspecial/setspecial instructions
- to catch up svar change
-
- * test/ruby/test_system.rb : remove stopper
-
- * thread.c (rb_thread_fd_writable) : add a debug output
-
- * thread.c (rb_thread_wait_fd) : add a debug output
-
- * vm.c (lfp_svar) : refactoring and fix some problems
-
- * vm_dump.c (yarv_bug) : add branch
-
- * yarv.h : remove unused declarations
-
- * yarvcore.c (vm_free) : VM object should not free by GC
-
-
-2006-02-07(Tue) 14:42:25 +0900 Koichi Sasada <[email protected]>
-
- * eval.c, eval_load.c : remove rb_thread_start_1()
-
- * eval.c : fix some prototypes and indents
-
- * eval_thread.c, thread.c : move some functions
- from eval_thread.c to thread.c
-
- * signal.c (sighandler) : add line braek in error message
-
- * yarvcore.c, yarvcore.h, thread.c : support ThreadGroup
-
- * ruby.h, gc.c, vm.c : make new basic type RValue and T_VALUE.
- RValue includes three values in itself. RValue is used as
- svar
-
-
-2006-02-06(Mon) 23:51:41 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_hash.rb: import many tests from rubicon.
-
-
-2006-02-04(Sat) 18:36:41 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_array.rb: import many tests from rubicon.
-
-
-2006-02-04(Sat) 17:47:44 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_signal.rb (test_exit_action): lib/timeout.rb is
- not implemented yet.
-
-
-2006-02-04(Sat) 17:42:31 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_readpartial.rb: lib/timeout.rb is not implemented
- yet.
-
-
-2006-02-04(Sat) 16:22:38 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_pipe.rb: remove useless require.
-
- * test/ruby/test_signal.rb: turn off the test case which causes
- segmentation fault (tmp).
-
-
-2006-02-04(Sat) 08:19:50 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add dependency to yarvcore.h on signal.o
-
- * compile.c (iseq_compile_each) : fix [yarv-dev:795] problem
- (prohibit "break", "next" jump from eval)
-
- * eval.c : fix indent
-
- * eval_thread.c, thread.c : remove some functions and move to thread.c
-
- * insns.def, vm.c : fix [yarv-dev:799] and [yarv-dev:800]
-
- * yarvtest/test_class.rb : add a test for above
-
- * test/ruby/test_gc.rb : remove GC.debug_flag control
-
- * test/ruby/test_readpartial.rb : disable
-
- * test/ruby/test_signal.rb : disable
-
- * thread.c : fix thread_debug() and many bugs
-
- * thread.c (yarv_thread_s_new) : move living_threads setting
-
- * thread.c (yarv_thread_join) : fix
-
- * thread_pthread.h : add type native_thread_data_t (dummy)
- and support interrupt blocking thread
-
- * thread_pthread.h (native_thread_apply_priority) : added
-
- * thread_win32.h : add type native_thread_data_t (dummy)
- and support interrupt blocking thread
-
- * yarvcore.h : use win32 thread system on cygwin and fix
- some struct members
-
- * yarvtest/test_thread.rb : added
-
-
-2006-02-03(Fri) 00:08:09 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_string.rb: import many tests from rubicon.
-
-
-2006-02-02(Thu) 23:20:13 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/envutil.rb: new file (imported from ruby trunk HEAD).
-
- * test/ruby/marshaltestlib.rb: ditto.
-
- * test/ruby/test_array.rb: ditto.
-
- * test/ruby/test_beginendblock.rb: ditto.
-
- * test/ruby/test_clone.rb: ditto.
-
- * test/ruby/test_dir.rb: ditto.
-
- * test/ruby/test_env.rb: ditto.
-
- * test/ruby/test_file.rb: ditto.
-
- * test/ruby/test_float.rb: ditto.
-
- * test/ruby/test_fnmatch.rb: ditto.
-
- * test/ruby/test_hash.rb: ditto.
-
- * test/ruby/test_io.rb: ditto.
-
- * test/ruby/test_marshal.rb: ditto.
-
- * test/ruby/test_math.rb: ditto.
-
- * test/ruby/test_pack.rb: ditto.
-
- * test/ruby/test_path.rb: ditto.
-
- * test/ruby/test_pipe.rb: ditto.
-
- * test/ruby/test_rand.rb: ditto.
-
- * test/ruby/test_range.rb: ditto.
-
- * test/ruby/test_readpartial.rb: ditto.
-
- * test/ruby/test_regexp.rb: ditto.
-
- * test/ruby/test_settracefunc.rb: ditto.
-
- * test/ruby/test_signal.rb: ditto.
-
- * test/ruby/test_sprintf.rb: ditto.
-
- * test/ruby/test_string.rb: ditto.
-
- * test/ruby/test_stringchar.rb: ditto.
-
- * test/ruby/test_struct.rb: ditto.
-
- * test/ruby/test_symbol.rb: ditto.
-
- * test/ruby/test_system.rb: ditto.
-
- * test/ruby/test_time.rb: ditto.
-
- * test/ruby/ut_eof.rb: ditto.
-
-
-2006-02-02(Thu) 22:53:44 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_proc.rb: test [yarv-dev:777].
-
-
-2006-02-01(Wed) 03:51:39 +0900 Koichi Sasada <[email protected]>
-
- * gc.c : add GC.debug_flag= method
-
- * insns.def : support method definition in method
-
- * yarvtest/test_method.rb : add tests for above
-
-
-2006-01-29(Sun) 11:40:26 +0900 Koichi Sasada <[email protected]>
-
- * eval_proc.c (proc_alloc) : fix [yarv-dev:777]
-
- * yarvtest/test_proc.rb : add a test for above
-
- * insns.def : fix [yarv-dev:782] and add YARV_CHECK_INTS()
-
- * yarvtest/test_class.rb : add a test for above
-
- * thread_win32.h : fix [yarv-dev-en:23]
-
- * vm.c (th_call0) : add YARV_CHECK_INTS()
-
-
-2006-01-09(Mon) 11:56:34 +0900 Minero Aoki <[email protected]>
-
- * yarvcore.h: add prototype (remove warning).
-
- * vm.c (th_invoke_proc): make save variables volatile.
-
- * eval.c (eval): initialize local variables (remove warnings).
-
- * eval_thread.c (rb_exec_recursive): ditto.
-
- * yarvcore.c (thread_mark): ditto.
-
- * vm.c (th_invoke_proc): ditto.
-
- * eval.c: remove useless prototypes.
-
-
-2006-01-09(Mon) 10:25:12 +0900 Minero Aoki <[email protected]>
-
- * eval_thread.c: rb_thread_join is required to build ruby on
- Linux.
-
- * compile.c: unify coding style.
-
- * yarvcore.c: ditto.
-
-
-2006-01-06(Fri) 09:21:34 +0900 Minero Aoki <[email protected]>
-
- * vm.c: coding style change only.
-
-
-2006-01-04(Wed) 14:12:47 +0900 Koichi Sasada <[email protected]>
-
- * eval.c (ruby_init), eval_intern.h : use POP_TAG_INIT() at bootstrap
-
- * eval_thread.c : remove unused functions and comments
-
- * intern.h : expose rb_make_exception()
-
- * signal.c : support signal
-
- * thread.c (yarv_thread_execute_interrupts) : added
-
- * thread_pthread.h (thread_timer) : set interrupt_flag of
- current runnning threads
-
- * vm.c (th_invoke_proc) : jump with JUMP_TAG() if some exception
- occurres
-
- * yarv.h : add yarv_set_current_running_thread_raw() for bootstrap
-
- * yarvcore.c : add yarv_segv() and segv() method for test
-
- * yarvcore.c (Init_yarvcore) : set yarv_thread_t#running_thread
-
- * yarvcore.h : fix yarv_thread_t members
-
-
-2006-01-03(Tue) 22:25:04 +0900 Koichi Sasada <[email protected]>
-
- * disasm.c (insn_operand_intern) : fix to add child iseq
-
- * eval.c, gc.c : remove obsolete static variables (ruby_scope,
- ruby_dyna_vars, ruby_frame)
-
- * eval.c (rb_mod_s_constants) : use ruby_cref()
-
- * eval.c (eval) : use th_restore_klass()
-
- * eval_proc.c (rb_f_binding) : use th_store_klass()
-
- * insns.def (concatarray) : fix insn ([expr, *nil] => [expr])
-
- * vm.c (th_set_env), insnhelper.h : remove macro
-
- * vm.c (eval_get_cvar_base) : use get_cref
-
- * vm.c (th_make_proc) : use th_store_klass()
-
- * vm_macro.def (macro_eval_invoke_func) : fix option args size
-
- * vm_macro.def (macro_eval_invoke_func) : raise stack overflow error
-
- * yarvcore.h : add yarv_stored_klass_t type
-
- * yarvcore.c : fix mark functions around yarv_stored_klass_t
-
-
-2006-01-01(Sun) 05:14:26 +0900 Minero Aoki <[email protected]>
-
- * lib/benchmark.rb: new file (imported from original ruby, rev
- 1.10).
-
-
-2006-01-01(Sun) 03:51:10 +0900 Minero Aoki <[email protected]>
-
- * yarvcore.c: add prototype.
-
- * re.c: remove warning: long -> unsigned long.
-
- * debug.c: adjust coding style.
-
- * yarv.h: ditto.
-
-
-2006-01-01(Sun) 03:43:33 +0900 Minero Aoki <[email protected]>
-
- * variable.c: add prototype.
-
- * eval.c: ditto.
-
- * eval_load.c: ditto.
-
-
-2006-01-01(Sun) 02:41:21 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add address analyse to vtune rule
-
- * rb/vtlh.rb : added for above
-
- * rb/insns2vm.rb, template/vm.inc.tmpl : insert #line directive
- to reference above
-
- * vm_macro.def (macro_eval_invoke_cfunc) : fix indent
-
- * yarvtest/test_method.rb : fix indent, spacing
- and add a test for alias
-
-
-2005-12-31(Sat) 12:42:05 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add Intel VTune rule (make vtune)
-
- * eval.c, yarvcore.h : fix to remove yarv_thread_t#local_*
-
- * parse.y (top_local_init_gen) : fix a problem ([yarv-dev:765])
-
- * yarvtest/test_eval.rb : add a test for above
-
- * vm.c (thread_eval) :remove unused function
-
- * yarvcore.c (Init_yarvcore) : remove YARVCore::Thread::eval method
-
- * yarvcore.c (thread_eval) : remove unused function
-
-
-2005-12-31(Sat) 06:05:00 +0900 Koichi Sasada <[email protected]>
-
- * vm.c (eval_search_super_klass) : pass block to method missing
-
- * vm_macro.def (macro_eval_invoke_method) : ditto
-
- * yarvtest/test_method.rb : add a test for above
-
-
-2005-12-31(Sat) 03:11:14 +0900 Koichi Sasada <[email protected]>
-
- * eval.c (eval), eval_proc.c (rb_f_binding) : save klass, etc to
- binding and use it at eval
-
- * eval_intern.h : ditto
-
- * yarvtest/test_eval.rb : add tests for above
-
- * yarvcore.c (th_get_special_cref) : added
-
- * yarvcore.h : add a prototype of above
-
- * vm.c (th_get_cref) : refactoring
-
- * vm.c (eval_get_ev_const) : fix SEGV at A::B (A is not class/module)
- ([yarv-dev:758])
-
- * yarvtest/test_bin.rb : add a test for above
-
- * rb/mklog.rb : use external diff command and show function name
-
-
-2005-12-30(Fri) 19:07:51 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, yarvcore.h, eval.c, eval_proc.c : support
- Ruby's Binding
-
- * yarvcore.c : support TOPLEVEL_BINDING
-
- * yarvtest/test_eval.rb : add tests for above
-
-
-2005-12-30(Fri) 13:12:28 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_eval.rb: more tests for
- module_eval/instance_eval.
-
-
-2005-12-30(Fri) 05:06:49 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add dependency (yarvcore.h) for gc.c
-
- * eval.c, eval_intern.h, eval_load.c, eval_method.h,
- insns.def, insnhelper.h, vm.c, yarvcore.c, yarvcore.h :
- re-write class reference
-
- * yarvtest/test_eval.rb : added
-
- * yarvtest/test_proc.rb :
-
-
-2005-12-29(Thu) 12:27:12 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, yarvcore.h :
- remvoe needless yarv_iseq_t#rewind_frame_size
-
-
-2005-12-29(Thu) 11:17:58 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add dependency to test-all rule
-
- * eval.c (rb_sourceline), vm.c (th_get_sourceline) :
- fix to skip process if iseq is ifunc
-
- * test/ruby/test_lambda.rb : assert(fail, ...) instead of assert_fail
-
- * test/ruby/test_proc.rb : ditto
-
- * vm_dump.c : fix stack dump (iseq name)
-
- * vm_macro.def : store proc (block proc) to cfp#proc for GC mark
-
- * yarvcore.c : mark above on thread_mark
-
- * eval.c (exec_under) : replace block#self ([yarv-dev:751])
-
-
-2005-12-29(Thu) 01:56:46 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : fix setting of Proc cref ([yarv-dev:741])
-
- * yarvcore.c : fix indent
-
-
-2005-12-29(Thu) 00:17:03 +0900 Koichi Sasada <[email protected]>
-
- * disasm.c : show (block) local variable simple (not as symbol)
-
- * gc.c : fix syntax error
-
-
-2005-12-28(Wed) 23:35:06 +0900 Koichi Sasada <[email protected]>
-
- * class.c (method_entry) : fixed for undefed method ([yarv-dev:743])
-
- * compile.c : fix errinfo dvar id (#$!)
- and fix NODE_ERRINFO compilation
-
- * eval_proc.c, yarvcore.c : support YARVCore::VM::Proc.new
-
- * insns.def : remove useless TODO comments
-
- * insns.def : fix to use strict array conversion on
- checkarrayinclude
-
- * insns.def : fix defined?(yield) ([yarv-dev:744])
-
- * yarvcore.h : change yarv_iseq_t layout
-
-
-2005-12-28(Wed) 16:49:55 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_eval.rb: add TODO comment.
-
- * test/ruby/test_iterator.rb: rename YARVCore::VM::Proc -> Proc
- (tmp).
-
- * test/ruby/test_lambda.rb: use assert_fail.
-
- * test/ruby/test_proc.rb: ditto.
-
-
-2005-12-28(Wed) 16:28:35 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_clone.rb: removed (tmp).
-
- * test/ruby/test_eval.rb: define missing method Object#funcall
- (tmp).
-
- * test/ruby/test_lambda.rb: turn off tests for "->".
-
- * test/ruby/test_proc.rb: turn off tests for |&b|.
-
- * test/ruby/test_proc.rb: turn off tests for $SAFE setter.
-
-
-2005-12-28(Wed) 15:31:46 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix calculation of stack_max
-
- * eval.c (rb_iter) : fix block/retry handling
-
- * yarvtest/test_flow.rb : add tests for above
-
- * insns.def : fix block passing on super (super(&nil))
-
- * vm_macro.def, insns.def : fix convert method of object to array
-
- * yarvtest/test_method.rb : fix a test for above
-
- * vm.c : fix backtrace generate algorithm
-
-
-2005-12-28(Wed) 10:36:45 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, compile.h : refactoring (remove self passing, etc)
-
- * disasm.c : support showing ID of method/dynamic local variables
-
- * rb/allload.rb : add verbose version (it's enable by $DEBUG)
-
- * template/insns.inc.tmpl, template/insns_info.inc.tmpl,
- template/minsns.inc.tmpl, template/opt_sc.inc.tmpl,
- template/optinsn.inc.tmpl, template/optunifs.inc.tmpl,
- template/vmtc.inc.tmpl : fix a comment
-
- * variable.c (mod_av_set) : fix to clear inline cache ([yarv-dev:720])
-
- * eval_method.h : fix to clear inline method cache
-
- * vm.c, rb/insns2vm.rb, template/insns_info.inc.tmpl, compile.c,
- insns.def, vm_evalbody.h, vm_macro.def :
- fix operands types (ulong -> num_t, ...)
-
- * vm_macro.def : fix to check SPECIAL_CONST_P() at splat array
- ([yarv-dev:722])
-
- * yarvcore.c : fix to throw syntax error
-
- * yarvcore.h, eval.c, eval_error.h, eval_jump.h :
- add yarv_vm_t#exit_code to fix problem at cleanup ([yarv-dev:723])
-
- * insns.def : fix to invoke zsuper in method defined by define_method
- ([yarv-dev:704])
-
- * yarvtest/test_class.rb : add tests for above
-
- * yarvtest/test_method.rb : fix comments
-
-
-2005-12-27(Tue) 01:52:07 +0900 Koichi Sasada <[email protected]>
-
- * array.c, intern.h, insns.def : expose rb_ary_replace and use it
- in insns.def
-
- * eval.c : fix to use SCOPE_* to NOEX_*
-
- * eval_intern.h : remove SCOPE_*
- and fix SCOPE_TEST() and SCOPE_SET(f)
-
- * eval_load.c : save and store klass and visibility
- at require and load
-
- * eval_method.h : fix undefed method node ([yarv-dev-en:8])
-
- * eval_proc.c : fix define_method ([yarv-dev:704])
-
- * insnhelper.h, vm.h : remove GET_VM_STATE_VERSION(),
- INC_VM_STATE_VERSION() and move these to vm.h
-
- * insns.def : supportintg visibility
-
- * node.h : remove NOEX_RECV
-
- * variable.c, vm.c : add rb_vm_change_state() and use it in
- remove_const
-
- * vm.c, insns.def, yarvcore.h, yarvcore.c : add eval_push_cref(),
- eval_pop_cref() and th_cref_init to manage current visibility
-
- * yarv.h : add a prototype of rb_vm_change_state()
-
- * yarvcore.h, insns.def : add defined_method_id and support
- super in define_method scope
-
- * yarvtest/test_class.rb : add tests for above
-
-
-2005-12-26(Mon) 20:44:38 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_basicinstructions.rb: new file.
-
-
-2005-12-26(Mon) 08:40:02 +0900 Koichi Sasada <[email protected]>
-
- * vm.c (eval_get_ev_const) : fix to skip nil
-
-
-2005-12-26(Mon) 08:27:15 +0900 Koichi Sasada <[email protected]>
-
- * insnhelper.h : fix GET_CVAR_EV_KLASS [yarv-dev:703]
-
-
-2005-12-26(Mon) 07:51:01 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : add emptstack insn for all NODE_RETURN
- and optimize it if it's not needed
-
- * yarvtest/test_flow.rb : add a test for above
-
-
-2005-12-26(Mon) 07:08:22 +0900 Koichi Sasada <[email protected]>
-
- * eval.c, gc.c : add "gc_debug_flag" to debug gc
-
- * insns.def : add emptstack
-
- * compile.c, rb/insns2vm.rb, template/insns_info.inc.tmpl :
- change interface of insn_stack_increase
-
- * compile.c : fix return from ensure in method [yarv-dev:702]
-
- * yarvtest/test_flow.rb : add tests for above
-
-
-2005-12-26(Mon) 02:15:02 +0900 Minero Aoki <[email protected]>
-
- * test/ruby/test_alias.rb: do not use unimplemented defined?.
-
-
-2005-12-26(Mon) 02:00:11 +0900 Minero Aoki <[email protected]>
-
- * test/runner.rb: new file.
-
- * test/ruby/test_alias.rb: new file.
-
- * test/ruby/test_clone.rb: new file.
-
- * test/ruby/test_eval.rb: new file.
-
- * test/ruby/test_iterator.rb: new file.
-
- * test/ruby/test_lambda.rb: new file.
-
- * test/ruby/test_proc.rb: new file.
-
- * test/ruby/test_super.rb: new file.
-
- * test/ruby/test_assignment.rb: new file.
-
- * test/ruby/test_bignum.rb: new file.
-
- * test/ruby/test_call.rb: new file.
-
- * test/ruby/test_case.rb: new file.
-
- * test/ruby/test_condition.rb: new file.
-
- * test/ruby/test_const.rb: new file.
-
- * test/ruby/test_defined.rb: new file.
-
- * test/ruby/test_exception.rb: new file.
-
- * test/ruby/test_gc.rb: new file.
-
- * test/ruby/test_ifunless.rb: new file.
-
- * test/ruby/test_method.rb: new file.
-
- * test/ruby/test_trace.rb: new file.
-
- * test/ruby/test_variable.rb: new file.
-
- * test/ruby/test_whileuntil.rb: new file.
-
-
-2005-12-25(Sun) 07:40:08 +0900 Koichi Sasada <[email protected]>
-
- * blockinlining.c, compile.c : fix block inlining
-
- * rb/insns2vm.rb : fix to support tracing stack depth
- with operands unification
-
- * vm_dump.c : fix to print Qundef on stack dump
-
-
-2005-12-25(Sun) 01:45:55 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, compile.c, rb/insns2vm.rb, template/insns_info.inc.tmpl :
- trace stack depth at compile time
- and use it as cont_sp for exception handling
-
- * yarvtest/test_exception.rb : add tests for above
-
- * yarvtest/test_flow.rb : ditto
-
- * Merry Xmas :)
-
-
-2005-12-24(Sat) 19:34:04 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, compile.h : fix ADD_CATCH_ENTRY and add LABEL#sp
-
- * eval_jump.h : fix catch to remove illegal error
-
-
-2005-12-24(Sat) 09:05:23 +0900 Koichi Sasada <[email protected]>
-
- * eval_method.h : change data structure for RClass#m_tbl
-
- * class.c, eval.c, eval_proc.c : fix for above changes
-
- * node.h, gc.c : change NODE_FBODY, NODE_METHOD members
- for above changes
-
- * insns.def : support private/protected visibility
-
- * vm_macro.def : ditto
-
- * vm.c : ditto
-
- * thread.c : fix typo
-
- * thread_pthread.h : fix typo
-
- * thread_win32.h : fix typo
-
- * eval.c, yarvcore.h : add yarv_thread_t#method_missing_reason
- to pass method_missing reason and use it to build error message
-
- * compile.c : use ADD_CALL instead of ADD_SEND for
- NODE_X(D)STR, NODE_CONST (func)
-
-
-2005-12-22(Thu) 02:45:27 +0900 Koichi Sasada <[email protected]>
-
- * yarv_version.h, Changes : 0.3.3
-
-
-2005-12-20(Tue) 04:04:45 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix self::Const access
-
- * yarvtest/test_bin.rb : add a test for above
-
-
-2005-12-20(Tue) 01:52:52 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix to expand VALUES value
-
- * yarvtest/test_massign.rb : add a test for above
-
-
-2005-12-20(Tue) 01:32:35 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, insnhelper.h : fix cvar in singleton method/class
-
- * yarvtest/test_bin.rb : add tests for above
-
-
-2005-12-20(Tue) 01:03:34 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, yarvcore.h : support all defined?() syntax
-
- * compile.c : fix NODE_COLON2
-
- * yarvtest/test_bin.rb : add or fix tests for above
-
- * win32/* : update all
-
-
-2005-12-17(Sat) 10:46:08 +0900 Minero Aoki <[email protected]>
-
- * vm_macro.def: fix printf type mismatch for LP64 system (again).
-
- * parse.y: introduce descriptive macro for special values of
- lvtbl->dvars.
-
-
-2005-12-17(Sat) 09:39:27 +0900 Minero Aoki <[email protected]>
-
- * vm_macro.def (macro_eval_invoke_method): fix printf type mismatch
- for LP64 system.
-
-
-2005-12-14(Wed) 03:49:40 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : change rescue/ensure iseq name
-
- * eval.c, intern.h : fix a prototype
-
- * insns.def, yarvcore.h : add trace_function
-
- * vm.c : fix deadly bug (illegal pointer cast)
-
- * vm_dump.c : remove unused local variables
-
- * vm_macro.def : add parameter size check
-
- * yarvtest/test_bin.rb : comment out 2 assertions
-
-
-2005-12-13(Tue) 03:55:27 +0900 Koichi Sasada <[email protected]>
-
- * eval_proc.c : fix indent
-
- * insns.def : fix getspecial instruction to return nil
- if no entry
-
- * yarvtest/test_syntax.rb : add a test for above
-
- * lib/un.rb : added
-
- * template/*.tmpl : fix typo
-
-
-2005-12-13(Mon) 01:38:17 +0900 Minero Aoki <[email protected]>
-
- * yarv.h: add prototypes.
-
- * intern.h: ditto.
-
- * eval.c: ditto.
-
- * debug.c: ditto.
-
- * thread_pthread.h: fix printf type mismatch for LP64 system
- (Linux/AMD64).
-
- * variable.c: ditto.
-
- * object.c: ditto.
-
- * gc.c: ditto.
-
- * process.c: ditto.
-
- * error.c: ditto.
-
- * vm.c: ditto.
-
- * vm.h: ditto.
-
- * vm_dump.c: ditto.
-
- * disasm.c: ditto.
-
- * marshal.c: ditto.
-
- * eval_thread.c: ditto.
-
-
-2005-12-11(Sun) 22:00:34 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : call "inherited" method when a class is inherited
-
- * yarvcore.h : fix yarv_iseq_t field layout
-
- * common.mk : add dependence on yarvcore.h to eval*.o files
-
- * compile.c : fix NODE_POSTEXE logic
-
- * insnhelper.h : use GC_GUARDED_PTR_REF instead of magic number
-
- * eval_proc.c : fix indent
-
- * configure : re-autoconf
-
-
-2005-12-10(Sat) 03:57:20 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : fix blockinlining.o build rule
-
- * insns.def : remove logic for zsuper
-
- * template/optinsn.inc.tmpl :
-
- * vm.c : remove thread_yield_light_prepare, thread_yield_light_invoke
-
- * compile.c : support NODE_ZSUPER with optargs, restarg
-
- * yarvtest/test_class.rb : add tests for above
-
-
-2005-12-09(Fri) 01:13:37 +0900 Koichi Sasada <[email protected]>
-
- * array.c, numeric.c, range.c : add prototype of
- block inlining function
-
- * blockinlining.c, vm_opts.h.base : add block inlining flag
-
- * common.mk, debug.h, debug.c : add debug_breakpoint() for gdb
-
- * compile.c : fix to use size_t on compile_data_alloc(),
- fix illegal cast, fix to set arg_simple at compiling block,
-
- * compile.c, vm.c : fix NODE_NEXT, NODE_BREAK logic
-
- * yarvtest/test_flow.rb : add a test for above
-
- * yarvcore.c, yarvcore.h, compile.c, eval.c : remove
- yarv_iseq_t#root_iseq and add yarv_iseq_t#local_iseq and fix
- to use this member field
-
- * eval_method.h : fix indent
-
- * gc.c : fix indent
-
- * insns.def, compile.c : remove "zsuper" instruction (use "super"
- instead). This is because NODE_ZSUPER represent with only "super"
- instruction
-
- * yarvcore.c : add proc_arity
-
-
-2005-12-05(Mon) 03:58:30 +0900 Koichi Sasada <[email protected]>
-
- * array.c, blockinlining.c : support block inlining for Array#each
-
- * disasm.c : fix catch table format
-
- * insns.def : fix stack consistency error message
-
- * vm.c : fix to skip pushing value at "next"
-
- * yarvcore.h : move definision of
- "struct iseq_compile_data_ensure_node_stack" to compile.c
-
- * compile.c : fix ensure catch table creation
-
- * yarvtest/test_flow.rb : add tests for above
-
-
-2005-12-03(Sat) 22:27:08 +0900 Koichi Sasada <[email protected]>
-
- * blockinlining.c, compile.c, yarvcore.c, yarvcore.h,
- numeric.c, range.c : collect block inlining logic to blockinlining.c
-
-
-2005-12-03(Sat) 20:24:07 +0900 Koichi Sasada <[email protected]>
-
- * blockinlining.c, common.mk : add blockinlining.c
-
- * yarvcore.c, yarvcore.h, blockinlining.c, compile.c, compile.h,
- gc.c, node.h, numeric.c, range.c :
- support block inlining for Integer#times, Range#each
-
- * compile.c : fix to set block redo/next point at last,
- and fix NODE_OP_ASGN1
-
- * compile.c, vm.c : add specialized instruction "opt_le"
-
- * disasm.c : fix to show block, and to show catch type as string
- and change node_name logic
-
- * eval_thread.c : fix function type declaration
-
- * insns.def : add instruction "putundef", "opt_checkenv"
- to support block inlining and add stack check routine
-
- * lib/cgi.rb : add global variable $CGI_DONTINPUT
-
- * opt_operand.def : add some operand unification rules
-
- * rb/insns2vm.rb : fix operand unification logic for BLOCKISEQ
-
- * vm.c : fix exception handling routine (collect stack operations)
-
- * vm_macro.def : fix macro_eval_invoke_bmethod
-
- * yarvsubst.c : removed
-
- * yarvtest/test_syn.rb : rename to yarvtest/test_syntax.rb
-
- * yarvtest/yarvtest.rb : remove tempfile explicitly
-
-
-2005-11-30(Wed) 01:13:57 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add vm_opts.h rule
-
- * vm.c, insns.def : fix proc creation under class and block
- environment
-
-
-2005-11-29(Tue) 16:39:07 +0900 Koichi Sasada <[email protected]>
-
- * eval.c, eval_proc.c, vm.c, vm_macro.def :
- support define_method and invoke NODE_BMETHOD method
-
-
-2005-11-29(Tue) 13:18:06 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : add iseq_add_mark_object, iseq_add_mark_object_compile_time
- and use it to mark objects on iseq
-
- * compile.h, compile.c : remove cast on NEW_CHILD_ISEQVAL, NEW_ISEQVAL
- and interface
-
- * compile.c, disasm.c, insns.def, vm_macro.def, rb/insns2vm.rb :
- add BLOCKISEQ parameter type
-
- * gc.c : fix garbage_collect to return true if only allocate memory
-
- * vm.c : fix insertion order of proc/env
-
- * vm_evalbody.h : add typedef yarv_iseq_t *BLOCKISEQ
-
- * yarvcore.c, yarvcore.c : add idTimes
-
- * yarvcore.c : fix proc_mark, env_mark around iseq mark
-
-
-2005-11-28(Mon) 09:02:57 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def, vm_evalbody.h : support super
- with splat argument and block (and zsuper with block)
-
- * yarvtest/test_class.rb : add tests for above
-
- * compile.c, yarvcore.h, yarvcore.c, insns.def, time.c, string.c :
- add opt_succ insn
-
- * eval_method.h : fix indent
-
- * eval_thread.c : apply cast to vanish a warning
-
- * lib/tempfile.rb, lib/tmpdir.rb : added
-
- * vm.c : eval_method_missing added
-
- * vm_macro.def : refactoring
-
-
-2005-11-21(Mon) 21:21:33 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, compile.h, yarvcore.c : remove "iseqobj"
- variables and rename to "iseq"
-
-
-2005-11-21(Mon) 07:31:50 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix block parameter error
-
- * ext/* : added
-
- * lib/optparse* : added
-
- * benchmark/bm_so_sieve.rb : fix parameter
-
-
-
-2005-11-21(Mon) 03:47:28 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : optimize condition in literal
-
- * thread_win32.h : fix win32 thread function prototype
-
-
-2005-11-20(Sun) 17:58:24 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix NODE_AND/OR bug
-
- * eval.c : support rb_frame_this_func()
-
-
-2005-11-20(Sun) 12:32:31 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, yarvcore.c, yarvcore.h : support NODE_OPT_N
-
- * compile.h : add macro ADD_CALL
-
- * debug.c : add debug_v() and change to use only printf
- on debug_id()
-
- * sample/test.rb :
-
- * vm.c : fix make_proc_from_block
-
-
-2005-11-19(Sat) 14:55:17 +0900 Koichi Sasada <[email protected]>
-
- * import ruby 1.9.0 (2005-11-18)
-
-
-2005-11-19(Sat) 06:08:37 +0900 Koichi Sasada <[email protected]>
-
- * lib/test : added
-
-
-2005-11-19(Sat) 05:48:50 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : useless jump elimination (if/unless destination)
-
- * eval.c : rb_iter_break support,
- fix rb_iterate (clear errinfo if break)
-
- * eval_proc.c : support rb_node_arity (YARV_METHOD_NODE)
-
- * insns.def : change variable name
-
- * vm.c : fix th_invoke_yield and add th_iter_break()
-
- * vm_dump.c : fix yarv_bug()
-
- * yarvcore.c : fix proc_mark to check IFUNC node and add
- global ruby method SDR() for debug
-
- * yarvtest/test_syn.rb : add a test for all condition combination
-
-
-2005-11-15(Tue) 05:52:58 +0900 Koichi Sasada <[email protected]>
-
- * lib/forwardable.rb : added
-
- * common.mk : remove "vm.o : CFLAGS += -fno-crossjumping" rule
-
- * compile.c, yarvcore.h, insns.def : add FCALL/VCALL flag
-
- * compile.c, insns.def : add onceinlinecache instruction
-
- * eval.c : support $!, $@, raise (== raise $!)
-
- * opt_operand.def : add some unification rule (send flags)
-
- * vm.c : fix return process
-
- * vm_macro.def : fix option prameters
-
- * yarvtest/test_method.rb : add tests for above
-
-
-2005-11-15(Tue) 00:42:49 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : support rb_frame_pop() and rb_frame_callee(),
- add rb_sourcefile(), rb_souceline(),
-
-
- * compile.c : support postposition while/until,
- fix block parameter index
-
- * yarvtest/test_syn.rb : add tests for above
-
- * yarvcore.c : fix env_mark
-
- * vm.h, yarvcore.h : move vm.h#cmethod_info to
- yarvcore.h#yarv_cmethod_info
-
- * vm.c : add th_get_sourceline()
-
- * eval_intern.h : fix PASS_PASSED_BLOCK()
-
- * eval_load.c : fix re-enter require (temporalily)
-
- * insns.def : permit re-open class when superclass is same
-
-
-2005-11-11(Fri) 01:20:15 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : add "allload" rule
-
- * compile.c, yarvcore.h, insns.def, vm_macro.def, disasm.c :
- change arg_rest, arg_block offset (1)
-
- * insns.def : add postexe instruction
-
- * insns.def, vm.c : support rest block parameter
-
- * yarvtest/test_block.rb : add tests for above
-
- * rb/allload.rb : get path from ARGV
-
- * vm_opts.h.base : set default off
-
-
-2005-11-01(Tue) 08:28:19 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/other-lang/eval.rb : fix path
-
- * lib/English.rb, lib/cgi.rb, lib/complex.rb, lib/delegate.rb :
- added
-
-
-2005-11-01(Tue) 08:18:33 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : push and pop values after checkincludearray for
- stack caching
-
-
-2005-10-31(Mon) 15:37:09 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bm_app_mandelbrot.rb : added
-
- * benchmark/bm_app_factorial.rb : fixed parameter
-
- * benchmark/bm_so_count_words.rb, benchmark/run_rite.rb : use
- real file
-
- * common.mk : add "ext" rule, add some dependencies and add option
- to bench-each rule (renamed from bench-item)
-
- * compile.c : fix get_root_iseq_object (check iseq type),
- support splat case/when. support //o (regexp)
-
- * eval.c : support *_eval, fix rb_obj_call_init to pass block
-
- * eval_jump.h : support throw/catch
-
- * eval_load.c : save klass_nest_stack when require
-
- * eval_method.h : fix ruby_cbase()
-
- * insnhelper.h : GET_EV_KLASS checks toplevel or not
-
- * insns.def, yarvcore.c : fix singleton method definition and fix
- super class's method
-
- * lib/shellwords.rb : use String() instead of String.new()
-
- * vm.c : check class iseq or not when making Proc and
- add eval_search_super_klass function
-
- * vm.h : CMETHOD_INFO_P to yarvcore.h
-
- * vm_macro.def : splat if object type is T_ARRAY
-
- * vm_opts.h, vm_opts.h.base : rename to vm_opts.h.base
- insns2vm.rb will copy it to build directory
-
- * yarvcore.c : add Proc#[]
-
- * yarvcore.h : change INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE
- to 512
-
- * yarvtest/test_* : invalidate splat non array code (like: "*1")
-
- * yarvtest/yarvtest.rb : use tempfile instead of popen
-
-
-2005-10-28(Fri) 09:11:53 +0900 Koichi Sasada <[email protected]>
-
- * yarvtest/test_method.rb : fix test
-
-
-2005-10-28(Fri) 08:43:29 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run_rite.rb : add -I options to run benchmark
-
- * common.mk : pass options to some rules with RUNOPT
- and add -I options
-
- * compile.c : fix massign with constant
-
- * yarvtest/test_massign.rb : add tests for above
-
- * eval_load.c : fix load_wait()
-
- * eval_method.h : support ruby_cbase()
-
- * lib/*.rb : add or modify libraries to run on yarv
- * parse.y : change to ANSI C style
-
- * vm.c : fix making proc process under cfunc/ifunc environment
-
- * vm_macro.def : fix block pass
-
- * yarvtest/test_method.rb : add tests for above
-
- * yarvcore.c : add yarv_obj_is_proc()
-
- * eval.c : fix rb_obj_is_proc to use yarv_obj_is_proc()
-
-
-2005-10-27(Thu) 11:50:15 +0900 Koichi Sasada <[email protected]>
-
- * some files : import from ruby 1.9.0 (2005-10-12)
-
-
-2005-10-16(Sun) 14:50:02 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, compile.c, yarvcore.h, yarvcore.c : add insns "bitblt" and "answer"
-
-
-2005-10-11(Tue) 17:01:13 +0900 Koichi Sasada <[email protected]>
-
- * yarv_version.h, Changes : 0.3.2
-
-
-2005-10-11(Tue) 13:35:25 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : add YARV_CHECK_INTS()
-
- * thread.c, thread_pthread.h, thread_win32.h : kick timer thread
- when another thread kicked
-
- * vm.c : remove debug print
-
- * vm_opts.h : add OPT_CALL_THREADED_CODE
-
- * yarvtest/yarvtest.rb : remove "\r" from answer
-
-
-2005-10-07(Fri) 09:36:36 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : add member variable "interrupt_flag" to yarv_thread_t
-
-
-2005-10-05(Wed) 21:20:13 +0900 Koichi Sasada <[email protected]>
-
- * eva.c, eval_thread.c, ruby.h, eval_error.h, eval_jump.h,
- eval_load.c, thread.c, error.c, compile.h : remove ruby_errinfo
-
- * thread_win32.h, thread_pthread.h : set stack size to 4KB
-
- * vm.c : fix making env routine
-
- * vm_dump.c, vm.h : support frame type "EVAL" and fix magic number
-
- * yarvcore.c : fix some mark/free routine
-
-
-2005-10-05(Wed) 09:08:11 +0900 Koichi Sasada <[email protected]>
-
- * eval.c, eval_intern.h, vm.c, eval_jump.h, yarvcore.h :
- re-define PUSH/POP/EXEC/JUMP_TAG to use thread local tag
-
- * inits.c, yarvcore.c : fix boostrap
-
-
-2005-10-03(Mon) 22:28:24 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix NODE_COLON2 bugs
-
- * compile.h : fix debug routine
-
- * disasm.c : add space between insn and operand
-
- * insns.def : add comment of classdef, singletonclassdef
-
- * vm.c, yarv.h : fix invoke_light routine
-
- * yarvcore.c : fix to mark each threads
-
-
-2005-10-02(Sun) 05:55:34 +0900 Koichi Sasada <[email protected]>
-
- * thread_pthread.h : add "system_working" global variable
-
-
-2005-10-02(Sun) 01:23:44 +0900 Koichi Sasada <[email protected]>
-
- * thread.c : add raw gets (for test), and fix indent
-
-
-2005-10-01(Sat) 23:06:21 +0900 Koichi Sasada <[email protected]>
-
- * thread_win32.h, common.mk : add thread_win32.h
-
- * thread.c : support _WIN32 thread
-
- * thread.c, thread_pthread.h : fix some interface
-
- * eval_thread.c : remove debug print
-
- * gc.c : fix stack region
-
- * win32/Makefile.sub : add -MD flag to LDFLAGS
-
- * yarvcore.c : fix mark and sweep debug print
-
- * yarvcore.h : fix VM#living_threads data type to st_table
-
-
-2005-10-01(Sat) 00:25:28 +0900 Koichi Sasada <[email protected]>
-
- * thread.c, yarvcore.h : rename GIL (Global Interpreter Lock) to
- GVL (Global VM Lock)
-
- * thread_pthread.h : fix pthread mutex initialize
-
-
-2005-09-30(Fri) 20:11:19 +0900 Koichi Sasada <[email protected]>
-
- * thread.c : support join with timeout
-
- * yarvcore.h : use GET_VM()
-
-
-2005-09-30(Fri) 14:59:29 +0900 Koichi Sasada <[email protected]>
-
- * thread.c, common.mk : add thread.c
-
- * thread.c, gc.c, eval_thread.c, yarvcore.c, yarvcore.h :
- support native thread (on pthread)
-
- * insns.def : add YARV_CHECK_INTS() check
-
- * yarv.h : add GET_VM() macro
-
-
-2005-09-29(Thu) 22:43:08 +0900 Koichi Sasada <[email protected]>
-
- * eval_intern.h, eval_thread.c : move thread_status to eval_intern.h
-
- * yarvcore.c : fix thread/vm value
-
- * yarvcore.h : add some parameter to yarv_thread_t
-
-
-2005-09-29(Thu) 01:52:33 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, yarvcore.h : add line number on last end instruction
-
- * vm.c : fix line no detection
-
-
-2005-09-28(Wed) 00:02:10 +0900 Koichi Sasada <[email protected]>
-
- * common.mk, eval_load.c, eval.c, eval_intern.h : add eval_load.c
-
- * disasm.c : fix around block local variables
-
- * eval_proc.c : fix typo
-
-
-2005-09-27(Tue) 16:45:20 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : remove debug print
-
-
-2005-09-27(Tue) 16:41:47 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : support Kernel.local_variables
-
- * parse.y, yarvcore.c : move some functions
- (rb_(backref|lastline)_(get|set)) from parse.y to yarvcore.c
-
- * yarvcore.h : fix typo of YARV_PREVIOUS_CONTROL_FRAME
-
-
-2005-09-26(Mon) 18:51:29 +0900 Koichi Sasada <[email protected]>
-
- * eval.c, compile.c, parse.y, vm.c, yarvcore.h :
- eval() works with binding (Env)
-
- * vm.c : add th_set_eval_stack
-
- * yarvtest/test_syn.rb : remove an assert "defined?(local_var)"
-
-
-2005-09-25(Sun) 19:30:59 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bm_vm2_send.rb : added
-
- * common.mk : add rule "bench-item"
-
- * eval_intern.h : add PASS_PASSED_BLOCK()
-
- * eval_proc.c : support some functions
-
- * rb/mklog.rb : added
-
- * vm.c : fix prototype style and coding style
-
- * yarv.h : add some prototypes of functions
-
- * yarvcore.c, yarvcore.h, eval.c : yarv_thread_t#ifuncnode -> passed_block,
- and add yarv_proc_t#safe_level
-
-
-2005-09-25(Sun) 11:01:17 +0900 Koichi Sasada <[email protected]>
-
- * some files : import from ruby 1.9.0 (2005-09-25)
-
- * eval*, vm.c, vm_macro.def : remove frame, scope, ...
-
- * yarvcore.c : remove yarv_block_given_p()
-
- * yarvcore.h, insnhelper.h : move some macro from insnhelper.h to yarvcore.h
- to use these in eval.c
-
-
-2005-09-24(Sat) 15:51:42 +0900 Koichi Sasada <[email protected]>
-
- * eval* : remove dependency to ruby_dyna_vars and ruby_class
-
-
-2005-09-23(Fri) 20:39:14 +0900 Koichi Sasada <[email protected]>
-
- * eval_*.[ch] : split eval.c to some files
-
- * *.[ch] : import ruby 1.9.0 (2004-09-23)
-
- * parse.y : remove dependency to ruby_dyna_vars and ruby_scope
-
-
-2005-09-15(Thu) 16:51:06 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, yarvcore.h : fix "for" scope
-
- * yarvtest/test_block.rb : add tests for above
-
-
-2005-09-14(Wed) 06:11:43 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, vm_evalbody.h, vm.h, vm_dump.c,
- compile.c, yarvcore.c : use #ifdef insted of #if for recognize
- vm options
-
- * vm_opts.h : fix default options
-
-
-2005-09-10(Sat) 14:10:08 +0900 Koichi Sasada <[email protected]>
-
- * vm_opts.h : added
-
- * yarvcore.h, rb/insns2vm.h : use vm_opts.h
-
-
-2005-09-10(Sat) 04:53:22 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, insns.def, compile.c : add DEFINED_YIELD
-
- * yarvtest/test_yield.rb : add test_1_ary_and_1_params
-
- * insns.def : fix splat and svalue
-
- * vm.c : fix to perform with proc with ifunc (incomplete)
-
- * sample/test.rb : added (comment out unsupported features)
-
- * common.mk : add rule "runtest"
-
-
-2005-09-09(Fri) 19:32:11 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, compile.c : add splatarray
-
- * yarvtest/test_massign.rb : add tests for above
-
-
-2005-08-31(Wed) 22:55:15 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c (yarvcore_eval_parsed): fix to return value
-
- * yarv_version.h, Changes : 0.3.1
-
-
-2005-08-20(Sat) 10:19:27 +0900 Koichi Sasada <[email protected]>
-
- * rb/ir.rb : add some check
-
- * import today's ruby HEAD
-
-
-2005-08-18(Thu) 23:29:52 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : fix object file extension
-
- * rb/ir.rb : added (import ruby script)
-
- * rb/diff.rb : removed
-
- * import today's ruby HEAD
-
-
-2005-08-18(Thu) 12:59:38 +0900 Koichi Sasada <[email protected]>
-
- * common.mk : rule test -> test2, test1 -> test
-
- * compile.c : fix when clause bug and splat arugment
-
-
-2005-08-17(Wed) 05:22:31 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix block local parameter setting routine and support
- massign in block parameter initialze
-
- * yarvtest/test_yield.rb : add tests for above
-
- * insns.def, compile.c : support array concat (ex: "[x, *y]")
-
- * yarvtest/test_bin.rb : add tests for above
-
-
-2005-08-16(Tue) 19:51:19 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support nested massign
-
- * yarvtest/test_massign.rb : add tests for above
-
-
-2005-08-16(Tue) 10:25:29 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : support rb_yield_0 with 0 args
-
-
-2005-08-16(Tue) 09:09:21 +0900 Koichi Sasada <[email protected]>
-
- * lib/fileutils.rb : imported
-
- * insns.def : fix yield argument (same as last commit)
-
- * yarvtest/test_yield.rb : add tests for above
-
-
-2005-08-16(Tue) 08:29:47 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : fix to support rb_yield_0 with multiple values
-
- * common.mk : add parse, run1p ruelse
-
- * compile.c : support yield with ARGSCAT/SPLAT
-
- * vm.c, insns.def : fix yield arguments to do compatible behaviour
-
- * yarvtest/test_yield.rb : added for above
-
-
-2005-08-16(Tue) 06:00:17 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix to set klass_nest_stack on singleton
- method definition
-
- * yarvtest/test_method.rb : add a test for above
-
-
-2005-08-16(Tue) 05:34:48 +0900 Koichi Sasada <[email protected]>
-
- * test1.rb : added. gdb and run1 rule run this script
-
- * compile.c : fix error handled variable access
-
- * yarvtest/test_exception.rb : add tests for above
-
-
-2005-08-16(Tue) 04:26:08 +0900 Koichi Sasada <[email protected]>
-
- * base ruby : ruby 1.9.0 (2005-08-15)
-
-
-2005-08-16(Tue) 03:54:17 +0900 Koichi Sasada <[email protected]>
-
- * common.mk, Makefile.in : move some rules to common.mk
-
- * rb/diff.rb : added
-
- * yarvtest/yarvtest.rb : fix to compare output last value
-
-
-2005-08-15(Mon) 18:27:58 +0900 Koichi Sasada <[email protected]>
-
- * Changes : 0.3.0
-
-
-2005-08-15(Mon) 17:56:09 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : fix to add prototype
-
- * all files : propset svn:eol-style native
-
-
-2005-08-15(Mon) 10:48:53 +0900 Koichi Sasada <[email protected]>
-
- * eval.c : support rb_load
-
-
-2005-08-15(Mon) 09:42:01 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : define SDR()
-
- * vm_dump.c : stack_dump_raw() -> vm_stack_dump_raw()
-
- * yarvtest/yarvtest.rb : add rite test scheme
-
- * benchmark/run_rite.rb : added
-
- * yarvcore.c, inits.c : add Init_vm()
-
- * yarv.h : add some prototype declarations, GET_THREAD()
-
- * eval.c : remove unused functions
-
- * eval.c : support Kernel.eval, some schemes (same as evalc.patch)
-
-
-2005-08-15(Mon) 00:53:28 +0900 Koichi Sasada <[email protected]>
-
- * yarv_version.h : move configurations to yarvcore.h
-
- * yarvcore.c : remove VALUE yarv_get_current_running_thread() and
- add yarv_thread_t *yarv_get_current_running_thread(), ...
-
- * yarvcore.h : yarv_thread_t#vm -> vm_value
-
- * compile.c : fix "break from nested classes"
-
- * yarvext/extconf.rb : use have_func instead of defined?(YARV_PACHED)
-
- * depend : fix pass
-
- * eval.c : change to kick VM
-
- * version.c : fix to show yarv version
-
- * common.mk : fix dependent
-
- * inits.c : fix to kick Init_yarvcore
-
-
-2005-08-14(Sun) 02:05:15 +0900 Koichi Sasada <[email protected]>
-
- * README : add description
-
- * yarvext/depend : move to topdir/depend
-
-2005-08-14(Sun) 01:50:43 +0900 Koichi Sasada <[email protected]>
-
- * merge yarv to ruby (prepare)
-
- * make yarvext/ to build as extension
-
-
-2005-08-13(Sat) 09:36:26 +0900 Koichi Sasada <[email protected]>
-
- * evalc.patch, insns.def, compile.c : fix to support current
- ruby HEAD.
-
- * 0.2.3
-
-
-2005-08-08(Mon) 19:13:02 +0900 Koichi Sasada <[email protected]>
-
- * version.h, Changes : 0.2.2
-
-
-2005-08-08(Mon) 17:17:50 +0900 Koichi Sasada <[email protected]>
-
- * vm.h, vm.c, insns.def, yarvcore.h, yarvcore.c :
- remove yarv_iseq_t#iseq_dt and add yarv_iseq_t#encoded.
- use yarv_iseq_t#encoded anytime
-
- * vm_evalbody.h, vm.h, extconf.rb, version.h :
- support call threaded code (incomplete)
-
-
-2005-08-01(Mon) 05:26:12 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : support yield with multiple values
-
- * compile.c : fix dynavars
-
- * yarvcore.h : fix to mark defined method
-
-
-2005-07-31(Sun) 23:27:24 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, vm.c, insns.def : fix search object path
-
- * compile.c : fix "for" statement
-
- * vm_macro.def : fix rest, opt arguments
-
-
-2005-07-31(Sun) 14:52:06 +0900 Koichi Sasada <[email protected]>
-
- * vm_macro.def : fix block parameter
-
- * compile.c : fix to unuse compile_data->in_ensure
-
- * insns.def : add orphan check when return
-
-
-2005-07-31(Sun) 03:25:05 +0900 Koichi Sasada <[email protected]>
-
- * vm.c, compile.c, yarvcore.h, insns.def :
- support jump from rescue/ensure/class/module
-
- * test/test_flow.rb : add tests for above fix
-
-
-2005-07-30(Sat) 04:44:33 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : struct iseq_compile_data_ensure_node_stack is added
-
- * compile.c : insert ensure clause before break/next/redo
-
- * vm.c : fix return/break handling
-
- * yarv.h, vm.c : fix lightweight yield
-
- * vm.c, insns.def, vm_macro.def : change arguments of th_set_env (add sp)
-
- * test/test_flow.rb : added
-
- * test/yarvtest.rb : add ae_flow
-
- * compile.c, vm_macro.def : add tail-call/tail-recursion optimization
- (experimental)
-
-
-2005-07-29(Fri) 20:14:11 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : make_name_for_block and make_name_with_str
- are added
-
- * insns.def : fix if unmatched size arg size to yield
-
- * test/test_block.rb : add test for above fix
-
- * vm.c : add th_backtrace_each and fix backtrace notation
-
- * yarvcore.c : set top level iseq name to "<main>"
-
-
-2005-07-29(Fri) 13:20:19 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : fix yarv_iseq_t to pass VC (cl)
-
- * vm_dump.c : ditto
-
- * compile.h : ditto
-
- * insnhelper.h : ditto
-
- * vm_evalbody.h : include 'math.h'
-
- * insns.def, vm.c : raise error when yield without block
-
- * vm.c : implement thread_backtrace
-
- * vm.c, yarvsubst.c, yarv.h : implement thread_yield_light_prepare and
- thread_yield_light_invoke
-
- * yarvcore.c : Integer#times uses yarv specific version
-
-
-2005-07-28(Thu) 21:35:09 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : add another mark function for thread/stack
-
- * vm_evalbody.h : fix register allocation for x86_64
-
- * vm.h : use asm for tc on x86_64
-
-
-2005-07-28(Thu) 20:17:09 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : add mark/free message to debug gc
-
- * insnhelper.h, insns.def, vm_macro.def : remove and
- add new RESTORE_REGS
-
- * vm_evalbody.h : fix register allocation
-
-
-2005-07-28(Thu) 02:00:42 +0900 Koichi Sasada <[email protected]>
-
- * vm.c, etc : change VM stack structure. re-write all
- vm functions to do it
-
- * vm_macro.def : added
-
-
-2005-07-08(Fri) 01:36:49 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : don't use fmod on AMD64
-
-
-2005-07-08(Fri) 00:14:22 +0900 Koichi Sasada <[email protected]>
-
- * Changes : added
-
-
-2005-07-07(Thu) 23:54:37 +0900 Koichi Sasada <[email protected]>
-
- * version.h : 0.3.0
-
-
-2005-07-07(Thu) 23:52:03 +0900 Koichi Sasada <[email protected]>
-
- * 0.2.1 : released
-
-
-2005-07-07(Thu) 23:50:22 +0900 Koichi Sasada <[email protected]>
-
- * version.h : 0.2.1
-
-
-2005-07-07(Thu) 23:47:55 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb, extconf.rb : add --[enable|disable]-opt-unify-all-combination
- and --disable-opts
-
- * vm.h : DISPATCH_ARCH_DEPEND_WAY is only enabled on GCC 3.x
-
-
-2005-07-06(Wed) 13:20:27 +0900 Koichi Sasada <[email protected]>
-
- * depend, rb/eval.rb : add ITEMS option to benchmark rule
-
- * benchmark/* : changed
-
- * benchmark/other-lang/* : added
-
-
-2005-07-04(Mon) 04:02:15 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h. yarvcore.c : add idDIV, idMOD, idEq, idLength
-
- * compile.c, insns.def : add specialized insn for above method id
-
- * test/test_bin.rb : add tests for above
-
-
-2005-07-03(Sun) 20:31:09 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, yarvcore.h : remove cYarvThrowObject (unused)
-
- * yarvcore.c, yarvcore.h, insns.def :
- thread_object#stack_mark_poinetr
-
- * depend, rb/eval.rb : BOPT, TOPT -> OPT
-
-
-2005-07-03(Sun) 13:53:47 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, compile.h : INSN_OBJECT, LABEL_OBJECT -> INSN, LABEL,
- ISEQ_LINK_ELEMENT, ISEQ_LINK_ANCHOR -> LINK_ELEMENT, LINK_ANCHOR,
- and some fixes
-
- * tmpl/optinsn.inc.tmpl : ditto
-
- * yarvcore.c, yarvcore.h : remove label_object, insn_object
- prepare_iseq_build, cleanup_iseq_build are added
-
- * insns.def : remove unused variable from send
-
-
-2005-07-02(Sat) 04:19:22 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : add GC protect for opt_aset
-
-
-2005-07-02(Sat) 03:49:17 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb : add option -fno-reorder-blocks to vm.asm rule
-
- * insns.def : fix opt_aset bugs
-
- * test/test_bin.rb : add tests for aset, aref
-
-
-2005-07-02(Sat) 03:05:12 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run.rb : fix output
-
- * vm_evalbody.h : add register for x86_64
-
- * rb/asm_parse.rb : fix to shor size and length
-
-
-2005-07-02(Sat) 02:56:31 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : move specialized instruction point (new_insn_send)
-
- * insns.def : add opt_aref, opt_aset
-
-
-2005-07-01(Fri) 11:04:11 +0900 Koichi Sasada <[email protected]>
-
- * compile.h : fix to pass VALUE type to new_insn_body
-
- * insnhelper.h : add cast
-
- * compile.c : fix getdynamic argument (0 == Qfalse -> I2F(0))
-
-
-2005-06-30(Thu) 23:34:10 +0900 Koichi Sasada <[email protected]>
-
- * rb/eval.rb : add and fix some rules
-
- * rb/insns2vm.rb : generate all
-
- * benchmark/run.rb : add -r (ruby only) option
-
-
-2005-06-30(Thu) 23:25:23 +0900 Koichi Sasada <[email protected]>
-
- * tmpl/vmtc.inc.tmpl : add const prefix
-
- * /rb/asm_parse.rb, extconf.rb : added and make assembler analised output
-
- * opt_operand.def : add send operands unification
-
- * insnhelper.h : add HEAP_CLASS_OF(obj)
-
- * insns.def : fix opt_plus, opt_ltlt
-
- * vm_evalbody.h : move _tag
-
- * benchmark/run.rb : fix file select
-
-
-2005-06-30(Thu) 06:07:04 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb : add collect-usage-analysis option
-
- * opt_operand.def, opt_insn_unif.def : add some rules
-
-
-2005-06-29(Wed) 23:28:44 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, extconf.rb, vm.h, compile.c :
- DISPATCH_DIRECT_THREADED_CODE, DISPATCH_THREADED_CODE
- -> OPT_DIRECT_THREADED_CODE, OPT_INDIRECT_THREADED_CODE.
- if at least one of then is defined, OPT_THREADED_CODE is defined
-
- * benchmark/* : fix name and parameters
-
- * rb/eval.rb : added for YARV evaluation
-
-
-2005-06-29(Wed) 16:16:52 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run.rb : fix output format
-
- * call_cfunc.inc -> call_cfunc.h
-
- * vm.h : add sign by asm statement
-
-
-2005-06-28(Tue) 22:28:40 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : fix method search
-
-
-2005-06-28(Tue) 22:26:34 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb : fix options
-
-
-2005-06-28(Tue) 21:50:58 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run.rb : fix output format
-
-
-2005-06-28(Tue) 21:34:54 +0900 Koichi Sasada <[email protected]>
-
- * depend : add option TOPT to test rules
-
- * benchmark/run.rb : fix output format
-
-
-2005-06-28(Tue) 21:15:54 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix opt_case_dispatch instruction
-
- * benchmark/run.rb : output all usertimes when exit benchmark
-
-
-2005-06-28(Tue) 20:35:55 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb, compile.c, tmpl/optinsn.inc.tmpl, vm.c :
- change extconf options
-
-2005-06-28(Tue) 13:20:59 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run.rb : add -y, --yarv-only option
-
- * depend : add BOPT to tbench rule
-
-
-2005-06-27(Mon) 23:31:12 +0900 Koichi Sasada <[email protected]>
-
- * depend : add gdb rule
-
- * vm.h : use inline assembler for x86 (to support gcc 3.4.x)
-
-
-2005-06-27(Mon) 20:04:10 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, compile.c, disasm.c : remove unused variables
-
- * vm.h, insnhelper.h, debug.h : fix to reduce warning
-
- * vm.c, vm_dump.c : move VM state dump (debug) functions to vm_dump.c
-
- * depend : adde reconf rule
-
- * insnhelper.h :
-
- * vm_evalbody.inc : rename to vm_evalbody.h
-
-
-2005-06-27(Mon) 16:50:31 +0900 Koichi Sasada <[email protected]>
-
- * insns2vm.rb : fix generating unif insn
-
- * compile.c : add useless pop/swap insn elimination with stack caching
-
- * depend : remove compiled.o dependency
-
-
-2005-06-26(Sun) 14:06:22 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run.rb : use tmpfile instead of popen
-
- * rb/insns2vm.rb : fix generating insn unification logic
-
- * opt_insn_unif.def : add some unification rules
-
- * compile.c : add verify_list function and fix unification logic
-
-
-2005-06-22(Wed) 12:58:26 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, yarvcore.c, insns.def, compile.c : add mult optimization
-
- * test/test_bin.rb : add test_fact
-
-
-2005-06-21(Tue) 22:34:07 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, compile.[ch], tmpl/optinsn.inc.tmpl, rb/insns2vm.rb :
- change data structure (don't use Ruby's array to represent a
- instruction sequence)
-
- * disasm.c : add separator
-
-
-2005-06-14(Tue) 07:48:58 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support "for" statement
-
- * test/test_block.rb : add test for above
-
- * yarvcore.[ch] : add global id idEach
-
-
-2005-06-08(Wed) 22:30:44 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : add if/unless(L1) jump (L2) :L1 => unless/if(L2)
- optimize (condition reversal) and fix typo
-
-
-2005-06-07(Tue) 08:29:41 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : fix to remove compiler warning
-
- * version.h : 0.2.1
-
-
-2005-06-07(Tue) 08:16:22 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : iseq_link_element changed to double linked list
-
- * disasm.c : support dump struct iseq_link_element
-
- * compile.c : use double linked list instead of array
- for intermediate representation
-
-
-2005-06-06(Mon) 15:38:44 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, yarvcore.c : add link structure to insn and label object
-
- * compile.h, compile.c : remove some variables in function top scope
- of iseq_compile_each and some optimization (now working)
-
-
-2005-06-04(Sat) 16:12:59 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix previous commit
-
-
-2005-06-04(Sat) 15:56:21 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix stack caching (after jump state)
-
-
-2005-06-04(Sat) 09:12:13 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix some point for previous commit
-
-
-2005-06-04(Sat) 07:31:21 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : optimize case/when statement
- (dispatch on constant time)
-
- * yarvcore.h, disasm.c, rb/insns2vm.rb : fixed for above
- (CDHASH)
-
- * test/test_syn.rb : add test for above
-
-
-2005-06-04(Sat) 03:41:29 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, yarvcore.c : add some temporary variable test
- (it'll be vanished)
-
- * compile.c : NODE_CASE optimize (use topn instead of dup/swap)
-
-
-2005-06-03(Fri) 00:54:38 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : apply flow optimization for while/until statement
-
-
-2005-03-04(Fri) 19:34:32 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb : fix category (comment)
-
- * depend : remove space betweeen target name and colon
-
-
-2005-03-04(Fri) 15:55:51 +0900 Koichi Sasada <[email protected]>
-
- * tmpl/yarvarch.ja : fix typo
-
-
-2005-03-04(Fri) 13:30:19 +0900 Koichi Sasada <[email protected]>
-
- * depend : add a rule for jitcompile.o
-
- * vm.h : fix a macro argument
-
- * version.h : 0.2.0
-
-
-2005-03-03(Thu) 08:35:14 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb : remove vm_evalbody.inc call_cfunc.inc from clean target
-
-
-2005-03-03(Thu) 00:54:15 +0900 Koichi Sasada <[email protected]>
-
- * tmpl/insns.inc.tmpl : fixed typo
-
- * insns.def : store th->pc to current pc
-
-
-2005-03-03(Thu) 00:31:47 +0900 Koichi Sasada <[email protected]>
-
- * tmpl/yarvarch.ja, doc/yarv.rb : write current architecture of yarv
-
-
-2005-03-01(Tue) 13:50:04 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c (yarvcore_eval_parsed) : added
- (separeted from yarvcore_eval)
-
- * yarvcore.c, compile.c : iseq_translate_direct_threaded_code
- is moved to compile.c
-
- * depend : add rule for yasmdata.rb
-
- * rb/yasm.rb : support top-level and method-level assemble
-
-
-2005-02-26(Sat) 08:09:57 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb, compile.c, vm.h : change type long to OFFSET
-
- * tmpl/yasmdata.rb.tmpl : added
-
- * rb/insns2vm.rb : add yasmdata_rb method
-
- * rb/yasm.rb : fix some interface (incomplete)
-
- * compile.c : iseq_setup added
-
- * yarvcore.c : YARVCore::InstructionSequence::Instruction#make added
-
-
-2005-02-24(Thu) 07:45:37 +0900 Koichi Sasada <[email protected]>
-
- * rb/yasm.rb : added
-
-
-2005-02-24(Thu) 01:13:33 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : remove useless statements
-
-
-2005-02-24(Thu) 00:46:44 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb (InsnInfo) : add @is_sc attr and remove
- is_sc method
-
- * compile.c : fix NODE_CASE/NODE_WHEN bug (cond at 'when'
- must not be popped)
-
- * compile.c : support NODE_OP_ASGN1 to &&= and ||=
-
- * test/test_bin.rb : add tests for above
-
-
-2005-02-23(Wed) 09:17:01 +0900 Koichi Sasada <[email protected]>
-
- * vm.c, yarvcore.c : thread_svar added and fix svar location
-
-
-2005-02-21(Mon) 08:38:02 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h : make type "struct iseq_compile_data"
-
- * yarvcore.h : iseq_object#insn_info_ary to iseq_object#insn_info_tbl
-
-
-2005-02-21(Mon) 05:24:01 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c (compile_string) : remove null check of node
-
-
-2005-02-19(Sat) 03:52:45 +0900 Koichi Sasada <[email protected]>
-
- * version.h : 0.1.1
-
-
-2005-02-18(Fri) 20:57:18 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, yarvcore.c : add idLTLT, idMethodMissing
-
- * compile.c : suopport lval (or others) block parameter
-
- * test/test_block.rb : add tests for above
-
- * insns.def (send) : support method_missing
-
- * test/test_method.rb : add tests for above
-
- * insns.def : opt_ltlt and
-
-
-2005-02-18(Fri) 08:54:40 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/runc.rb : added
-
- * benchmark/contrib/pentomino.rb : added opt_ltlt
- and Float, String plus specialization
-
-
-2005-02-18(Fri) 07:49:42 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : remove debug print
-
- * rb/aotcompile.rb : skip if yarvcore.so is not created
-
-
-2005-02-18(Fri) 06:46:13 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix block passing
- and block argument
-
-
-2005-02-18(Fri) 05:52:41 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : thread_get_ev_const, thread_get_ev_defined is added
- (separated from insns.def)
-
- * insnhelper.h : GET_EV_KLASS(klass) is added
- (separated from insns.def)
-
- * yarvcore.h, insns.def, compile.c : support defined? expression (limited)
-
- * test/test_syn.rb : tests for above is added
-
- * compile.c, insns.def : support block passed method dispatch
-
- * test/test_method.rb : tests for above is added
-
- * compile.h : CALL_ARGS_SPLAT is removed
-
-
-2005-02-16(Wed) 13:32:37 +0900 Koichi Sasada <[email protected]>
-
- * disasm.c : fix ID to String method
-
- * compile.c : NODE_SUPER, NODE_ZSUPER check 'poped'
- and NODE_RETURN check outer type
- and NODE_DREGX_ONCE supported (temporarily)
-
- * test/test_syn.rb : add a test
-
- * test/test_jump.rb : add a test
-
-
-2005-02-16(Wed) 06:07:41 +0900 Koichi Sasada <[email protected]>
-
- * compile.[hc] : use Symbol instead of Fixnum to represent ID
-
- * rb/insns2vm.rb : add attr_reader :insns, :insn_map
-
- * vm.h, rb/insns2vm.rb : END_INSN have one arg
-
- * jitcompile.c : jit compiler framework (experimental)
-
- * rb/aotcompile.rb : refactoring
-
- * compiled.c : add constant pool
-
- * vm_evalbody.inc, call_cfunc.inc, vm.c : separeted from vm.c
-
- * insns.def : fix return val
-
- * depend : add rules for compiled.o
-
-
-2005-02-14(Mon) 13:09:01 +0900 Koichi Sasada <[email protected]>
-
- * insnhelper.h, yarvcore.h: move YARV_METHOD_NODE to yarvcore.h
-
- * yarvcore.h : add 2 members jit_compiled and iseq_orig
- to struct iseq_object
-
- * yarvcore.c : add yarv_jitcompile and global function jitcompile
-
- * insns.def : insn opt_call_native_compiled added
-
- * jitcompile.c : added
-
-
-2005-02-12(Sat) 05:38:51 +0900 Koichi Sasada <[email protected]>
-
- * insns.def (putstring) : fixed to duplicate string object
-
- * rb/insns2vm.rb, tmpl/optunifs.inc.tmpl, compile.c : support
- instructions unification (aka super instruction)
-
- * opt_insn_unif.def : added for above
-
- * benchmark/bm_unif1.rb : added to measure efficiency of unification
-
- * depend : fixed for above
-
- * extconf.rb : add option --(enable|disalbe)-opt-insns-unification
-
-
-2005-02-11(Fri) 12:14:39 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, vm.c, insns.def : permit to access svar from
- cfunc environment
-
- * test/test_method.rb : add tests for above
-
-
-2005-02-09(Wed) 19:31:06 +0900 Koichi Sasada <[email protected]>
-
- * ite.rb : added (ruby -rite [script file])
-
-
-2005-02-09(Wed) 02:25:43 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.[hc] : add member compile_data (hash) to iseq_object
-
- * compile.c, yarvcore.h : check label is already set
-
- * compile.c, extconf.rb : support __goto__ and __label__ statement
-
-
-2005-01-25(Tue) 12:49:27 +0900 Koichi Sasada <[email protected]>
-
- * test/test_block.rb : add break test to test_times
-
-
-2005-01-25(Tue) 03:34:04 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb : check ruby version if yarv patch is applied or not
-
- * evalc.patch : fixed for rb_call_super and above check
-
-
-2005-01-25(Tue) 03:21:48 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb : refactoring (mainly, make InsnsDef::InsnInfo
- to represent each instruction information)
-
- * depend, rb/makedocs.rb : fixed for above
-
- * yarvcore.c (thread_call_super) : added
-
- * vm.c (thread_call_super) : added
-
- * vm.h : add struct cmethod_info
-
- * insns.def, vm.c : use cmethod_info to represent C method info
-
- * insns.def : use iseq_object#klass_nest_stack
- to search super/zsuper's class
-
- * prosym.rb : removed
-
- * ToDo : write todo things on wiki
-
-
-
-2005-01-18(Tue) 23:44:47 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run.rb : check ENV['RUBY'] to use ruby binary
-
-
-2005-01-10(Mon) 08:44:40 +0900 Koichi Sasada <[email protected]>
-
- * version.h : 0.1.0
-
-
-2005-01-09(Sun) 22:01:29 +0900 Koichi Sasada <[email protected]>
-
- * repository : svn propset svn:eol-style native *.c *.h tmpl/*.tmpl
-
-
-2005-01-09(Sun) 21:48:38 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : FREE_UNLESS_NULL, MARK_UNLESS_NULL macros are added
-
- * yarvcore.c : some insn/label methods are added
-
- * yarvcore.h : add structure menber "insns_ary" to iseq_object
-
- * vm.c, insns.def (thread_eval_body) : return values with throw
-
- * prosym.rb : added
-
- * insns.def : add YARV_AOT_COMPILED and some procedure
-
- * depend : add compiled.c
-
- * compiled.c : added to build compiled Ruby program (C source)
- by AOT compiler
-
- * rb/aotcompile.rb : AOT compiler
-
- * aotct.rb, rb/aotctest.rb : test and benchmark AOT compiler
-
- * rb/allload.rb : added
-
-
-2005-01-09(Sun) 08:30:38 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c (yarv_yield_values) : added
-
- * vm.c (thread_call0) : change interface. substitute rb_call0 in
- yarv environment
-
- * yarvcore.c (yarv_call0) : fix for above
-
- * yarvcore.c (yarv_call0_cfunc) : removed
-
- * yarvcore.c : change passing items for yarv_setup
-
- * evalc.patch : fix for above
-
- * benchmark/bm_lists.rb : fix (unsupport block passing)
-
- * benchmark/run.rb : use full path to ruby
-
- * insns.def (yield): raise error if argc > expected argc
-
-
-2005-01-08(Sat) 16:07:48 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb : add descrioptions
-
- * compile.c : fix bugs (getinlinecache operands)
-
- * yarvcore.c : initial value of yarvGlobalStateVersion
- to 1
-
-
-2005-01-08(Sat) 14:39:04 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, vm.c, evalc.patch : support making backtrace
- (incompatible with current ruby interpreter)
-
-
-2005-01-08(Sat) 11:25:46 +0900 Koichi Sasada <[email protected]>
-
- * evalc.patch : commit for previous commit change
-
- * yarvcore.h, compile.c, insns.def : MC to IC (inline cache),
- and changed to using IC by set/getinlinecache
-
-
-2005-01-08(Sat) 10:04:33 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : add global variable sym[IC]FUNC
-
- * yarvcore.c (yarv_iterate, yarv_call0_cfunc) : added
- (each called from rb_iterate, rb_call0 with NODE_CFUNC)
-
- * vm.c (stack_dump_raw) : fixed to prints more detail
-
- * vm.c (stack_dump_th, stack_dump_thobj) : added to
- dumps thread_object states (for VALUE, struct pointer)
-
- * vm.c (thread_dump_regs) : added
-
- * vm.c (thread_call0, thread_call0_cfunc, thread_invoke_yield,
- thread_invoke_yield_cfunc), insns.def (yield, send) :
- fixed, added to support IFUNC
-
- * vm.c, yarvcore.c, insns.def : change type purpose
- thread_object#block_ptr (it holds IFUNC block information,
- so this type was changed to 'NODE *')
-
- * vm.c (stack_dump_each) : fixed for above
-
- * test/test_block.rb (test_ifunc) : test for above
-
- * vm.c (get_block_objec, thread_make_env_object) : fixed bugs
-
- * test/test_bin.rb (test_xstr) : remove `ls` test
-
-
-2005-01-06(Thu) 21:35:18 +0900 Koichi Sasada <[email protected]>
-
- * yarv : trying to support NODE_IFUNC (rb_iterate)
-
-
-2005-01-05(Wed) 06:50:42 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, insns.def, disasm.c, rb/insns2vm.rb, compile.[ch] :
- support inline method cache
-
- * extconf.rb : add -*-inline-method-cache (default: enable)
-
- * test/test_method.rb : add a test for above
-
- * benchmark/bm_poly_method.rb : added
-
- * yarvcore.c : add option string
-
-
-2005-01-04(Tue) 17:15:41 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, compile.c : add compile_array and duparray insn
- to optimize only literal array creation
-
- * benchmark/bm_array.rb : added
-
-
-2005-01-04(Tue) 10:02:40 +0900 Koichi Sasada <[email protected]>
-
- * README : fix version
-
-
-2005-01-04(Tue) 09:57:25 +0900 Koichi Sasada <[email protected]>
-
- * ToDo : reflect current status
-
-
-2005-01-04(Tue) 09:43:54 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_VALUES, NODE_ARGSCAT, NODE_SPLAT
-
- * test/test_massign.rb : add tests for above
-
- * benchmark/bm_swap.rb : added
-
-
-2005-01-04(Tue) 06:25:45 +0900 Koichi Sasada <[email protected]>
-
- * compile.h : COMPILE_ERROR break contol (instead of return)
-
- * compile.c : support NODE_MASGN
-
- * insns.def : change expandarray for massign and add topn insn
-
- * test/test_massign.rb : added
-
-
-2005-01-03(Mon) 21:20:28 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : store block when create proc
-
- * test/test_proc.rb : add a test for above change
-
- * yarvcore.c : add global function "once"
-
-
-2005-01-02(Sun) 00:40:08 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bm_super.rb : fix bug (remove infinite loop)
-
-
-2005-01-01(Sat) 23:45:49 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bm_z?super.rb : added
-
-
-2005-01-01(Sat) 23:37:38 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bmx_so_object.rb : rename to benchmark/bm_so_object.rb
-
-
-2005-01-01(Sat) 23:19:02 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_OP_ASGN2, NODE_OP_ASGN_AND, NODE_OP_ASGN_OR,
- NODE_SUPER, NODE_ZSUPER, NODE_MATCH
-
- * insns.def : support super, zsuper (currently, super can't
- handle with block)
-
- * test/test_bin.rb : add test for op_asgin2, op_assgin_and/or
-
- * test/test_class.rb : add test for super, zsuper
-
-
-2005-01-01(Sat) 20:39:29 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_MATCH
-
- * yarvcore.c : fix yarv_svar bug (fix condition boundary)
-
- * insnhelper.h : save cfp/lfp/dfp vars to thread_object (th)
-
-
-2005-01-01(Sat) 20:03:10 +0900 Koichi Sasada <[email protected]>
-
- * version.h : 0.0.1
-
- * yarvcore.h : add idIntern declaration
-
- * insns.def : add getspecial, setspecial.
- implement getclassvariable, setclassvariable.
- store lfp before reg match (opt_regexpmatch1)
-
- * compile.c : support ditto, flipflop
-
- * yarvcore.c : support svar
-
- * test/test_syn.rb : add test for flipflop
-
- * test/test_bin.rb : add test for dsym, cvar, backref
-
-
-2005-01-01(Sat) 09:09:32 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : add getspecial insn
-
- * compile.c : support NODE_NTH_REF, NODE_BACK_REF
-
-
-2005-01-01(Sat) 06:53:38 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, compile.c : support alias, undef
-
- * test/test_method.rb : test for above
-
- * rb/insns2vm.rb : fix enbug
-
-
-2005-01-01(Sat) 06:00:32 +0900 Koichi Sasada <[email protected]>
-
- * test/test_jump.rb : add test (next with value)
-
- * yarvcore.h, yarvcore.c, compile.c, compile.h :
- raise compile error exception instead of rb_bug
-
- * yarvcore.c, evalc.patch : support "require"
-
- * test.rb : restore $" after evaluation with ruby
-
- * rb/insns2vm.rb : remove unnecesary each
-
-
-2004-12-17(Fri) 18:56:38 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix newhash
-
-
-2004-12-15(Wed) 13:29:27 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : add version string
-
- * compile.c : fix rescure clause bug
-
-
-2004-12-14(Tue) 22:46:30 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : add reput insn
-
- * vm.h : show stack cache registers when stack dump
-
- * rb/insns2vm.rb, compile.c : fix stack caching bugs
-
-
-2004-12-14(Tue) 00:51:58 +0900 Koichi Sasada <[email protected]>
-
- * insns2vm.rb, compile.c, tmpl/opt_sc.inc.tmpl : fix bugs
-
- * rb/mixc-asm.rb : added
-
-
-2004-12-14(Tue) 00:17:02 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, yarvcore.c, compile.c : fix SC bugs
- (SC state management)
-
- * extconf.rb : add option -[enable|disable]-opt-stack-caching
-
- * insns2vm.rb : accept CPPFLAGS options
-
- * vm.c : support restrore register for pc
-
-
-2004-12-13(Mon) 16:53:42 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb : add macro INSN_IS_SC()
-
-
-2004-12-11(Sat) 10:51:44 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, compile.c : support singleton method definition
-
- * test/test_method.rb : add test for above
-
-
-2004-12-11(Sat) 03:17:54 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/*.rb : modify
-
- * extconf.rb : add $cleanfiles
-
-
-2004-12-08(Wed) 13:01:38 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : change to disable stack caching
-
-
-2004-12-07(Tue) 19:37:13 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.rb : add default after
-
- * insns.def : fix to work on stack caching
-
-
-2004-12-07(Tue) 15:07:13 +0900 Koichi Sasada <[email protected]>
-
- * depend : add some dependency to *.inc files
-
- * vm.c : add "register" and asm("regname") descriptor
-
- * rb/insns2vm.rb, compile.c : add stack caching support
-
- * tmpl/opt_sc.inc.tmpl : added to above change
-
- * rb/makedocs.rb : fix file path
-
- * extconf.rb : fix option selection
-
-
-2004-12-06(Mon) 11:20:11 +0900 Koichi Sasada <[email protected]>
-
- * extconf.rb : add vm.asm target if compiler is gcc
-
-
-2004-12-06(Mon) 09:56:24 +0900 Koichi Sasada <[email protected]>
-
- * vm.h : rename method_frame's member block to block_ptr
-
- * extconf.rb : add "-fno-crossjumping" option when compiler
- is gcc
-
- * opt_operand.def : add unification insn send
-
- * rb/insns2vm.rb : define symbol instead of declare const
- variable (for more optmize on VC)
-
- * insns.def : move enter point in send
-
-
-2004-12-06(Mon) 04:53:51 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, opt_operand.def, rb/insns2vm.rb, depend :
- support operand unification
-
-
-2004-12-05(Sun) 03:16:10 +0900 Koichi Sasada <[email protected]>
-
- * vm.c, insns.def : speed up throw/catch scheme
-
-
-2004-12-05(Sun) 01:47:05 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : fix catch handler bugs
-
- * test/test_jump.rb : test_complex_jump added
-
-
-2004-12-03(Fri) 20:39:05 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/contrib/mcq.rb : added
- (from URABE Syouhei)
-
-
-2004-12-03(Fri) 20:35:28 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : support break in rb_yield block
-
-
-2004-12-03(Fri) 14:26:35 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support block local variable in current
- ruby specification (patche from Kent Sibilev)
-
- * insns.def : support attr_* (patch from Kent Sibilev)
-
-
-2004-12-02(Thu) 21:04:27 +0900 Koichi Sasada <[email protected]>
-
- * opt_operand.def : added
-
-
-2004-12-02(Thu) 13:20:41 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c, vm.h, vm.c, insns.def, insnhelper.h, yarvutil.rb :
- add usage analisys framework
-
- * disasm.c : insn_operand_intern to separate function
-
- * benchmark/run.rb : run each benchmark on another process
-
-
-2004-12-01(Wed) 10:26:49 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : yield check block is given
-
- * benchmark/bm_lists.rb : rename to bmx_lists.rb
- (because it's not work ... bug?)
-
- * insns.def : opt_* support other type calc
-
-
-2004-11-30(Tue) 16:14:54 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bm_so_array.rb : added
-
- * benchmark/bm_so_matrix.rb : added
-
-
-2004-11-30(Tue) 14:11:30 +0900 Koichi Sasada <[email protected]>
-
- * rb/getrev.rb : added
-
- * yarvcore.c : add YARVCore::REV, YARVCore::DATE constant
-
-
-2004-11-30(Tue) 13:05:42 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_OP_ASGN1 (incomplete)
-
- * insns.def : add dupn
-
-
-2004-11-30(Tue) 08:52:01 +0900 Koichi Sasada <[email protected]>
-
- * version.h : 0.0.0.f
-
-
-2004-11-30(Tue) 08:43:59 +0900 Koichi Sasada <[email protected]>
-
- * test/test_class.rb : add test_initialize and test_to_s
-
- * yarvsubst.c : use rb_funcall instead of yarv_funcall
-
- * evalc.patch : fix ruby's patch
-
- * benchmark/bm_so_*.rb : change naming rule. "bm_so_*" from
- language shootout
-
- * depend : tbench target item is ITEM env val (default: bmx_temp)
-
- * vm.c : show raw address if environment is in heap at dumping stack trace
-
- * vm.c : thread_call0 added
-
- * vm.c : fix thread_yield_light_invoke
-
- * yarv.h, yarvcore.c : remove yarv_funcall
-
-
-2004-11-29(Mon) 11:37:08 +0900 Koichi Sasada <[email protected]>
-
- * test/test/test_proc.rb : add test test_nestproc
-
- * yarvsubst.c : comment out yarv_Array_each
-
- * insns.def : restore lfp/dfp after call_cfunc
-
- * vm.c : fix stack dump routine
-
- * vm.c : impliment thread_funcall (temporarily)
-
- * yarv.h : add IS_YARV_WORKING(), SET_YARV_START(), SET_YARV_STOP()
-
- * yarvcore.c : remove check with yarv_in_work
-
- * evalc.patch : added
-
-
-2004-11-27(Sat) 00:19:52 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.c : free -> ruby_xfree
-
-
-2004-11-26(Fri) 02:11:11 +0900 Koichi Sasada <[email protected]>
-
- * vm,c : fix bug
-
-
-2004-11-22(Mon) 11:19:48 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/bm_ackermann.rb, bm_proc.rb, bm_simpleiter.rb,
- bm_so_exception.rb, bm_wc.rb, wc.input added
-
-
-2004-11-22(Mon) 02:31:56 +0900 Koichi Sasada <[email protected]>
-
- * test/test_proc.rb : add some test
-
- * yarvcore.c, vm.c : support yield in C method (as rb_yield)
-
- * vm.c (thread_yield_light_(prepare|invoke)) : support lightweight
- yield
-
- * yarv.h : added
-
- * yarvcore.c, yarv.h : support yarv_is_working, yarv_block_given_p,
- yarv_yield, yarv_funcall (only dummy function)
-
- * vm.c : thread_eval_body changed return value
-
- * yarvsubst.c : added and add yarv_Integer_times, yarv_Array_each
-
- * yarvcore.h : block_ptr is added to struct thread_object
-
- * insns.def : pass block when C method call
-
- * insnhelper.h : add GET_ISEQOBJ(cfp) macro
-
-
-2004-11-21(Sun) 07:25:49 +0900 Koichi Sasada <[email protected]>
-
- * vm.c : support Proc#call
-
- * test/test_proc.rb : added
-
-
-2004-11-19(Fri) 18:04:10 +0900 Koichi Sasada <[email protected]>
-
- * insns.def, vm.c : support creating Proc object
-
-
-2004-11-15(Mon) 14:19:27 +0900 Koichi Sasada <[email protected]>
-
- * insns.def (send) : use clear_local_size to specify
- clear local table vars.
-
- * insns.def : block represent data shares lfp, dfp with frame data
-
-
-2004-11-13(Sat) 18:19:41 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, insns.def : add VM_CALL_ARGS_SPLAT_BIT and
- VM_CALL_ARGS_BLOCKARG_BIT
-
- * compile.c, compile.h : add ADD_SEND, ADD_SEND_R
-
-
-2004-11-10(Wed) 08:26:25 +0900 Koichi Sasada <[email protected]>
-
- * add "vm_" prefix to (block_object, proc_object, env_object)
-
-
-2004-11-03(Wed) 15:52:14 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, yarvcore.c, disasm.c, compile.c, insns.def, vm.c :
- fix to move x86_64 (illegal cast, etc)
-
-
-2004-11-01(Mon) 04:45:54 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, compile.c, debug.c, version.h :
- redesgin gc debug scheme (GC_CHECK())
-
- * yarvcore.c : mark iseqobj->current_block on GC
-
- * insns.def, compile.c : last "throw" in ensure/rescue block
- use operand throwobj and before this insn, use "getdynamic 0, 1"
-
- * benchmark/bm_temp.rb : move to benchmark bmx_temp.rb
-
- * depend : change some targets
-
-
-2004-10-25(Mon) 19:57:58 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : push exception iseq to iseqobj->iseq_mark_ary
- to mark for GC
-
-
-2004-10-10(Sun) 16:25:03 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : remove $_, $' area from method local frame
- and provide that's special method local variables pointer(LFP[-1])
-
- * disasm.c : change environment showing format
-
- * yarvcore.(h|c) : add YarvProc, YarvEnv
-
- * yarvcore.h : add arg_block field to iseq_object
- and init -1 as default value
-
-
-2004-09-30(Thu) 19:50:48 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : support passing splat argument
-
- * compile.c, insns.def : support rest argument
-
- * compile.c, insns.def : support optional argument initializer
-
- * test/test_method.rb : add tests for above
-
-
-2004-09-29(Wed) 10:50:03 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix rescue clause popped
-
- * benchmark/bm_random.rb : move to benchmark/bmx_random.rb
-
-
-2004-09-29(Wed) 01:25:35 +0900 Koichi Sasada <[email protected]>
-
- * many many files: change stack frame design
-
-
-2004-09-16(Thu) 08:51:37 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, yarvcore.h : support 'return' from method
- in ensure clause
-
-
-2004-09-13(Mon) 21:56:40 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support inline cache constant access
- on NODE_COLON2, NODE_COLON3
-
- * depend : add 'vtest' rule(verbose test)
-
-
-2004-09-13(Mon) 10:58:44 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, yarvcore.h : support redo/next/break in
- while/until
-
-
-2004-09-13(Mon) 08:50:19 +0900 Koichi Sasada <[email protected]>
-
- * test/test_jump.rb : added(correctly)
-
- * benchamark/bm_(ensure|rescue|simplereturn).rb added
-
-
-2004-09-12(Sun) 23:30:20 +0900 Koichi Sasada <[email protected]>
-
- * test/test_jump.rb : added
-
- * insns.def, compile.c : add 'putnil' insn
-
- * compile.c : use '===' when rescue check
-
- * insns.def : remove 'rescuecheck' insn
-
- * compile.c : support retry in begin/rescue clause
-
- * ToDo : added
-
-
-2004-09-08(Wed) 12:34:04 +0900 Koichi Sasada <[email protected]>
-
- * yarvcore.h, yarvcore.c : add idThrow*
-
- * insns.def, compile.c, vm.c : support retry, break,
- next, redo, return(imcomplete)
-
-
-2004-09-03(Fri) 13:40:08 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : add nop after rescue body
-
- * insns.def, vm.c : support stack rewind when thrown
-
-
-2004-09-01(Wed) 17:31:01 +0900 Koichi Sasada <[email protected]>
-
- * test/test_exception.rb : added
-
-
-2004-09-01(Wed) 13:15:14 +0900 Koichi Sasada <[email protected]>
-
- * vm.c, insns.def : implementing exception handling
-
-
-2004-09-01(Wed) 00:18:54 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : add 'throw' insn
-
- * compile.c : support 'rescue' and 'ensure' clause
-
- * yarvcore.c, yarvcore.h : add 'catch_table' to iseq_struct
-
-
-2004-08-30(Mon) 19:06:12 +0900 Koichi Sasada <[email protected]>
-
- * compile.h : NEW_ISEQOBJ don't pass self as parent
-
- * compile.c : use NEW_CHILD_ISEQOBJ explicitly
-
-
-2004-08-29(Sun) 21:09:55 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : trying to implement rescue/ensure
-
- * insns.def : fix yield bug(lfp, dfp link)
-
-
-2004-08-28(Sat) 13:52:15 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix dvar bug
-
- * test/test_block.rb : add test
-
- * insns.def, insnhelper.h : remove unused source code
-
-
-2004-08-28(Sat) 08:51:26 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_DASGN
-
- * test/test_block.rb : add test
-
-
-2004-08-28(Sat) 08:13:04 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : support access to instance variable
-
- * test/test_class.rb : add test of instance variable
-
- * benchmark/bm_block.rb : added
-
-
-2004-08-28(Sat) 07:48:43 +0900 Koichi Sasada <[email protected]>
-
- * test/test_block.rb : fix block parameter name
-
-
-2004-08-28(Sat) 07:27:52 +0900 Koichi Sasada <[email protected]>
-
- * compile.c, insns.def : support method call with block
- and yield and add some functions
-
- * compile.c, insns.def : support dynavars accessor
-
- * test/test_block.rb : added
-
- * vm.c : fix block parameter stack dump
-
-
-2004-08-27(Fri) 23:56:47 +0900 Koichi Sasada <[email protected]>
-
- * compile.c(iseq_compile) : remove parameter iseqtype
- (this information can access via self)
-
-2004-08-27(Fri) 17:13:35 +0900 Koichi Sasada <[email protected]>
-
- * test/test_bin.rb : add test(absolute path constant)
-
- * yarvcore.h, compile.c(iseq_compile) : change parameter
-
- * insns.def(classdef) : fix bug
-
-
-2004-08-27(Fri) 04:53:13 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : support setconstant, getconstant, classdef,
- moduledef
-
- * vm.h : fix debug levels and so on
-
- * vm.h : foo_WORD -> foo_WC
-
- * test/test_class.rb : added
-
-
-2004-08-25(Wed) 17:51:50 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix getconstant/setconstant/classdef
-
-
-2004-08-25(Wed) 14:27:10 +0900 Koichi Sasada <[email protected]>
-
- * debug.[ch] : added
-
- * compile.c, disasm.c : use debug interface
-
- * compile.c : support some nodes
-
- * compile.c, rb/insns2vm.rb : remove TS_CPATH
-
- * insns.def : modify classdef/moduledef/singletonclassdef
- and add popcref
-
- * and others...
-
-
-2004-08-18(Wed) 20:16:45 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix case/when statement with empty else clause
-
- * insns.def : enable compile
-
- * yarvcore.h : add class search path scheme
-
- * test/test_syn.rb : add switch/case test case
-
- * tmpl/yarvarch.ja : update documents
-
-
-2004-05-22(Sat) 01:30:44 +0900 Koichi Sasada <[email protected]>
-
- * yarvutil.rb : add eval_in_wrap
-
- * test/test_*.rb : change to use eval_in_wrap
-
-
-2004-05-20(Thu) 02:50:32 +0900 Koichi Sasada <[email protected]>
-
- * support global variables
-
- * benchmark/bm_*.rb : add some benchmarks
-
- * compile.c : support NODE_ATTRASGN
-
- * compile.c : add debugi(...)
-
-
-2004-05-19(Wed) 23:19:38 +0900 Koichi Sasada <[email protected]>
-
- * test/test_method.rb : added
-
-
-2004-05-19(Wed) 22:56:09 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : fix typo
-
- * benchmark/run.rb : sort benchmark order by filename
-
- * extconf.rb : use --enable/disable-xxx
-
- * version.h : ditto(don't touch to change yarv options)
-
-
-2004-05-19(Wed) 21:18:55 +0900 Koichi Sasada <[email protected]>
-
- * yarvutil.rb : added
-
- * test.rb, test/*, benchmark/run.rb : use yarvutil.rb
-
- * version.h : USE_OPTIMIZED_REGEXP_MATCH added
-
- * yarvcore.h : add idEqTilde
-
- * yarvcore.c(yarvcore_parse, yarvcore_eval) : require file and line
- parameter
-
- * test/test_bin.rb : add regexp test
-
- * benchmark/bm_regexp.rb : added
-
-
-2004-05-19(Wed) 13:57:31 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : add compile_dstr(self, node)
-
- * compile.c : support NODE_MATCH2, NODE_MATCH3, NODE_DXSTR
-
- * insns.def : add toregexp
-
-
-2004-05-18(Tue) 10:12:20 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_XDSTR
-
- * test/test_bin.rb : add test for above change
-
-
-2004-05-18(Tue) 09:46:33 +0900 Koichi Sasada <[email protected]>
-
- * insns.def(send) : store regs before call_cfunc
-
-
-2004-05-18(Tue) 08:55:17 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : support NODE_DSTR, NODE_EVSTR
-
- * compile.c : support NODE_XSTR
-
- * insns.def : add tostring operation
-
- * rb/makedocs.rb : fix directory path
-
- * depend : add tbench rule
-
- * yarvcore.h : add 'exten ID idBackquote'
-
-
-2004-05-18(Tue) 00:09:48 +0900 Koichi Sasada <[email protected]>
-
- * version.h : add USE_OPTIMIZED_BASIC_OPERATION
-
- * yarvcore.h(struct thread_object) : add 'VALUE stat_insn_usage'
-
-
-2004-05-17(Mon) 11:28:55 +0900 Koichi Sasada <[email protected]>
-
- * version.h, insns.def, yarvcore.c : add FAKE_INLINE_METHOD_CACHE
-
-
-2004-05-17(Mon) 09:05:53 +0900 Koichi Sasada <[email protected]>
-
- * compile.c : fix generating opt_* insn process
-
-
-2004-05-17(Mon) 08:58:49 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/(bm_tarai.rb, bm_fib.rb) : added
-
-
-2004-05-17(Mon) 08:20:12 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/(bm_tak.rb, bm_reccount.rb) : added
-
- * insns.def : test method cache(incomplete)
-
- * insns.def : add expandarray insn
-
- * yarvcore.c(iseq_init) : add parameter 'parent'
-
-
-2004-05-17(Mon) 01:49:48 +0900 Koichi Sasada <[email protected]>
-
- * benchmark/run.rb, bm_factorial.rb, bm_whileloop.rb : added
-
- * insns.def(send) : set id to ruby_frame->orig_func
-
- * check behavior on mswin32 and cygwin
-
- * insns.def(send) : check stack overflow
-
-
-2004-05-16(Sun) 08:00:55 +0900 Koichi Sasada <[email protected]>
-
- * change frame structure(debugging)
-
-
-2004-05-14(Fri) 15:06:02 +0900 Koichi Sasada <[email protected]>
-
- * insns2vm.rb : support file name arguments
-
-
-2004-05-14(Fri) 04:33:09 +0900 Koichi Sasada <[email protected]>
-
- * insns.def : support (easy) constant
-
-
-2004-05-12(Wed) 01:51:48 +0900 Koichi Sasada <[email protected]>
-
- * rb/insns2vm.b : set directory prefix
-
- * disasm.c : fix bug
-
-
-2004-05-12(Wed) 00:00:17 +0900 Koichi Sasada <[email protected]>
-
- * vm.h, compiler.h, version.h : move *DEBUG defs to version.h
-
-
-2004-05-11(Tue) 23:00:11 +0900 Koichi Sasada <[email protected]>
-
- * vm.h, version.h, yarvcore.h : move gcc ver check to version.h
- and include version.h from yarvcore.h
-
-
-2004-05-11(Tue) 19:16:26 +0900 Koichi Sasada <[email protected]>
-
- * 0.0.0.d : imported
-
-
-Local variables:
-add-log-time-format: (lambda ()
- (let* ((time (current-time))
- (diff (+ (cadr time) 32400))
- (lo (% diff 65536))
- (hi (+ (car time) (/ diff 65536))))
- (format-time-string "%Y-%m-%d(%a) %H:%M:%S +900" (list hi lo) t)))
-indent-tabs-mode: t
-tab-width: 8
-end:
+# $Id: ChangeLog 590 2006-12-31 09:02:34Z ko1 $ +# +# YARV ChangeLog +# from Mon, 03 May 2004 01:24:19 +0900 +# + +Sun Dec 31 18:01:50 2006 Koichi Sasada <[email protected]> + + * bin/* : ruby/trunk/bin 11437 + + +Sun Dec 31 17:42:05 2006 Koichi Sasada <[email protected]> + + * eval.c : remove old Kernel#funcall definition + + +2006-12-30(Sat) 07:59:26 +0900 Koichi Sasada <[email protected]> + + * catch up ruby/trunk 11437 + + * eval_intern.h : reorder tag initialization + + * eval.c : fix to support __send!, funcall and prohibit funcall as + send + + * eval_error.h, eval_jump.h, eval_safe.h : fix prototypes + + * eval_method.h, vm.c : check re-definition at rb_add_method() + + * yarvcore.h : fix typo + + * compile.c : fix white spaces + + * lib/delegate.rb : fix to support __send, ... + + * lib/getoptlong.rb : fix to work on YARV + + * lib/rss/parser.rb : use __send! instead of __send__ + + * sample/test.rb : comment out codes which use |&b| type block parameter + + * ext/ripper/extconf.rb : turn off + + * test/ripper/test_files.rb, test_parser_events.rb, + test_scanner_events.rb : fix to check it has ripper module + + * vm_dump.c : remove showing file path length limitation + + * yarvtest/test_eval.rb : use __send! instead of __send__ + + +2006-12-19(Tue) 11:46:08 +0900 Koichi Sasada <[email protected]> + + * doc/* : added + + * ext/openssl : added + + * ext/ripper : added + + * test/openssl : added + + * test/ripper : added + + * misc : added + + * rb/ -> tool/ : renamed + + * common.mk : fixed for above change + + * ruby_doc/* : move to topdir + + * sample/* : added + + * test2.rb : removed + + +2006-12-15(Fri) 09:42:46 +0900 Koichi Sasada <[email protected]> + + * compile.c : remove obsolete codes + + * insns.def : fix a comment of getconstant + + +2006-12-13(Wed) 16:26:06 +0900 Koichi Sasada <[email protected]> + + * blockinlining.c, compile.c, compile.h, debug.c, debug.h, + insnhelper.h, insns.def, iseq.c, thread.c, thread_pthread.ci, + thread_pthread.h, thread_win32.ci, thread_win32.h, vm.c, vm.h, + vm_dump.c, vm_evalbody.ci, vm_opts.h.base, yarv.h, + yarv_version.h, yarvcore.c, yarvcore.h : + add a header includes copyright + + +2006-12-12(Tue) 13:13:32 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb : add PREFETCH() statement + + * vm.h : ditto + + * yarvcore.h : fix LIKELY(x) and + remove main_thread_val field from yarv_vm_t + + * yarvcore.c : ditto + + * thread.c : support fork + + * eval_thread.c : ditto + + * process.c : ditto + + * signal.c : ditto + + * test/ruby/test_signal.rb : + + * thread_pthread.ci : rename timer thread functions + + * thread_win32.ci : ditto + + +2006-11-10(Fri) 21:29:13 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix to compile arguments + + * insns.def : fix to duplicate first array value on concatarray + instruction + + * yarvtest/test_bin.rb : add a test for above change + + * sample/test.rb : fix to catch up Ruby HEAD (fix to remove test about + module duplicate) + + +2006-11-10(Fri) 12:49:11 +0900 Koichi Sasada <[email protected]> + + * vm_macro.def : fix to inherit visibility on + NODE_SUPER method invocation + + +2006-11-10(Fri) 09:13:46 +0900 Koichi Sasada <[email protected]> + + * class.c : revert module duplicate inclusion + + * parse.y : catch up current Ruby HEAD + + * node.h : ditto + + * compile.c : ditto + + * gc.c : ditto + + * iseq.c : ditto + + * eval_thread.c : define Continuation (null class) + + * vm_dump.c : fix to output backtrae to stderr + + * yarvtest/test_block.rb : remove unsupported test + + * yarvtest/test_class.rb : add a test about super + + * yarvtest/test_syntax.rb : add a test about case/when + + +2006-11-09(Thu) 10:22:59 +0900 Koichi Sasada <[email protected]> + + * call_cfunc.h -> call_cfunc.ci : renamed + + * vm_evalbody.h, vm_evalbody.ci : ditto + + * thread_pthread.h, thread_pthread.ci : separate declaration and + implementation + + * thread_win32.h, thread_win32.ci : ditto + + * thread.c : use *.ci instead of *.c as implementation + + * vm.c : ditto + + * common.mk : fix rules for above changes + + +2006-11-08(Wed) 17:23:23 +0900 Koichi Sasada <[email protected]> + + * vm_dump.c : show C level backtrace (pointer only) with + backtrace() function (glibc feature) + + * configure.in : ditto + + * yarvcore.c : add NSDR method (show C level backtrace) + + * error.c : fix indent + + +2006-11-07(Tue) 13:17:10 +0900 Koichi Sasada <[email protected]> + + * eval.c (rb_set_errinfo) : added + + * ruby.h : ditto + + * version.h : fix version number + + * lib/webrick/utils.rb : fix to remove Thread.critical + + * ext/dbm, dl, gdbm, iconv, io, pty, sdbm : added + + * test/dbm, gdbm, io, logger, net, readline, sdbm, soap, + webrick, win32ole, wsdl, xsd : added + + +2006-11-06(Mon) 22:32:18 +0900 Koichi Sasada <[email protected]> + + * array.c : import Ruby HEAD + + * ext/socket/extconf.rb : ditto + + * ext/socket/socket.c : ditto + + * gc.c : ditto + + * lib/date.rb : ditto + + * lib/net/imap.rb : ditto + + * lib/rss/0.9.rb : ditto + + * lib/set.rb : ditto + + * lib/soap/mapping/rubytypeFactory.rb : ditto + + * lib/soap/mimemessage.rb : ditto + + * lib/soap/property.rb : ditto + + * lib/webrick/httprequest.rb : ditto + + * lib/webrick/httputils.rb : ditto + + * lib/xmlrpc/create.rb : ditto + + * lib/xsd/codegen/gensupport.rb : ditto + + * object.c : ditto + + * ruby.h : ditto + + * string.c : ditto + + * version.h : ditto + + * rb/ir.rb : fix to use "diffs" directory + + * vm_dump.c : add "const" + + +2006-11-06(Mon) 16:36:47 +0900 Koichi Sasada <[email protected]> + + * eval_proc.c : remove "static" from external global variables + + * eval_thread.c : ditto + + * array.c : fix indent + + * insns.def : add a suitable cast + + * vm_macro.def : allow scalar value on splat arguments + + * yarvtest/test_block.rb : fix to synchronize Ruby HEAD + + * rb/insns2vm.rb : remove String#each for 1.9 + + * template/vm.inc.tmpl : ditto (remove String#each_with_index) + + +2006-11-06(Mon) 13:22:34 +0900 Koichi Sasada <[email protected]> + + * iseq.c : fixed GC debugging outputs + + * rb/parse.rb : fixed output format + + +2006-11-04(Sat) 09:46:50 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix to duplicate "#{'foo'}" string + + * yarvtest/test_bin.rb : add a test for above + + * ext/readline/readline.c : import Ruby HEAD + + * keywords : ditto + + * lex.c : ditto + + * parse.y : ditto + + * lib/mkmf.rb : ditto + + * test/ruby/test_hash.rb : fix to current specification + + * test/ruby/test_string.rb : ditto + + +2006-11-03(Fri) 20:58:36 +0900 Koichi Sasada <[email protected]> + + * ext/nkf/nkf-utf8/utf8tbl.h : missed to add + + * configure.in : import ruby HEAD + + * test/ruby/test_array.rb : ditto + + * test/ruby/test_assignment.rb : ditto + + * test/ruby/test_clone.rb : ditto + + * test/socket/test_socket.rb : ditto + + * test/socket/test_unix.rb : ditto + + * test/strscan/test_stringscanner.rb : ditto + + * test/testunit/collector/test_dir.rb : ditto + + +2006-11-03(Fri) 20:22:24 +0900 Koichi Sasada <[email protected]> + + * array.c : import current ruby HEAD and apply API changes + This version has some known bugs + + * bignum.c : ditto + + * blockinlining.c : ditto + + * class.c : ditto + + * compile.c : ditto + + * dir.c : ditto + + * dln.c : ditto + + * enum.c : ditto + + * enumerator.c : ditto + + * error.c : ditto + + * eval.c : ditto + + * eval_error.h : ditto + + * eval_jump.h : ditto + + * eval_load.c : ditto + + * eval_proc.c : ditto + + * ext/* + + * file.c : ditto + + * gc.c : ditto + + * hash.c : ditto + + * insns.def : ditto + + * instruby.rb : ditto + + * intern.h : ditto + + * io.c : ditto + + * iseq.c : ditto + + * lib/* + + * marshal.c : ditto + + * math.c : ditto + + * missing/vsnprintf.c : ditto + + * mkconfig.rb : ditto + + * node.h : ditto + + * numeric.c : ditto + + * object.c : ditto + + * oniguruma.h : ditto + + * pack.c : ditto + + * parse.y : ditto + + * prec.c : ditto + + * process.c : ditto + + * random.c : ditto + + * range.c : ditto + + * rb/ir.rb : ditto + + * re.c : ditto + + * regcomp.c : ditto + + * regerror.c : ditto + + * regexec.c : ditto + + * regint.h : ditto + + * regparse.c : ditto + + * regparse.h : ditto + + * ruby.c : ditto + + * ruby.h : ditto + + * rubytest.rb : ditto + + * runruby.rb : ditto + + * sample/test.rb : ditto + + * signal.c : ditto + + * sprintf.c : ditto + + * st.c : ditto + + * st.h : ditto + + * string.c : ditto + + * struct.c : ditto + + * test/* + + * thread.c : ditto + + * time.c : ditto + + * util.c : ditto + + * variable.c : ditto + + * version.h : ditto + + * vm.c : ditto + + * vm_dump.c : ditto + + * vm_macro.def : ditto + + * win32/* + + +2006-10-31(Tue) 22:47:50 +0900 Koichi Sasada <[email protected]> + + * parse.y : fix NEWHEAP bugs (import HEAD) + + * ruby.c, intern.h, yarvcore.c (rb_load_file) : change to + return parsed node pointer + + * rb/ir.rb : add check mode + + +2006-09-01(Fri) 22:05:28 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix a bug of peephole optimization and enable + regexp optimization + + +2006-08-21(Mon) 05:27:48 +0900 Koichi Sasada <[email protected]> + + * lib/mathn.rb : remove "remove_method :gcd2" + + * opt_insn_unif.def : unset opt setting + + * opt_operand.def : ditto + + +2006-08-18(Fri) 17:55:31 +0900 Koichi Sasada <[email protected]> + + * common.mk : add dependency of yarvcore.h to thread.o + + * gc.c : change comment line + + * thread.c : remove some line break + + * yarvcore.c : reoder initialize sequence to mark main thread + + +2006-08-18(Fri) 16:51:34 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : add a support for cache values per thread + + * yarvcore.c : ditto + + * gc.c : ditto + + * thread.c : move a expression after acquiring lock + + * compile.c : add a cast to remove warning + + +2006-08-18(Fri) 02:07:45 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix to return rhs value on ATTRASGIN + + * insns.def (setn) : add insn setn + + * yarvtest/test_bin.rb : add tests for above + + +2006-08-17(Thu) 22:46:08 +0900 Koichi Sasada <[email protected]> + + * vm.c : clear callee_id ([yarv-dev:1073]) + + +2006-08-17(Thu) 22:14:15 +0900 Koichi Sasada <[email protected]> + + * thread_pthread.h : fix error message + + +2006-08-17(Thu) 12:23:52 +0900 Koichi Sasada <[email protected]> + + * eval.c : change initilize routine order ([yarv-dev:1067]) + + * yarvcore.c (Init_yarv) : init th->machine_stack_start + + * thread_pthread.h : add malloc value check ([yarv-dev:1066]) + + * insns.def (opt_eq) : fix typo ([yarv-dev:1072]) + + * yarvtest/test_opts.rb : add a test for above + + * yarvtest/test_class.rb : add a test for last commit + + +2006-08-17(Thu) 11:02:16 +0900 Koichi Sasada <[email protected]> + + * class.c (clone_method) : check undef-ed method ([yarv-dev:1068]) + + +2006-08-15(Tue) 15:07:43 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix opt_plus routine ([yarv-dev-en:149]) + + * yarvtest/test_opts.rb : add tests for above + + +2006-08-06(Sun) 06:24:51 +0900 Koichi Sasada <[email protected]> + + * common.mk : fix build rule (build only ruby binary when benchmark) + + * yarvcore.[ch] : fix and add yarv_iseq_new_with_* API + + * blockinlining.c : ditto + + * compile.c : ditto + + * compile.h : ditto + + * iseq.c : ditto + + * eval_method.h : check redefinition for specialized instruction + + * insnhelper.h : ditto + + * insns.def : ditto + + * vm.c : ditto + + * vm.h : ditto + + * numeric.c : add Fixnum#succ + + * thread.c : remove duplicated method Thread#current + + * yarvcore.c : remove duplicated method Proc#clone + + * yarvtest/test_opts.rb : added + + +2006-07-20(Thu) 04:10:13 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix [yarv-dev:1041] problem (raise TypeError) + + * eval.c : rb_funcall2 send as NOEX_PRIVATE and check scope + + +2006-07-20(Thu) 03:38:46 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : fix [yarv-dev:1040] bug + + +2006-07-18(Tue) 18:45:52 +0900 Koichi Sasada <[email protected]> + + * some files : set property "svn:eol-style" as native + + +2006-07-18(Tue) 18:35:55 +0900 Koichi Sasada <[email protected]> + + * gc.h : fix a static function name + + * vm.c : remove Japanese comments + + * yarvcore.c : add a comment + + * some files : set property "svn:eol-style" as native + + +2006-07-18(Tue) 16:48:01 +0900 Koichi Sasada <[email protected]> + + * vm.c : remove unused code + + * compile.c : add checking value + + * iseq.c : ditto + + * yarvcore.c : fix yarv_th_eval prototype declaration + + * yarvtest/yarvtest.rb : use compile instead of parse method + + +2006-07-12(Wed) 15:18:58 +0900 Koichi Sasada <[email protected]> + + * yarv_version.h : 0.4.1 + + * Changes : ditto + + +2006-07-12(Wed) 13:38:03 +0900 Koichi Sasada <[email protected]> + + * eval.c : fix indent + + * gc.h : fix syntax bug + + * thread_pthread.h : vanish warnning message + + * iseq.c : ditto + + * compile.c : ditto + + * thread.c : ditto + + * vm.c : ditto + + * yarvcore.c : prohibit tail call optimization to mark + iseq object + + * yarvcore.h : add some allocator function declaration + + * yarvtest/test_eval.rb : remove output + + +2006-07-12(Wed) 05:01:23 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : undef alloc funcs + + * eval_proc.c : ditto (use factory faction) + + * thread.c : ditto + + * vm.c : ditto + + * iseq.c : fix compile option creation + + * rb/allload.rb : use compile_file method + + * rb/compile.rb : ditto + + * rb/parse.rb : ditto + + * template/insnstbl.html : hide mail addr + + +2006-07-11(Tue) 21:34:29 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_dir.rb: new test test_JVN_13947696. + + +2006-07-11(Tue) 21:26:41 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_alias.rb: new test test_JVN_83768862. + + +2006-07-11(Tue) 11:33:49 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix compile error on C90 + + +2006-07-11(Tue) 10:40:23 +0900 Koichi Sasada <[email protected]> + + * disasm.c : removed + + * iseq.c : added + + * common.mk : ditto + + * blockinlining.c : Get*Val => Get*Ptr + + * eval.c : ditto + + * yarvcore.c : ditto + + * eval_proc.c : ditto + + * vm_dump.c : ditto + + * vm_macro.def : ditto + + * signal.c : ditto + + * vm.c : ditto + + * thread.c : ditto + + * compile.c : rename local variable insnobj => iobj + + * compile.c : support yarv_compile_option_t + + * gc.h : added + + * insns.def : use OPT_CHECKED_RUN instead of IGNORE_OPTIMIZE + + * rb/compile.rb : use compile option + + * template/optinsn.inc.tmpl : fix function name + + * vm_opts.h.base : change macros + + * rb/insns2vm.rb : ditto + + * yarv.h : fix yarvcore_eval_parsed parameter type + + * yarvcore.c : fix some interfaces (functions) + + * yarvcore.h : add a type yarv_compile_option_t + + +2006-07-06(Thu) 13:45:20 +0900 Koichi Sasada <[email protected]> + + * lib/yasm.rb : pass builder object if block arity == 1 + + +2006-07-05(Wed) 11:23:50 +0900 Koichi Sasada <[email protected]> + + * lib/yasm.rb : fix method name + + * vm.c (th_set_top_stack) : check toplevel or not + + +2006-07-04(Tue) 20:05:38 +0900 Koichi Sasada <[email protected]> + + * rb/compile.rb : added + + * yarvtest/yarvtest.rb : disable load/store test + + +2006-07-04(Tue) 18:17:15 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix some bugs about load iseq data + + * disasm.c : ditto (store) + + * eval.c (rb_f_local_variables) : fix bugs + + * insns.def : fix otp_ltlt condition bug + + * vm.c : ditto + + * yarvcore.c : rename some functions + + * yarvtest/yarvtest.rb : add iseq load/store tests + (to enable this, remove comment) + + +2006-07-03(Mon) 01:54:23 +0900 Koichi Sasada <[email protected]> + + * eval_thread.c : add parameter "th" to thread_set_raised + + * yarvcore.h : ditto + + * eval_intern.h : ditto + + * eval.c : ditto + + * eval_error.h : declare with ANSI style + + * disasm.c : rename iseq_iseq2simpledata() to iseq_data_to_ary + + * lib/yasm.rb : rename Instruction#to_simpledata to + Instruction#to_a + + * yarvcore.c : ditto + + * vm.c : fix bug (Proc.new{|*args| p args}.call(1) #=> 1) + + * yarvtest/test_proc.rb : add a tests for above + + +2006-06-21(Wed) 09:19:06 +0900 Koichi Sasada <[email protected]> + + * compile.c : remove yarv_iseq_t#catch_table_ary and + add yarv_iseq_t#compile_data#catch_table_ary + + * compile.h : ditto + + * yarvcore.c : ditto + + * yarvcore.h : ditto + + * eval_thread.c : remove unused code + + * thread.c : add rb_gc_mark_threads() (from eval_thread.c) + + +2006-05-31(Wed) 21:26:38 +0900 Koichi Sasada <[email protected]> + + * parse.y : prohibit tail call optimization to mark vparsr + object + + +2006-05-25(Thu) 15:37:11 +0900 Koichi Sasada <[email protected]> + + * blockinlining.c : support NEW_ATTRASGN node + + * class.c : skip undefined method to collect ([yarv-dev:999]) + + * yarvtest/test_class.rb : add a test for above + + * compile.c : fix opt_regexpmatch1 condition + + * lib/monitor.rb : fix [yarv-dev:1009] + + * rb/insns2vm.rb : fix typo + + * thread.c : prohibit unlock by not mutex owner thread + + * vm_opts.h.base : change default option + + +2006-05-18(Thu) 16:00:50 +0900 Koichi Sasada <[email protected]> + + * intern.h : fix prototype declarations for last re.c change + + +2006-05-18(Thu) 12:12:03 +0900 Koichi Sasada <[email protected]> + + * rb/runruby.rb : added + + * thread.c (rb_thread_alone) : check if vm->living_threads + is available + + +2006-05-18(Thu) 12:05:35 +0900 Koichi Sasada <[email protected]> + + * signal.c : not mask SIGSEGV + + * thread.c : fix debug output on Win32 + + * thread.c, thread_pthread.h : add some debug prints + + * yarvcore.c : mark machine registers on thread_mark + + +2006-05-17(Wed) 18:09:20 +900 Yukihiro Matsumoto <[email protected]> + + * dir.c (sys_warning): should not call a vararg function + rb_sys_warning() indirectly. [ruby-core:07886] + + +2006-05-17(Wed) 16:41:41 +900 Yukihiro Matsumoto <[email protected]> + + * re.c (rb_reg_initialize): should not allow modifying literal + regexps. frozen check moved from rb_reg_initialize_m as well. + + * re.c (rb_reg_initialize): should not modify untainted objects in + safe levels higher than 3. + + * re.c (rb_memcmp): type change from char* to const void*. + + * dir.c (dir_close): should not close untainted dir stream. + + * dir.c (GetDIR): add tainted/frozen check for each dir operation. + + +2006-05-07(Sun) 21:06:28 +0900 Koichi Sasada <[email protected]> + + * thread.c : remove Mutex#unlock_and_stop and add Mutex#sleep + + * lib/monitor.rb : ditto + + * lib/thread.rb : ditto + + * thread_pthread.h : fix stack size + + * thread_win32.h : fix sleep + + * yarvcore.h : disable to use get/setcontext + + * lib/webrick/server.rb : add experimental implementation + using thraeds pool + + +2006-05-05(Fri) 13:59:00 +0900 Koichi Sasada <[email protected]> + + * test/ruby/test_signal.rb : disable a test + + * thread.c : do trylock before lock on mutex_lock + + * thread_win32.h : use CriticalSection instead of Mutex + + +2006-05-05(Fri) 03:03:22 +0900 Koichi Sasada <[email protected]> + + * common.mk : vtune rule make run test.rb + + * disasm.c : fix syntax errors (on VC) + + * yarvcore.c : ditto + + * lib/thread.rb : Mutex#synchronize is defined here + + * lib/*.rb : ditto + + * signal.c : separate pthread or not + + * thread.c : support lightweight wakeup + + * thread_pthread.h : ditto + + * thread_win32.h : ditto + + * yarvcore.h : ditto + + * yarvtest/test_thread.rb : restore last change + + +2006-05-04(Thu) 18:11:43 +0900 Koichi Sasada <[email protected]> + + * eval_thread.c : remove rb_thread_interrupt + + * intern.h : ditto + + * signal.c : change signal transfer route + + * thread.c : ditto + + * thread_pthread.h : ditto + + * thread_win32.h : ditto + + * yarv.h : support GET_VM() + + * yarvcore.h : change yarv_thread_t/yarv_vm_t structure + + * yarvtest/test_thread.rb : decrease threads to test + + +2006-05-04(Thu) 00:26:18 +0900 Koichi Sasada <[email protected]> + + * thread_pthread.h : experimental support of thread cache + + +2006-04-25(Tue) 22:30:14 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : remove struct yarv_cmethod_info, add + data structure for profiling and extend yarv_control_frame_t + + * vm.c : make pop_frame() and apply above change + + * eval.c : ditto + + * vm_dump.c : ditto + + * vm_macro.def : ditto + + * insns.def (leave): use pop_frame() instead of + POP_CONTROL_STACK_FRAME() macro + + * insnhelper.h : remove some macros + + * yarvcore.c : change th_set_top_stack() prototype + + +2006-04-18(Tue) 18:37:08 +0900 Koichi Sasada <[email protected]> + + * compile.c, disasm.c : support export/import exception + information + + * yarvcore.h : change "struct catch_table_entry" member variable + order + + +2006-04-13(Thu) 17:11:30 +0900 Koichi Sasada <[email protected]> + + * bignum.c : import ruby 1.9 HEAD (Ruby 1.9.0 2006-04-08) + + * dir.c : ditto + + * enumerator.c : ditto + + * ext/.document : ditto + + * ext/extmk.rb : ditto + + * ext/nkf/lib/kconv.rb : ditto + + * ext/nkf/nkf-utf8/nkf.c : ditto + + * ext/nkf/nkf-utf8/utf8tbl.c : ditto + + * ext/nkf/nkf.c : ditto + + * ext/nkf/test.rb : ditto + + * ext/socket/.cvsignore : ditto + + * ext/win32ole/sample/excel2.rb : ditto + + * ext/win32ole/tests/testOLEMETHOD.rb : ditto + + * ext/win32ole/tests/testOLEPARAM.rb : ditto + + * ext/win32ole/tests/testOLETYPE.rb : ditto + + * ext/win32ole/tests/testOLETYPELIB.rb : ditto + + * ext/win32ole/tests/testOLEVARIABLE.rb : ditto + + * ext/win32ole/tests/testOLEVARIANT.rb : ditto + + * ext/win32ole/tests/testWIN32OLE.rb : ditto + + * ext/win32ole/tests/testall.rb : ditto + + * ext/win32ole/win32ole.c : ditto + + * gc.c : ditto + + * instruby.rb : ditto + + * io.c : ditto + + * lib/delegate.rb : ditto + + * lib/fileutils.rb : ditto + + * lib/find.rb : ditto + + * lib/irb/ruby-lex.rb : ditto + + * lib/mkmf.rb : ditto + + * lib/net/http.rb : ditto + + * lib/open-uri.rb : ditto + + * lib/pathname.rb : ditto + + * lib/rational.rb : ditto + + * lib/rdoc/parsers/parse_rb.rb : ditto + + * lib/rdoc/ri/ri_paths.rb : ditto + + * lib/resolv.rb : ditto + + * lib/test/unit/collector/objectspace.rb : ditto + + * lib/webrick/httpservlet/cgihandler.rb : ditto + + * math.c : ditto + + * mkconfig.rb : ditto + + * object.c : ditto + + * oniguruma.h : ditto + + * pack.c : ditto + + * parse.y : ditto + + * re.c : ditto + + * re.h : ditto + + * regcomp.c : ditto + + * regerror.c : ditto + + * regparse.c : ditto + + * ruby.h : ditto + + * rubytest.rb : ditto + + * runruby.rb : ditto + + * string.c : ditto + + * test/digest/test_digest.rb : ditto + + * test/pathname/test_pathname.rb : ditto + + * test/ruby/envutil.rb : ditto + + * test/ruby/test_float.rb : ditto + + * test/ruby/test_pack.rb : ditto + + * time.c : ditto + + * util.c : ditto + + * version.h : ditto + + * win32/mkexports.rb : ditto + + * win32/resource.rb : ditto + + * win32/win32.c : ditto + + +2006-04-11(Tue) 11:26:53 +0900 Koichi Sasada <[email protected]> + + * rb/yasm.rb : move to lib/yasm.rb + + +2006-04-09(Sun) 03:04:04 +0900 Koichi Sasada <[email protected]> + + * compile.c : change to accept method iseq object when loading from + simple data + + * yarvcore.c : add a debug output + + * rb/yasm.rb : change some interfaces + + +2006-04-07(Fri) 20:25:03 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix miss about range of catch "next" + + * eval.c : add braces + + +2006-04-07(Fri) 11:09:43 +0900 Koichi Sasada <[email protected]> + + * common.mk : fix some make rules + + * insns.def : rename some instructions name + + * rb/insns2vm.rb : change some operand type name + + * vm_evalbody.h : ditto + + * template/insns.inc.tmpl : add YARV_MAX_INSTRUCTION_SIZE macro + + * compile.c, disasm.c, yarvcore.c : support load/store iseq from/to simple + data structure such as array, literals, and so on + + * rb/yasm.rb : supported + + * vm.c : change interface of eval_define_method + + * yarvcore.h : remove unused externals + + +2006-03-08(Wed) 10:31:29 +0900 Minero Aoki <[email protected]> + + * lib/delegate.rb (DelegateClass): do not delegate #send and + #funcall. + + +2006-02-27(Mon) 22:39:17 +0900 Minero Aoki <[email protected]> + + * lib/thread.rb: last commit causes busy loop, revert it. [yarv-dev:990] + + * lib/thread.rb: non_block=true wrongly caused ThreadError. + + +2006-02-27(Mon) 21:33:49 +0900 Koichi Sasada <[email protected]> + + * common.mk : fix to display command line + + * compile.c : fix comparison between a pointer and 0 + + * debug.c : fix to output stder + + * disasm.c : add debug function + + * vm_dump.c : ditto + + * eval_proc.c : fix to skip class definition + + * ruby.h : fix T_VALUE to T_VALUES + + * gc.c : ditto + + * node.h : fix prototypes + + * vm.c : add VM_DEBUG macro + + * vm.c : fix compile error on VC++ + + * vm.c : fix to inherit last lfp[0] on th_set_finish_env + + * vm.c : fix to add one svar location for any frame + + * vm_macro.def : ditto + + * yarvcore.h : add YARV_CLASS_SPECIAL_P() and YARV_BLOCK_PTR_P() + + * rdoc/ : removed + + * insns.def : fix to propagete throw state + + +2006-02-27(Mon) 13:54:47 +0900 Minero Aoki <[email protected]> + + * ext/syslog: imported from Ruby CVS trunk HEAD. + + * ext/racc: ditto. + + +2006-02-27(Mon) 12:47:10 +0900 Minero Aoki <[email protected]> + + * parse.y: follow coding style change. + + +2006-02-27(Mon) 11:53:07 +0900 Minero Aoki <[email protected]> + + * lib/README: imported from Ruby CVS trunk HEAD. + + * lib/gserver.rb: ditto. + + * lib/readbytes.rb: ditto. + + * lib/parsearg.rb: ditto. + + * lib/racc: ditto. + + * lib/rinda: ditto. + + +2006-02-27(Mon) 11:27:19 +0900 Minero Aoki <[email protected]> + + * lib/thread.rb (Queue#pop): faster code. [yarv-dev:973] + + * lib/thread.rb (Queue#pop): avoid to push same thread in to + @waiting. + + +2006-02-23(Thu) 23:32:53 +0900 Minero Aoki <[email protected]> + + * lib/open3.rb: imported from Ruby CVS trunk HEAD (rev 1.12). + + +2006-02-23(Thu) 15:10:09 +0900 Koichi Sasada <[email protected]> + + * eval.c : support rb_frame_self() + + * eval_intern.h (th_get_ruby_level_cfp) : return 0 if no cfp + + * eval_load.c : comment out scope set + + * yarvcore.c : fix to initialize/free process of iseq + + * vm.c (th_invoke_proc) : fix to set special cref always + + * yarvtest/test_proc.rb : add a test for above + + +2006-02-22(Wed) 23:33:47 +0900 Koichi Sasada <[email protected]> + + * common.mk : add rule "runruby" + + * eval_thread.c : remove obsolete comment + + * eval.c : remove unused functions + + * signal.c : ditto + + * gc.c : add rb_register_mark_object() and use it + + * eval_load.c : ditto + + * eval_proc.c : ditto + + * ext/etc/etc.c : ditto + + * ext/win32ole/win32ole.c : ditto + + * ruby.h : ditto + + * yarvcore.h : ditto + + * thread.c : add rb_thread_run_parallel() + + * yarvcore.c : change bootstrap + + +2006-02-22(Wed) 19:27:33 +0900 Koichi Sasada <[email protected]> + + * ext/win32ole/.cvsignore : removed + + * ext/win32ole/.document : ditto + + +2006-02-22(Wed) 18:17:06 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : set Binding as YARVCore::VM::Binding + + +2006-02-22(Wed) 12:54:45 +0900 Koichi Sasada <[email protected]> + + * ChangeLog : remove needless line + + +2006-02-22(Wed) 12:49:02 +0900 Koichi Sasada <[email protected]> + + * rubysig.h : remove CHECK_INTS + + * eval.c : ditto + + * eval_load.c : ditto + + * ext/readline/readline.c : ditto + + * thread.c : ditto + + * win32/win32.c : ditto + + * yarv_version.h : 0.4.0 + + * Changes : ditto + + +2006-02-22(Wed) 11:36:04 +0900 Koichi Sasada <[email protected]> + + * test.rb : removed + + +2006-02-22(Wed) 11:12:17 +0900 Koichi Sasada <[email protected]> + + * README : renewed + + * version.c : fixed version message + + * yarvext/ : removed + + +2006-02-22(Wed) 10:33:04 +0900 Koichi Sasada <[email protected]> + + * lib/.document : imported from Ruby 1.9 HEAD + + * .document : ditto + + * ext/.document : ditto + + * lib/ftools.rb : ditto + + * lib/rdoc/ : ditto + + * eval_thread.c : remove unused functions + + * process.c : ditto + + * rb/insns2vm.rb : compare modified date of vm_opts.h and + vm_opts.h.base + + * ruby.h : rename RValue to RValues + + * gc.c : ditto + + * vm.c : ditto + + +2006-02-22(Wed) 06:32:10 +0900 Koichi Sasada <[email protected]> + + * configure.in : remove last commit + + +2006-02-22(Wed) 06:18:53 +0900 Koichi Sasada <[email protected]> + + * configure.in : add default program prefix "-yarv" + + +2006-02-22(Wed) 06:11:36 +0900 Koichi Sasada <[email protected]> + + * common.mk : change default rule (same as HEAD) + + * configure : removed + + * eval.c : remove last commit + + * vm.c : fix stack traverse + + * yarvcore.c : initialize top of control frame + + * version.c : 2.0 + + * version.h : ditto + + +2006-02-22(Wed) 04:50:42 +0900 Koichi Sasada <[email protected]> + + * eval.c : change to rewind C level control frame + + * vm.c : change to initialize cfp#proc and fix comparison of + cfp and limit_cfp + + * yarvcore.c : remove last commit + + +2006-02-22(Wed) 03:25:56 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : initialize each stack of thread + + +2006-02-22(Wed) 00:02:08 +0900 Koichi Sasada <[email protected]> + + * thread.c : fix synchornize return value ([yarv-dev:957]) + and some synchornization error + + * thread_pthread.h : add debug helper function + + +2006-02-21(Tue) 20:54:28 +0900 Koichi Sasada <[email protected]> + + * eval.c : fix place of rb_thread_terminate_all() + + * eval_thread.c : remove unused functions + + * yarv.h : remove GET_VM() + + * eval_jump.h : ditto + + * insns.def : ditto + + * vm_dump.c : + + * intern.h : change rb_thread_signal_raise/exit interface + + * signal.c : ditto + + * thread.c : ditto + + * test/ruby/test_beginendblock.rb : use block with IO.popen + + * thread_pthread.h : fix interrupt process + + * thread_win32.h : ditto + + * yarvcore.c : fix thread free process + + * yarvcore.h : remove yarv_vm_t#thread_critical, etc + + +2006-02-21(Tue) 12:42:44 +0900 Koichi Sasada <[email protected]> + + * eval_thread.c : remove unused function rb_thread_schedule() + + * thread.c : rename yarv_thread_schedule to rb_thread_schedule() + + * thread.c, eval.c : fix to terminate all thread and barrier at + eval.c#ruby_cleanup() + + * thread_win32.h : remove native_thread_cleanup() + + * thread_pthread.h : ditto + + * yarvcore.c : ditto + + * yarvtest/test_thread.rb : separete assersions to tests + + +2006-02-21(Tue) 02:13:33 +900 Yukihiro Matsumoto <[email protected]> + + * parse.y (f_arglist): should set command_start = Qtrue for + command body. [ruby-talk:180648] + + +2006-02-20(Mon) 20:41:07 +0900 Koichi Sasada <[email protected]> + + * thread.c : fix to synchronize signal_thread_list access + and fix typo + + +2006-02-20(Mon) 17:54:58 +0900 Koichi Sasada <[email protected]> + + * eval_proc.c : remove unused Binding functions and + set is_lambda of Proc used define_method + + * yarvcore.c : support Proc#dup/clone, Binding#dup/clone + + * sample/test.rb : remove unsupport features (Proc as Binding) + + +2006-02-20(Mon) 16:28:59 +0900 Koichi Sasada <[email protected]> + + * common.mk : add a dependency to vm.c on eval_intern.h + + * eval_intern.h : fix to initialize tag->tag + + * yarvtest/test_jump.rb : add tests for above + + * eval_jump.h : use local variable + + +2006-02-20(Mon) 15:13:24 +0900 Koichi Sasada <[email protected]> + + * benchmark/bm_vm3_thread_create_join.rb : added + + * test/yaml/test_yaml.rb : imported from Ruby CVS trunk HEAD + + +2006-02-20(Mon) 14:49:46 +0900 Minero Aoki <[email protected]> + + * lib/yaml.rb: imported from Ruby CVS trunk HEAD. + + * lib/yaml: ditto. + + * ext/syck: ditto. + + +2006-02-20(Mon) 13:58:03 +0900 Koichi Sasada <[email protected]> + + * compile.c : support block parameter which is NODE_ATTRASGN + + * yarvtest/test_block.rb : add tests for above + + * compile.c : fix NODE_DASGN_CURR level check + + * compile.c : fix "||=" (at firtst, check "defined? val") + + * compile.c : fix NODE_MATCH3 (permute receiver and argument) + + * yarvtest/test_bin.rb : add tests for above + + * eval.c : add rb_each() + + * test/ruby/test_signal.rb : increment a timeout value + + * thread.c, yarvcore.h : fix "join" flow + + * thread_pthread.h : ditto + + * thread_win32.h : ditto + + * yarvtest/test_thread.rb : add a test for above + + * vm.h, vm.c, vm_dump.c, insns.def : add FRAME_MAGIC_LAMBDA and + support return from lambda (especially retrun from method defined + by "define_method") + + * yarvtest/test_method.rb : add a test for above + + * yarvcore.c : remove unused functions + + +2006-02-20(Mon) 11:22:31 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_eval.rb: now Object#funcall is defined. + + +2006-02-20(Mon) 11:04:32 +0900 Minero Aoki <[email protected]> + + * lib/irb/lc/ja/CVS: removed. + + +2006-02-20(Mon) 10:55:59 +0900 Minero Aoki <[email protected]> + + * lib/mutex_m.rb: imported from Ruby CVS trunk HEAD. + + * lib/observer.rb: ditto. + + * lib/wsdl: ditto. + + * lib/monitor.rb: ditto (removing Thread.critical=). + + * lib/xsd: ditto. + + * lib/soap: ditto. + + * lib/drb.rb: ditto. + + * lib/drb: ditto. + + +2006-02-20(Mon) 10:49:31 +0900 Minero Aoki <[email protected]> + + * yarvcore.c (Init_yarvcore): fix typo (duo -> dup). + + +2006-02-19(Sun) 01:27:08 +0900 Koichi Sasada <[email protected]> + + * vm.c : "return" from lambda{} break block + + * eval.c : Unsupport Proc as Binding + + * test/ruby/test_eval.rb : apply above changes + + * yarvcore.c : remove unused function yarv_yield_values() + + +2006-02-18(Sat) 03:19:36 +0900 Koichi Sasada <[email protected]> + + * thread.c, insns.def : fix passing value when thread killed + + * yarvtest/test_thread.rb : add tests for above + + +2006-02-19(Sun) 01:19:42 +0900 Minero Aoki <[email protected]> + + * lib/thread.rb (SizedQueue): didn't work. This patch was + contributed by yukimizake. [yarv-dev:916] + + +2006-02-18(Sat) 03:19:36 +0900 Koichi Sasada <[email protected]> + + * thread.c, insns.def : fix passing value when thread killed + + * yarvtest/test_thread.rb : add tests for above + + +2006-02-18(Sat) 02:40:18 +0900 Koichi Sasada <[email protected]> + + * insns.def, vm.c, vm_macro.def : change BMETHOD algorithm + ([yarv-dev:914]) + + * yarvtest/test_class.rb : add a test for above + + +2006-02-17(Fri) 23:59:51 +0900 Koichi Sasada <[email protected]> + + * vm.c, yarv.h : change th_invoke_proc() interface + + * eval_proc.c : ditto + + * signal.c : ditto + + * thread.c : ditto + + * yarvcore.c : ditto + + * vm_macro.def : ditto and fix NODE_BMETHOD call + + * vm.c : change name ("th_set_env()" to "push_frame()") and + change interface + + * insns.def : ditto + + * eval.c : remove proc_jump_error() + + * benchmark/bm_app_answer.rb : added + + * vm_opts.h.base : add optimize option + + +2006-02-17(Fri) 13:37:57 +0900 Koichi Sasada <[email protected]> + + * eval.c, ruby.h : add rb_errinfo() + + * eval_error.h (error_pos) : fix process order + + * bin/erb : imported from ruby 1.9 + + * bin/irb : ditto + + * bin/rdoc : ditto + + * bin/ri : ditto + + * bin/testrb : ditto + + * ext/curses/.cvsignore : ditto + + * ext/curses/curses.c : ditto + + * ext/curses/depend : ditto + + * ext/curses/extconf.rb : ditto + + * ext/curses/hello.rb : ditto + + * ext/curses/mouse.rb : ditto + + * ext/curses/rain.rb : ditto + + * ext/curses/view.rb : ditto + + * ext/curses/view2.rb : ditto + + * ext/fcntl/.cvsignore : ditto + + * ext/fcntl/depend : ditto + + * ext/fcntl/extconf.rb : ditto + + * ext/fcntl/fcntl.c : ditto + + * ext/readline/README : ditto + + * ext/readline/README.ja : ditto + + * ext/readline/depend : ditto + + * ext/readline/extconf.rb : ditto + + * ext/readline/readline.c : ditto + + * ext/win32ole/.document : ditto + + * ext/zlib/doc/zlib.rd : ditto + + * ext/zlib/extconf.rb : ditto + + * ext/zlib/zlib.c : ditto + + * lib/cgi/.document : ditto + + * lib/cgi/session.rb : ditto + + * lib/cgi/session/pstore.rb : ditto + + * lib/shell/builtin-command.rb : ditto + + * lib/shell/command-processor.rb : ditto + + * lib/shell/error.rb : ditto + + * lib/shell/filter.rb : ditto + + * lib/shell/process-controller.rb : ditto + + * lib/shell/system-command.rb : ditto + + * lib/shell/version.rb : ditto + + * lib/xmlrpc/.document : ditto + + * lib/xmlrpc/README.rdoc : ditto + + * lib/xmlrpc/README.txt : ditto + + * lib/xmlrpc/base64.rb : ditto + + * lib/xmlrpc/client.rb : ditto + + * lib/xmlrpc/config.rb : ditto + + * lib/xmlrpc/create.rb : ditto + + * lib/xmlrpc/datetime.rb : ditto + + * lib/xmlrpc/httpserver.rb : ditto + + * lib/xmlrpc/marshal.rb : ditto + + * lib/xmlrpc/parser.rb : ditto + + * lib/xmlrpc/server.rb : ditto + + * lib/xmlrpc/utils.rb : ditto + + * rdoc/README : ditto + + * rdoc/code_objects.rb : ditto + + * rdoc/diagram.rb : ditto + + * rdoc/dot/dot.rb : ditto + + * rdoc/generators/chm_generator.rb : ditto + + * rdoc/generators/html_generator.rb : ditto + + * rdoc/generators/ri_generator.rb : ditto + + * rdoc/generators/template/chm/chm.rb : ditto + + * rdoc/generators/template/html/hefss.rb : ditto + + * rdoc/generators/template/html/html.rb : ditto + + * rdoc/generators/template/html/kilmer.rb : ditto + + * rdoc/generators/template/html/old_html.rb : ditto + + * rdoc/generators/template/html/one_page_html.rb : ditto + + * rdoc/generators/template/xml/rdf.rb : ditto + + * rdoc/generators/template/xml/xml.rb : ditto + + * rdoc/generators/xml_generator.rb : ditto + + * rdoc/markup/sample/rdoc2latex.rb : ditto + + * rdoc/markup/sample/sample.rb : ditto + + * rdoc/markup/simple_markup.rb : ditto + + * rdoc/markup/simple_markup/fragments.rb : ditto + + * rdoc/markup/simple_markup/inline.rb : ditto + + * rdoc/markup/simple_markup/lines.rb : ditto + + * rdoc/markup/simple_markup/preprocess.rb : ditto + + * rdoc/markup/simple_markup/to_flow.rb : ditto + + * rdoc/markup/simple_markup/to_html.rb : ditto + + * rdoc/markup/simple_markup/to_latex.rb : ditto + + * rdoc/markup/test/AllTests.rb : ditto + + * rdoc/markup/test/TestInline.rb : ditto + + * rdoc/markup/test/TestParse.rb : ditto + + * rdoc/options.rb : ditto + + * rdoc/parsers/parse_c.rb : ditto + + * rdoc/parsers/parse_f95.rb : ditto + + * rdoc/parsers/parse_rb.rb : ditto + + * rdoc/parsers/parse_simple.rb : ditto + + * rdoc/parsers/parserfactory.rb : ditto + + * rdoc/rdoc.rb : ditto + + * rdoc/ri/ri_cache.rb : ditto + + * rdoc/ri/ri_descriptions.rb : ditto + + * rdoc/ri/ri_display.rb : ditto + + * rdoc/ri/ri_driver.rb : ditto + + * rdoc/ri/ri_formatter.rb : ditto + + * rdoc/ri/ri_options.rb : ditto + + * rdoc/ri/ri_paths.rb : ditto + + * rdoc/ri/ri_reader.rb : ditto + + * rdoc/ri/ri_util.rb : ditto + + * rdoc/ri/ri_writer.rb : ditto + + * rdoc/template.rb : ditto + + * rdoc/tokenstream.rb : ditto + + * rdoc/usage.rb : ditto + + * test/xmlrpc/data/bug_bool.expected : ditto + + * test/xmlrpc/data/bug_bool.xml : ditto + + * test/xmlrpc/data/bug_cdata.expected : ditto + + * test/xmlrpc/data/bug_cdata.xml : ditto + + * test/xmlrpc/data/bug_covert.expected : ditto + + * test/xmlrpc/data/bug_covert.xml : ditto + + * test/xmlrpc/data/datetime_iso8601.xml : ditto + + * test/xmlrpc/data/fault.xml : ditto + + * test/xmlrpc/data/value.expected : ditto + + * test/xmlrpc/data/value.xml : ditto + + * test/xmlrpc/data/xml1.expected : ditto + + * test/xmlrpc/data/xml1.xml : ditto + + * test/xmlrpc/test_datetime.rb : ditto + + * test/xmlrpc/test_features.rb : ditto + + * test/xmlrpc/test_marshal.rb : ditto + + * test/xmlrpc/test_parser.rb : ditto + + * test/xmlrpc/test_webrick_server.rb : ditto + + * test/xmlrpc/webrick_testing.rb : ditto + + * test/zlib/test_zlib.rb : ditto + + +2006-02-17(Fri) 09:41:35 +900 Yukihiro Matsumoto <[email protected]> + + * thread.c (sleep_timeval): sleep should always sleep for + specified amount of time. [ruby-talk:180067] + + +2006-02-17(Fri) 02:20:32 +0900 Koichi Sasada <[email protected]> + + * eval_safe.h, ruby.h : remove ruby_safe_level and add + rb_safe_level() and rb_set_safe_level_force() + + * eval.c : use above functions + + * eval_jump.h : ditto + + * eval_load.c : ditto + + * eval_method.h : ditto + + * eval_proc.c : ditto + + * eval_thread.c : ditto + + * gc.c : ditto + + * signal.c : ditto + + * variable.c : ditto + + * ext/win32ole/win32ole.c : ditto + + * vm.c (th_invoke_proc) : save and restore safe level + + * yarvtest/test_proc.rb : add tests for above + + * thread.c : remove unused functions + + +2006-02-17(Fri) 01:08:23 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : remove a setspecial second unused operand + + * eval_load.c : remove unused variable th + + * eval_proc.c, yarvcore.c : remove some functions from eval_proc.c + and move to yarvcore.c + + * insns.def : fix to delete warnings + + * sample/test.rb : comment out Proc#clone tests + + * version.c : add constant RUBY_VM_DATE + + * vm.c : fix some functions + + +2006-02-16(Thu) 22:58:27 +0900 Koichi Sasada <[email protected]> + + * insns.def, vm.c : use th_yield_setup_args at yield and Proc#call + + +2006-02-16(Thu) 19:51:52 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix analysis of block parameter + + * disasm.c : remove rb_bug() (temporarily) + + * insns.def, vm.c : fix passing block parameter + + * sample/test.rb : add "Proc = YARVCore::VM::Proc" + + * test/ruby/test_readpartial.rb : disable on mswin32 + + * test/socket/test_tcp.rb : ditto + + * thread.c : fix syntax error (for non GCC) + + +2006-02-15(Wed) 22:34:04 +0900 Koichi Sasada <[email protected]> + + * eval_method.h : move rb_clear_cache_by_id position + + * thread.c : fix Thread#kill + + * test/ruby/test_readpartial.rb : enable tests except cygwin version + + * test/ruby/test_signal.rb : ditto and enable timeout + + +2006-02-15(Wed) 22:13:29 +0900 Minero Aoki <[email protected]> + + * lib/runit: forgot to commit. + + +2006-02-15(Wed) 22:12:25 +0900 Minero Aoki <[email protected]> + + * lib/weakref.rb: do not use Thread.critical=. + + * lib/singleton.rb: ditto. + + * lib/timeout.rb: ditto. + + * lib/thread.rb: ditto. + + * test/inlinetest.rb: forgot to commit. + + +2006-02-15(Wed) 21:34:17 +0900 Minero Aoki <[email protected]> + + * test/test_pp.rb: imported from Ruby CVS trunk HEAD. + + * test/test_shellwords.rb: ditto. + + * test/test_set.rb: ditto. + + * test/test_time.rb: ditto. + + * test/test_ipaddr.rb: ditto. + + * test/test_prettyprint.rb: ditto. + + * test/test_tsort.rb: ditto. + + * test/strscan: ditto. + + * test/testunit: ditto. + + +2006-02-15(Wed) 20:03:21 +0900 Koichi Sasada <[email protected]> + + * eval_method.h : duplicate NODE_METHOD at make an alias + + * yarvtest/test_method.rb : add a test for above + + +2006-02-15(Wed) 19:48:59 +0900 Minero Aoki <[email protected]> + + * test/rss: imported from Ruby CVS trunk HEAD. + + +2006-02-15(Wed) 19:47:51 +0900 Koichi Sasada <[email protected]> + + * insns.def, compile.c, vm.c : remove methoddef, singletonmethoddef + instructions and make new insn definemethod + + * yarvcore.c : set toplevel visibility to private + + +2006-02-15(Wed) 17:39:16 +0900 Koichi Sasada <[email protected]> + + * eval_intern.h : + + * eval_jump.h, vm.c : localjump_error() and jump_tag_but_local_jump() + move to th_localjump_error and th_jump_tag_but_local_jump at vm.c + + * eval.c : ditto + + * eval_load.c : ditto + + * insns.def : ditto + + * vm.c : ditto + + * vm.c (th_make_jump_tag_but_local_jump) : added + + * opt_insn_unif.def : fix indnet (revert change) + + * opt_operand.def : ditto + + * rb/insns2vm.rb : fix error message + + * thread.c : raise exception at join if illegal local jump + + +2006-02-15(Wed) 14:21:45 +900 Yukihiro Matsumoto <[email protected]> + + * ChangeLog: add local variables line to support Emacs. + + * eval.c (rb_obj_instance_exec): add new method from 1.9. + + * eval.c (rb_mod_module_exec): ditto. + + * eval.c (yield_under_i): should not pass self as an argument to + the block for instance_eval. [ruby-core:07364] + + * eval.c (rb_obj_instance_eval): should be no singleton classes for + true, false, and nil. [ruby-dev:28186] + + +2006-02-14(Tue) 19:30:20 +0900 Koichi Sasada <[email protected]> + + * array.c : fix indent + + * eval.c : fix block_given + + * gc.c : add STACK_START and use it as a substitute for + rb_gc_stack_start + + * vm.c : fix to raise error if th_yield doesn't have block given + + * yarvcore.c : fix to skip iseq mark array at ObjectSpace.each_object + + +2006-02-14(Tue) 18:15:03 +0900 Koichi Sasada <[email protected]> + + * configure.in : enable pthread by deafult + + * ascii.c : import ruby 1.9 HEAD + + * bignum.c : ditto + + * compar.c : ditto + + * configure : ditto + + * defines.h : ditto + + * dln.c : ditto + + * dln.h : ditto + + * enum.c : ditto + + * enumerator.c : ditto + + * euc_jp.c : ditto + + * ext/win32ole/tests/testWIN32OLE.rb : ditto + + * ext/win32ole/win32ole.c : ditto + + * file.c : ditto + + * hash.c : ditto + + * io.c : ditto + + * lex.c : ditto + + * lib/irb/init.rb : ditto + + * lib/rexml/document.rb : ditto + + * main.c : ditto + + * marshal.c : ditto + + * math.c : ditto + + * missing.h : ditto + + * object.c : ditto + + * oniguruma.h : ditto + + * pack.c : ditto + + * process.c : ditto + + * random.c : ditto + + * range.c : ditto + + * rb/ir.rb : ditto + + * re.c : ditto + + * regcomp.c : ditto + + * regenc.c : ditto + + * regenc.h : ditto + + * regerror.c : ditto + + * regexec.c : ditto + + * regint.h : ditto + + * regparse.c : ditto + + * regparse.h : ditto + + * ruby.c : ditto + + * ruby.h : ditto + + * rubyio.h : ditto + + * sjis.c : ditto + + * sprintf.c : ditto + + * st.c : ditto + + * st.h : ditto + + * struct.c : ditto + + * test/ruby/envutil.rb : ditto + + * test/ruby/test_struct.rb : ditto + + * time.c : ditto + + * utf8.c : ditto + + * util.c : ditto + + * util.h : ditto + + * version.h : ditto + + * win32/Makefile.sub : ditto + + * win32/win32.c : ditto + + +2006-02-14(Tue) 16:40:01 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, eval_proc.c : fix rb_proc_arity + + * eval.c : declare funcall same as send (temporarily) + + * lib/thread.rb : added + + * test/pathname/test_pathname.rb : imported from ruby 1.9 + + * test/scanf/data.txt : ditto + + * test/scanf/test_scanf.rb : ditto + + * test/scanf/test_scanfblocks.rb : ditto + + * test/scanf/test_scanfio.rb : ditto + + * test/socket/test_socket.rb : ditto + + * test/socket/test_tcp.rb : ditto + + * test/socket/test_udp.rb : ditto + + * test/socket/test_unix.rb : ditto + + * test/stringio/test_stringio.rb : ditto + + * test/uri/test_common.rb : ditto + + * test/uri/test_ftp.rb : ditto + + * test/uri/test_generic.rb : ditto + + * test/uri/test_http.rb : ditto + + * test/uri/test_ldap.rb : ditto + + * test/uri/test_mailto.rb : ditto + + +2006-02-14(Tue) 15:59:28 +0900 Koichi Sasada <[email protected]> + + * thread.c : Change Thread.critical warnning message + + * lib/webrick.rb : imported from ruby 1.9 + + * lib/webrick/accesslog.rb : ditto + + * lib/webrick/cgi.rb : ditto + + * lib/webrick/compat.rb : ditto + + * lib/webrick/config.rb : ditto + + * lib/webrick/cookie.rb : ditto + + * lib/webrick/htmlutils.rb : ditto + + * lib/webrick/httpauth.rb : ditto + + * lib/webrick/httpauth/authenticator.rb : ditto + + * lib/webrick/httpauth/basicauth.rb : ditto + + * lib/webrick/httpauth/digestauth.rb : ditto + + * lib/webrick/httpauth/htdigest.rb : ditto + + * lib/webrick/httpauth/htgroup.rb : ditto + + * lib/webrick/httpauth/htpasswd.rb : ditto + + * lib/webrick/httpauth/userdb.rb : ditto + + * lib/webrick/httpproxy.rb : ditto + + * lib/webrick/httprequest.rb : ditto + + * lib/webrick/httpresponse.rb : ditto + + * lib/webrick/https.rb : ditto + + * lib/webrick/httpserver.rb : ditto + + * lib/webrick/httpservlet.rb : ditto + + * lib/webrick/httpservlet/abstract.rb : ditto + + * lib/webrick/httpservlet/cgi_runner.rb : ditto + + * lib/webrick/httpservlet/cgihandler.rb : ditto + + * lib/webrick/httpservlet/erbhandler.rb : ditto + + * lib/webrick/httpservlet/filehandler.rb : ditto + + * lib/webrick/httpservlet/prochandler.rb : ditto + + * lib/webrick/httpstatus.rb : ditto + + * lib/webrick/httputils.rb : ditto + + * lib/webrick/httpversion.rb : ditto + + * lib/webrick/log.rb : ditto + + * lib/webrick/server.rb : ditto + + * lib/webrick/ssl.rb : ditto + + * lib/webrick/utils.rb : ditto + + * lib/webrick/version.rb : ditto + + +2006-02-14(Tue) 14:55:51 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : support "defined?($1)", ... + + * yarvtest/test_syntax.rb : add a test for above + + * rb/makedocs.rb : fix template directory path + + * vm.c : fix to handle break from proc + + +2006-02-14(Tue) 12:42:59 +0900 Koichi Sasada <[email protected]> + + * eval.c : fix rb_iterate hook + + * yarvtest/test_block.rb : add a tests for above + + * vm.c : remove unused comment + + +2006-02-14(Tue) 12:01:06 +0900 Koichi Sasada <[email protected]> + + * eval.c : fix to check passed block at block_given_p + + * eval_proc.c : fix to pass block at Method#call + + * runruby.rb : fix to apply ruby + + * test/runner.rb : GC.stress (comment out) + + * vm.c : fix indnet + + +2006-02-14(Tue) 08:04:33 +0900 Minero Aoki <[email protected]> + + * lib/tempfile.rb: use Mutex instead of Thread.critical. + + * lib/rss/dublincore.rb: |x,| -> |x,_| to avoid YARV bug (tmp). + + * lib/rexml: imported from ruby CVS trunk HEAD. + + * test/digest: ditto. + + * test/fileutils: ditto. + + * test/ostruct: ditto. + + * test/erb: ditto. + + * test/optparse: ditto. + + * test/ruby/test_signal.rb: turn off a test to avoid unknown error + (tmp). + + +2006-02-14(Tue) 07:52:03 +0900 Minero Aoki <[email protected]> + + * test/digest: imported from ruby CVS trunk HEAD. + + * test/fileutils: ditto. + + * test/ostruct: ditto. + + * test/erb: ditto. + + * test/optparse: ditto. + + +2006-02-14(Tue) 06:26:21 +0900 Koichi Sasada <[email protected]> + + * compile.c, parse.y : support BEGIN{} (remove local scope) + + * test/ruby/beginmainend.rb : fix to apply YARV's specification + + * test/ruby/test_beginendblock.rb : enable BEGIN{} test + + * signal.c : exit at double segv + + * insns.def (preexe) : remove instruction "preexe" + + +2006-02-14(Tue) 05:53:56 +0900 Minero Aoki <[email protected]> + + * eval.c (ruby_cleanup): th->errinfo contains a NODE while + break'ing, check it before refering klass. + + +2006-02-14(Tue) 05:45:07 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix stack calc of send + + * sample/test.rb : remove SEGV causing code + + +2006-02-14(Tue) 02:24:21 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_module.rb: list order is not a matter. + + * test/csv: imported from ruby CVS trunk HEAD. + + +2006-02-14(Tue) 02:06:25 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_beginendblock.rb: unlock tests. + + * test/ruby/beginmainend.rb: new file (imported from ruby CVS + trunk HEAD). + + * test/ruby/endblockwarn.rb: new file (imported from ruby CVS + trunk HEAD). + + * test/ruby/test_file.rb: new file (imported from ruby CVS trunk + HEAD). + + +2006-02-14(Tue) 01:42:11 +0900 Koichi Sasada <[email protected]> + + * error.c : fix include file positon + + * test/ruby/test_signal.rb : skip test_exit_action on cygwin + + +2006-02-14(Tue) 01:36:57 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_class.rb: new file (imported from rubicon). + + +2006-02-14(Tue) 01:32:23 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_module.rb: ignore PP mixins. + + +2006-02-14(Tue) 01:24:56 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_lambda.rb: removed (->(){...} syntax is + obsolete). + + +2006-02-14(Tue) 01:20:54 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_module.rb: import many tests from rubicon. + + +2006-02-14(Tue) 01:06:57 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix to avoid stack consistency error + + * yarvtest/test_exception.rb : add a test for above + + +2006-02-14(Tue) 00:42:47 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, vm_macro.def : rename VM_CALL_SUPER to VM_CALL_SUPER_BIT + + * insns.def (send) : set a flag of super as fcall + + * yarvtest/test_class.rb : add a test for above + + +2006-02-14(Tue) 00:31:24 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_eval.rb: fix typo. + + * test/ruby/test_signal.rb: unlock tests. + + +2006-02-13(Mon) 23:53:27 +0900 Koichi Sasada <[email protected]> + + * insns.def, vm_macro.def : fix NODE_ZSUPER dispatch and + fix error message when super without suitable method ([yarv-dev:846]) + + * yarvcore.h : add VM_CALL_SUPER definition + + * yarvtest/test_method.rb : add a test of Module#private_class_method + + +2006-02-13(Mon) 22:49:42 +0900 Koichi Sasada <[email protected]> + + * insns.def : traverse all iseq to find super method ([yarv-dev:859]) + + * yarvtest/test_class.rb : add a test for above + + * yarvcore.c : add clear iseq->defined_method_id + + * signal.c : fix to prohibit double segv handler kicked + + +2006-02-13(Mon) 22:09:12 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_DECL, NODE_CLASS with NODE_CLON3 prefix + + * yarvtest/test_class.rb : add tests for above + + +2006-02-13(Mon) 21:20:57 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix indent + + * compile.c : fix to prohibit "redo" from eval expression + + +2006-02-13(Mon) 20:36:06 +0900 Koichi Sasada <[email protected]> + + * vm.c : fix constant search bug ([yarv-dev:788]) + + * yarvtest/test_class.rb : add a test of [yarv-dev:788] + + +2006-02-13(Mon) 18:09:28 +0900 Koichi Sasada <[email protected]> + + * test/ruby/test_clone.rb : enable tests with Class#clone + + * test/ruby/test_marshal.rb : ditto + + +2006-02-13(Mon) 17:42:37 +0900 Koichi Sasada <[email protected]> + + * class.c : support Class#clone + + * compile.c, insns.def : remove popcref + + * yarvcore.h, vm.c, insns.def : remove yarv_thread_t#cref_stack + + * eval.c, eval_intern.h, eval_load.c : ditto + + * yarvtest/test_class.rb : add tests for singleton class + + * gc.c : remove "FRAME *" unused variable + + * insnhelper.h : fix COPY_CREF + + * rb/mklog.rb : add default message + + * vm_macro.def : support NODE_ZSUPER as method type + + +2006-02-13(Mon) 00:11:17 +0900 Koichi Sasada <[email protected]> + + * blockinlining.c : refoctoring with CFLAGS+=-Wunused + + * eval.c : ditto + + * eval_intern.h : ditto + + * eval_load.c : ditto + + * eval_method.h : ditto + + * eval_proc.c : ditto + + * eval_thread.c : ditto + + * insns.def : ditto + + * parse.y : ditto + + * thread.c : ditto + + * vm.c : ditto + + +2006-02-13(Mon) 02:32:34 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_const.rb: show better message. + + * test/ruby/test_eval.rb: ditto. + + * test/ruby/test_module.rb: new file. + + +2006-02-12(Sun) 22:22:35 +0900 Koichi Sasada <[email protected]> + + * array.c : revert last commit + + * ascii.c : ditto + + * bignum.c : ditto + + * class.c : ditto + + * compar.c : ditto + + * defines.h : ditto + + * dir.c : ditto + + * dln.c : ditto + + * dln.h : ditto + + * enum.c : ditto + + * enumerator.c : ditto + + * error.c : ditto + + * euc_jp.c : ditto + + * file.c : ditto + + * gc.c : ditto + + * hash.c : ditto + + * intern.h : ditto + + * io.c : ditto + + * lex.c : ditto + + * main.c : ditto + + * marshal.c : ditto + + * math.c : ditto + + * missing.h : ditto + + * node.h : ditto + + * numeric.c : ditto + + * object.c : ditto + + * oniguruma.h : ditto + + * pack.c : ditto + + * prec.c : ditto + + * process.c : ditto + + * random.c : ditto + + * range.c : ditto + + * rb/mklog.rb : ditto + + * re.c : ditto + + * regcomp.c : ditto + + * regenc.c : ditto + + * regenc.h : ditto + + * regerror.c : ditto + + * regex.h : ditto + + * regexec.c : ditto + + * regint.h : ditto + + * regparse.c : ditto + + * regparse.h : ditto + + * ruby.c : ditto + + * ruby.h : ditto + + * rubyio.h : ditto + + * rubysig.h : ditto + + * signal.c : ditto + + * sjis.c : ditto + + * sprintf.c : ditto + + * st.c : ditto + + * st.h : ditto + + * string.c : ditto + + * struct.c : ditto + + * time.c : ditto + + * utf8.c : ditto + + * util.c : ditto + + * util.h : ditto + + * variable.c : ditto + + * version.c : ditto + + +2006-02-12(Sun) 21:33:10 +0900 Koichi Sasada <[email protected]> + + * array.c : fix to ruby's indent + + * ascii.c : ditto + + * bignum.c : ditto + + * blockinlining.c : ditto + + * call_cfunc.h : ditto + + * class.c : ditto + + * compar.c : ditto + + * compile.c : ditto + + * compile.h : ditto + + * debug.c : ditto + + * debug.h : ditto + + * defines.h : ditto + + * dir.c : ditto + + * disasm.c : ditto + + * dln.c : ditto + + * dln.h : ditto + + * enum.c : ditto + + * enumerator.c : ditto + + * error.c : ditto + + * euc_jp.c : ditto + + * eval.c : ditto + + * eval_error.h : ditto + + * eval_intern.h : ditto + + * eval_jump.h : ditto + + * eval_load.c : ditto + + * eval_method.h : ditto + + * eval_proc.c : ditto + + * eval_safe.h : ditto + + * eval_thread.c : ditto + + * file.c : ditto + + * gc.c : ditto + + * hash.c : ditto + + * insnhelper.h : ditto + + * insns.def : ditto + + * intern.h : ditto + + * io.c : ditto + + * lex.c : ditto + + * main.c : ditto + + * marshal.c : ditto + + * math.c : ditto + + * missing.h : ditto + + * node.h : ditto + + * numeric.c : ditto + + * object.c : ditto + + * oniguruma.h : ditto + + * opt_insn_unif.def : ditto + + * opt_operand.def : ditto + + * pack.c : ditto + + * prec.c : ditto + + * process.c : ditto + + * random.c : ditto + + * range.c : ditto + + * re.c : ditto + + * re.h : ditto + + * regcomp.c : ditto + + * regenc.c : ditto + + * regenc.h : ditto + + * regerror.c : ditto + + * regex.h : ditto + + * regexec.c : ditto + + * regint.h : ditto + + * regparse.c : ditto + + * regparse.h : ditto + + * ruby.c : ditto + + * ruby.h : ditto + + * rubyio.h : ditto + + * rubysig.h : ditto + + * signal.c : ditto + + * sjis.c : ditto + + * sprintf.c : ditto + + * st.c : ditto + + * st.h : ditto + + * string.c : ditto + + * struct.c : ditto + + * test.rb : ditto + + * thread.c : ditto + + * thread_pthread.h : ditto + + * thread_win32.h : ditto + + * time.c : ditto + + * utf8.c : ditto + + * util.c : ditto + + * util.h : ditto + + * variable.c : ditto + + * version.c : ditto + + * vm.c : ditto + + * vm.h : ditto + + * vm_dump.c : ditto + + * vm_evalbody.h : ditto + + * vm_macro.def : ditto + + * yarv.h : ditto + + * yarv_version.h : ditto + + * yarvcore.c : ditto + + * yarvcore.h : ditto + + +2006-02-12(Sun) 15:53:21 +0900 Koichi Sasada <[email protected]> + + * lib/abbrev.rb : added + + * lib/base64.rb : ditto + + * lib/cgi-lib.rb : ditto + + * lib/csv.rb : ditto + + * lib/date2.rb : ditto + + * lib/eregex.rb : ditto + + * lib/ipaddr.rb : ditto + + * lib/irb.rb : ditto + + * lib/irb/cmd/chws.rb : ditto + + * lib/irb/cmd/fork.rb : ditto + + * lib/irb/cmd/help.rb : ditto + + * lib/irb/cmd/load.rb : ditto + + * lib/irb/cmd/nop.rb : ditto + + * lib/irb/cmd/pushws.rb : ditto + + * lib/irb/cmd/subirb.rb : ditto + + * lib/irb/completion.rb : ditto + + * lib/irb/context.rb : ditto + + * lib/irb/ext/change-ws.rb : ditto + + * lib/irb/ext/history.rb : ditto + + * lib/irb/ext/loader.rb : ditto + + * lib/irb/ext/math-mode.rb : ditto + + * lib/irb/ext/multi-irb.rb : ditto + + * lib/irb/ext/save-history.rb : ditto + + * lib/irb/ext/tracer.rb : ditto + + * lib/irb/ext/use-loader.rb : ditto + + * lib/irb/ext/workspaces.rb : ditto + + * lib/irb/extend-command.rb : ditto + + * lib/irb/frame.rb : ditto + + * lib/irb/help.rb : ditto + + * lib/irb/init.rb : ditto + + * lib/irb/input-method.rb : ditto + + * lib/irb/lc/error.rb : ditto + + * lib/irb/lc/help-message : ditto + + * lib/irb/lc/ja/CVS/Entries : ditto + + * lib/irb/lc/ja/CVS/Repository : ditto + + * lib/irb/lc/ja/CVS/Root : ditto + + * lib/irb/lc/ja/error.rb : ditto + + * lib/irb/lc/ja/help-message : ditto + + * lib/irb/locale.rb : ditto + + * lib/irb/notifier.rb : ditto + + * lib/irb/output-method.rb : ditto + + * lib/irb/ruby-lex.rb : ditto + + * lib/irb/ruby-token.rb : ditto + + * lib/irb/slex.rb : ditto + + * lib/irb/version.rb : ditto + + * lib/irb/workspace.rb : ditto + + * lib/irb/ws-for-case-2.rb : ditto + + * lib/irb/xmp.rb : ditto + + * lib/jcode.rb : ditto + + * lib/logger.rb : ditto + + * lib/mailread.rb : ditto + + * lib/mathn.rb : ditto + + * lib/parsedate.rb : ditto + + * lib/pathname.rb : ditto + + * lib/ping.rb : ditto + + * lib/pstore.rb : ditto + + * lib/resolv-replace.rb : ditto + + * lib/resolv.rb : ditto + + * lib/rss.rb : ditto + + * lib/rss/0.9.rb : ditto + + * lib/rss/1.0.rb : ditto + + * lib/rss/2.0.rb : ditto + + * lib/rss/content.rb : ditto + + * lib/rss/converter.rb : ditto + + * lib/rss/dublincore.rb : ditto + + * lib/rss/image.rb : ditto + + * lib/rss/maker.rb : ditto + + * lib/rss/maker/0.9.rb : ditto + + * lib/rss/maker/1.0.rb : ditto + + * lib/rss/maker/2.0.rb : ditto + + * lib/rss/maker/base.rb : ditto + + * lib/rss/maker/content.rb : ditto + + * lib/rss/maker/dublincore.rb : ditto + + * lib/rss/maker/image.rb : ditto + + * lib/rss/maker/syndication.rb : ditto + + * lib/rss/maker/taxonomy.rb : ditto + + * lib/rss/maker/trackback.rb : ditto + + * lib/rss/parser.rb : ditto + + * lib/rss/rexmlparser.rb : ditto + + * lib/rss/rss.rb : ditto + + * lib/rss/syndication.rb : ditto + + * lib/rss/taxonomy.rb : ditto + + * lib/rss/trackback.rb : ditto + + * lib/rss/utils.rb : ditto + + * lib/rss/xml-stylesheet.rb : ditto + + * lib/rss/xmlparser.rb : ditto + + * lib/rss/xmlscanner.rb : ditto + + * lib/rubyunit.rb : ditto + + * lib/scanf.rb : ditto + + * lib/shell.rb : ditto + + * lib/singleton.rb : ditto + + * lib/tsort.rb : ditto + + * lib/weakref.rb : ditto + + * eval_jump.c : removed + + +2006-02-12(Sun) 15:39:09 +0900 Koichi Sasada <[email protected]> + + * parse.y : fix to remove including env.h + + * yarvtest/test_exception.rb : fix syntax (add 'end') + + +2006-02-12(Sun) 15:14:44 +0900 Koichi Sasada <[email protected]> + + * env.h : removed + + * common.mk : remove env.h dependency + + * compile.c, eval_intern.h : remove include env.h + + * vm.c : ditto + + * ruby.h, gc.c, error.c : remove T_SCOPE, T_VARMAP + + * parse.y, eval.c : use rb_parse_in_eval() instead of ruby_in_eval + + * yarvcore.c, yarvcore.h : add a prase_in_eval member to yarv_thread_t + + * insns.def : add push value to throw instruction + for stack consistency + + * yarvtest/test_exception.rb : add a test for above + + * test/ruby/test_gc.rb : fix typo + + +2006-02-12(Sun) 05:05:02 +0900 Koichi Sasada <[email protected]> + + * eval.c, eval_intern.h, eval_load.c, eval_proc.c, node.h, + insnhelper.h, insns.def, vm.c, yarvcore.c, yarvcore.h : + change cref data structure and unify ruby_class and ruby_cbase + and some refoctoring + + +2006-02-11(Sat) 23:41:11 +0900 Koichi Sasada <[email protected]> + + * insns.def (methoddef) : fix method declaration in method + + * thread.c : Thread.critical to show warning (no effect) + + +2006-02-11(Sat) 20:20:18 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix [yarv-dev:831] + + * yarvtest/test_class.rb : add a test for above + + +2006-02-11(Sat) 14:29:01 +0900 Koichi Sasada <[email protected]> + + * rb/mklog.rb : use svk + + * error.c : remove newline + + * eval.c (rb_block_call) : added + + * eval_thread.c : remove some unused functions, comments + + * thread.c : add comments (move from eval_thread.c) and support Mutex + + * thread.c (rb_thread_select) : supported + + * thread_pthread.h (native_mutex_trylock) : added (macro) + + * thread_win32.h (native_mutex_trylock) : added + + * yarvcore.c : remove unused code + + * array.c : import ruby 1.9 + + * compar.c : ditto + + * dln.c : ditto + + * enum.c : ditto + + * enumerator.c : ditto + + * ext/digest/digest.c : ditto + + * ext/digest/digest.h : ditto + + * ext/digest/sha2/sha2.c : ditto + + * ext/etc/etc.c : ditto + + * ext/win32ole/win32ole.c : ditto + + * hash.c : ditto + + * intern.h : ditto + + * io.c : ditto + + * main.c : ditto + + * missing.h : ditto + + * missing/flock.c : ditto + + * missing/isinf.c : ditto + + * missing/vsnprintf.c : ditto + + * lib/cgi.rb : ditto + + * lib/complex.rb : ditto + + * lib/delegate.rb : ditto + + * lib/erb.rb : ditto + + * lib/fileutils.rb : ditto + + * lib/matrix.rb : ditto + + * lib/mkmf.rb : ditto + + * lib/optparse.rb : ditto + + * lib/ostruct.rb : ditto + + * lib/pp.rb : ditto + + * lib/timeout.rb : ditto + + * lib/tmpdir.rb : ditto + + * lib/test/unit/autorunner.rb : ditto + + * node.h : ditto + + * object.c : ditto + + * parse.y : ditto + + * ruby.c : ditto + + * sample/test.rb : ditto + + * sprintf.c : ditto + + * st.c : ditto + + * test/ruby/test_whileuntil.rb : ditto + + * test/runner.rb : ditto + + * time.c : ditto + + * lib/net/.document : added + + * lib/net/ftp.rb : ditto + + * lib/net/http.rb : ditto + + * lib/net/https.rb : ditto + + * lib/net/imap.rb : ditto + + * lib/net/pop.rb : ditto + + * lib/net/protocol.rb : ditto + + * lib/net/smtp.rb : ditto + + * lib/net/telnet.rb : ditto + + * lib/open-uri.rb : ditto + + +2006-02-10(Fri) 08:07:34 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def, yarvcore.h : support defined?(private_method) and + defined?(protected_method) (separate DEFINE_METHOD / DEFINE_FUNC) + + * yarvtest/test_syntax.rb : add a test for above + + * compile.c (iseq_compile_each) : fix NODE_RETURN bug + (double ensure invoke) + + * yarvtest/test_flow.rb : add a test for above + + * eval.c (get_errinfo) : fix to search $! + + * yarvtest/test_exception.rb : add tests for above + + * eval_safe.h : support $SAFE + + * ext/socket/socket.c : import ruby 1.9 + + * gc.c (gc_mark_children) : fix making T_VALUE + + * test/ruby/test_gc.rb : use GC.stress + + * signal.c (sighandler) : send interrupt signal if thread blocked + + * test/ruby/test_proc.rb : remove assert false + + * test/ruby/test_readpartial.rb : change fail message + + * test/ruby/test_signal.rb : remove assert false + + * thread.c (thread_start_func_2) : set local_lfp/local_svar + at thread creation + + * thread_pthread.h : export native_thread_interrupt + + * thread_win32.h : export native_thread_interrupt + + * version.h : import ruby 1.9 + + * vm.c (lfp_svar), yarvcore.h : fix to use Thread local svar + + * yarvtest/test_thread.rb : add a test for above + + * win32/Makefile.sub : import ruby 1.9 + + * win32/dir.h : ditto + + * win32/setup.mak : ditto + + * win32/win32.c : ditto + + * yarvtest/yarvtest.rb : fix to remove using ARGV + + +2006-02-10(Fri) 01:04:58 +0900 Yukihiro Matsumoto <[email protected]> + + * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while + invoking finalizers. + + * gc.c (rb_gc_finalize_deferred): ditto. + + +2006-02-08(Wed) 23:17:44 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_proc.rb: method names were wrongly duplicated. + + +2006-02-08(Wed) 21:30:01 +0900 Minero Aoki <[email protected]> + + * ext/nkf: added (imported from ruby CVS trunk HEAD). + + * ext/nkf/depend: new file (rev 1.5). + + * ext/nkf/extconf.rb: new file (rev 1.2). + + * ext/nkf/nkf.c: new file (rev 1.12). + + * ext/nkf/test.rb: new file (rev 1.7). + + * ext/nkf/nkf-utf8/nkf.c: new file (rev 1.17). + + * ext/nkf/nkf-utf8/config.h: new file (rev 1.4). + + * ext/nkf/nkf-utf8/utf8tbl.c: new file (rev 1.6). + + * ext/nkf/lib/kconv.rb: new file (rev 1.13). + + * test/nkf: added (imported from ruby CVS trunk HEAD). + + * test/nkf/test_kconv.rb: new file (rev 1.1). + + * test/nkf/test_nkf.rb: new file (rev 1.1). + + +2006-02-08(Wed) 21:07:36 +0900 Minero Aoki <[email protected]> + + * lib/find.rb: new file (imported from ruby CVS trunk HEAD, + rev 1.15). + + +2006-02-07(Tue) 17:58:18 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : support BEGIN{} and add preexe instruction + + * insns.def : fix getspecial/setspecial instructions + to catch up svar change + + * test/ruby/test_system.rb : remove stopper + + * thread.c (rb_thread_fd_writable) : add a debug output + + * thread.c (rb_thread_wait_fd) : add a debug output + + * vm.c (lfp_svar) : refactoring and fix some problems + + * vm_dump.c (yarv_bug) : add branch + + * yarv.h : remove unused declarations + + * yarvcore.c (vm_free) : VM object should not free by GC + + +2006-02-07(Tue) 14:42:25 +0900 Koichi Sasada <[email protected]> + + * eval.c, eval_load.c : remove rb_thread_start_1() + + * eval.c : fix some prototypes and indents + + * eval_thread.c, thread.c : move some functions + from eval_thread.c to thread.c + + * signal.c (sighandler) : add line braek in error message + + * yarvcore.c, yarvcore.h, thread.c : support ThreadGroup + + * ruby.h, gc.c, vm.c : make new basic type RValue and T_VALUE. + RValue includes three values in itself. RValue is used as + svar + + +2006-02-06(Mon) 23:51:41 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_hash.rb: import many tests from rubicon. + + +2006-02-04(Sat) 18:36:41 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_array.rb: import many tests from rubicon. + + +2006-02-04(Sat) 17:47:44 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_signal.rb (test_exit_action): lib/timeout.rb is + not implemented yet. + + +2006-02-04(Sat) 17:42:31 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_readpartial.rb: lib/timeout.rb is not implemented + yet. + + +2006-02-04(Sat) 16:22:38 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_pipe.rb: remove useless require. + + * test/ruby/test_signal.rb: turn off the test case which causes + segmentation fault (tmp). + + +2006-02-04(Sat) 08:19:50 +0900 Koichi Sasada <[email protected]> + + * common.mk : add dependency to yarvcore.h on signal.o + + * compile.c (iseq_compile_each) : fix [yarv-dev:795] problem + (prohibit "break", "next" jump from eval) + + * eval.c : fix indent + + * eval_thread.c, thread.c : remove some functions and move to thread.c + + * insns.def, vm.c : fix [yarv-dev:799] and [yarv-dev:800] + + * yarvtest/test_class.rb : add a test for above + + * test/ruby/test_gc.rb : remove GC.debug_flag control + + * test/ruby/test_readpartial.rb : disable + + * test/ruby/test_signal.rb : disable + + * thread.c : fix thread_debug() and many bugs + + * thread.c (yarv_thread_s_new) : move living_threads setting + + * thread.c (yarv_thread_join) : fix + + * thread_pthread.h : add type native_thread_data_t (dummy) + and support interrupt blocking thread + + * thread_pthread.h (native_thread_apply_priority) : added + + * thread_win32.h : add type native_thread_data_t (dummy) + and support interrupt blocking thread + + * yarvcore.h : use win32 thread system on cygwin and fix + some struct members + + * yarvtest/test_thread.rb : added + + +2006-02-03(Fri) 00:08:09 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_string.rb: import many tests from rubicon. + + +2006-02-02(Thu) 23:20:13 +0900 Minero Aoki <[email protected]> + + * test/ruby/envutil.rb: new file (imported from ruby trunk HEAD). + + * test/ruby/marshaltestlib.rb: ditto. + + * test/ruby/test_array.rb: ditto. + + * test/ruby/test_beginendblock.rb: ditto. + + * test/ruby/test_clone.rb: ditto. + + * test/ruby/test_dir.rb: ditto. + + * test/ruby/test_env.rb: ditto. + + * test/ruby/test_file.rb: ditto. + + * test/ruby/test_float.rb: ditto. + + * test/ruby/test_fnmatch.rb: ditto. + + * test/ruby/test_hash.rb: ditto. + + * test/ruby/test_io.rb: ditto. + + * test/ruby/test_marshal.rb: ditto. + + * test/ruby/test_math.rb: ditto. + + * test/ruby/test_pack.rb: ditto. + + * test/ruby/test_path.rb: ditto. + + * test/ruby/test_pipe.rb: ditto. + + * test/ruby/test_rand.rb: ditto. + + * test/ruby/test_range.rb: ditto. + + * test/ruby/test_readpartial.rb: ditto. + + * test/ruby/test_regexp.rb: ditto. + + * test/ruby/test_settracefunc.rb: ditto. + + * test/ruby/test_signal.rb: ditto. + + * test/ruby/test_sprintf.rb: ditto. + + * test/ruby/test_string.rb: ditto. + + * test/ruby/test_stringchar.rb: ditto. + + * test/ruby/test_struct.rb: ditto. + + * test/ruby/test_symbol.rb: ditto. + + * test/ruby/test_system.rb: ditto. + + * test/ruby/test_time.rb: ditto. + + * test/ruby/ut_eof.rb: ditto. + + +2006-02-02(Thu) 22:53:44 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_proc.rb: test [yarv-dev:777]. + + +2006-02-01(Wed) 03:51:39 +0900 Koichi Sasada <[email protected]> + + * gc.c : add GC.debug_flag= method + + * insns.def : support method definition in method + + * yarvtest/test_method.rb : add tests for above + + +2006-01-29(Sun) 11:40:26 +0900 Koichi Sasada <[email protected]> + + * eval_proc.c (proc_alloc) : fix [yarv-dev:777] + + * yarvtest/test_proc.rb : add a test for above + + * insns.def : fix [yarv-dev:782] and add YARV_CHECK_INTS() + + * yarvtest/test_class.rb : add a test for above + + * thread_win32.h : fix [yarv-dev-en:23] + + * vm.c (th_call0) : add YARV_CHECK_INTS() + + +2006-01-09(Mon) 11:56:34 +0900 Minero Aoki <[email protected]> + + * yarvcore.h: add prototype (remove warning). + + * vm.c (th_invoke_proc): make save variables volatile. + + * eval.c (eval): initialize local variables (remove warnings). + + * eval_thread.c (rb_exec_recursive): ditto. + + * yarvcore.c (thread_mark): ditto. + + * vm.c (th_invoke_proc): ditto. + + * eval.c: remove useless prototypes. + + +2006-01-09(Mon) 10:25:12 +0900 Minero Aoki <[email protected]> + + * eval_thread.c: rb_thread_join is required to build ruby on + Linux. + + * compile.c: unify coding style. + + * yarvcore.c: ditto. + + +2006-01-06(Fri) 09:21:34 +0900 Minero Aoki <[email protected]> + + * vm.c: coding style change only. + + +2006-01-04(Wed) 14:12:47 +0900 Koichi Sasada <[email protected]> + + * eval.c (ruby_init), eval_intern.h : use POP_TAG_INIT() at bootstrap + + * eval_thread.c : remove unused functions and comments + + * intern.h : expose rb_make_exception() + + * signal.c : support signal + + * thread.c (yarv_thread_execute_interrupts) : added + + * thread_pthread.h (thread_timer) : set interrupt_flag of + current runnning threads + + * vm.c (th_invoke_proc) : jump with JUMP_TAG() if some exception + occurres + + * yarv.h : add yarv_set_current_running_thread_raw() for bootstrap + + * yarvcore.c : add yarv_segv() and segv() method for test + + * yarvcore.c (Init_yarvcore) : set yarv_thread_t#running_thread + + * yarvcore.h : fix yarv_thread_t members + + +2006-01-03(Tue) 22:25:04 +0900 Koichi Sasada <[email protected]> + + * disasm.c (insn_operand_intern) : fix to add child iseq + + * eval.c, gc.c : remove obsolete static variables (ruby_scope, + ruby_dyna_vars, ruby_frame) + + * eval.c (rb_mod_s_constants) : use ruby_cref() + + * eval.c (eval) : use th_restore_klass() + + * eval_proc.c (rb_f_binding) : use th_store_klass() + + * insns.def (concatarray) : fix insn ([expr, *nil] => [expr]) + + * vm.c (th_set_env), insnhelper.h : remove macro + + * vm.c (eval_get_cvar_base) : use get_cref + + * vm.c (th_make_proc) : use th_store_klass() + + * vm_macro.def (macro_eval_invoke_func) : fix option args size + + * vm_macro.def (macro_eval_invoke_func) : raise stack overflow error + + * yarvcore.h : add yarv_stored_klass_t type + + * yarvcore.c : fix mark functions around yarv_stored_klass_t + + +2006-01-01(Sun) 05:14:26 +0900 Minero Aoki <[email protected]> + + * lib/benchmark.rb: new file (imported from original ruby, rev + 1.10). + + +2006-01-01(Sun) 03:51:10 +0900 Minero Aoki <[email protected]> + + * yarvcore.c: add prototype. + + * re.c: remove warning: long -> unsigned long. + + * debug.c: adjust coding style. + + * yarv.h: ditto. + + +2006-01-01(Sun) 03:43:33 +0900 Minero Aoki <[email protected]> + + * variable.c: add prototype. + + * eval.c: ditto. + + * eval_load.c: ditto. + + +2006-01-01(Sun) 02:41:21 +0900 Koichi Sasada <[email protected]> + + * common.mk : add address analyse to vtune rule + + * rb/vtlh.rb : added for above + + * rb/insns2vm.rb, template/vm.inc.tmpl : insert #line directive + to reference above + + * vm_macro.def (macro_eval_invoke_cfunc) : fix indent + + * yarvtest/test_method.rb : fix indent, spacing + and add a test for alias + + +2005-12-31(Sat) 12:42:05 +0900 Koichi Sasada <[email protected]> + + * common.mk : add Intel VTune rule (make vtune) + + * eval.c, yarvcore.h : fix to remove yarv_thread_t#local_* + + * parse.y (top_local_init_gen) : fix a problem ([yarv-dev:765]) + + * yarvtest/test_eval.rb : add a test for above + + * vm.c (thread_eval) :remove unused function + + * yarvcore.c (Init_yarvcore) : remove YARVCore::Thread::eval method + + * yarvcore.c (thread_eval) : remove unused function + + +2005-12-31(Sat) 06:05:00 +0900 Koichi Sasada <[email protected]> + + * vm.c (eval_search_super_klass) : pass block to method missing + + * vm_macro.def (macro_eval_invoke_method) : ditto + + * yarvtest/test_method.rb : add a test for above + + +2005-12-31(Sat) 03:11:14 +0900 Koichi Sasada <[email protected]> + + * eval.c (eval), eval_proc.c (rb_f_binding) : save klass, etc to + binding and use it at eval + + * eval_intern.h : ditto + + * yarvtest/test_eval.rb : add tests for above + + * yarvcore.c (th_get_special_cref) : added + + * yarvcore.h : add a prototype of above + + * vm.c (th_get_cref) : refactoring + + * vm.c (eval_get_ev_const) : fix SEGV at A::B (A is not class/module) + ([yarv-dev:758]) + + * yarvtest/test_bin.rb : add a test for above + + * rb/mklog.rb : use external diff command and show function name + + +2005-12-30(Fri) 19:07:51 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, yarvcore.h, eval.c, eval_proc.c : support + Ruby's Binding + + * yarvcore.c : support TOPLEVEL_BINDING + + * yarvtest/test_eval.rb : add tests for above + + +2005-12-30(Fri) 13:12:28 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_eval.rb: more tests for + module_eval/instance_eval. + + +2005-12-30(Fri) 05:06:49 +0900 Koichi Sasada <[email protected]> + + * common.mk : add dependency (yarvcore.h) for gc.c + + * eval.c, eval_intern.h, eval_load.c, eval_method.h, + insns.def, insnhelper.h, vm.c, yarvcore.c, yarvcore.h : + re-write class reference + + * yarvtest/test_eval.rb : added + + * yarvtest/test_proc.rb : + + +2005-12-29(Thu) 12:27:12 +0900 Koichi Sasada <[email protected]> + + * compile.c, yarvcore.h : + remvoe needless yarv_iseq_t#rewind_frame_size + + +2005-12-29(Thu) 11:17:58 +0900 Koichi Sasada <[email protected]> + + * common.mk : add dependency to test-all rule + + * eval.c (rb_sourceline), vm.c (th_get_sourceline) : + fix to skip process if iseq is ifunc + + * test/ruby/test_lambda.rb : assert(fail, ...) instead of assert_fail + + * test/ruby/test_proc.rb : ditto + + * vm_dump.c : fix stack dump (iseq name) + + * vm_macro.def : store proc (block proc) to cfp#proc for GC mark + + * yarvcore.c : mark above on thread_mark + + * eval.c (exec_under) : replace block#self ([yarv-dev:751]) + + +2005-12-29(Thu) 01:56:46 +0900 Koichi Sasada <[email protected]> + + * vm.c : fix setting of Proc cref ([yarv-dev:741]) + + * yarvcore.c : fix indent + + +2005-12-29(Thu) 00:17:03 +0900 Koichi Sasada <[email protected]> + + * disasm.c : show (block) local variable simple (not as symbol) + + * gc.c : fix syntax error + + +2005-12-28(Wed) 23:35:06 +0900 Koichi Sasada <[email protected]> + + * class.c (method_entry) : fixed for undefed method ([yarv-dev:743]) + + * compile.c : fix errinfo dvar id (#$!) + and fix NODE_ERRINFO compilation + + * eval_proc.c, yarvcore.c : support YARVCore::VM::Proc.new + + * insns.def : remove useless TODO comments + + * insns.def : fix to use strict array conversion on + checkarrayinclude + + * insns.def : fix defined?(yield) ([yarv-dev:744]) + + * yarvcore.h : change yarv_iseq_t layout + + +2005-12-28(Wed) 16:49:55 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_eval.rb: add TODO comment. + + * test/ruby/test_iterator.rb: rename YARVCore::VM::Proc -> Proc + (tmp). + + * test/ruby/test_lambda.rb: use assert_fail. + + * test/ruby/test_proc.rb: ditto. + + +2005-12-28(Wed) 16:28:35 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_clone.rb: removed (tmp). + + * test/ruby/test_eval.rb: define missing method Object#funcall + (tmp). + + * test/ruby/test_lambda.rb: turn off tests for "->". + + * test/ruby/test_proc.rb: turn off tests for |&b|. + + * test/ruby/test_proc.rb: turn off tests for $SAFE setter. + + +2005-12-28(Wed) 15:31:46 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix calculation of stack_max + + * eval.c (rb_iter) : fix block/retry handling + + * yarvtest/test_flow.rb : add tests for above + + * insns.def : fix block passing on super (super(&nil)) + + * vm_macro.def, insns.def : fix convert method of object to array + + * yarvtest/test_method.rb : fix a test for above + + * vm.c : fix backtrace generate algorithm + + +2005-12-28(Wed) 10:36:45 +0900 Koichi Sasada <[email protected]> + + * compile.c, compile.h : refactoring (remove self passing, etc) + + * disasm.c : support showing ID of method/dynamic local variables + + * rb/allload.rb : add verbose version (it's enable by $DEBUG) + + * template/insns.inc.tmpl, template/insns_info.inc.tmpl, + template/minsns.inc.tmpl, template/opt_sc.inc.tmpl, + template/optinsn.inc.tmpl, template/optunifs.inc.tmpl, + template/vmtc.inc.tmpl : fix a comment + + * variable.c (mod_av_set) : fix to clear inline cache ([yarv-dev:720]) + + * eval_method.h : fix to clear inline method cache + + * vm.c, rb/insns2vm.rb, template/insns_info.inc.tmpl, compile.c, + insns.def, vm_evalbody.h, vm_macro.def : + fix operands types (ulong -> num_t, ...) + + * vm_macro.def : fix to check SPECIAL_CONST_P() at splat array + ([yarv-dev:722]) + + * yarvcore.c : fix to throw syntax error + + * yarvcore.h, eval.c, eval_error.h, eval_jump.h : + add yarv_vm_t#exit_code to fix problem at cleanup ([yarv-dev:723]) + + * insns.def : fix to invoke zsuper in method defined by define_method + ([yarv-dev:704]) + + * yarvtest/test_class.rb : add tests for above + + * yarvtest/test_method.rb : fix comments + + +2005-12-27(Tue) 01:52:07 +0900 Koichi Sasada <[email protected]> + + * array.c, intern.h, insns.def : expose rb_ary_replace and use it + in insns.def + + * eval.c : fix to use SCOPE_* to NOEX_* + + * eval_intern.h : remove SCOPE_* + and fix SCOPE_TEST() and SCOPE_SET(f) + + * eval_load.c : save and store klass and visibility + at require and load + + * eval_method.h : fix undefed method node ([yarv-dev-en:8]) + + * eval_proc.c : fix define_method ([yarv-dev:704]) + + * insnhelper.h, vm.h : remove GET_VM_STATE_VERSION(), + INC_VM_STATE_VERSION() and move these to vm.h + + * insns.def : supportintg visibility + + * node.h : remove NOEX_RECV + + * variable.c, vm.c : add rb_vm_change_state() and use it in + remove_const + + * vm.c, insns.def, yarvcore.h, yarvcore.c : add eval_push_cref(), + eval_pop_cref() and th_cref_init to manage current visibility + + * yarv.h : add a prototype of rb_vm_change_state() + + * yarvcore.h, insns.def : add defined_method_id and support + super in define_method scope + + * yarvtest/test_class.rb : add tests for above + + +2005-12-26(Mon) 20:44:38 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_basicinstructions.rb: new file. + + +2005-12-26(Mon) 08:40:02 +0900 Koichi Sasada <[email protected]> + + * vm.c (eval_get_ev_const) : fix to skip nil + + +2005-12-26(Mon) 08:27:15 +0900 Koichi Sasada <[email protected]> + + * insnhelper.h : fix GET_CVAR_EV_KLASS [yarv-dev:703] + + +2005-12-26(Mon) 07:51:01 +0900 Koichi Sasada <[email protected]> + + * compile.c : add emptstack insn for all NODE_RETURN + and optimize it if it's not needed + + * yarvtest/test_flow.rb : add a test for above + + +2005-12-26(Mon) 07:08:22 +0900 Koichi Sasada <[email protected]> + + * eval.c, gc.c : add "gc_debug_flag" to debug gc + + * insns.def : add emptstack + + * compile.c, rb/insns2vm.rb, template/insns_info.inc.tmpl : + change interface of insn_stack_increase + + * compile.c : fix return from ensure in method [yarv-dev:702] + + * yarvtest/test_flow.rb : add tests for above + + +2005-12-26(Mon) 02:15:02 +0900 Minero Aoki <[email protected]> + + * test/ruby/test_alias.rb: do not use unimplemented defined?. + + +2005-12-26(Mon) 02:00:11 +0900 Minero Aoki <[email protected]> + + * test/runner.rb: new file. + + * test/ruby/test_alias.rb: new file. + + * test/ruby/test_clone.rb: new file. + + * test/ruby/test_eval.rb: new file. + + * test/ruby/test_iterator.rb: new file. + + * test/ruby/test_lambda.rb: new file. + + * test/ruby/test_proc.rb: new file. + + * test/ruby/test_super.rb: new file. + + * test/ruby/test_assignment.rb: new file. + + * test/ruby/test_bignum.rb: new file. + + * test/ruby/test_call.rb: new file. + + * test/ruby/test_case.rb: new file. + + * test/ruby/test_condition.rb: new file. + + * test/ruby/test_const.rb: new file. + + * test/ruby/test_defined.rb: new file. + + * test/ruby/test_exception.rb: new file. + + * test/ruby/test_gc.rb: new file. + + * test/ruby/test_ifunless.rb: new file. + + * test/ruby/test_method.rb: new file. + + * test/ruby/test_trace.rb: new file. + + * test/ruby/test_variable.rb: new file. + + * test/ruby/test_whileuntil.rb: new file. + + +2005-12-25(Sun) 07:40:08 +0900 Koichi Sasada <[email protected]> + + * blockinlining.c, compile.c : fix block inlining + + * rb/insns2vm.rb : fix to support tracing stack depth + with operands unification + + * vm_dump.c : fix to print Qundef on stack dump + + +2005-12-25(Sun) 01:45:55 +0900 Koichi Sasada <[email protected]> + + * insns.def, compile.c, rb/insns2vm.rb, template/insns_info.inc.tmpl : + trace stack depth at compile time + and use it as cont_sp for exception handling + + * yarvtest/test_exception.rb : add tests for above + + * yarvtest/test_flow.rb : ditto + + * Merry Xmas :) + + +2005-12-24(Sat) 19:34:04 +0900 Koichi Sasada <[email protected]> + + * compile.c, compile.h : fix ADD_CATCH_ENTRY and add LABEL#sp + + * eval_jump.h : fix catch to remove illegal error + + +2005-12-24(Sat) 09:05:23 +0900 Koichi Sasada <[email protected]> + + * eval_method.h : change data structure for RClass#m_tbl + + * class.c, eval.c, eval_proc.c : fix for above changes + + * node.h, gc.c : change NODE_FBODY, NODE_METHOD members + for above changes + + * insns.def : support private/protected visibility + + * vm_macro.def : ditto + + * vm.c : ditto + + * thread.c : fix typo + + * thread_pthread.h : fix typo + + * thread_win32.h : fix typo + + * eval.c, yarvcore.h : add yarv_thread_t#method_missing_reason + to pass method_missing reason and use it to build error message + + * compile.c : use ADD_CALL instead of ADD_SEND for + NODE_X(D)STR, NODE_CONST (func) + + +2005-12-22(Thu) 02:45:27 +0900 Koichi Sasada <[email protected]> + + * yarv_version.h, Changes : 0.3.3 + + +2005-12-20(Tue) 04:04:45 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix self::Const access + + * yarvtest/test_bin.rb : add a test for above + + +2005-12-20(Tue) 01:52:52 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix to expand VALUES value + + * yarvtest/test_massign.rb : add a test for above + + +2005-12-20(Tue) 01:32:35 +0900 Koichi Sasada <[email protected]> + + * insns.def, insnhelper.h : fix cvar in singleton method/class + + * yarvtest/test_bin.rb : add tests for above + + +2005-12-20(Tue) 01:03:34 +0900 Koichi Sasada <[email protected]> + + * compile.c, yarvcore.h : support all defined?() syntax + + * compile.c : fix NODE_COLON2 + + * yarvtest/test_bin.rb : add or fix tests for above + + * win32/* : update all + + +2005-12-17(Sat) 10:46:08 +0900 Minero Aoki <[email protected]> + + * vm_macro.def: fix printf type mismatch for LP64 system (again). + + * parse.y: introduce descriptive macro for special values of + lvtbl->dvars. + + +2005-12-17(Sat) 09:39:27 +0900 Minero Aoki <[email protected]> + + * vm_macro.def (macro_eval_invoke_method): fix printf type mismatch + for LP64 system. + + +2005-12-14(Wed) 03:49:40 +0900 Koichi Sasada <[email protected]> + + * compile.c : change rescue/ensure iseq name + + * eval.c, intern.h : fix a prototype + + * insns.def, yarvcore.h : add trace_function + + * vm.c : fix deadly bug (illegal pointer cast) + + * vm_dump.c : remove unused local variables + + * vm_macro.def : add parameter size check + + * yarvtest/test_bin.rb : comment out 2 assertions + + +2005-12-13(Tue) 03:55:27 +0900 Koichi Sasada <[email protected]> + + * eval_proc.c : fix indent + + * insns.def : fix getspecial instruction to return nil + if no entry + + * yarvtest/test_syntax.rb : add a test for above + + * lib/un.rb : added + + * template/*.tmpl : fix typo + + +2005-12-13(Mon) 01:38:17 +0900 Minero Aoki <[email protected]> + + * yarv.h: add prototypes. + + * intern.h: ditto. + + * eval.c: ditto. + + * debug.c: ditto. + + * thread_pthread.h: fix printf type mismatch for LP64 system + (Linux/AMD64). + + * variable.c: ditto. + + * object.c: ditto. + + * gc.c: ditto. + + * process.c: ditto. + + * error.c: ditto. + + * vm.c: ditto. + + * vm.h: ditto. + + * vm_dump.c: ditto. + + * disasm.c: ditto. + + * marshal.c: ditto. + + * eval_thread.c: ditto. + + +2005-12-11(Sun) 22:00:34 +0900 Koichi Sasada <[email protected]> + + * insns.def : call "inherited" method when a class is inherited + + * yarvcore.h : fix yarv_iseq_t field layout + + * common.mk : add dependence on yarvcore.h to eval*.o files + + * compile.c : fix NODE_POSTEXE logic + + * insnhelper.h : use GC_GUARDED_PTR_REF instead of magic number + + * eval_proc.c : fix indent + + * configure : re-autoconf + + +2005-12-10(Sat) 03:57:20 +0900 Koichi Sasada <[email protected]> + + * common.mk : fix blockinlining.o build rule + + * insns.def : remove logic for zsuper + + * template/optinsn.inc.tmpl : + + * vm.c : remove thread_yield_light_prepare, thread_yield_light_invoke + + * compile.c : support NODE_ZSUPER with optargs, restarg + + * yarvtest/test_class.rb : add tests for above + + +2005-12-09(Fri) 01:13:37 +0900 Koichi Sasada <[email protected]> + + * array.c, numeric.c, range.c : add prototype of + block inlining function + + * blockinlining.c, vm_opts.h.base : add block inlining flag + + * common.mk, debug.h, debug.c : add debug_breakpoint() for gdb + + * compile.c : fix to use size_t on compile_data_alloc(), + fix illegal cast, fix to set arg_simple at compiling block, + + * compile.c, vm.c : fix NODE_NEXT, NODE_BREAK logic + + * yarvtest/test_flow.rb : add a test for above + + * yarvcore.c, yarvcore.h, compile.c, eval.c : remove + yarv_iseq_t#root_iseq and add yarv_iseq_t#local_iseq and fix + to use this member field + + * eval_method.h : fix indent + + * gc.c : fix indent + + * insns.def, compile.c : remove "zsuper" instruction (use "super" + instead). This is because NODE_ZSUPER represent with only "super" + instruction + + * yarvcore.c : add proc_arity + + +2005-12-05(Mon) 03:58:30 +0900 Koichi Sasada <[email protected]> + + * array.c, blockinlining.c : support block inlining for Array#each + + * disasm.c : fix catch table format + + * insns.def : fix stack consistency error message + + * vm.c : fix to skip pushing value at "next" + + * yarvcore.h : move definision of + "struct iseq_compile_data_ensure_node_stack" to compile.c + + * compile.c : fix ensure catch table creation + + * yarvtest/test_flow.rb : add tests for above + + +2005-12-03(Sat) 22:27:08 +0900 Koichi Sasada <[email protected]> + + * blockinlining.c, compile.c, yarvcore.c, yarvcore.h, + numeric.c, range.c : collect block inlining logic to blockinlining.c + + +2005-12-03(Sat) 20:24:07 +0900 Koichi Sasada <[email protected]> + + * blockinlining.c, common.mk : add blockinlining.c + + * yarvcore.c, yarvcore.h, blockinlining.c, compile.c, compile.h, + gc.c, node.h, numeric.c, range.c : + support block inlining for Integer#times, Range#each + + * compile.c : fix to set block redo/next point at last, + and fix NODE_OP_ASGN1 + + * compile.c, vm.c : add specialized instruction "opt_le" + + * disasm.c : fix to show block, and to show catch type as string + and change node_name logic + + * eval_thread.c : fix function type declaration + + * insns.def : add instruction "putundef", "opt_checkenv" + to support block inlining and add stack check routine + + * lib/cgi.rb : add global variable $CGI_DONTINPUT + + * opt_operand.def : add some operand unification rules + + * rb/insns2vm.rb : fix operand unification logic for BLOCKISEQ + + * vm.c : fix exception handling routine (collect stack operations) + + * vm_macro.def : fix macro_eval_invoke_bmethod + + * yarvsubst.c : removed + + * yarvtest/test_syn.rb : rename to yarvtest/test_syntax.rb + + * yarvtest/yarvtest.rb : remove tempfile explicitly + + +2005-11-30(Wed) 01:13:57 +0900 Koichi Sasada <[email protected]> + + * common.mk : add vm_opts.h rule + + * vm.c, insns.def : fix proc creation under class and block + environment + + +2005-11-29(Tue) 16:39:07 +0900 Koichi Sasada <[email protected]> + + * eval.c, eval_proc.c, vm.c, vm_macro.def : + support define_method and invoke NODE_BMETHOD method + + +2005-11-29(Tue) 13:18:06 +0900 Koichi Sasada <[email protected]> + + * compile.c : add iseq_add_mark_object, iseq_add_mark_object_compile_time + and use it to mark objects on iseq + + * compile.h, compile.c : remove cast on NEW_CHILD_ISEQVAL, NEW_ISEQVAL + and interface + + * compile.c, disasm.c, insns.def, vm_macro.def, rb/insns2vm.rb : + add BLOCKISEQ parameter type + + * gc.c : fix garbage_collect to return true if only allocate memory + + * vm.c : fix insertion order of proc/env + + * vm_evalbody.h : add typedef yarv_iseq_t *BLOCKISEQ + + * yarvcore.c, yarvcore.c : add idTimes + + * yarvcore.c : fix proc_mark, env_mark around iseq mark + + +2005-11-28(Mon) 09:02:57 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def, vm_evalbody.h : support super + with splat argument and block (and zsuper with block) + + * yarvtest/test_class.rb : add tests for above + + * compile.c, yarvcore.h, yarvcore.c, insns.def, time.c, string.c : + add opt_succ insn + + * eval_method.h : fix indent + + * eval_thread.c : apply cast to vanish a warning + + * lib/tempfile.rb, lib/tmpdir.rb : added + + * vm.c : eval_method_missing added + + * vm_macro.def : refactoring + + +2005-11-21(Mon) 21:21:33 +0900 Koichi Sasada <[email protected]> + + * compile.c, compile.h, yarvcore.c : remove "iseqobj" + variables and rename to "iseq" + + +2005-11-21(Mon) 07:31:50 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix block parameter error + + * ext/* : added + + * lib/optparse* : added + + * benchmark/bm_so_sieve.rb : fix parameter + + + +2005-11-21(Mon) 03:47:28 +0900 Koichi Sasada <[email protected]> + + * compile.c : optimize condition in literal + + * thread_win32.h : fix win32 thread function prototype + + +2005-11-20(Sun) 17:58:24 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix NODE_AND/OR bug + + * eval.c : support rb_frame_this_func() + + +2005-11-20(Sun) 12:32:31 +0900 Koichi Sasada <[email protected]> + + * compile.c, yarvcore.c, yarvcore.h : support NODE_OPT_N + + * compile.h : add macro ADD_CALL + + * debug.c : add debug_v() and change to use only printf + on debug_id() + + * sample/test.rb : + + * vm.c : fix make_proc_from_block + + +2005-11-19(Sat) 14:55:17 +0900 Koichi Sasada <[email protected]> + + * import ruby 1.9.0 (2005-11-18) + + +2005-11-19(Sat) 06:08:37 +0900 Koichi Sasada <[email protected]> + + * lib/test : added + + +2005-11-19(Sat) 05:48:50 +0900 Koichi Sasada <[email protected]> + + * compile.c : useless jump elimination (if/unless destination) + + * eval.c : rb_iter_break support, + fix rb_iterate (clear errinfo if break) + + * eval_proc.c : support rb_node_arity (YARV_METHOD_NODE) + + * insns.def : change variable name + + * vm.c : fix th_invoke_yield and add th_iter_break() + + * vm_dump.c : fix yarv_bug() + + * yarvcore.c : fix proc_mark to check IFUNC node and add + global ruby method SDR() for debug + + * yarvtest/test_syn.rb : add a test for all condition combination + + +2005-11-15(Tue) 05:52:58 +0900 Koichi Sasada <[email protected]> + + * lib/forwardable.rb : added + + * common.mk : remove "vm.o : CFLAGS += -fno-crossjumping" rule + + * compile.c, yarvcore.h, insns.def : add FCALL/VCALL flag + + * compile.c, insns.def : add onceinlinecache instruction + + * eval.c : support $!, $@, raise (== raise $!) + + * opt_operand.def : add some unification rule (send flags) + + * vm.c : fix return process + + * vm_macro.def : fix option prameters + + * yarvtest/test_method.rb : add tests for above + + +2005-11-15(Tue) 00:42:49 +0900 Koichi Sasada <[email protected]> + + * eval.c : support rb_frame_pop() and rb_frame_callee(), + add rb_sourcefile(), rb_souceline(), + + + * compile.c : support postposition while/until, + fix block parameter index + + * yarvtest/test_syn.rb : add tests for above + + * yarvcore.c : fix env_mark + + * vm.h, yarvcore.h : move vm.h#cmethod_info to + yarvcore.h#yarv_cmethod_info + + * vm.c : add th_get_sourceline() + + * eval_intern.h : fix PASS_PASSED_BLOCK() + + * eval_load.c : fix re-enter require (temporalily) + + * insns.def : permit re-open class when superclass is same + + +2005-11-11(Fri) 01:20:15 +0900 Koichi Sasada <[email protected]> + + * common.mk : add "allload" rule + + * compile.c, yarvcore.h, insns.def, vm_macro.def, disasm.c : + change arg_rest, arg_block offset (1) + + * insns.def : add postexe instruction + + * insns.def, vm.c : support rest block parameter + + * yarvtest/test_block.rb : add tests for above + + * rb/allload.rb : get path from ARGV + + * vm_opts.h.base : set default off + + +2005-11-01(Tue) 08:28:19 +0900 Koichi Sasada <[email protected]> + + * benchmark/other-lang/eval.rb : fix path + + * lib/English.rb, lib/cgi.rb, lib/complex.rb, lib/delegate.rb : + added + + +2005-11-01(Tue) 08:18:33 +0900 Koichi Sasada <[email protected]> + + * compile.c : push and pop values after checkincludearray for + stack caching + + +2005-10-31(Mon) 15:37:09 +0900 Koichi Sasada <[email protected]> + + * benchmark/bm_app_mandelbrot.rb : added + + * benchmark/bm_app_factorial.rb : fixed parameter + + * benchmark/bm_so_count_words.rb, benchmark/run_rite.rb : use + real file + + * common.mk : add "ext" rule, add some dependencies and add option + to bench-each rule (renamed from bench-item) + + * compile.c : fix get_root_iseq_object (check iseq type), + support splat case/when. support //o (regexp) + + * eval.c : support *_eval, fix rb_obj_call_init to pass block + + * eval_jump.h : support throw/catch + + * eval_load.c : save klass_nest_stack when require + + * eval_method.h : fix ruby_cbase() + + * insnhelper.h : GET_EV_KLASS checks toplevel or not + + * insns.def, yarvcore.c : fix singleton method definition and fix + super class's method + + * lib/shellwords.rb : use String() instead of String.new() + + * vm.c : check class iseq or not when making Proc and + add eval_search_super_klass function + + * vm.h : CMETHOD_INFO_P to yarvcore.h + + * vm_macro.def : splat if object type is T_ARRAY + + * vm_opts.h, vm_opts.h.base : rename to vm_opts.h.base + insns2vm.rb will copy it to build directory + + * yarvcore.c : add Proc#[] + + * yarvcore.h : change INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE + to 512 + + * yarvtest/test_* : invalidate splat non array code (like: "*1") + + * yarvtest/yarvtest.rb : use tempfile instead of popen + + +2005-10-28(Fri) 09:11:53 +0900 Koichi Sasada <[email protected]> + + * yarvtest/test_method.rb : fix test + + +2005-10-28(Fri) 08:43:29 +0900 Koichi Sasada <[email protected]> + + * benchmark/run_rite.rb : add -I options to run benchmark + + * common.mk : pass options to some rules with RUNOPT + and add -I options + + * compile.c : fix massign with constant + + * yarvtest/test_massign.rb : add tests for above + + * eval_load.c : fix load_wait() + + * eval_method.h : support ruby_cbase() + + * lib/*.rb : add or modify libraries to run on yarv + * parse.y : change to ANSI C style + + * vm.c : fix making proc process under cfunc/ifunc environment + + * vm_macro.def : fix block pass + + * yarvtest/test_method.rb : add tests for above + + * yarvcore.c : add yarv_obj_is_proc() + + * eval.c : fix rb_obj_is_proc to use yarv_obj_is_proc() + + +2005-10-27(Thu) 11:50:15 +0900 Koichi Sasada <[email protected]> + + * some files : import from ruby 1.9.0 (2005-10-12) + + +2005-10-16(Sun) 14:50:02 +0900 Koichi Sasada <[email protected]> + + * insns.def, compile.c, yarvcore.h, yarvcore.c : add insns "bitblt" and "answer" + + +2005-10-11(Tue) 17:01:13 +0900 Koichi Sasada <[email protected]> + + * yarv_version.h, Changes : 0.3.2 + + +2005-10-11(Tue) 13:35:25 +0900 Koichi Sasada <[email protected]> + + * insns.def : add YARV_CHECK_INTS() + + * thread.c, thread_pthread.h, thread_win32.h : kick timer thread + when another thread kicked + + * vm.c : remove debug print + + * vm_opts.h : add OPT_CALL_THREADED_CODE + + * yarvtest/yarvtest.rb : remove "\r" from answer + + +2005-10-07(Fri) 09:36:36 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : add member variable "interrupt_flag" to yarv_thread_t + + +2005-10-05(Wed) 21:20:13 +0900 Koichi Sasada <[email protected]> + + * eva.c, eval_thread.c, ruby.h, eval_error.h, eval_jump.h, + eval_load.c, thread.c, error.c, compile.h : remove ruby_errinfo + + * thread_win32.h, thread_pthread.h : set stack size to 4KB + + * vm.c : fix making env routine + + * vm_dump.c, vm.h : support frame type "EVAL" and fix magic number + + * yarvcore.c : fix some mark/free routine + + +2005-10-05(Wed) 09:08:11 +0900 Koichi Sasada <[email protected]> + + * eval.c, eval_intern.h, vm.c, eval_jump.h, yarvcore.h : + re-define PUSH/POP/EXEC/JUMP_TAG to use thread local tag + + * inits.c, yarvcore.c : fix boostrap + + +2005-10-03(Mon) 22:28:24 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix NODE_COLON2 bugs + + * compile.h : fix debug routine + + * disasm.c : add space between insn and operand + + * insns.def : add comment of classdef, singletonclassdef + + * vm.c, yarv.h : fix invoke_light routine + + * yarvcore.c : fix to mark each threads + + +2005-10-02(Sun) 05:55:34 +0900 Koichi Sasada <[email protected]> + + * thread_pthread.h : add "system_working" global variable + + +2005-10-02(Sun) 01:23:44 +0900 Koichi Sasada <[email protected]> + + * thread.c : add raw gets (for test), and fix indent + + +2005-10-01(Sat) 23:06:21 +0900 Koichi Sasada <[email protected]> + + * thread_win32.h, common.mk : add thread_win32.h + + * thread.c : support _WIN32 thread + + * thread.c, thread_pthread.h : fix some interface + + * eval_thread.c : remove debug print + + * gc.c : fix stack region + + * win32/Makefile.sub : add -MD flag to LDFLAGS + + * yarvcore.c : fix mark and sweep debug print + + * yarvcore.h : fix VM#living_threads data type to st_table + + +2005-10-01(Sat) 00:25:28 +0900 Koichi Sasada <[email protected]> + + * thread.c, yarvcore.h : rename GIL (Global Interpreter Lock) to + GVL (Global VM Lock) + + * thread_pthread.h : fix pthread mutex initialize + + +2005-09-30(Fri) 20:11:19 +0900 Koichi Sasada <[email protected]> + + * thread.c : support join with timeout + + * yarvcore.h : use GET_VM() + + +2005-09-30(Fri) 14:59:29 +0900 Koichi Sasada <[email protected]> + + * thread.c, common.mk : add thread.c + + * thread.c, gc.c, eval_thread.c, yarvcore.c, yarvcore.h : + support native thread (on pthread) + + * insns.def : add YARV_CHECK_INTS() check + + * yarv.h : add GET_VM() macro + + +2005-09-29(Thu) 22:43:08 +0900 Koichi Sasada <[email protected]> + + * eval_intern.h, eval_thread.c : move thread_status to eval_intern.h + + * yarvcore.c : fix thread/vm value + + * yarvcore.h : add some parameter to yarv_thread_t + + +2005-09-29(Thu) 01:52:33 +0900 Koichi Sasada <[email protected]> + + * compile.c, yarvcore.h : add line number on last end instruction + + * vm.c : fix line no detection + + +2005-09-28(Wed) 00:02:10 +0900 Koichi Sasada <[email protected]> + + * common.mk, eval_load.c, eval.c, eval_intern.h : add eval_load.c + + * disasm.c : fix around block local variables + + * eval_proc.c : fix typo + + +2005-09-27(Tue) 16:45:20 +0900 Koichi Sasada <[email protected]> + + * eval.c : remove debug print + + +2005-09-27(Tue) 16:41:47 +0900 Koichi Sasada <[email protected]> + + * eval.c : support Kernel.local_variables + + * parse.y, yarvcore.c : move some functions + (rb_(backref|lastline)_(get|set)) from parse.y to yarvcore.c + + * yarvcore.h : fix typo of YARV_PREVIOUS_CONTROL_FRAME + + +2005-09-26(Mon) 18:51:29 +0900 Koichi Sasada <[email protected]> + + * eval.c, compile.c, parse.y, vm.c, yarvcore.h : + eval() works with binding (Env) + + * vm.c : add th_set_eval_stack + + * yarvtest/test_syn.rb : remove an assert "defined?(local_var)" + + +2005-09-25(Sun) 19:30:59 +0900 Koichi Sasada <[email protected]> + + * benchmark/bm_vm2_send.rb : added + + * common.mk : add rule "bench-item" + + * eval_intern.h : add PASS_PASSED_BLOCK() + + * eval_proc.c : support some functions + + * rb/mklog.rb : added + + * vm.c : fix prototype style and coding style + + * yarv.h : add some prototypes of functions + + * yarvcore.c, yarvcore.h, eval.c : yarv_thread_t#ifuncnode -> passed_block, + and add yarv_proc_t#safe_level + + +2005-09-25(Sun) 11:01:17 +0900 Koichi Sasada <[email protected]> + + * some files : import from ruby 1.9.0 (2005-09-25) + + * eval*, vm.c, vm_macro.def : remove frame, scope, ... + + * yarvcore.c : remove yarv_block_given_p() + + * yarvcore.h, insnhelper.h : move some macro from insnhelper.h to yarvcore.h + to use these in eval.c + + +2005-09-24(Sat) 15:51:42 +0900 Koichi Sasada <[email protected]> + + * eval* : remove dependency to ruby_dyna_vars and ruby_class + + +2005-09-23(Fri) 20:39:14 +0900 Koichi Sasada <[email protected]> + + * eval_*.[ch] : split eval.c to some files + + * *.[ch] : import ruby 1.9.0 (2004-09-23) + + * parse.y : remove dependency to ruby_dyna_vars and ruby_scope + + +2005-09-15(Thu) 16:51:06 +0900 Koichi Sasada <[email protected]> + + * compile.c, yarvcore.h : fix "for" scope + + * yarvtest/test_block.rb : add tests for above + + +2005-09-14(Wed) 06:11:43 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, vm_evalbody.h, vm.h, vm_dump.c, + compile.c, yarvcore.c : use #ifdef insted of #if for recognize + vm options + + * vm_opts.h : fix default options + + +2005-09-10(Sat) 14:10:08 +0900 Koichi Sasada <[email protected]> + + * vm_opts.h : added + + * yarvcore.h, rb/insns2vm.h : use vm_opts.h + + +2005-09-10(Sat) 04:53:22 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, insns.def, compile.c : add DEFINED_YIELD + + * yarvtest/test_yield.rb : add test_1_ary_and_1_params + + * insns.def : fix splat and svalue + + * vm.c : fix to perform with proc with ifunc (incomplete) + + * sample/test.rb : added (comment out unsupported features) + + * common.mk : add rule "runtest" + + +2005-09-09(Fri) 19:32:11 +0900 Koichi Sasada <[email protected]> + + * insns.def, compile.c : add splatarray + + * yarvtest/test_massign.rb : add tests for above + + +2005-08-31(Wed) 22:55:15 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c (yarvcore_eval_parsed): fix to return value + + * yarv_version.h, Changes : 0.3.1 + + +2005-08-20(Sat) 10:19:27 +0900 Koichi Sasada <[email protected]> + + * rb/ir.rb : add some check + + * import today's ruby HEAD + + +2005-08-18(Thu) 23:29:52 +0900 Koichi Sasada <[email protected]> + + * common.mk : fix object file extension + + * rb/ir.rb : added (import ruby script) + + * rb/diff.rb : removed + + * import today's ruby HEAD + + +2005-08-18(Thu) 12:59:38 +0900 Koichi Sasada <[email protected]> + + * common.mk : rule test -> test2, test1 -> test + + * compile.c : fix when clause bug and splat arugment + + +2005-08-17(Wed) 05:22:31 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix block local parameter setting routine and support + massign in block parameter initialze + + * yarvtest/test_yield.rb : add tests for above + + * insns.def, compile.c : support array concat (ex: "[x, *y]") + + * yarvtest/test_bin.rb : add tests for above + + +2005-08-16(Tue) 19:51:19 +0900 Koichi Sasada <[email protected]> + + * compile.c : support nested massign + + * yarvtest/test_massign.rb : add tests for above + + +2005-08-16(Tue) 10:25:29 +0900 Koichi Sasada <[email protected]> + + * eval.c : support rb_yield_0 with 0 args + + +2005-08-16(Tue) 09:09:21 +0900 Koichi Sasada <[email protected]> + + * lib/fileutils.rb : imported + + * insns.def : fix yield argument (same as last commit) + + * yarvtest/test_yield.rb : add tests for above + + +2005-08-16(Tue) 08:29:47 +0900 Koichi Sasada <[email protected]> + + * eval.c : fix to support rb_yield_0 with multiple values + + * common.mk : add parse, run1p ruelse + + * compile.c : support yield with ARGSCAT/SPLAT + + * vm.c, insns.def : fix yield arguments to do compatible behaviour + + * yarvtest/test_yield.rb : added for above + + +2005-08-16(Tue) 06:00:17 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix to set klass_nest_stack on singleton + method definition + + * yarvtest/test_method.rb : add a test for above + + +2005-08-16(Tue) 05:34:48 +0900 Koichi Sasada <[email protected]> + + * test1.rb : added. gdb and run1 rule run this script + + * compile.c : fix error handled variable access + + * yarvtest/test_exception.rb : add tests for above + + +2005-08-16(Tue) 04:26:08 +0900 Koichi Sasada <[email protected]> + + * base ruby : ruby 1.9.0 (2005-08-15) + + +2005-08-16(Tue) 03:54:17 +0900 Koichi Sasada <[email protected]> + + * common.mk, Makefile.in : move some rules to common.mk + + * rb/diff.rb : added + + * yarvtest/yarvtest.rb : fix to compare output last value + + +2005-08-15(Mon) 18:27:58 +0900 Koichi Sasada <[email protected]> + + * Changes : 0.3.0 + + +2005-08-15(Mon) 17:56:09 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : fix to add prototype + + * all files : propset svn:eol-style native + + +2005-08-15(Mon) 10:48:53 +0900 Koichi Sasada <[email protected]> + + * eval.c : support rb_load + + +2005-08-15(Mon) 09:42:01 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : define SDR() + + * vm_dump.c : stack_dump_raw() -> vm_stack_dump_raw() + + * yarvtest/yarvtest.rb : add rite test scheme + + * benchmark/run_rite.rb : added + + * yarvcore.c, inits.c : add Init_vm() + + * yarv.h : add some prototype declarations, GET_THREAD() + + * eval.c : remove unused functions + + * eval.c : support Kernel.eval, some schemes (same as evalc.patch) + + +2005-08-15(Mon) 00:53:28 +0900 Koichi Sasada <[email protected]> + + * yarv_version.h : move configurations to yarvcore.h + + * yarvcore.c : remove VALUE yarv_get_current_running_thread() and + add yarv_thread_t *yarv_get_current_running_thread(), ... + + * yarvcore.h : yarv_thread_t#vm -> vm_value + + * compile.c : fix "break from nested classes" + + * yarvext/extconf.rb : use have_func instead of defined?(YARV_PACHED) + + * depend : fix pass + + * eval.c : change to kick VM + + * version.c : fix to show yarv version + + * common.mk : fix dependent + + * inits.c : fix to kick Init_yarvcore + + +2005-08-14(Sun) 02:05:15 +0900 Koichi Sasada <[email protected]> + + * README : add description + + * yarvext/depend : move to topdir/depend + +2005-08-14(Sun) 01:50:43 +0900 Koichi Sasada <[email protected]> + + * merge yarv to ruby (prepare) + + * make yarvext/ to build as extension + + +2005-08-13(Sat) 09:36:26 +0900 Koichi Sasada <[email protected]> + + * evalc.patch, insns.def, compile.c : fix to support current + ruby HEAD. + + * 0.2.3 + + +2005-08-08(Mon) 19:13:02 +0900 Koichi Sasada <[email protected]> + + * version.h, Changes : 0.2.2 + + +2005-08-08(Mon) 17:17:50 +0900 Koichi Sasada <[email protected]> + + * vm.h, vm.c, insns.def, yarvcore.h, yarvcore.c : + remove yarv_iseq_t#iseq_dt and add yarv_iseq_t#encoded. + use yarv_iseq_t#encoded anytime + + * vm_evalbody.h, vm.h, extconf.rb, version.h : + support call threaded code (incomplete) + + +2005-08-01(Mon) 05:26:12 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : support yield with multiple values + + * compile.c : fix dynavars + + * yarvcore.h : fix to mark defined method + + +2005-07-31(Sun) 23:27:24 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, vm.c, insns.def : fix search object path + + * compile.c : fix "for" statement + + * vm_macro.def : fix rest, opt arguments + + +2005-07-31(Sun) 14:52:06 +0900 Koichi Sasada <[email protected]> + + * vm_macro.def : fix block parameter + + * compile.c : fix to unuse compile_data->in_ensure + + * insns.def : add orphan check when return + + +2005-07-31(Sun) 03:25:05 +0900 Koichi Sasada <[email protected]> + + * vm.c, compile.c, yarvcore.h, insns.def : + support jump from rescue/ensure/class/module + + * test/test_flow.rb : add tests for above fix + + +2005-07-30(Sat) 04:44:33 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : struct iseq_compile_data_ensure_node_stack is added + + * compile.c : insert ensure clause before break/next/redo + + * vm.c : fix return/break handling + + * yarv.h, vm.c : fix lightweight yield + + * vm.c, insns.def, vm_macro.def : change arguments of th_set_env (add sp) + + * test/test_flow.rb : added + + * test/yarvtest.rb : add ae_flow + + * compile.c, vm_macro.def : add tail-call/tail-recursion optimization + (experimental) + + +2005-07-29(Fri) 20:14:11 +0900 Koichi Sasada <[email protected]> + + * compile.c : make_name_for_block and make_name_with_str + are added + + * insns.def : fix if unmatched size arg size to yield + + * test/test_block.rb : add test for above fix + + * vm.c : add th_backtrace_each and fix backtrace notation + + * yarvcore.c : set top level iseq name to "<main>" + + +2005-07-29(Fri) 13:20:19 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : fix yarv_iseq_t to pass VC (cl) + + * vm_dump.c : ditto + + * compile.h : ditto + + * insnhelper.h : ditto + + * vm_evalbody.h : include 'math.h' + + * insns.def, vm.c : raise error when yield without block + + * vm.c : implement thread_backtrace + + * vm.c, yarvsubst.c, yarv.h : implement thread_yield_light_prepare and + thread_yield_light_invoke + + * yarvcore.c : Integer#times uses yarv specific version + + +2005-07-28(Thu) 21:35:09 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : add another mark function for thread/stack + + * vm_evalbody.h : fix register allocation for x86_64 + + * vm.h : use asm for tc on x86_64 + + +2005-07-28(Thu) 20:17:09 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : add mark/free message to debug gc + + * insnhelper.h, insns.def, vm_macro.def : remove and + add new RESTORE_REGS + + * vm_evalbody.h : fix register allocation + + +2005-07-28(Thu) 02:00:42 +0900 Koichi Sasada <[email protected]> + + * vm.c, etc : change VM stack structure. re-write all + vm functions to do it + + * vm_macro.def : added + + +2005-07-08(Fri) 01:36:49 +0900 Koichi Sasada <[email protected]> + + * insns.def : don't use fmod on AMD64 + + +2005-07-08(Fri) 00:14:22 +0900 Koichi Sasada <[email protected]> + + * Changes : added + + +2005-07-07(Thu) 23:54:37 +0900 Koichi Sasada <[email protected]> + + * version.h : 0.3.0 + + +2005-07-07(Thu) 23:52:03 +0900 Koichi Sasada <[email protected]> + + * 0.2.1 : released + + +2005-07-07(Thu) 23:50:22 +0900 Koichi Sasada <[email protected]> + + * version.h : 0.2.1 + + +2005-07-07(Thu) 23:47:55 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb, extconf.rb : add --[enable|disable]-opt-unify-all-combination + and --disable-opts + + * vm.h : DISPATCH_ARCH_DEPEND_WAY is only enabled on GCC 3.x + + +2005-07-06(Wed) 13:20:27 +0900 Koichi Sasada <[email protected]> + + * depend, rb/eval.rb : add ITEMS option to benchmark rule + + * benchmark/* : changed + + * benchmark/other-lang/* : added + + +2005-07-04(Mon) 04:02:15 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h. yarvcore.c : add idDIV, idMOD, idEq, idLength + + * compile.c, insns.def : add specialized insn for above method id + + * test/test_bin.rb : add tests for above + + +2005-07-03(Sun) 20:31:09 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, yarvcore.h : remove cYarvThrowObject (unused) + + * yarvcore.c, yarvcore.h, insns.def : + thread_object#stack_mark_poinetr + + * depend, rb/eval.rb : BOPT, TOPT -> OPT + + +2005-07-03(Sun) 13:53:47 +0900 Koichi Sasada <[email protected]> + + * compile.c, compile.h : INSN_OBJECT, LABEL_OBJECT -> INSN, LABEL, + ISEQ_LINK_ELEMENT, ISEQ_LINK_ANCHOR -> LINK_ELEMENT, LINK_ANCHOR, + and some fixes + + * tmpl/optinsn.inc.tmpl : ditto + + * yarvcore.c, yarvcore.h : remove label_object, insn_object + prepare_iseq_build, cleanup_iseq_build are added + + * insns.def : remove unused variable from send + + +2005-07-02(Sat) 04:19:22 +0900 Koichi Sasada <[email protected]> + + * insns.def : add GC protect for opt_aset + + +2005-07-02(Sat) 03:49:17 +0900 Koichi Sasada <[email protected]> + + * extconf.rb : add option -fno-reorder-blocks to vm.asm rule + + * insns.def : fix opt_aset bugs + + * test/test_bin.rb : add tests for aset, aref + + +2005-07-02(Sat) 03:05:12 +0900 Koichi Sasada <[email protected]> + + * benchmark/run.rb : fix output + + * vm_evalbody.h : add register for x86_64 + + * rb/asm_parse.rb : fix to shor size and length + + +2005-07-02(Sat) 02:56:31 +0900 Koichi Sasada <[email protected]> + + * compile.c : move specialized instruction point (new_insn_send) + + * insns.def : add opt_aref, opt_aset + + +2005-07-01(Fri) 11:04:11 +0900 Koichi Sasada <[email protected]> + + * compile.h : fix to pass VALUE type to new_insn_body + + * insnhelper.h : add cast + + * compile.c : fix getdynamic argument (0 == Qfalse -> I2F(0)) + + +2005-06-30(Thu) 23:34:10 +0900 Koichi Sasada <[email protected]> + + * rb/eval.rb : add and fix some rules + + * rb/insns2vm.rb : generate all + + * benchmark/run.rb : add -r (ruby only) option + + +2005-06-30(Thu) 23:25:23 +0900 Koichi Sasada <[email protected]> + + * tmpl/vmtc.inc.tmpl : add const prefix + + * /rb/asm_parse.rb, extconf.rb : added and make assembler analised output + + * opt_operand.def : add send operands unification + + * insnhelper.h : add HEAP_CLASS_OF(obj) + + * insns.def : fix opt_plus, opt_ltlt + + * vm_evalbody.h : move _tag + + * benchmark/run.rb : fix file select + + +2005-06-30(Thu) 06:07:04 +0900 Koichi Sasada <[email protected]> + + * extconf.rb : add collect-usage-analysis option + + * opt_operand.def, opt_insn_unif.def : add some rules + + +2005-06-29(Wed) 23:28:44 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, extconf.rb, vm.h, compile.c : + DISPATCH_DIRECT_THREADED_CODE, DISPATCH_THREADED_CODE + -> OPT_DIRECT_THREADED_CODE, OPT_INDIRECT_THREADED_CODE. + if at least one of then is defined, OPT_THREADED_CODE is defined + + * benchmark/* : fix name and parameters + + * rb/eval.rb : added for YARV evaluation + + +2005-06-29(Wed) 16:16:52 +0900 Koichi Sasada <[email protected]> + + * benchmark/run.rb : fix output format + + * call_cfunc.inc -> call_cfunc.h + + * vm.h : add sign by asm statement + + +2005-06-28(Tue) 22:28:40 +0900 Koichi Sasada <[email protected]> + + * vm.c : fix method search + + +2005-06-28(Tue) 22:26:34 +0900 Koichi Sasada <[email protected]> + + * extconf.rb : fix options + + +2005-06-28(Tue) 21:50:58 +0900 Koichi Sasada <[email protected]> + + * benchmark/run.rb : fix output format + + +2005-06-28(Tue) 21:34:54 +0900 Koichi Sasada <[email protected]> + + * depend : add option TOPT to test rules + + * benchmark/run.rb : fix output format + + +2005-06-28(Tue) 21:15:54 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix opt_case_dispatch instruction + + * benchmark/run.rb : output all usertimes when exit benchmark + + +2005-06-28(Tue) 20:35:55 +0900 Koichi Sasada <[email protected]> + + * extconf.rb, compile.c, tmpl/optinsn.inc.tmpl, vm.c : + change extconf options + +2005-06-28(Tue) 13:20:59 +0900 Koichi Sasada <[email protected]> + + * benchmark/run.rb : add -y, --yarv-only option + + * depend : add BOPT to tbench rule + + +2005-06-27(Mon) 23:31:12 +0900 Koichi Sasada <[email protected]> + + * depend : add gdb rule + + * vm.h : use inline assembler for x86 (to support gcc 3.4.x) + + +2005-06-27(Mon) 20:04:10 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, compile.c, disasm.c : remove unused variables + + * vm.h, insnhelper.h, debug.h : fix to reduce warning + + * vm.c, vm_dump.c : move VM state dump (debug) functions to vm_dump.c + + * depend : adde reconf rule + + * insnhelper.h : + + * vm_evalbody.inc : rename to vm_evalbody.h + + +2005-06-27(Mon) 16:50:31 +0900 Koichi Sasada <[email protected]> + + * insns2vm.rb : fix generating unif insn + + * compile.c : add useless pop/swap insn elimination with stack caching + + * depend : remove compiled.o dependency + + +2005-06-26(Sun) 14:06:22 +0900 Koichi Sasada <[email protected]> + + * benchmark/run.rb : use tmpfile instead of popen + + * rb/insns2vm.rb : fix generating insn unification logic + + * opt_insn_unif.def : add some unification rules + + * compile.c : add verify_list function and fix unification logic + + +2005-06-22(Wed) 12:58:26 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, yarvcore.c, insns.def, compile.c : add mult optimization + + * test/test_bin.rb : add test_fact + + +2005-06-21(Tue) 22:34:07 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, compile.[ch], tmpl/optinsn.inc.tmpl, rb/insns2vm.rb : + change data structure (don't use Ruby's array to represent a + instruction sequence) + + * disasm.c : add separator + + +2005-06-14(Tue) 07:48:58 +0900 Koichi Sasada <[email protected]> + + * compile.c : support "for" statement + + * test/test_block.rb : add test for above + + * yarvcore.[ch] : add global id idEach + + +2005-06-08(Wed) 22:30:44 +0900 Koichi Sasada <[email protected]> + + * compile.c : add if/unless(L1) jump (L2) :L1 => unless/if(L2) + optimize (condition reversal) and fix typo + + +2005-06-07(Tue) 08:29:41 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : fix to remove compiler warning + + * version.h : 0.2.1 + + +2005-06-07(Tue) 08:16:22 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : iseq_link_element changed to double linked list + + * disasm.c : support dump struct iseq_link_element + + * compile.c : use double linked list instead of array + for intermediate representation + + +2005-06-06(Mon) 15:38:44 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, yarvcore.c : add link structure to insn and label object + + * compile.h, compile.c : remove some variables in function top scope + of iseq_compile_each and some optimization (now working) + + +2005-06-04(Sat) 16:12:59 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix previous commit + + +2005-06-04(Sat) 15:56:21 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix stack caching (after jump state) + + +2005-06-04(Sat) 09:12:13 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix some point for previous commit + + +2005-06-04(Sat) 07:31:21 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : optimize case/when statement + (dispatch on constant time) + + * yarvcore.h, disasm.c, rb/insns2vm.rb : fixed for above + (CDHASH) + + * test/test_syn.rb : add test for above + + +2005-06-04(Sat) 03:41:29 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, yarvcore.c : add some temporary variable test + (it'll be vanished) + + * compile.c : NODE_CASE optimize (use topn instead of dup/swap) + + +2005-06-03(Fri) 00:54:38 +0900 Koichi Sasada <[email protected]> + + * compile.c : apply flow optimization for while/until statement + + +2005-03-04(Fri) 19:34:32 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb : fix category (comment) + + * depend : remove space betweeen target name and colon + + +2005-03-04(Fri) 15:55:51 +0900 Koichi Sasada <[email protected]> + + * tmpl/yarvarch.ja : fix typo + + +2005-03-04(Fri) 13:30:19 +0900 Koichi Sasada <[email protected]> + + * depend : add a rule for jitcompile.o + + * vm.h : fix a macro argument + + * version.h : 0.2.0 + + +2005-03-03(Thu) 08:35:14 +0900 Koichi Sasada <[email protected]> + + * extconf.rb : remove vm_evalbody.inc call_cfunc.inc from clean target + + +2005-03-03(Thu) 00:54:15 +0900 Koichi Sasada <[email protected]> + + * tmpl/insns.inc.tmpl : fixed typo + + * insns.def : store th->pc to current pc + + +2005-03-03(Thu) 00:31:47 +0900 Koichi Sasada <[email protected]> + + * tmpl/yarvarch.ja, doc/yarv.rb : write current architecture of yarv + + +2005-03-01(Tue) 13:50:04 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c (yarvcore_eval_parsed) : added + (separeted from yarvcore_eval) + + * yarvcore.c, compile.c : iseq_translate_direct_threaded_code + is moved to compile.c + + * depend : add rule for yasmdata.rb + + * rb/yasm.rb : support top-level and method-level assemble + + +2005-02-26(Sat) 08:09:57 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb, compile.c, vm.h : change type long to OFFSET + + * tmpl/yasmdata.rb.tmpl : added + + * rb/insns2vm.rb : add yasmdata_rb method + + * rb/yasm.rb : fix some interface (incomplete) + + * compile.c : iseq_setup added + + * yarvcore.c : YARVCore::InstructionSequence::Instruction#make added + + +2005-02-24(Thu) 07:45:37 +0900 Koichi Sasada <[email protected]> + + * rb/yasm.rb : added + + +2005-02-24(Thu) 01:13:33 +0900 Koichi Sasada <[email protected]> + + * compile.c : remove useless statements + + +2005-02-24(Thu) 00:46:44 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb (InsnInfo) : add @is_sc attr and remove + is_sc method + + * compile.c : fix NODE_CASE/NODE_WHEN bug (cond at 'when' + must not be popped) + + * compile.c : support NODE_OP_ASGN1 to &&= and ||= + + * test/test_bin.rb : add tests for above + + +2005-02-23(Wed) 09:17:01 +0900 Koichi Sasada <[email protected]> + + * vm.c, yarvcore.c : thread_svar added and fix svar location + + +2005-02-21(Mon) 08:38:02 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h : make type "struct iseq_compile_data" + + * yarvcore.h : iseq_object#insn_info_ary to iseq_object#insn_info_tbl + + +2005-02-21(Mon) 05:24:01 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c (compile_string) : remove null check of node + + +2005-02-19(Sat) 03:52:45 +0900 Koichi Sasada <[email protected]> + + * version.h : 0.1.1 + + +2005-02-18(Fri) 20:57:18 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, yarvcore.c : add idLTLT, idMethodMissing + + * compile.c : suopport lval (or others) block parameter + + * test/test_block.rb : add tests for above + + * insns.def (send) : support method_missing + + * test/test_method.rb : add tests for above + + * insns.def : opt_ltlt and + + +2005-02-18(Fri) 08:54:40 +0900 Koichi Sasada <[email protected]> + + * benchmark/runc.rb : added + + * benchmark/contrib/pentomino.rb : added opt_ltlt + and Float, String plus specialization + + +2005-02-18(Fri) 07:49:42 +0900 Koichi Sasada <[email protected]> + + * compile.c : remove debug print + + * rb/aotcompile.rb : skip if yarvcore.so is not created + + +2005-02-18(Fri) 06:46:13 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix block passing + and block argument + + +2005-02-18(Fri) 05:52:41 +0900 Koichi Sasada <[email protected]> + + * vm.c : thread_get_ev_const, thread_get_ev_defined is added + (separated from insns.def) + + * insnhelper.h : GET_EV_KLASS(klass) is added + (separated from insns.def) + + * yarvcore.h, insns.def, compile.c : support defined? expression (limited) + + * test/test_syn.rb : tests for above is added + + * compile.c, insns.def : support block passed method dispatch + + * test/test_method.rb : tests for above is added + + * compile.h : CALL_ARGS_SPLAT is removed + + +2005-02-16(Wed) 13:32:37 +0900 Koichi Sasada <[email protected]> + + * disasm.c : fix ID to String method + + * compile.c : NODE_SUPER, NODE_ZSUPER check 'poped' + and NODE_RETURN check outer type + and NODE_DREGX_ONCE supported (temporarily) + + * test/test_syn.rb : add a test + + * test/test_jump.rb : add a test + + +2005-02-16(Wed) 06:07:41 +0900 Koichi Sasada <[email protected]> + + * compile.[hc] : use Symbol instead of Fixnum to represent ID + + * rb/insns2vm.rb : add attr_reader :insns, :insn_map + + * vm.h, rb/insns2vm.rb : END_INSN have one arg + + * jitcompile.c : jit compiler framework (experimental) + + * rb/aotcompile.rb : refactoring + + * compiled.c : add constant pool + + * vm_evalbody.inc, call_cfunc.inc, vm.c : separeted from vm.c + + * insns.def : fix return val + + * depend : add rules for compiled.o + + +2005-02-14(Mon) 13:09:01 +0900 Koichi Sasada <[email protected]> + + * insnhelper.h, yarvcore.h: move YARV_METHOD_NODE to yarvcore.h + + * yarvcore.h : add 2 members jit_compiled and iseq_orig + to struct iseq_object + + * yarvcore.c : add yarv_jitcompile and global function jitcompile + + * insns.def : insn opt_call_native_compiled added + + * jitcompile.c : added + + +2005-02-12(Sat) 05:38:51 +0900 Koichi Sasada <[email protected]> + + * insns.def (putstring) : fixed to duplicate string object + + * rb/insns2vm.rb, tmpl/optunifs.inc.tmpl, compile.c : support + instructions unification (aka super instruction) + + * opt_insn_unif.def : added for above + + * benchmark/bm_unif1.rb : added to measure efficiency of unification + + * depend : fixed for above + + * extconf.rb : add option --(enable|disalbe)-opt-insns-unification + + +2005-02-11(Fri) 12:14:39 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, vm.c, insns.def : permit to access svar from + cfunc environment + + * test/test_method.rb : add tests for above + + +2005-02-09(Wed) 19:31:06 +0900 Koichi Sasada <[email protected]> + + * ite.rb : added (ruby -rite [script file]) + + +2005-02-09(Wed) 02:25:43 +0900 Koichi Sasada <[email protected]> + + * yarvcore.[hc] : add member compile_data (hash) to iseq_object + + * compile.c, yarvcore.h : check label is already set + + * compile.c, extconf.rb : support __goto__ and __label__ statement + + +2005-01-25(Tue) 12:49:27 +0900 Koichi Sasada <[email protected]> + + * test/test_block.rb : add break test to test_times + + +2005-01-25(Tue) 03:34:04 +0900 Koichi Sasada <[email protected]> + + * extconf.rb : check ruby version if yarv patch is applied or not + + * evalc.patch : fixed for rb_call_super and above check + + +2005-01-25(Tue) 03:21:48 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb : refactoring (mainly, make InsnsDef::InsnInfo + to represent each instruction information) + + * depend, rb/makedocs.rb : fixed for above + + * yarvcore.c (thread_call_super) : added + + * vm.c (thread_call_super) : added + + * vm.h : add struct cmethod_info + + * insns.def, vm.c : use cmethod_info to represent C method info + + * insns.def : use iseq_object#klass_nest_stack + to search super/zsuper's class + + * prosym.rb : removed + + * ToDo : write todo things on wiki + + + +2005-01-18(Tue) 23:44:47 +0900 Koichi Sasada <[email protected]> + + * benchmark/run.rb : check ENV['RUBY'] to use ruby binary + + +2005-01-10(Mon) 08:44:40 +0900 Koichi Sasada <[email protected]> + + * version.h : 0.1.0 + + +2005-01-09(Sun) 22:01:29 +0900 Koichi Sasada <[email protected]> + + * repository : svn propset svn:eol-style native *.c *.h tmpl/*.tmpl + + +2005-01-09(Sun) 21:48:38 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : FREE_UNLESS_NULL, MARK_UNLESS_NULL macros are added + + * yarvcore.c : some insn/label methods are added + + * yarvcore.h : add structure menber "insns_ary" to iseq_object + + * vm.c, insns.def (thread_eval_body) : return values with throw + + * prosym.rb : added + + * insns.def : add YARV_AOT_COMPILED and some procedure + + * depend : add compiled.c + + * compiled.c : added to build compiled Ruby program (C source) + by AOT compiler + + * rb/aotcompile.rb : AOT compiler + + * aotct.rb, rb/aotctest.rb : test and benchmark AOT compiler + + * rb/allload.rb : added + + +2005-01-09(Sun) 08:30:38 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c (yarv_yield_values) : added + + * vm.c (thread_call0) : change interface. substitute rb_call0 in + yarv environment + + * yarvcore.c (yarv_call0) : fix for above + + * yarvcore.c (yarv_call0_cfunc) : removed + + * yarvcore.c : change passing items for yarv_setup + + * evalc.patch : fix for above + + * benchmark/bm_lists.rb : fix (unsupport block passing) + + * benchmark/run.rb : use full path to ruby + + * insns.def (yield): raise error if argc > expected argc + + +2005-01-08(Sat) 16:07:48 +0900 Koichi Sasada <[email protected]> + + * extconf.rb : add descrioptions + + * compile.c : fix bugs (getinlinecache operands) + + * yarvcore.c : initial value of yarvGlobalStateVersion + to 1 + + +2005-01-08(Sat) 14:39:04 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, vm.c, evalc.patch : support making backtrace + (incompatible with current ruby interpreter) + + +2005-01-08(Sat) 11:25:46 +0900 Koichi Sasada <[email protected]> + + * evalc.patch : commit for previous commit change + + * yarvcore.h, compile.c, insns.def : MC to IC (inline cache), + and changed to using IC by set/getinlinecache + + +2005-01-08(Sat) 10:04:33 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : add global variable sym[IC]FUNC + + * yarvcore.c (yarv_iterate, yarv_call0_cfunc) : added + (each called from rb_iterate, rb_call0 with NODE_CFUNC) + + * vm.c (stack_dump_raw) : fixed to prints more detail + + * vm.c (stack_dump_th, stack_dump_thobj) : added to + dumps thread_object states (for VALUE, struct pointer) + + * vm.c (thread_dump_regs) : added + + * vm.c (thread_call0, thread_call0_cfunc, thread_invoke_yield, + thread_invoke_yield_cfunc), insns.def (yield, send) : + fixed, added to support IFUNC + + * vm.c, yarvcore.c, insns.def : change type purpose + thread_object#block_ptr (it holds IFUNC block information, + so this type was changed to 'NODE *') + + * vm.c (stack_dump_each) : fixed for above + + * test/test_block.rb (test_ifunc) : test for above + + * vm.c (get_block_objec, thread_make_env_object) : fixed bugs + + * test/test_bin.rb (test_xstr) : remove `ls` test + + +2005-01-06(Thu) 21:35:18 +0900 Koichi Sasada <[email protected]> + + * yarv : trying to support NODE_IFUNC (rb_iterate) + + +2005-01-05(Wed) 06:50:42 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, insns.def, disasm.c, rb/insns2vm.rb, compile.[ch] : + support inline method cache + + * extconf.rb : add -*-inline-method-cache (default: enable) + + * test/test_method.rb : add a test for above + + * benchmark/bm_poly_method.rb : added + + * yarvcore.c : add option string + + +2005-01-04(Tue) 17:15:41 +0900 Koichi Sasada <[email protected]> + + * insns.def, compile.c : add compile_array and duparray insn + to optimize only literal array creation + + * benchmark/bm_array.rb : added + + +2005-01-04(Tue) 10:02:40 +0900 Koichi Sasada <[email protected]> + + * README : fix version + + +2005-01-04(Tue) 09:57:25 +0900 Koichi Sasada <[email protected]> + + * ToDo : reflect current status + + +2005-01-04(Tue) 09:43:54 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_VALUES, NODE_ARGSCAT, NODE_SPLAT + + * test/test_massign.rb : add tests for above + + * benchmark/bm_swap.rb : added + + +2005-01-04(Tue) 06:25:45 +0900 Koichi Sasada <[email protected]> + + * compile.h : COMPILE_ERROR break contol (instead of return) + + * compile.c : support NODE_MASGN + + * insns.def : change expandarray for massign and add topn insn + + * test/test_massign.rb : added + + +2005-01-03(Mon) 21:20:28 +0900 Koichi Sasada <[email protected]> + + * vm.c : store block when create proc + + * test/test_proc.rb : add a test for above change + + * yarvcore.c : add global function "once" + + +2005-01-02(Sun) 00:40:08 +0900 Koichi Sasada <[email protected]> + + * benchmark/bm_super.rb : fix bug (remove infinite loop) + + +2005-01-01(Sat) 23:45:49 +0900 Koichi Sasada <[email protected]> + + * benchmark/bm_z?super.rb : added + + +2005-01-01(Sat) 23:37:38 +0900 Koichi Sasada <[email protected]> + + * benchmark/bmx_so_object.rb : rename to benchmark/bm_so_object.rb + + +2005-01-01(Sat) 23:19:02 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_OP_ASGN2, NODE_OP_ASGN_AND, NODE_OP_ASGN_OR, + NODE_SUPER, NODE_ZSUPER, NODE_MATCH + + * insns.def : support super, zsuper (currently, super can't + handle with block) + + * test/test_bin.rb : add test for op_asgin2, op_assgin_and/or + + * test/test_class.rb : add test for super, zsuper + + +2005-01-01(Sat) 20:39:29 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_MATCH + + * yarvcore.c : fix yarv_svar bug (fix condition boundary) + + * insnhelper.h : save cfp/lfp/dfp vars to thread_object (th) + + +2005-01-01(Sat) 20:03:10 +0900 Koichi Sasada <[email protected]> + + * version.h : 0.0.1 + + * yarvcore.h : add idIntern declaration + + * insns.def : add getspecial, setspecial. + implement getclassvariable, setclassvariable. + store lfp before reg match (opt_regexpmatch1) + + * compile.c : support ditto, flipflop + + * yarvcore.c : support svar + + * test/test_syn.rb : add test for flipflop + + * test/test_bin.rb : add test for dsym, cvar, backref + + +2005-01-01(Sat) 09:09:32 +0900 Koichi Sasada <[email protected]> + + * insns.def : add getspecial insn + + * compile.c : support NODE_NTH_REF, NODE_BACK_REF + + +2005-01-01(Sat) 06:53:38 +0900 Koichi Sasada <[email protected]> + + * insns.def, compile.c : support alias, undef + + * test/test_method.rb : test for above + + * rb/insns2vm.rb : fix enbug + + +2005-01-01(Sat) 06:00:32 +0900 Koichi Sasada <[email protected]> + + * test/test_jump.rb : add test (next with value) + + * yarvcore.h, yarvcore.c, compile.c, compile.h : + raise compile error exception instead of rb_bug + + * yarvcore.c, evalc.patch : support "require" + + * test.rb : restore $" after evaluation with ruby + + * rb/insns2vm.rb : remove unnecesary each + + +2004-12-17(Fri) 18:56:38 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix newhash + + +2004-12-15(Wed) 13:29:27 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : add version string + + * compile.c : fix rescure clause bug + + +2004-12-14(Tue) 22:46:30 +0900 Koichi Sasada <[email protected]> + + * insns.def : add reput insn + + * vm.h : show stack cache registers when stack dump + + * rb/insns2vm.rb, compile.c : fix stack caching bugs + + +2004-12-14(Tue) 00:51:58 +0900 Koichi Sasada <[email protected]> + + * insns2vm.rb, compile.c, tmpl/opt_sc.inc.tmpl : fix bugs + + * rb/mixc-asm.rb : added + + +2004-12-14(Tue) 00:17:02 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, yarvcore.c, compile.c : fix SC bugs + (SC state management) + + * extconf.rb : add option -[enable|disable]-opt-stack-caching + + * insns2vm.rb : accept CPPFLAGS options + + * vm.c : support restrore register for pc + + +2004-12-13(Mon) 16:53:42 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb : add macro INSN_IS_SC() + + +2004-12-11(Sat) 10:51:44 +0900 Koichi Sasada <[email protected]> + + * insns.def, compile.c : support singleton method definition + + * test/test_method.rb : add test for above + + +2004-12-11(Sat) 03:17:54 +0900 Koichi Sasada <[email protected]> + + * benchmark/*.rb : modify + + * extconf.rb : add $cleanfiles + + +2004-12-08(Wed) 13:01:38 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : change to disable stack caching + + +2004-12-07(Tue) 19:37:13 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.rb : add default after + + * insns.def : fix to work on stack caching + + +2004-12-07(Tue) 15:07:13 +0900 Koichi Sasada <[email protected]> + + * depend : add some dependency to *.inc files + + * vm.c : add "register" and asm("regname") descriptor + + * rb/insns2vm.rb, compile.c : add stack caching support + + * tmpl/opt_sc.inc.tmpl : added to above change + + * rb/makedocs.rb : fix file path + + * extconf.rb : fix option selection + + +2004-12-06(Mon) 11:20:11 +0900 Koichi Sasada <[email protected]> + + * extconf.rb : add vm.asm target if compiler is gcc + + +2004-12-06(Mon) 09:56:24 +0900 Koichi Sasada <[email protected]> + + * vm.h : rename method_frame's member block to block_ptr + + * extconf.rb : add "-fno-crossjumping" option when compiler + is gcc + + * opt_operand.def : add unification insn send + + * rb/insns2vm.rb : define symbol instead of declare const + variable (for more optmize on VC) + + * insns.def : move enter point in send + + +2004-12-06(Mon) 04:53:51 +0900 Koichi Sasada <[email protected]> + + * compile.c, opt_operand.def, rb/insns2vm.rb, depend : + support operand unification + + +2004-12-05(Sun) 03:16:10 +0900 Koichi Sasada <[email protected]> + + * vm.c, insns.def : speed up throw/catch scheme + + +2004-12-05(Sun) 01:47:05 +0900 Koichi Sasada <[email protected]> + + * vm.c : fix catch handler bugs + + * test/test_jump.rb : test_complex_jump added + + +2004-12-03(Fri) 20:39:05 +0900 Koichi Sasada <[email protected]> + + * benchmark/contrib/mcq.rb : added + (from URABE Syouhei) + + +2004-12-03(Fri) 20:35:28 +0900 Koichi Sasada <[email protected]> + + * vm.c : support break in rb_yield block + + +2004-12-03(Fri) 14:26:35 +0900 Koichi Sasada <[email protected]> + + * compile.c : support block local variable in current + ruby specification (patche from Kent Sibilev) + + * insns.def : support attr_* (patch from Kent Sibilev) + + +2004-12-02(Thu) 21:04:27 +0900 Koichi Sasada <[email protected]> + + * opt_operand.def : added + + +2004-12-02(Thu) 13:20:41 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c, vm.h, vm.c, insns.def, insnhelper.h, yarvutil.rb : + add usage analisys framework + + * disasm.c : insn_operand_intern to separate function + + * benchmark/run.rb : run each benchmark on another process + + +2004-12-01(Wed) 10:26:49 +0900 Koichi Sasada <[email protected]> + + * vm.c : yield check block is given + + * benchmark/bm_lists.rb : rename to bmx_lists.rb + (because it's not work ... bug?) + + * insns.def : opt_* support other type calc + + +2004-11-30(Tue) 16:14:54 +0900 Koichi Sasada <[email protected]> + + * benchmark/bm_so_array.rb : added + + * benchmark/bm_so_matrix.rb : added + + +2004-11-30(Tue) 14:11:30 +0900 Koichi Sasada <[email protected]> + + * rb/getrev.rb : added + + * yarvcore.c : add YARVCore::REV, YARVCore::DATE constant + + +2004-11-30(Tue) 13:05:42 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_OP_ASGN1 (incomplete) + + * insns.def : add dupn + + +2004-11-30(Tue) 08:52:01 +0900 Koichi Sasada <[email protected]> + + * version.h : 0.0.0.f + + +2004-11-30(Tue) 08:43:59 +0900 Koichi Sasada <[email protected]> + + * test/test_class.rb : add test_initialize and test_to_s + + * yarvsubst.c : use rb_funcall instead of yarv_funcall + + * evalc.patch : fix ruby's patch + + * benchmark/bm_so_*.rb : change naming rule. "bm_so_*" from + language shootout + + * depend : tbench target item is ITEM env val (default: bmx_temp) + + * vm.c : show raw address if environment is in heap at dumping stack trace + + * vm.c : thread_call0 added + + * vm.c : fix thread_yield_light_invoke + + * yarv.h, yarvcore.c : remove yarv_funcall + + +2004-11-29(Mon) 11:37:08 +0900 Koichi Sasada <[email protected]> + + * test/test/test_proc.rb : add test test_nestproc + + * yarvsubst.c : comment out yarv_Array_each + + * insns.def : restore lfp/dfp after call_cfunc + + * vm.c : fix stack dump routine + + * vm.c : impliment thread_funcall (temporarily) + + * yarv.h : add IS_YARV_WORKING(), SET_YARV_START(), SET_YARV_STOP() + + * yarvcore.c : remove check with yarv_in_work + + * evalc.patch : added + + +2004-11-27(Sat) 00:19:52 +0900 Koichi Sasada <[email protected]> + + * yarvcore.c : free -> ruby_xfree + + +2004-11-26(Fri) 02:11:11 +0900 Koichi Sasada <[email protected]> + + * vm,c : fix bug + + +2004-11-22(Mon) 11:19:48 +0900 Koichi Sasada <[email protected]> + + * benchmark/bm_ackermann.rb, bm_proc.rb, bm_simpleiter.rb, + bm_so_exception.rb, bm_wc.rb, wc.input added + + +2004-11-22(Mon) 02:31:56 +0900 Koichi Sasada <[email protected]> + + * test/test_proc.rb : add some test + + * yarvcore.c, vm.c : support yield in C method (as rb_yield) + + * vm.c (thread_yield_light_(prepare|invoke)) : support lightweight + yield + + * yarv.h : added + + * yarvcore.c, yarv.h : support yarv_is_working, yarv_block_given_p, + yarv_yield, yarv_funcall (only dummy function) + + * vm.c : thread_eval_body changed return value + + * yarvsubst.c : added and add yarv_Integer_times, yarv_Array_each + + * yarvcore.h : block_ptr is added to struct thread_object + + * insns.def : pass block when C method call + + * insnhelper.h : add GET_ISEQOBJ(cfp) macro + + +2004-11-21(Sun) 07:25:49 +0900 Koichi Sasada <[email protected]> + + * vm.c : support Proc#call + + * test/test_proc.rb : added + + +2004-11-19(Fri) 18:04:10 +0900 Koichi Sasada <[email protected]> + + * insns.def, vm.c : support creating Proc object + + +2004-11-15(Mon) 14:19:27 +0900 Koichi Sasada <[email protected]> + + * insns.def (send) : use clear_local_size to specify + clear local table vars. + + * insns.def : block represent data shares lfp, dfp with frame data + + +2004-11-13(Sat) 18:19:41 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, insns.def : add VM_CALL_ARGS_SPLAT_BIT and + VM_CALL_ARGS_BLOCKARG_BIT + + * compile.c, compile.h : add ADD_SEND, ADD_SEND_R + + +2004-11-10(Wed) 08:26:25 +0900 Koichi Sasada <[email protected]> + + * add "vm_" prefix to (block_object, proc_object, env_object) + + +2004-11-03(Wed) 15:52:14 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, yarvcore.c, disasm.c, compile.c, insns.def, vm.c : + fix to move x86_64 (illegal cast, etc) + + +2004-11-01(Mon) 04:45:54 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, compile.c, debug.c, version.h : + redesgin gc debug scheme (GC_CHECK()) + + * yarvcore.c : mark iseqobj->current_block on GC + + * insns.def, compile.c : last "throw" in ensure/rescue block + use operand throwobj and before this insn, use "getdynamic 0, 1" + + * benchmark/bm_temp.rb : move to benchmark bmx_temp.rb + + * depend : change some targets + + +2004-10-25(Mon) 19:57:58 +0900 Koichi Sasada <[email protected]> + + * compile.c : push exception iseq to iseqobj->iseq_mark_ary + to mark for GC + + +2004-10-10(Sun) 16:25:03 +0900 Koichi Sasada <[email protected]> + + * compile.c : remove $_, $' area from method local frame + and provide that's special method local variables pointer(LFP[-1]) + + * disasm.c : change environment showing format + + * yarvcore.(h|c) : add YarvProc, YarvEnv + + * yarvcore.h : add arg_block field to iseq_object + and init -1 as default value + + +2004-09-30(Thu) 19:50:48 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : support passing splat argument + + * compile.c, insns.def : support rest argument + + * compile.c, insns.def : support optional argument initializer + + * test/test_method.rb : add tests for above + + +2004-09-29(Wed) 10:50:03 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix rescue clause popped + + * benchmark/bm_random.rb : move to benchmark/bmx_random.rb + + +2004-09-29(Wed) 01:25:35 +0900 Koichi Sasada <[email protected]> + + * many many files: change stack frame design + + +2004-09-16(Thu) 08:51:37 +0900 Koichi Sasada <[email protected]> + + * compile.c, yarvcore.h : support 'return' from method + in ensure clause + + +2004-09-13(Mon) 21:56:40 +0900 Koichi Sasada <[email protected]> + + * compile.c : support inline cache constant access + on NODE_COLON2, NODE_COLON3 + + * depend : add 'vtest' rule(verbose test) + + +2004-09-13(Mon) 10:58:44 +0900 Koichi Sasada <[email protected]> + + * compile.c, yarvcore.h : support redo/next/break in + while/until + + +2004-09-13(Mon) 08:50:19 +0900 Koichi Sasada <[email protected]> + + * test/test_jump.rb : added(correctly) + + * benchamark/bm_(ensure|rescue|simplereturn).rb added + + +2004-09-12(Sun) 23:30:20 +0900 Koichi Sasada <[email protected]> + + * test/test_jump.rb : added + + * insns.def, compile.c : add 'putnil' insn + + * compile.c : use '===' when rescue check + + * insns.def : remove 'rescuecheck' insn + + * compile.c : support retry in begin/rescue clause + + * ToDo : added + + +2004-09-08(Wed) 12:34:04 +0900 Koichi Sasada <[email protected]> + + * yarvcore.h, yarvcore.c : add idThrow* + + * insns.def, compile.c, vm.c : support retry, break, + next, redo, return(imcomplete) + + +2004-09-03(Fri) 13:40:08 +0900 Koichi Sasada <[email protected]> + + * compile.c : add nop after rescue body + + * insns.def, vm.c : support stack rewind when thrown + + +2004-09-01(Wed) 17:31:01 +0900 Koichi Sasada <[email protected]> + + * test/test_exception.rb : added + + +2004-09-01(Wed) 13:15:14 +0900 Koichi Sasada <[email protected]> + + * vm.c, insns.def : implementing exception handling + + +2004-09-01(Wed) 00:18:54 +0900 Koichi Sasada <[email protected]> + + * insns.def : add 'throw' insn + + * compile.c : support 'rescue' and 'ensure' clause + + * yarvcore.c, yarvcore.h : add 'catch_table' to iseq_struct + + +2004-08-30(Mon) 19:06:12 +0900 Koichi Sasada <[email protected]> + + * compile.h : NEW_ISEQOBJ don't pass self as parent + + * compile.c : use NEW_CHILD_ISEQOBJ explicitly + + +2004-08-29(Sun) 21:09:55 +0900 Koichi Sasada <[email protected]> + + * compile.c : trying to implement rescue/ensure + + * insns.def : fix yield bug(lfp, dfp link) + + +2004-08-28(Sat) 13:52:15 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix dvar bug + + * test/test_block.rb : add test + + * insns.def, insnhelper.h : remove unused source code + + +2004-08-28(Sat) 08:51:26 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_DASGN + + * test/test_block.rb : add test + + +2004-08-28(Sat) 08:13:04 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : support access to instance variable + + * test/test_class.rb : add test of instance variable + + * benchmark/bm_block.rb : added + + +2004-08-28(Sat) 07:48:43 +0900 Koichi Sasada <[email protected]> + + * test/test_block.rb : fix block parameter name + + +2004-08-28(Sat) 07:27:52 +0900 Koichi Sasada <[email protected]> + + * compile.c, insns.def : support method call with block + and yield and add some functions + + * compile.c, insns.def : support dynavars accessor + + * test/test_block.rb : added + + * vm.c : fix block parameter stack dump + + +2004-08-27(Fri) 23:56:47 +0900 Koichi Sasada <[email protected]> + + * compile.c(iseq_compile) : remove parameter iseqtype + (this information can access via self) + +2004-08-27(Fri) 17:13:35 +0900 Koichi Sasada <[email protected]> + + * test/test_bin.rb : add test(absolute path constant) + + * yarvcore.h, compile.c(iseq_compile) : change parameter + + * insns.def(classdef) : fix bug + + +2004-08-27(Fri) 04:53:13 +0900 Koichi Sasada <[email protected]> + + * insns.def : support setconstant, getconstant, classdef, + moduledef + + * vm.h : fix debug levels and so on + + * vm.h : foo_WORD -> foo_WC + + * test/test_class.rb : added + + +2004-08-25(Wed) 17:51:50 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix getconstant/setconstant/classdef + + +2004-08-25(Wed) 14:27:10 +0900 Koichi Sasada <[email protected]> + + * debug.[ch] : added + + * compile.c, disasm.c : use debug interface + + * compile.c : support some nodes + + * compile.c, rb/insns2vm.rb : remove TS_CPATH + + * insns.def : modify classdef/moduledef/singletonclassdef + and add popcref + + * and others... + + +2004-08-18(Wed) 20:16:45 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix case/when statement with empty else clause + + * insns.def : enable compile + + * yarvcore.h : add class search path scheme + + * test/test_syn.rb : add switch/case test case + + * tmpl/yarvarch.ja : update documents + + +2004-05-22(Sat) 01:30:44 +0900 Koichi Sasada <[email protected]> + + * yarvutil.rb : add eval_in_wrap + + * test/test_*.rb : change to use eval_in_wrap + + +2004-05-20(Thu) 02:50:32 +0900 Koichi Sasada <[email protected]> + + * support global variables + + * benchmark/bm_*.rb : add some benchmarks + + * compile.c : support NODE_ATTRASGN + + * compile.c : add debugi(...) + + +2004-05-19(Wed) 23:19:38 +0900 Koichi Sasada <[email protected]> + + * test/test_method.rb : added + + +2004-05-19(Wed) 22:56:09 +0900 Koichi Sasada <[email protected]> + + * insns.def : fix typo + + * benchmark/run.rb : sort benchmark order by filename + + * extconf.rb : use --enable/disable-xxx + + * version.h : ditto(don't touch to change yarv options) + + +2004-05-19(Wed) 21:18:55 +0900 Koichi Sasada <[email protected]> + + * yarvutil.rb : added + + * test.rb, test/*, benchmark/run.rb : use yarvutil.rb + + * version.h : USE_OPTIMIZED_REGEXP_MATCH added + + * yarvcore.h : add idEqTilde + + * yarvcore.c(yarvcore_parse, yarvcore_eval) : require file and line + parameter + + * test/test_bin.rb : add regexp test + + * benchmark/bm_regexp.rb : added + + +2004-05-19(Wed) 13:57:31 +0900 Koichi Sasada <[email protected]> + + * compile.c : add compile_dstr(self, node) + + * compile.c : support NODE_MATCH2, NODE_MATCH3, NODE_DXSTR + + * insns.def : add toregexp + + +2004-05-18(Tue) 10:12:20 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_XDSTR + + * test/test_bin.rb : add test for above change + + +2004-05-18(Tue) 09:46:33 +0900 Koichi Sasada <[email protected]> + + * insns.def(send) : store regs before call_cfunc + + +2004-05-18(Tue) 08:55:17 +0900 Koichi Sasada <[email protected]> + + * compile.c : support NODE_DSTR, NODE_EVSTR + + * compile.c : support NODE_XSTR + + * insns.def : add tostring operation + + * rb/makedocs.rb : fix directory path + + * depend : add tbench rule + + * yarvcore.h : add 'exten ID idBackquote' + + +2004-05-18(Tue) 00:09:48 +0900 Koichi Sasada <[email protected]> + + * version.h : add USE_OPTIMIZED_BASIC_OPERATION + + * yarvcore.h(struct thread_object) : add 'VALUE stat_insn_usage' + + +2004-05-17(Mon) 11:28:55 +0900 Koichi Sasada <[email protected]> + + * version.h, insns.def, yarvcore.c : add FAKE_INLINE_METHOD_CACHE + + +2004-05-17(Mon) 09:05:53 +0900 Koichi Sasada <[email protected]> + + * compile.c : fix generating opt_* insn process + + +2004-05-17(Mon) 08:58:49 +0900 Koichi Sasada <[email protected]> + + * benchmark/(bm_tarai.rb, bm_fib.rb) : added + + +2004-05-17(Mon) 08:20:12 +0900 Koichi Sasada <[email protected]> + + * benchmark/(bm_tak.rb, bm_reccount.rb) : added + + * insns.def : test method cache(incomplete) + + * insns.def : add expandarray insn + + * yarvcore.c(iseq_init) : add parameter 'parent' + + +2004-05-17(Mon) 01:49:48 +0900 Koichi Sasada <[email protected]> + + * benchmark/run.rb, bm_factorial.rb, bm_whileloop.rb : added + + * insns.def(send) : set id to ruby_frame->orig_func + + * check behavior on mswin32 and cygwin + + * insns.def(send) : check stack overflow + + +2004-05-16(Sun) 08:00:55 +0900 Koichi Sasada <[email protected]> + + * change frame structure(debugging) + + +2004-05-14(Fri) 15:06:02 +0900 Koichi Sasada <[email protected]> + + * insns2vm.rb : support file name arguments + + +2004-05-14(Fri) 04:33:09 +0900 Koichi Sasada <[email protected]> + + * insns.def : support (easy) constant + + +2004-05-12(Wed) 01:51:48 +0900 Koichi Sasada <[email protected]> + + * rb/insns2vm.b : set directory prefix + + * disasm.c : fix bug + + +2004-05-12(Wed) 00:00:17 +0900 Koichi Sasada <[email protected]> + + * vm.h, compiler.h, version.h : move *DEBUG defs to version.h + + +2004-05-11(Tue) 23:00:11 +0900 Koichi Sasada <[email protected]> + + * vm.h, version.h, yarvcore.h : move gcc ver check to version.h + and include version.h from yarvcore.h + + +2004-05-11(Tue) 19:16:26 +0900 Koichi Sasada <[email protected]> + + * 0.0.0.d : imported + + +Local variables: +add-log-time-format: (lambda () + (let* ((time (current-time)) + (diff (+ (cadr time) 32400)) + (lo (% diff 65536)) + (hi (+ (car time) (/ diff 65536)))) + (format-time-string "%Y-%m-%d(%a) %H:%M:%S +900" (list hi lo) t))) +indent-tabs-mode: t +tab-width: 8 +end: diff --git a/yarvtest/test_block.rb b/yarvtest/test_block.rb index 87800da5f6..eae8b077fe 100644 --- a/yarvtest/test_block.rb +++ b/yarvtest/test_block.rb @@ -1,429 +1,429 @@ -require 'yarvtest/yarvtest'
-
-class TestBlock < YarvTestBase
- def test_simple
- ae %q(
- def m
- yield
- end
- m{
- 1
- }
- )
- end
-
- def test_param
- ae %q(
- def m
- yield 1
- end
- m{|ib|
- ib*2
- }
- )
-
- ae %q(
- def m
- yield 12345, 67890
- end
- m{|ib,jb|
- ib*2+jb
- }
- )
- end
-
- def test_param2
- ae %q{
- def iter
- yield 10
- end
-
- a = nil
- [iter{|a|
- a
- }, a]
- }
- ae %q{
- def iter
- yield 10
- end
-
- iter{|a|
- iter{|a|
- a + 1
- } + a
- }
- }
- ae %q{
- def iter
- yield 10, 20, 30, 40
- end
-
- a = b = c = d = nil
- iter{|a, b, c, d|
- [a, b, c, d]
- } + [a, b, c, d]
- }
- ae %q{
- def iter
- yield 10, 20, 30, 40
- end
-
- a = b = nil
- iter{|a, b, c, d|
- [a, b, c, d]
- } + [a, b]
- }
- ae %q{
- def iter
- yield 10, 20, 30, 40
- end
-
- a = nil
- iter{|a, $b, @c, d|
- [a, $b]
- } + [a, $b, @c]
- } if false # 1.9 doesn't support expr block parameters
- end
-
- def test_param3
- if false
- # TODO: Ruby 1.9 doesn't support expr block parameter
- ae %q{
- h = {}
- [1].each{|h[:foo]|}
- h
- }
- ae %q{
- obj = Object.new
- def obj.x=(y)
- $ans = y
- end
- [1].each{|obj.x|}
- $ans
- }
- end
- end
-
- def test_blocklocal
- ae %q{
- 1.times{
- begin
- a = 1
- ensure
- foo = nil
- end
- }
- }
- end
-
- def test_simplenest
- ae %q(
- def m
- yield 123
- end
- m{|ib|
- m{|jb|
- ib*jb
- }
- }
- )
- end
-
- def test_simplenest2
- ae %q(
- def m a
- yield a
- end
- m(1){|ib|
- m(2){|jb|
- ib*jb
- }
- }
- )
- end
-
- def test_nest2
- ae %q(
- def m
- yield
- end
- def n
- yield
- end
-
- m{
- n{
- 100
- }
- }
- )
-
- ae %q(
- def m
- yield 1
- end
-
- m{|ib|
- m{|jb|
- i = 20
- }
- }
- )
-
- ae %q(
- def m
- yield 1
- end
-
- m{|ib|
- m{|jb|
- ib = 20
- kb = 2
- }
- }
- )
-
- ae %q(
- def iter1
- iter2{
- yield
- }
- end
-
- def iter2
- yield
- end
-
- iter1{
- jb = 2
- iter1{
- jb = 3
- }
- jb
- }
- )
-
- ae %q(
- def iter1
- iter2{
- yield
- }
- end
-
- def iter2
- yield
- end
-
- iter1{
- jb = 2
- iter1{
- jb
- }
- jb
- }
- )
- end
-
- def test_ifunc
- ae %q{
- (1..3).to_a
- }
-
- ae %q{
- (1..3).map{|e|
- e * 4
- }
- }
-
- ae %q{
- class C
- include Enumerable
- def each
- [1,2,3].each{|e|
- yield e
- }
- end
- end
-
- C.new.to_a
- }
-
- ae %q{
- class C
- include Enumerable
- def each
- [1,2,3].each{|e|
- yield e
- }
- end
- end
-
- C.new.map{|e|
- e + 3
- }
- }
- end
-
- def test_times
- ae %q{
- sum = 0
- 3.times{|ib|
- 2.times{|jb|
- sum += ib + jb
- }}
- sum
- }
- ae %q{
- 3.times{|bl|
- break 10
- }
- }
- end
-
- def test_for
- ae %q{
- sum = 0
- for x in [1, 2, 3]
- sum += x
- end
- sum
- }
- ae %q{
- sum = 0
- for x in (1..5)
- sum += x
- end
- sum
- }
- ae %q{
- sum = 0
- for x in []
- sum += x
- end
- sum
- }
- ae %q{
- ans = []
- 1.times{
- for n in 1..3
- a = n
- ans << a
- end
- }
- }
- ae %q{
- ans = []
- for m in 1..3
- for n in 1..3
- a = [m, n]
- ans << a
- end
- end
- }
- end
-
- def test_unmatched_params
- ae %q{
- def iter
- yield 1,2,3
- end
-
- iter{|i, j|
- [i, j]
- }
- }
- ae %q{
- def iter
- yield 1
- end
-
- iter{|i, j|
- [i, j]
- }
- }
- end
-
- def test_rest
- # TODO: known bug
- #ae %q{
- # def iter
- # yield 1, 2
- # end
- #
- # iter{|a, |
- # [a]
- # }
- #}
- ae %q{
- def iter
- yield 1, 2
- end
-
- iter{|a, *b|
- [a, b]
- }
- }
- ae %q{
- def iter
- yield 1, 2
- end
-
- iter{|*a|
- [a]
- }
- }
- ae %q{
- def iter
- yield 1, 2
- end
-
- iter{|a, b, *c|
- [a, b, c]
- }
- }
- ae %q{
- def iter
- yield 1, 2
- end
-
- iter{|a, b, c, *d|
- [a, b, c, d]
- }
- }
- end
-
- def test_param_and_locals
- ae %q{
- $a = []
-
- def iter
- yield 1
- end
-
- def m
- x = iter{|x|
- $a << x
- y = 0
- }
- end
- m
- $a
- }
- end
-
- def test_c_break
- ae %q{
- [1,2,3].find{|x| x == 2}
- }
- ae %q{
- class E
- include Enumerable
- def each(&block)
- [1, 2, 3].each(&block)
- end
- end
- E.new.find {|x| x == 2 }
- }
- end
-end
+require 'yarvtest/yarvtest' + +class TestBlock < YarvTestBase + def test_simple + ae %q( + def m + yield + end + m{ + 1 + } + ) + end + + def test_param + ae %q( + def m + yield 1 + end + m{|ib| + ib*2 + } + ) + + ae %q( + def m + yield 12345, 67890 + end + m{|ib,jb| + ib*2+jb + } + ) + end + + def test_param2 + ae %q{ + def iter + yield 10 + end + + a = nil + [iter{|a| + a + }, a] + } + ae %q{ + def iter + yield 10 + end + + iter{|a| + iter{|a| + a + 1 + } + a + } + } + ae %q{ + def iter + yield 10, 20, 30, 40 + end + + a = b = c = d = nil + iter{|a, b, c, d| + [a, b, c, d] + } + [a, b, c, d] + } + ae %q{ + def iter + yield 10, 20, 30, 40 + end + + a = b = nil + iter{|a, b, c, d| + [a, b, c, d] + } + [a, b] + } + ae %q{ + def iter + yield 10, 20, 30, 40 + end + + a = nil + iter{|a, $b, @c, d| + [a, $b] + } + [a, $b, @c] + } if false # 1.9 doesn't support expr block parameters + end + + def test_param3 + if false + # TODO: Ruby 1.9 doesn't support expr block parameter + ae %q{ + h = {} + [1].each{|h[:foo]|} + h + } + ae %q{ + obj = Object.new + def obj.x=(y) + $ans = y + end + [1].each{|obj.x|} + $ans + } + end + end + + def test_blocklocal + ae %q{ + 1.times{ + begin + a = 1 + ensure + foo = nil + end + } + } + end + + def test_simplenest + ae %q( + def m + yield 123 + end + m{|ib| + m{|jb| + ib*jb + } + } + ) + end + + def test_simplenest2 + ae %q( + def m a + yield a + end + m(1){|ib| + m(2){|jb| + ib*jb + } + } + ) + end + + def test_nest2 + ae %q( + def m + yield + end + def n + yield + end + + m{ + n{ + 100 + } + } + ) + + ae %q( + def m + yield 1 + end + + m{|ib| + m{|jb| + i = 20 + } + } + ) + + ae %q( + def m + yield 1 + end + + m{|ib| + m{|jb| + ib = 20 + kb = 2 + } + } + ) + + ae %q( + def iter1 + iter2{ + yield + } + end + + def iter2 + yield + end + + iter1{ + jb = 2 + iter1{ + jb = 3 + } + jb + } + ) + + ae %q( + def iter1 + iter2{ + yield + } + end + + def iter2 + yield + end + + iter1{ + jb = 2 + iter1{ + jb + } + jb + } + ) + end + + def test_ifunc + ae %q{ + (1..3).to_a + } + + ae %q{ + (1..3).map{|e| + e * 4 + } + } + + ae %q{ + class C + include Enumerable + def each + [1,2,3].each{|e| + yield e + } + end + end + + C.new.to_a + } + + ae %q{ + class C + include Enumerable + def each + [1,2,3].each{|e| + yield e + } + end + end + + C.new.map{|e| + e + 3 + } + } + end + + def test_times + ae %q{ + sum = 0 + 3.times{|ib| + 2.times{|jb| + sum += ib + jb + }} + sum + } + ae %q{ + 3.times{|bl| + break 10 + } + } + end + + def test_for + ae %q{ + sum = 0 + for x in [1, 2, 3] + sum += x + end + sum + } + ae %q{ + sum = 0 + for x in (1..5) + sum += x + end + sum + } + ae %q{ + sum = 0 + for x in [] + sum += x + end + sum + } + ae %q{ + ans = [] + 1.times{ + for n in 1..3 + a = n + ans << a + end + } + } + ae %q{ + ans = [] + for m in 1..3 + for n in 1..3 + a = [m, n] + ans << a + end + end + } + end + + def test_unmatched_params + ae %q{ + def iter + yield 1,2,3 + end + + iter{|i, j| + [i, j] + } + } + ae %q{ + def iter + yield 1 + end + + iter{|i, j| + [i, j] + } + } + end + + def test_rest + # TODO: known bug + #ae %q{ + # def iter + # yield 1, 2 + # end + # + # iter{|a, | + # [a] + # } + #} + ae %q{ + def iter + yield 1, 2 + end + + iter{|a, *b| + [a, b] + } + } + ae %q{ + def iter + yield 1, 2 + end + + iter{|*a| + [a] + } + } + ae %q{ + def iter + yield 1, 2 + end + + iter{|a, b, *c| + [a, b, c] + } + } + ae %q{ + def iter + yield 1, 2 + end + + iter{|a, b, c, *d| + [a, b, c, d] + } + } + end + + def test_param_and_locals + ae %q{ + $a = [] + + def iter + yield 1 + end + + def m + x = iter{|x| + $a << x + y = 0 + } + end + m + $a + } + end + + def test_c_break + ae %q{ + [1,2,3].find{|x| x == 2} + } + ae %q{ + class E + include Enumerable + def each(&block) + [1, 2, 3].each(&block) + end + end + E.new.find {|x| x == 2 } + } + end +end diff --git a/yarvtest/test_class.rb b/yarvtest/test_class.rb index 43d3e3aa55..f609dc0b9f 100644 --- a/yarvtest/test_class.rb +++ b/yarvtest/test_class.rb @@ -1,793 +1,793 @@ -require 'yarvtest/yarvtest'
-
-class TestClass < YarvTestBase
-
- def test_simple
- ae %q(
- class C
- def m(a,b)
- a+b
- end
- end
- C.new.m(1,2)
- ) do
- remove_const(:C)
- end
-
- ae %q(
- class A
- end
- class A::B
- def m
- A::B.name
- end
- end
- A::B.new.m
- ) do
- remove_const(:A)
- end
-
- #ae %q(
- # class (class C;self; end)::D < C
- # self.name
- # end
- #) do
- # remove_const(:C)
- #end
-
- end
-
- def test_sub
- ae %q(
- class A
- def m
- 123
- end
- end
-
- class B < A
- end
-
- B.new.m
- ) do
- remove_const(:A)
- remove_const(:B)
- end
-
- ae %q(
- class A
- class B
- class C
- def m
- 456
- end
- end
- end
- end
-
- class A::BB < A::B::C
- end
-
- A::BB.new.m
- ) do
- remove_const(:A)
- end
- end
-
- def test_attr
- ae %q(
- class C
- def set
- @a = 1
- end
- def get
- @a
- end
- end
- c = C.new
- c.set
- c.get
- ) do
- remove_const(:C)
- end
- end
-
- def test_initialize
- ae %q{
- class C
- def initialize
- @a = :C
- end
- def a
- @a
- end
- end
-
- C.new.a
- } do
- remove_const(:C)
- end
- end
-
- def test_to_s
- ae %q{
- class C
- def to_s
- "hoge"
- end
- end
-
- "ab#{C.new}cd"
- } do
- remove_const(:C)
- end
-
- end
-
- def test_attr_accessor
- ae %q{
- class C
- attr_accessor :a
- attr_reader :b
- attr_writer :c
- def b_write
- @b = 'huga'
- end
- def m a
- 'test_attr_accessor' + @b + @c
- end
- end
-
- c = C.new
- c.a = true
- c.c = 'hoge'
- c.b_write
- c.m(c.b)
- } do
- remove_const(:C)
- end
- end
-
- def test_super
- ae %q{
- class C
- def m1
- 100
- end
-
- def m2 a
- a + 100
- end
- end
-
- class CC < C
- def m1
- super() * 100
- end
-
- def m2
- super(200) * 100
- end
- end
-
- a = CC.new
- a.m1 + a.m2
- } do
- remove_const(:C)
- remove_const(:CC)
- end
- end
-
- def test_super2
- ae %q{
- class C
- def m(a, b)
- a+b
- end
- end
-
- class D < C
- def m arg
- super(*arg) + super(1, arg.shift)
- end
- end
-
- D.new.m([1, 2])
- }
-
- ae %q{
- class C
- def m
- yield
- end
- end
-
- class D < C
- def m
- super(){
- :D
- }
- end
- end
-
- D.new.m{
- :top
- }
- }
- ae %q{
- class C0
- def m a, &b
- [a, b]
- end
- end
-
- class C1 < C0
- def m a, &b
- super a, &b
- end
- end
-
- C1.new.m(10)
- }
- end
-
- def test_zsuper_from_define_method
- ae %q{
- class C
- def a
- "C#a"
- end
- def m
- "C#m"
- end
- end
- class D < C
- define_method(:m){
- super
- }
- define_method(:a){
- r = nil
- 1.times{
- r = super
- }
- r
- }
- end
- D.new.m + D.new.a
- }
- ae %q{
- class X
- def a
- "X#a"
- end
- def b
- class << self
- define_method(:a) {
- super
- }
- end
- end
- end
-
- x = X.new
- x.b
- x.a
- }
- ae %q{
- class C
- def m arg
- "C#m(#{arg})"
- end
- def b
- class << self
- define_method(:m){|a|
- super
- }
- end
- self
- end
- end
- C.new.b.m(:ok)
- }
- ae %q{
- class C
- def m *args
- "C#m(#{args.join(', ')})"
- end
- def b
- class << self
- define_method(:m){|a, b|
- r = nil
- 1.times{
- r = super
- }
- r
- }
- end
- self
- end
- end
- C.new.b.m(:ok1, :ok2)
- } if false # ruby 1.9 dumped core
- ae %q{ # [yarv-dev:859]
- $ans = []
- class A
- def m_a
- $ans << "m_a"
- end
- def def_m_a
- $ans << "def_m_a"
- end
- end
- class B < A
- def def_m_a
- B.class_eval{
- super
- define_method(:m_a) do
- super
- end
- }
- super
- end
- end
- b = B.new
- b.def_m_a
- b.m_a
- $ans
- }
- ae %q{
- class A
- def hoge
- :hoge
- end
- def foo
- :foo
- end
- end
- class B < A
- def memoize(name)
- B.instance_eval do
- define_method(name) do
- [name, super]
- end
- end
- end
- end
- b = B.new
- b.memoize(:hoge)
- b.memoize(:foo)
- [b.foo, b.hoge]
- }
- end
-
- def test_zsuper
- ae %q{
- class C
- def m1
- 100
- end
-
- def m2 a
- a + 100
- end
-
- def m3 a
- a + 200
- end
- end
-
- class CC < C
- def m1
- super * 100
- end
-
- def m2 a
- super * 100
- end
-
- def m3 a
- a = 400
- super * 100
- end
- end
-
- a = CC.new
- a.m1 + a.m2(200) + a.m3(300)
- } do
- remove_const(:C)
- remove_const(:CC)
- end
- end
-
- def test_zsuper2
- ae %q{
- class C1
- def m
- 10
- end
- end
-
- class C2 < C1
- def m
- 20 + super
- end
- end
-
- class C3 < C2
- def m
- 30 + super
- end
- end
-
- C3.new.m
- } do
- remove_const(:C1)
- remove_const(:C2)
- remove_const(:C3)
- end
-
- ae %q{
- class C
- def m
- yield
- end
- end
-
- class D < C
- def m
- super{
- :D
- }
- end
- end
-
- D.new.m{
- :top
- }
- }
- ae %q{
- class C
- def m(a, b, c, d)
- a+b+c+d
- end
- end
-
- class D < C
- def m(a, b=1, c=2, *d)
- d[0] ||= 0.1
- [super,
- begin
- a *= 2
- b *= 3
- c *= 4
- d[0] *= 5
- super
- end
- ]
- end
- end
- ary = []
- ary << D.new.m(10, 20, 30, 40)
- if false # On current ruby, these programs don't work
- ary << D.new.m(10, 20, 30)
- ary << D.new.m(10, 20)
- ary << D.new.m(10)
- end
- ary
- }
- ae %q{
- class C
- def m(a, b, c, d)
- a+b+c+d
- end
- end
-
- class D < C
- def m(a, b=1, c=2, d=3)
- [super,
- begin
- a *= 2
- b *= 3
- c *= 4
- d *= 5
- super
- end
- ]
- end
- end
- ary = []
- ary << D.new.m(10, 20, 30, 40)
- ary << D.new.m(10, 20, 30)
- ary << D.new.m(10, 20)
- ary << D.new.m(10)
- ary
- }
- ae %q{
- class C
- def m(a, b, c, d, &e)
- a+b+c+d+e.call
- end
- def n(a, b, c, d, &e)
- a+b+c+d+e.call
- end
- end
-
- class D < C
- def m(a, b=1, c=2, *d, &e)
- super
- end
- def n(a, b=1, c=2, d=3, &e)
- super
- end
- end
- ary = []
- ary << D.new.m(1, 2, 3, 4){
- 5
- }
- ary << D.new.m(1, 2, 3, 4, &lambda{
- 5
- })
- ary << D.new.n(1, 2, 3){
- 5
- }
- ary << D.new.n(1, 2){
- 5
- }
- ary << D.new.n(1){
- 5
- }
- ary
- }
- end
-
- def test_super_with_private
- ae %q{
- class C
- private
- def m1
- :OK
- end
- protected
- def m2
- end
- end
- class D < C
- def m1
- [super, super()]
- end
- def m2
- [super, super()]
- end
- end
- D.new.m1 + D.new.m2
- }
- end
-
- def test_const_in_other_scope
- ae %q{
- class C
- Const = :ok
- def m
- 1.times{
- Const
- }
- end
- end
- C.new.m
- } do
- remove_const(:C)
- end
-
- ae %q{
- class C
- Const = 1
- def m
- begin
- raise
- rescue
- Const
- end
- end
- end
- C.new.m
- } do
- remove_const(:C)
- end
- end
-
- def test_reopen_not_class
- ae %q{ # [yarv-dev:782]
- begin
- B = 1
- class B
- p B
- end
- rescue TypeError => e
- e.message
- end
- }
- ae %q{ # [yarv-dev:800]
- begin
- B = 1
- module B
- p B
- end
- rescue TypeError => e
- e.message
- end
- }
- end
-
- def test_set_const_not_class
- ae %q{
- begin
- 1::A = 1
- rescue TypeError => e
- e.message
- end
- }
- end
-
- def test_singletonclass
- ae %q{
- obj = ''
- class << obj
- def m
- :OK
- end
- end
- obj.m
- }
- ae %q{
- obj = ''
- Const = :NG
- class << obj
- Const = :OK
- def m
- Const
- end
- end
- obj.m
- }
- ae %q{
- obj = ''
- class C
- def m
- :NG
- end
- end
- class << obj
- class C
- def m
- :OK
- end
- end
- def m
- C.new.m
- end
- end
- obj.m
- }
- ae %q{ # [yarv-dev:818]
- class A
- end
- class << A
- C = "OK"
- def m
- class << Object
- $a = C
- end
- end
- end
- A.m
- $a
- }
- end
-
- def test_include
- ae %q{
- module M
- class A
- def hoge
- "hoge"
- end
- end
- end
-
- class A
- include M
- def m
- [Module.nesting, A.new.hoge, instance_eval("A.new.hoge")]
- end
- end
- A.new.m
- }
- end
-
- def test_colon3
- ae %q{
- class A
- ::B = :OK
- end
- B
- }
- ae %q{
- class A
- class ::C
- end
- end
- C
- }
- end
-
- def test_undef
- # [yarv-dev:999]
- ae %q{
- class Parent
- def foo
- end
- end
- class Child < Parent
- def bar
- end
-
- undef foo, bar
- end
-
- c = Child.new
- [c.methods.include?('foo'), c.methods.include?('bar')]
- }
- end
-
- def test_dup
- ae %q{
- ObjectSpace.each_object{|obj|
- if Module === obj && (obj.respond_to? :dup)
- obj.dup
- end
- }
- :ok
- }
- end
-
- def test_ivar2
- ae %q{
- class C
- def initialize
- @_v = 1
- end
-
- def foo
- @_v
- end
- end
- class D < C
- def initialize
- @_v = 2
- super
- end
- def foo
- [@_v, super]
- end
- end
- D.new.foo
- }
- ae %q{
- class C
- def initialize
- @_c = 1
- end
- end
-
- class D < C
- def initialize
- super
- @_d = 2
- end
- end
-
- D.new.instance_variables
- }
- end
-end
-
+require 'yarvtest/yarvtest' + +class TestClass < YarvTestBase + + def test_simple + ae %q( + class C + def m(a,b) + a+b + end + end + C.new.m(1,2) + ) do + remove_const(:C) + end + + ae %q( + class A + end + class A::B + def m + A::B.name + end + end + A::B.new.m + ) do + remove_const(:A) + end + + #ae %q( + # class (class C;self; end)::D < C + # self.name + # end + #) do + # remove_const(:C) + #end + + end + + def test_sub + ae %q( + class A + def m + 123 + end + end + + class B < A + end + + B.new.m + ) do + remove_const(:A) + remove_const(:B) + end + + ae %q( + class A + class B + class C + def m + 456 + end + end + end + end + + class A::BB < A::B::C + end + + A::BB.new.m + ) do + remove_const(:A) + end + end + + def test_attr + ae %q( + class C + def set + @a = 1 + end + def get + @a + end + end + c = C.new + c.set + c.get + ) do + remove_const(:C) + end + end + + def test_initialize + ae %q{ + class C + def initialize + @a = :C + end + def a + @a + end + end + + C.new.a + } do + remove_const(:C) + end + end + + def test_to_s + ae %q{ + class C + def to_s + "hoge" + end + end + + "ab#{C.new}cd" + } do + remove_const(:C) + end + + end + + def test_attr_accessor + ae %q{ + class C + attr_accessor :a + attr_reader :b + attr_writer :c + def b_write + @b = 'huga' + end + def m a + 'test_attr_accessor' + @b + @c + end + end + + c = C.new + c.a = true + c.c = 'hoge' + c.b_write + c.m(c.b) + } do + remove_const(:C) + end + end + + def test_super + ae %q{ + class C + def m1 + 100 + end + + def m2 a + a + 100 + end + end + + class CC < C + def m1 + super() * 100 + end + + def m2 + super(200) * 100 + end + end + + a = CC.new + a.m1 + a.m2 + } do + remove_const(:C) + remove_const(:CC) + end + end + + def test_super2 + ae %q{ + class C + def m(a, b) + a+b + end + end + + class D < C + def m arg + super(*arg) + super(1, arg.shift) + end + end + + D.new.m([1, 2]) + } + + ae %q{ + class C + def m + yield + end + end + + class D < C + def m + super(){ + :D + } + end + end + + D.new.m{ + :top + } + } + ae %q{ + class C0 + def m a, &b + [a, b] + end + end + + class C1 < C0 + def m a, &b + super a, &b + end + end + + C1.new.m(10) + } + end + + def test_zsuper_from_define_method + ae %q{ + class C + def a + "C#a" + end + def m + "C#m" + end + end + class D < C + define_method(:m){ + super + } + define_method(:a){ + r = nil + 1.times{ + r = super + } + r + } + end + D.new.m + D.new.a + } + ae %q{ + class X + def a + "X#a" + end + def b + class << self + define_method(:a) { + super + } + end + end + end + + x = X.new + x.b + x.a + } + ae %q{ + class C + def m arg + "C#m(#{arg})" + end + def b + class << self + define_method(:m){|a| + super + } + end + self + end + end + C.new.b.m(:ok) + } + ae %q{ + class C + def m *args + "C#m(#{args.join(', ')})" + end + def b + class << self + define_method(:m){|a, b| + r = nil + 1.times{ + r = super + } + r + } + end + self + end + end + C.new.b.m(:ok1, :ok2) + } if false # ruby 1.9 dumped core + ae %q{ # [yarv-dev:859] + $ans = [] + class A + def m_a + $ans << "m_a" + end + def def_m_a + $ans << "def_m_a" + end + end + class B < A + def def_m_a + B.class_eval{ + super + define_method(:m_a) do + super + end + } + super + end + end + b = B.new + b.def_m_a + b.m_a + $ans + } + ae %q{ + class A + def hoge + :hoge + end + def foo + :foo + end + end + class B < A + def memoize(name) + B.instance_eval do + define_method(name) do + [name, super] + end + end + end + end + b = B.new + b.memoize(:hoge) + b.memoize(:foo) + [b.foo, b.hoge] + } + end + + def test_zsuper + ae %q{ + class C + def m1 + 100 + end + + def m2 a + a + 100 + end + + def m3 a + a + 200 + end + end + + class CC < C + def m1 + super * 100 + end + + def m2 a + super * 100 + end + + def m3 a + a = 400 + super * 100 + end + end + + a = CC.new + a.m1 + a.m2(200) + a.m3(300) + } do + remove_const(:C) + remove_const(:CC) + end + end + + def test_zsuper2 + ae %q{ + class C1 + def m + 10 + end + end + + class C2 < C1 + def m + 20 + super + end + end + + class C3 < C2 + def m + 30 + super + end + end + + C3.new.m + } do + remove_const(:C1) + remove_const(:C2) + remove_const(:C3) + end + + ae %q{ + class C + def m + yield + end + end + + class D < C + def m + super{ + :D + } + end + end + + D.new.m{ + :top + } + } + ae %q{ + class C + def m(a, b, c, d) + a+b+c+d + end + end + + class D < C + def m(a, b=1, c=2, *d) + d[0] ||= 0.1 + [super, + begin + a *= 2 + b *= 3 + c *= 4 + d[0] *= 5 + super + end + ] + end + end + ary = [] + ary << D.new.m(10, 20, 30, 40) + if false # On current ruby, these programs don't work + ary << D.new.m(10, 20, 30) + ary << D.new.m(10, 20) + ary << D.new.m(10) + end + ary + } + ae %q{ + class C + def m(a, b, c, d) + a+b+c+d + end + end + + class D < C + def m(a, b=1, c=2, d=3) + [super, + begin + a *= 2 + b *= 3 + c *= 4 + d *= 5 + super + end + ] + end + end + ary = [] + ary << D.new.m(10, 20, 30, 40) + ary << D.new.m(10, 20, 30) + ary << D.new.m(10, 20) + ary << D.new.m(10) + ary + } + ae %q{ + class C + def m(a, b, c, d, &e) + a+b+c+d+e.call + end + def n(a, b, c, d, &e) + a+b+c+d+e.call + end + end + + class D < C + def m(a, b=1, c=2, *d, &e) + super + end + def n(a, b=1, c=2, d=3, &e) + super + end + end + ary = [] + ary << D.new.m(1, 2, 3, 4){ + 5 + } + ary << D.new.m(1, 2, 3, 4, &lambda{ + 5 + }) + ary << D.new.n(1, 2, 3){ + 5 + } + ary << D.new.n(1, 2){ + 5 + } + ary << D.new.n(1){ + 5 + } + ary + } + end + + def test_super_with_private + ae %q{ + class C + private + def m1 + :OK + end + protected + def m2 + end + end + class D < C + def m1 + [super, super()] + end + def m2 + [super, super()] + end + end + D.new.m1 + D.new.m2 + } + end + + def test_const_in_other_scope + ae %q{ + class C + Const = :ok + def m + 1.times{ + Const + } + end + end + C.new.m + } do + remove_const(:C) + end + + ae %q{ + class C + Const = 1 + def m + begin + raise + rescue + Const + end + end + end + C.new.m + } do + remove_const(:C) + end + end + + def test_reopen_not_class + ae %q{ # [yarv-dev:782] + begin + B = 1 + class B + p B + end + rescue TypeError => e + e.message + end + } + ae %q{ # [yarv-dev:800] + begin + B = 1 + module B + p B + end + rescue TypeError => e + e.message + end + } + end + + def test_set_const_not_class + ae %q{ + begin + 1::A = 1 + rescue TypeError => e + e.message + end + } + end + + def test_singletonclass + ae %q{ + obj = '' + class << obj + def m + :OK + end + end + obj.m + } + ae %q{ + obj = '' + Const = :NG + class << obj + Const = :OK + def m + Const + end + end + obj.m + } + ae %q{ + obj = '' + class C + def m + :NG + end + end + class << obj + class C + def m + :OK + end + end + def m + C.new.m + end + end + obj.m + } + ae %q{ # [yarv-dev:818] + class A + end + class << A + C = "OK" + def m + class << Object + $a = C + end + end + end + A.m + $a + } + end + + def test_include + ae %q{ + module M + class A + def hoge + "hoge" + end + end + end + + class A + include M + def m + [Module.nesting, A.new.hoge, instance_eval("A.new.hoge")] + end + end + A.new.m + } + end + + def test_colon3 + ae %q{ + class A + ::B = :OK + end + B + } + ae %q{ + class A + class ::C + end + end + C + } + end + + def test_undef + # [yarv-dev:999] + ae %q{ + class Parent + def foo + end + end + class Child < Parent + def bar + end + + undef foo, bar + end + + c = Child.new + [c.methods.include?('foo'), c.methods.include?('bar')] + } + end + + def test_dup + ae %q{ + ObjectSpace.each_object{|obj| + if Module === obj && (obj.respond_to? :dup) + obj.dup + end + } + :ok + } + end + + def test_ivar2 + ae %q{ + class C + def initialize + @_v = 1 + end + + def foo + @_v + end + end + class D < C + def initialize + @_v = 2 + super + end + def foo + [@_v, super] + end + end + D.new.foo + } + ae %q{ + class C + def initialize + @_c = 1 + end + end + + class D < C + def initialize + super + @_d = 2 + end + end + + D.new.instance_variables + } + end +end + diff --git a/yarvtest/test_exception.rb b/yarvtest/test_exception.rb index 3b0bd10cd6..9e69d02909 100644 --- a/yarvtest/test_exception.rb +++ b/yarvtest/test_exception.rb @@ -1,408 +1,408 @@ -require 'yarvtest/yarvtest'
-
-class TestException < YarvTestBase
-
- def test_rescue
- ae %q{
- begin
- 1
- rescue
- 2
- end
- }
-
- ae %q{
- begin
- 1
- begin
- 2
- rescue
- 3
- end
- 4
- rescue
- 5
- end
- }
-
- ae %q{
- begin
- 1
- rescue
- 2
- else
- 3
- end
- }
- end
-
- def test_ensure
- ae %q{
- begin
- 1+1
- ensure
- 2+2
- end
- }
- ae %q{
- begin
- 1+1
- begin
- 2+2
- ensure
- 3+3
- end
- ensure
- 4+4
- end
- }
- ae %q{
- begin
- 1+1
- begin
- 2+2
- ensure
- 3+3
- end
- ensure
- 4+4
- begin
- 5+5
- ensure
- 6+6
- end
- end
- }
- end
-
- def test_rescue_ensure
- ae %q{
- begin
- 1+1
- rescue
- 2+2
- ensure
- 3+3
- end
- }
- ae %q{
- begin
- 1+1
- rescue
- 2+2
- ensure
- 3+3
- end
- }
- ae %q{
- begin
- 1+1
- rescue
- 2+2
- else
- 3+3
- ensure
- 4+4
- end
- }
- ae %q{
- begin
- 1+1
- begin
- 2+2
- rescue
- 3+3
- else
- 4+4
- end
- rescue
- 5+5
- else
- 6+6
- ensure
- 7+7
- end
- }
-
- end
-
- def test_raise
- ae %q{
- begin
- raise
- rescue
- :ok
- end
- }
- ae %q{
- begin
- raise
- rescue
- :ok
- ensure
- :ng
- end
- }
- ae %q{
- begin
- raise
- rescue => e
- e.class
- end
- }
- ae %q{
- begin
- raise
- rescue StandardError
- :ng
- rescue Exception
- :ok
- end
- }
- ae %q{
- begin
- begin
- raise "a"
- rescue
- raise "b"
- ensure
- raise "c"
- end
- rescue => e
- e.message
- end
- }
- end
-
- def test_error_variable
- ae %q{
- a = nil
- 1.times{|e|
- begin
- rescue => err
- end
- a = err.class
- }
- }
- ae %q{
- a = nil
- 1.times{|e|
- begin
- raise
- rescue => err
- end
- a = err.class
- }
- a
- }
- end
-
- def test_raise_in_other_scope
- ae %q{
- class E1 < Exception
- end
-
- def m
- yield
- end
-
- begin
- begin
- begin
- m{
- raise
- }
- rescue E1
- :ok2
- ensure
- end
- rescue
- :ok3
- ensure
- end
- rescue E1
- :ok
- ensure
- end
- } do
- remove_const :E1
- end
-
- ae %q{
- $i = 0
- def m
- iter{
- begin
- $i += 1
- begin
- $i += 2
- break
- ensure
-
- end
- ensure
- $i += 4
- end
- $i = 0
- }
- end
-
- def iter
- yield
- end
- m
- $i
- }
-
- ae %q{
- $i = 0
- def m
- begin
- $i += 1
- begin
- $i += 2
- return
- ensure
- $i += 3
- end
- ensure
- $i += 4
- end
- p :end
- end
- m
- $i
- }
- end
-
- def test_raise_in_cont_sp
- ae %q{
- def m a, b
- a + b
- end
- m(1, begin
- raise
- rescue
- 2
- end) +
- m(10, begin
- raise
- rescue
- 20
- ensure
- 30
- end)
- }
- ae %q{
- def m a, b
- a + b
- end
- m(begin
- raise
- rescue
- 1
- end,
- begin
- raise
- rescue
- 2
- end)
- }
- end
-
- def test_geterror
- ae %q{
- $!
- }
- ae %q{
- begin
- raise "FOO"
- rescue
- $!
- end
- }
- ae %q{
- def m
- $!
- end
- begin
- raise "FOO"
- rescue
- m()
- end
- }
- ae %q{
- $ans = []
- def m
- $!
- end
- begin
- raise "FOO"
- rescue
- begin
- raise "BAR"
- rescue
- $ans << m()
- end
- $ans << m()
- end
- $ans
- }
- ae %q{
- $ans = []
- def m
- $!
- end
-
- begin
- begin
- raise "FOO"
- ensure
- $ans << m()
- end
- rescue
- $ans << m()
- end
- }
- ae %q{
- $ans = []
- def m
- $!
- end
- def m2
- 1.times{
- begin
- return
- ensure
- $ans << m
- end
- }
- end
- m2
- $ans
- }
- end
-
- def test_stack_consistency
- ae %q{ #
- proc{
- begin
- raise
- break
- rescue
- :ok
- end
- }.call
- }
- ae %q{
- proc do
- begin
- raise StandardError
- redo
- rescue StandardError
- end
- end.call
- }
- end
-end
-
+require 'yarvtest/yarvtest' + +class TestException < YarvTestBase + + def test_rescue + ae %q{ + begin + 1 + rescue + 2 + end + } + + ae %q{ + begin + 1 + begin + 2 + rescue + 3 + end + 4 + rescue + 5 + end + } + + ae %q{ + begin + 1 + rescue + 2 + else + 3 + end + } + end + + def test_ensure + ae %q{ + begin + 1+1 + ensure + 2+2 + end + } + ae %q{ + begin + 1+1 + begin + 2+2 + ensure + 3+3 + end + ensure + 4+4 + end + } + ae %q{ + begin + 1+1 + begin + 2+2 + ensure + 3+3 + end + ensure + 4+4 + begin + 5+5 + ensure + 6+6 + end + end + } + end + + def test_rescue_ensure + ae %q{ + begin + 1+1 + rescue + 2+2 + ensure + 3+3 + end + } + ae %q{ + begin + 1+1 + rescue + 2+2 + ensure + 3+3 + end + } + ae %q{ + begin + 1+1 + rescue + 2+2 + else + 3+3 + ensure + 4+4 + end + } + ae %q{ + begin + 1+1 + begin + 2+2 + rescue + 3+3 + else + 4+4 + end + rescue + 5+5 + else + 6+6 + ensure + 7+7 + end + } + + end + + def test_raise + ae %q{ + begin + raise + rescue + :ok + end + } + ae %q{ + begin + raise + rescue + :ok + ensure + :ng + end + } + ae %q{ + begin + raise + rescue => e + e.class + end + } + ae %q{ + begin + raise + rescue StandardError + :ng + rescue Exception + :ok + end + } + ae %q{ + begin + begin + raise "a" + rescue + raise "b" + ensure + raise "c" + end + rescue => e + e.message + end + } + end + + def test_error_variable + ae %q{ + a = nil + 1.times{|e| + begin + rescue => err + end + a = err.class + } + } + ae %q{ + a = nil + 1.times{|e| + begin + raise + rescue => err + end + a = err.class + } + a + } + end + + def test_raise_in_other_scope + ae %q{ + class E1 < Exception + end + + def m + yield + end + + begin + begin + begin + m{ + raise + } + rescue E1 + :ok2 + ensure + end + rescue + :ok3 + ensure + end + rescue E1 + :ok + ensure + end + } do + remove_const :E1 + end + + ae %q{ + $i = 0 + def m + iter{ + begin + $i += 1 + begin + $i += 2 + break + ensure + + end + ensure + $i += 4 + end + $i = 0 + } + end + + def iter + yield + end + m + $i + } + + ae %q{ + $i = 0 + def m + begin + $i += 1 + begin + $i += 2 + return + ensure + $i += 3 + end + ensure + $i += 4 + end + p :end + end + m + $i + } + end + + def test_raise_in_cont_sp + ae %q{ + def m a, b + a + b + end + m(1, begin + raise + rescue + 2 + end) + + m(10, begin + raise + rescue + 20 + ensure + 30 + end) + } + ae %q{ + def m a, b + a + b + end + m(begin + raise + rescue + 1 + end, + begin + raise + rescue + 2 + end) + } + end + + def test_geterror + ae %q{ + $! + } + ae %q{ + begin + raise "FOO" + rescue + $! + end + } + ae %q{ + def m + $! + end + begin + raise "FOO" + rescue + m() + end + } + ae %q{ + $ans = [] + def m + $! + end + begin + raise "FOO" + rescue + begin + raise "BAR" + rescue + $ans << m() + end + $ans << m() + end + $ans + } + ae %q{ + $ans = [] + def m + $! + end + + begin + begin + raise "FOO" + ensure + $ans << m() + end + rescue + $ans << m() + end + } + ae %q{ + $ans = [] + def m + $! + end + def m2 + 1.times{ + begin + return + ensure + $ans << m + end + } + end + m2 + $ans + } + end + + def test_stack_consistency + ae %q{ # + proc{ + begin + raise + break + rescue + :ok + end + }.call + } + ae %q{ + proc do + begin + raise StandardError + redo + rescue StandardError + end + end.call + } + end +end + diff --git a/yarvtest/test_flow.rb b/yarvtest/test_flow.rb index fa7224b987..bc4d84e5fd 100644 --- a/yarvtest/test_flow.rb +++ b/yarvtest/test_flow.rb @@ -1,591 +1,591 @@ -#
-# This test program is contributed by George Marrows
-# Re: [Yarv-devel] Some tests for test_jump.rb
-#
-
-require 'yarvtest/yarvtest'
-
-class TestFlow < YarvTestBase
- def ae_flow(src, for_value=true)
- # Tracks flow through the code
- # A test like
- # begin
- # ensure
- # end
- # gets transformed into
- # a = []
- # begin
- # begin; a << 1
- # ensure; a << 2
- # end; a << 3
- # rescue Exception
- # a << 99
- # end
- # a
- # before being run. This tracks control flow through the code.
-
- cnt = 0
- src = src.gsub(/(\n|$)/) { "; $a << #{cnt+=1}\n" }
- src = "$a = []; begin; #{src}; rescue Exception; $a << 99; end; $a"
-
- if false#||true
- STDERR.puts
- STDERR.puts '#----'
- STDERR.puts src
- STDERR.puts '#----'
- end
-
- ae(src)
- end
-
- def test_while_with_ensure
- ae %q{
- a = []
- i = 0
- begin
- while i < 1
- i+=1
- begin
- begin
- next
- ensure
- a << :ok
- end
- ensure
- a << :ok2
- end
- end
- ensure
- a << :last
- end
- }
- ae %q{
- a = []
- i = 0
- begin
- while i < 1
- i+=1
- begin
- begin
- break
- ensure
- a << :ok
- end
- ensure
- a << :ok2
- end
- end
- ensure
- a << :last
- end
- }
- ae %q{
- a = []
- i = 0
- begin
- while i < 1
- if i>0
- break
- end
- i+=1
- begin
- begin
- redo
- ensure
- a << :ok
- end
- ensure
- a << :ok2
- end
- end
- ensure
- a << :last
- end
- }
- end
-
- def test_ensure_normal_flow
- ae_flow %{
- begin
- ensure
- end }
- end
-
- def test_ensure_exception
- ae_flow %{
- begin
- raise StandardError
- ensure
- end
- }
- end
-
- def test_break_in_block_runs_ensure
- ae_flow %{
- [1,2].each do
- begin
- break
- ensure
- end
- end
- }
- end
-
- def test_next_in_block_runs_ensure
- ae_flow %{
- [1,2].each do
- begin
- next
- ensure
- end
- end
- }
- end
- def test_return_from_method_runs_ensure
- ae_flow %{
- o = "test"
- def o.test(a)
- return a
- ensure
- end
- o.test(123)
- }
- end
-
- def test_break_from_ifunc
- ae %q{
- ["a"].inject("ng"){|x,y|
- break :ok
- }
- }
- ae %q{
- unless ''.respond_to? :lines
- class String
- def lines
- self
- end
- end
- end
-
- ('a').lines.map{|e|
- break :ok
- }
- }
- ae_flow %q{
- ["a"].inject("ng"){|x,y|
- break :ok
- }
- }
- ae_flow %q{
- ('a'..'b').map{|e|
- break :ok
- }
- }
- end
-
- def test_break_ensure_interaction1
- # make sure that any 'break state' set up in the VM is c
- # the time of the ensure
- ae_flow %{
- [1,2].each{
- break
- }
- begin
- ensure
- end
- }
- end
-
- def test_break_ensure_interaction2
- # ditto, different arrangement
- ae_flow %{
- begin
- [1,2].each do
- break
- end
- ensure
- end
- }
- end
-
- def test_break_through_2_ensures
- ae_flow %{
- [1,2].each do
- begin
- begin
- break
- ensure
- end
- ensure
- end
- end
- }
- end
-
- def test_ensure_break_ensure
- # break through an ensure; run 2nd normally
- ae_flow %{
- begin
- [1,2].each do
- begin
- break
- ensure
- end
- end
- ensure
- end
- }
- end
-
- def test_exception_overrides_break
- ae_flow %{
- [1,2].each do
- begin
- break
- ensure
- raise StandardError
- end
- end
- }
- end
-
- def test_break_overrides_exception
- ae_flow %{
- [1,2].each do
- begin
- raise StandardError
- ensure
- break
- end
- end
- }
- ae_flow %{
- [1,2].each do
- begin
- raise StandardError
- rescue
- break
- end
- end
- }
- end
-
- def test_break_in_exception
- ae_flow %q{
- i=0
- while i<3
- i+=1
- begin
- ensure
- break
- end
- end
- }
- ae_flow %q{
- i=0
- while i<3
- i+=1
- begin
- raise
- ensure
- break
- end
- end
- }
- ae_flow %q{
- i=0
- while i<3
- i+=1
- begin
- raise
- rescue
- break
- end
- end
- }
- end
-
- def test_next_in_exception
- return
- ae_flow %q{
- i=0
- while i<3
- i+=1
- begin
- ensure
- next
- end
- end
- }
- ae_flow %q{
- i=0
- while i<3
- i+=1
- begin
- raise
- ensure
- next
- end
- end
- }
- ae_flow %q{
- i=0
- while i<3
- i+=1
- begin
- raise
- rescue
- next
- end
- end
- }
- end
-
- def test_complex_break
- ae_flow %q{
- i = 0
- while i<3
- i+=1
- j = 0
- while j<3
- j+=1
- begin
- raise
- rescue
- break
- end
- end
- end
- }
- ae_flow %q{
- i = 0
- while i<3
- i+=1
- j = 0
- while j<3
- j+=1
- 1.times{
- begin
- raise
- rescue
- break
- end
- }
- end
- end
- }
- ae_flow %q{
- i = 0
- while i<3
- i+=1
- j = 0
- while j<3
- j+=1
- begin
- raise
- ensure
- break
- end
- end
- end
- }
- ae_flow %q{
- i = 0
- while i<3
- i+=1
- j = 0
- while j<3
- j+=1
- 1.times{
- begin
- raise
- ensure
- break
- end
- }
- end
- end
- }
- ae_flow %q{
- while true
- begin
- break
- ensure
- break
- end
- end
- }
- ae_flow %q{
- while true
- begin
- break
- ensure
- raise
- end
- end
- }
- end
-
- def test_jump_from_class
- ae_flow %q{
- 3.times{
- class C
- break
- end
- }
- }
- ae_flow %q{
- 3.times{
- class A
- class B
- break
- end
- end
- }
- }
- ae_flow %q{
- 3.times{
- class C
- next
- end
- }
- }
- ae_flow %q{
- 3.times{
- class C
- class D
- next
- end
- end
- }
- }
- ae_flow %q{
- while true
- class C
- break
- end
- end
- }
- ae_flow %q{
- while true
- class C
- class D
- break
- end
- end
- end
- }
- ae_flow %q{
- i=0
- while i<3
- i+=1
- class C
- next 10
- end
- end
- }
- ae %q{
- 1.times{
- while true
- class C
- begin
- break
- ensure
- break
- end
- end
- end
- }
- }
- end
-
- def test_flow_with_cont_sp
- ae %q{
- def m a, b
- a + b
- end
- m(1,
- while true
- break 2
- end
- )
- }
- ae %q{
- def m a, b
- a + b
- end
- m(1,
- (i=0; while i<2
- i+=1
- class C
- next 2
- end
- end; 3)
- )
- }
- ae %q{
- def m a, b
- a+b
- end
- m(1, 1.times{break 3}) +
- m(10, (1.times{next 3}; 20))
- }
- end
-
- def test_return_in_deep_stack
- ae_flow %q{
- def m1 *args
-
- end
- def m2
- m1(:a, :b, (return 1; :c))
- end
- m2
- }
- end
-
- def test_return_in_ensure
- ae_flow %q{
- def m()
- begin
- 2
- ensure
- return 3
- end
- end
- m
- }
- ae_flow %q{
- def m2
- end
- def m()
- m2(begin
- 2
- ensure
- return 3
- end)
- 4
- end
- m()
- }
- ae_flow %q{
- def m
- 1
- 1.times{
- 2
- begin
- 3
- return
- 4
- ensure
- 5
- end
- 6
- }
- 7
- end
- m()
- }
- end
-end
-
+# +# This test program is contributed by George Marrows +# Re: [Yarv-devel] Some tests for test_jump.rb +# + +require 'yarvtest/yarvtest' + +class TestFlow < YarvTestBase + def ae_flow(src, for_value=true) + # Tracks flow through the code + # A test like + # begin + # ensure + # end + # gets transformed into + # a = [] + # begin + # begin; a << 1 + # ensure; a << 2 + # end; a << 3 + # rescue Exception + # a << 99 + # end + # a + # before being run. This tracks control flow through the code. + + cnt = 0 + src = src.gsub(/(\n|$)/) { "; $a << #{cnt+=1}\n" } + src = "$a = []; begin; #{src}; rescue Exception; $a << 99; end; $a" + + if false#||true + STDERR.puts + STDERR.puts '#----' + STDERR.puts src + STDERR.puts '#----' + end + + ae(src) + end + + def test_while_with_ensure + ae %q{ + a = [] + i = 0 + begin + while i < 1 + i+=1 + begin + begin + next + ensure + a << :ok + end + ensure + a << :ok2 + end + end + ensure + a << :last + end + } + ae %q{ + a = [] + i = 0 + begin + while i < 1 + i+=1 + begin + begin + break + ensure + a << :ok + end + ensure + a << :ok2 + end + end + ensure + a << :last + end + } + ae %q{ + a = [] + i = 0 + begin + while i < 1 + if i>0 + break + end + i+=1 + begin + begin + redo + ensure + a << :ok + end + ensure + a << :ok2 + end + end + ensure + a << :last + end + } + end + + def test_ensure_normal_flow + ae_flow %{ + begin + ensure + end } + end + + def test_ensure_exception + ae_flow %{ + begin + raise StandardError + ensure + end + } + end + + def test_break_in_block_runs_ensure + ae_flow %{ + [1,2].each do + begin + break + ensure + end + end + } + end + + def test_next_in_block_runs_ensure + ae_flow %{ + [1,2].each do + begin + next + ensure + end + end + } + end + def test_return_from_method_runs_ensure + ae_flow %{ + o = "test" + def o.test(a) + return a + ensure + end + o.test(123) + } + end + + def test_break_from_ifunc + ae %q{ + ["a"].inject("ng"){|x,y| + break :ok + } + } + ae %q{ + unless ''.respond_to? :lines + class String + def lines + self + end + end + end + + ('a').lines.map{|e| + break :ok + } + } + ae_flow %q{ + ["a"].inject("ng"){|x,y| + break :ok + } + } + ae_flow %q{ + ('a'..'b').map{|e| + break :ok + } + } + end + + def test_break_ensure_interaction1 + # make sure that any 'break state' set up in the VM is c + # the time of the ensure + ae_flow %{ + [1,2].each{ + break + } + begin + ensure + end + } + end + + def test_break_ensure_interaction2 + # ditto, different arrangement + ae_flow %{ + begin + [1,2].each do + break + end + ensure + end + } + end + + def test_break_through_2_ensures + ae_flow %{ + [1,2].each do + begin + begin + break + ensure + end + ensure + end + end + } + end + + def test_ensure_break_ensure + # break through an ensure; run 2nd normally + ae_flow %{ + begin + [1,2].each do + begin + break + ensure + end + end + ensure + end + } + end + + def test_exception_overrides_break + ae_flow %{ + [1,2].each do + begin + break + ensure + raise StandardError + end + end + } + end + + def test_break_overrides_exception + ae_flow %{ + [1,2].each do + begin + raise StandardError + ensure + break + end + end + } + ae_flow %{ + [1,2].each do + begin + raise StandardError + rescue + break + end + end + } + end + + def test_break_in_exception + ae_flow %q{ + i=0 + while i<3 + i+=1 + begin + ensure + break + end + end + } + ae_flow %q{ + i=0 + while i<3 + i+=1 + begin + raise + ensure + break + end + end + } + ae_flow %q{ + i=0 + while i<3 + i+=1 + begin + raise + rescue + break + end + end + } + end + + def test_next_in_exception + return + ae_flow %q{ + i=0 + while i<3 + i+=1 + begin + ensure + next + end + end + } + ae_flow %q{ + i=0 + while i<3 + i+=1 + begin + raise + ensure + next + end + end + } + ae_flow %q{ + i=0 + while i<3 + i+=1 + begin + raise + rescue + next + end + end + } + end + + def test_complex_break + ae_flow %q{ + i = 0 + while i<3 + i+=1 + j = 0 + while j<3 + j+=1 + begin + raise + rescue + break + end + end + end + } + ae_flow %q{ + i = 0 + while i<3 + i+=1 + j = 0 + while j<3 + j+=1 + 1.times{ + begin + raise + rescue + break + end + } + end + end + } + ae_flow %q{ + i = 0 + while i<3 + i+=1 + j = 0 + while j<3 + j+=1 + begin + raise + ensure + break + end + end + end + } + ae_flow %q{ + i = 0 + while i<3 + i+=1 + j = 0 + while j<3 + j+=1 + 1.times{ + begin + raise + ensure + break + end + } + end + end + } + ae_flow %q{ + while true + begin + break + ensure + break + end + end + } + ae_flow %q{ + while true + begin + break + ensure + raise + end + end + } + end + + def test_jump_from_class + ae_flow %q{ + 3.times{ + class C + break + end + } + } + ae_flow %q{ + 3.times{ + class A + class B + break + end + end + } + } + ae_flow %q{ + 3.times{ + class C + next + end + } + } + ae_flow %q{ + 3.times{ + class C + class D + next + end + end + } + } + ae_flow %q{ + while true + class C + break + end + end + } + ae_flow %q{ + while true + class C + class D + break + end + end + end + } + ae_flow %q{ + i=0 + while i<3 + i+=1 + class C + next 10 + end + end + } + ae %q{ + 1.times{ + while true + class C + begin + break + ensure + break + end + end + end + } + } + end + + def test_flow_with_cont_sp + ae %q{ + def m a, b + a + b + end + m(1, + while true + break 2 + end + ) + } + ae %q{ + def m a, b + a + b + end + m(1, + (i=0; while i<2 + i+=1 + class C + next 2 + end + end; 3) + ) + } + ae %q{ + def m a, b + a+b + end + m(1, 1.times{break 3}) + + m(10, (1.times{next 3}; 20)) + } + end + + def test_return_in_deep_stack + ae_flow %q{ + def m1 *args + + end + def m2 + m1(:a, :b, (return 1; :c)) + end + m2 + } + end + + def test_return_in_ensure + ae_flow %q{ + def m() + begin + 2 + ensure + return 3 + end + end + m + } + ae_flow %q{ + def m2 + end + def m() + m2(begin + 2 + ensure + return 3 + end) + 4 + end + m() + } + ae_flow %q{ + def m + 1 + 1.times{ + 2 + begin + 3 + return + 4 + ensure + 5 + end + 6 + } + 7 + end + m() + } + end +end + diff --git a/yarvtest/test_jump.rb b/yarvtest/test_jump.rb index e7c2cc37a6..4c806380a8 100644 --- a/yarvtest/test_jump.rb +++ b/yarvtest/test_jump.rb @@ -1,296 +1,296 @@ -require 'yarvtest/yarvtest'
-
-class TestJump < YarvTestBase
-
- def test_redo
- ae %q{
- def m
- yield + 10
- end
- i=0
- m{
- if i>10
- i*i
- else
- i+=1
- redo
- end
- }
- }
- end
-
- def test_next
- ae %q{
- def m
- yield
- :ok
- end
- i=0
- m{
- if i>10
- i*i
- else
- i+=1
- next
- end
- }
- }
- end
-
- def test_next_with_val
- ae %q{
- def m
- yield
- end
-
- m{
- next :ok
- }
- }
- end
-
- def test_return
- ae %q{
- def m
- return 3
- end
- m
- }
-
- ae %q{
- def m
- :ng1
- mm{
- return :ok
- }
- :ng2
- end
-
- def mm
- :ng3
- yield
- :ng4
- end
- m
- }
- end
-
- def test_return2
- ae %q{
- $i = 0
- def m
- begin
- iter{
- return
- }
- ensure
- $i = 100
- end
- end
-
- def iter
- yield
- end
- m
- $i
- }
- end
-
- def test_return3
- ae %q{
- def m
- begin
- raise
- rescue
- return :ok
- end
- :ng
- end
- m
- }
- end
-
- def test_break
- ae %q{
- def m
- :ng1
- mm{
- yield
- }
- :ng2
- end
-
- def mm
- :ng3
- yield
- :ng4
- end
-
- m{
- break :ok
- }
- }
- end
-
- def test_exception_and_break
- ae %q{
- def m
- yield
- end
-
- m{
- begin
- ensure
- break :ok
- end
- }
- }
- end
-
- def test_retry
- # this test can't run on ruby 1.9(yarv can do)
- %q{
- def m a
- mm{
- yield
- }
- end
-
- def mm
- yield
- end
-
- i=0
- m(i+=1){
- retry if i<10
- :ok
- }
- }
-
- ae %q{
- def m a
- yield
- end
-
- i=0
- m(i+=1){
- retry if i<10
- :ok
- }
- }
- end
-
- def test_complex_jump
- ae %q{
- module Enumerable
- def all_?
- self.each{|e|
- unless yield(e)
- return false
- end
- }
- true
- end
- end
-
- xxx = 0
- [1,2].each{|bi|
- [3,4].each{|bj|
- [true, nil, true].all_?{|be| be}
- break
- }
- xxx += 1
- }
- xxx
- }
- end
-
- def test_return_from
- ae %q{
- def m
- begin
- raise
- rescue
- return 1
- end
- end
-
- m
- }
- ae %q{
- def m
- begin
- #
- ensure
- return 1
- end
- end
-
- m
- }
- end
-
- def test_break_from_times
- ae %q{
- 3.times{
- break :ok
- }
- }
- end
-
- def test_catch_and_throw
- ae %q{
- catch(:foo){
- throw :foo
- }
- }
- ae %q{
- catch(:foo){
- throw :foo, false
- }
- }
- ae %q{
- catch(:foo){
- throw :foo, nil
- }
- }
- ae %q{
- catch(:foo){
- throw :foo, :ok
- }
- }
- ae %q{
- catch(:foo){
- 1.times{
- throw :foo
- }
- }
- }
- ae %q{
- catch(:foo){
- 1.times{
- throw :foo, :ok
- }
- }
- }
- ae %q{
- catch(:foo){
- catch(:bar){
- throw :foo, :ok
- }
- :ng
- }
- }
- ae %q{
- catch(:foo){
- catch(:bar){
- 1.times{
- throw :foo, :ok
- }
- }
- :ng
- }
- }
- end
-end
-
+require 'yarvtest/yarvtest' + +class TestJump < YarvTestBase + + def test_redo + ae %q{ + def m + yield + 10 + end + i=0 + m{ + if i>10 + i*i + else + i+=1 + redo + end + } + } + end + + def test_next + ae %q{ + def m + yield + :ok + end + i=0 + m{ + if i>10 + i*i + else + i+=1 + next + end + } + } + end + + def test_next_with_val + ae %q{ + def m + yield + end + + m{ + next :ok + } + } + end + + def test_return + ae %q{ + def m + return 3 + end + m + } + + ae %q{ + def m + :ng1 + mm{ + return :ok + } + :ng2 + end + + def mm + :ng3 + yield + :ng4 + end + m + } + end + + def test_return2 + ae %q{ + $i = 0 + def m + begin + iter{ + return + } + ensure + $i = 100 + end + end + + def iter + yield + end + m + $i + } + end + + def test_return3 + ae %q{ + def m + begin + raise + rescue + return :ok + end + :ng + end + m + } + end + + def test_break + ae %q{ + def m + :ng1 + mm{ + yield + } + :ng2 + end + + def mm + :ng3 + yield + :ng4 + end + + m{ + break :ok + } + } + end + + def test_exception_and_break + ae %q{ + def m + yield + end + + m{ + begin + ensure + break :ok + end + } + } + end + + def test_retry + # this test can't run on ruby 1.9(yarv can do) + %q{ + def m a + mm{ + yield + } + end + + def mm + yield + end + + i=0 + m(i+=1){ + retry if i<10 + :ok + } + } + + ae %q{ + def m a + yield + end + + i=0 + m(i+=1){ + retry if i<10 + :ok + } + } + end + + def test_complex_jump + ae %q{ + module Enumerable + def all_? + self.each{|e| + unless yield(e) + return false + end + } + true + end + end + + xxx = 0 + [1,2].each{|bi| + [3,4].each{|bj| + [true, nil, true].all_?{|be| be} + break + } + xxx += 1 + } + xxx + } + end + + def test_return_from + ae %q{ + def m + begin + raise + rescue + return 1 + end + end + + m + } + ae %q{ + def m + begin + # + ensure + return 1 + end + end + + m + } + end + + def test_break_from_times + ae %q{ + 3.times{ + break :ok + } + } + end + + def test_catch_and_throw + ae %q{ + catch(:foo){ + throw :foo + } + } + ae %q{ + catch(:foo){ + throw :foo, false + } + } + ae %q{ + catch(:foo){ + throw :foo, nil + } + } + ae %q{ + catch(:foo){ + throw :foo, :ok + } + } + ae %q{ + catch(:foo){ + 1.times{ + throw :foo + } + } + } + ae %q{ + catch(:foo){ + 1.times{ + throw :foo, :ok + } + } + } + ae %q{ + catch(:foo){ + catch(:bar){ + throw :foo, :ok + } + :ng + } + } + ae %q{ + catch(:foo){ + catch(:bar){ + 1.times{ + throw :foo, :ok + } + } + :ng + } + } + end +end + diff --git a/yarvtest/test_massign.rb b/yarvtest/test_massign.rb index bb42c7e180..0b253f7665 100644 --- a/yarvtest/test_massign.rb +++ b/yarvtest/test_massign.rb @@ -1,417 +1,417 @@ -require 'yarvtest/yarvtest'
-
-# test of syntax
-class TestMassign < YarvTestBase
- def test_simle
- ae %q{
- a = :a; b = :b; c = :c
- x, y = a, b
- [x, y]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, y, z = a, b, c
- [x, y, z]
- }
- end
-
- def test_diff_elems
- ae %q{
- a = :a ; b = :b ; c = :c
- x, y, z = a, b
- [x, y, z]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, y = a, b, c
- [x, y]
- }
- end
-
- def test_single_l
- ae %q{
- a = :a; b = :b
- x = a, b
- x
- }
- ae %q{
- a = [1, 2]; b = [3, 4]
- x = a, b
- x
- }
- end
-
- def test_single_r
- ae %q{
- a = :a
- x, y = a
- [x, y]
- }
- ae %q{
- a = [1, 2]
- x, y = a
- [x, y]
- }
- ae %q{
- a = [1, 2, 3]
- x, y = a
- [x, y]
- }
- end
-
- def test_splat_l
- ae %q{
- a = :a; b = :b; c = :c
- *x = a, b
- [x]
- }
- ae %q{
- a = :a; b = :b; c = :c
- *x = a, b
- [x]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, * = a, b
- [x]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, *y = a, b
- [x, y]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, y, *z = a, b
- [x, y]
- }
- ae %q{ # only one item on rhs
- *x = :x
- x
- }
- ae %q{ # nil on rhs
- *x = nil
- x
- }
- end
-
- def test_splat_r
- if false
- ae %q{
- a = :a; b = :b; c = :c
- x, y = *a
- [x, y]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, y = a, *b
- [x, y]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, y = a, b, *c
- [x, y]
- }
- ae %q{
- x=*nil
- x
- }
- end
-
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- x, y = *a
- [x, y]
- }
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- x, y = a, *b
- [x, y]
- }
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- x, y = a, b, *c
- [x, y]
- }
- end
-
- def test_splat_b1
- if false
- # error
- ae %q{
- a = :a; b = :b; c = :c
- x, *y = *a
- [x, y]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, *y = a, *b
- [x, y]
- }
- ae %q{
- a = :a; b = :b; c = :c
- x, *y = a, b, *c
- [x, y]
- }
- end
-
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- x, *y = *a
- [x, y]
- }
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- x, *y = a, *b
- [x, y]
- }
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- x, *y = a, b, *c
- [x, y]
- }
- end
-
- def test_splat_b2
- if false
- # error
- ae %q{
- a = :a; b = :b; c = :c
- *x = *a
- x
- }
- ae %q{
- a = :a; b = :b; c = :c
- *x = a, *b
- x
- }
- ae %q{
- a = :a; b = :b; c = :c
- *x = a, b, *c
- x
- }
- end
-
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- *x = *a
- x
- }
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- *x = a, *b
- x
- }
- ae %q{
- a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2]
- *x = a, b, *c
- x
- }
- end
-
- def test_toary
- ae %q{
- x, y = :a
- [x, y]
- }
- ae %q{
- x, y = [1, 2]
- [x, y]
- }
- ae %q{
- x, y = [1, 2, 3]
- [x, y]
- }
- end
-
- def test_swap
- ae %q{
- a = 1; b = 2
- a, b = b, a
- [a, b]
- }
- end
-
- def test_mret
- ae %q{
- def m
- return 1, 2
- end
-
- a, b = m
- [a, b]
- }
- ae %q{
- def m
- return 1, 2
- end
-
- a = m
- [a]
- }
- ae %q{
- def m
- return 1
- end
-
- a, b = m
- [a, b]
- }
- end
-
- def test_mret_splat
- if false
- ae %q{
- def m
- return *1
- end
- a, b = m
- [a, b]
- }
- end
-
- ae %q{
- def m
- return *[]
- end
- a, b = m
- [a, b]
- }
- ae %q{
- def m
- return *[1]
- end
- a, b = m
- [a, b]
- }
- ae %q{
- def m
- return *[1,2]
- end
- a, b = m
- [a, b]
- }
- ae %q{
- def m
- return *[1,2,3]
- end
- a, b = m
- [a, b]
- }
- ae %q{
- def m
- return *[1]
- end
- a = m
- }
- end
-
- def test_mret_argscat
- ae %q{
- def m
- return 1, *[]
- end
- a, b = m
- [a, b]
- }
- ae %q{
- def m
- return 1, 2, *[1]
- end
- a, b = m
- [a, b]
- }
- ae %q{
- def m
- return 1, 2, 3, *[1,2]
- end
- a, b = m
- [a, b]
- }
- end
-
- def test_nested_massign
- ae %q{
- (a, b), c = [[1, 2], 3]
- [a, b, c]
- }
- ae %q{
- a, (b, c) = [[1, 2], 3]
- [a, b, c]
- }
- ae %q{
- a, (b, c) = [1, [2, 3]]
- [a, b, c]
- }
- ae %q{
- (a, b), *c = [[1, 2], 3]
- [a, b, c]
- }
- ae %q{
- (a, b), c, (d, e) = [[1, 2], 3, [4, 5]]
- [a, b, c, d, e]
- }
- ae %q{
- (a, *b), c, (d, e, *) = [[1, 2], 3, [4, 5]]
- [a, b, c, d, e]
- }
- ae %q{
- (a, b), c, (d, *e) = [[1, 2, 3], 3, [4, 5, 6, 7]]
- [a, b, c, d, e]
- }
- ae %q{
- (a, (b1, b2)), c, (d, e) = [[1, 2], 3, [4, 5]]
- [a, b1, b2, c, d, e]
- }
- ae %q{
- (a, (b1, b2)), c, (d, e) = [[1, [21, 22]], 3, [4, 5]]
- [a, b1, b2, c, d, e]
- }
- end
-
- # ignore
- def _test_massign_value
- # Value of this massign statement should be [1, 2, 3]
- ae %q{
- a, b, c = [1, 2, 3]
- }
- end
-
- def test_nested_splat
- # Somewhat obscure nested splat
- ae %q{
- a = *[*[1]]
- a
- }
- end
-
- def test_calls_to_a
- # Should be result of calling to_a on arg, ie [[1, 2], [3, 4]]
- ae %q{
- x=*{1=>2,3=>4}
- x
- }
- end
-
- def test_const_massign
- ae %q{
- class C
- class D
- end
- end
-
- X, Y = 1, 2
- Z, C::Const, C::D::Const, ::C::Const2 = 3, 4, 5, 6
- [X, Y, Z, C::Const, C::D::Const, ::C::Const2]
- }
- end
-
- def test_massign_values
- ae %q{
- ary = [1, 2].partition {|n| n == 1 }
- a, b = ary
- [a, b]
- }
- end
-end
-
+require 'yarvtest/yarvtest' + +# test of syntax +class TestMassign < YarvTestBase + def test_simle + ae %q{ + a = :a; b = :b; c = :c + x, y = a, b + [x, y] + } + ae %q{ + a = :a; b = :b; c = :c + x, y, z = a, b, c + [x, y, z] + } + end + + def test_diff_elems + ae %q{ + a = :a ; b = :b ; c = :c + x, y, z = a, b + [x, y, z] + } + ae %q{ + a = :a; b = :b; c = :c + x, y = a, b, c + [x, y] + } + end + + def test_single_l + ae %q{ + a = :a; b = :b + x = a, b + x + } + ae %q{ + a = [1, 2]; b = [3, 4] + x = a, b + x + } + end + + def test_single_r + ae %q{ + a = :a + x, y = a + [x, y] + } + ae %q{ + a = [1, 2] + x, y = a + [x, y] + } + ae %q{ + a = [1, 2, 3] + x, y = a + [x, y] + } + end + + def test_splat_l + ae %q{ + a = :a; b = :b; c = :c + *x = a, b + [x] + } + ae %q{ + a = :a; b = :b; c = :c + *x = a, b + [x] + } + ae %q{ + a = :a; b = :b; c = :c + x, * = a, b + [x] + } + ae %q{ + a = :a; b = :b; c = :c + x, *y = a, b + [x, y] + } + ae %q{ + a = :a; b = :b; c = :c + x, y, *z = a, b + [x, y] + } + ae %q{ # only one item on rhs + *x = :x + x + } + ae %q{ # nil on rhs + *x = nil + x + } + end + + def test_splat_r + if false + ae %q{ + a = :a; b = :b; c = :c + x, y = *a + [x, y] + } + ae %q{ + a = :a; b = :b; c = :c + x, y = a, *b + [x, y] + } + ae %q{ + a = :a; b = :b; c = :c + x, y = a, b, *c + [x, y] + } + ae %q{ + x=*nil + x + } + end + + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + x, y = *a + [x, y] + } + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + x, y = a, *b + [x, y] + } + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + x, y = a, b, *c + [x, y] + } + end + + def test_splat_b1 + if false + # error + ae %q{ + a = :a; b = :b; c = :c + x, *y = *a + [x, y] + } + ae %q{ + a = :a; b = :b; c = :c + x, *y = a, *b + [x, y] + } + ae %q{ + a = :a; b = :b; c = :c + x, *y = a, b, *c + [x, y] + } + end + + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + x, *y = *a + [x, y] + } + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + x, *y = a, *b + [x, y] + } + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + x, *y = a, b, *c + [x, y] + } + end + + def test_splat_b2 + if false + # error + ae %q{ + a = :a; b = :b; c = :c + *x = *a + x + } + ae %q{ + a = :a; b = :b; c = :c + *x = a, *b + x + } + ae %q{ + a = :a; b = :b; c = :c + *x = a, b, *c + x + } + end + + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + *x = *a + x + } + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + *x = a, *b + x + } + ae %q{ + a = [:a, :a2]; b = [:b, :b2]; c = [:c, :c2] + *x = a, b, *c + x + } + end + + def test_toary + ae %q{ + x, y = :a + [x, y] + } + ae %q{ + x, y = [1, 2] + [x, y] + } + ae %q{ + x, y = [1, 2, 3] + [x, y] + } + end + + def test_swap + ae %q{ + a = 1; b = 2 + a, b = b, a + [a, b] + } + end + + def test_mret + ae %q{ + def m + return 1, 2 + end + + a, b = m + [a, b] + } + ae %q{ + def m + return 1, 2 + end + + a = m + [a] + } + ae %q{ + def m + return 1 + end + + a, b = m + [a, b] + } + end + + def test_mret_splat + if false + ae %q{ + def m + return *1 + end + a, b = m + [a, b] + } + end + + ae %q{ + def m + return *[] + end + a, b = m + [a, b] + } + ae %q{ + def m + return *[1] + end + a, b = m + [a, b] + } + ae %q{ + def m + return *[1,2] + end + a, b = m + [a, b] + } + ae %q{ + def m + return *[1,2,3] + end + a, b = m + [a, b] + } + ae %q{ + def m + return *[1] + end + a = m + } + end + + def test_mret_argscat + ae %q{ + def m + return 1, *[] + end + a, b = m + [a, b] + } + ae %q{ + def m + return 1, 2, *[1] + end + a, b = m + [a, b] + } + ae %q{ + def m + return 1, 2, 3, *[1,2] + end + a, b = m + [a, b] + } + end + + def test_nested_massign + ae %q{ + (a, b), c = [[1, 2], 3] + [a, b, c] + } + ae %q{ + a, (b, c) = [[1, 2], 3] + [a, b, c] + } + ae %q{ + a, (b, c) = [1, [2, 3]] + [a, b, c] + } + ae %q{ + (a, b), *c = [[1, 2], 3] + [a, b, c] + } + ae %q{ + (a, b), c, (d, e) = [[1, 2], 3, [4, 5]] + [a, b, c, d, e] + } + ae %q{ + (a, *b), c, (d, e, *) = [[1, 2], 3, [4, 5]] + [a, b, c, d, e] + } + ae %q{ + (a, b), c, (d, *e) = [[1, 2, 3], 3, [4, 5, 6, 7]] + [a, b, c, d, e] + } + ae %q{ + (a, (b1, b2)), c, (d, e) = [[1, 2], 3, [4, 5]] + [a, b1, b2, c, d, e] + } + ae %q{ + (a, (b1, b2)), c, (d, e) = [[1, [21, 22]], 3, [4, 5]] + [a, b1, b2, c, d, e] + } + end + + # ignore + def _test_massign_value + # Value of this massign statement should be [1, 2, 3] + ae %q{ + a, b, c = [1, 2, 3] + } + end + + def test_nested_splat + # Somewhat obscure nested splat + ae %q{ + a = *[*[1]] + a + } + end + + def test_calls_to_a + # Should be result of calling to_a on arg, ie [[1, 2], [3, 4]] + ae %q{ + x=*{1=>2,3=>4} + x + } + end + + def test_const_massign + ae %q{ + class C + class D + end + end + + X, Y = 1, 2 + Z, C::Const, C::D::Const, ::C::Const2 = 3, 4, 5, 6 + [X, Y, Z, C::Const, C::D::Const, ::C::Const2] + } + end + + def test_massign_values + ae %q{ + ary = [1, 2].partition {|n| n == 1 } + a, b = ary + [a, b] + } + end +end + diff --git a/yarvtest/test_method.rb b/yarvtest/test_method.rb index 249211c2e4..6e5217aaf8 100644 --- a/yarvtest/test_method.rb +++ b/yarvtest/test_method.rb @@ -1,606 +1,606 @@ -require 'yarvtest/yarvtest'
-class TestMethod < YarvTestBase
-
- def test_simple_method
- ae %q{
- def m_simple_method
- 1
- end
- m_simple_method()
- }
- end
-
- def test_polymorphic
- ae %q{
- o1 = 'str'
- o2 = 1
- str = ''
- i = 1
- while i<10
- i+=1
- o = (i%2==0) ? o1 : o2
- str += o.to_s
- end
- str
- }
- end
-
- def test_arg
- ae <<-'EOS'
- def m_arg(a1, a2)
- a1+a2
- end
- m_arg(1,2)
- EOS
- end
-
- def test_rec
- ae <<-'EOS'
- def m_rec n
- if n > 1
- n + m_rec(n-1)
- else
- 1
- end
- end
- m_rec(10)
- EOS
- end
-
- def test_splat
- ae %q{
- def m a
- a
- end
- begin
- m(*1)
- rescue TypeError
- :ok
- end
- }
- ae %q{
- def m a, b
- [a, b]
- end
- m(*[1,2])
- }
- ae %q{
- def m a, b, c
- [a, b, c]
- end
- m(1, *[2, 3])
- }
-
- ae %q{
- def m a, b, c
- [a, b, c]
- end
-
- m(1, 2, *[3])
- }
- end
-
- def test_rest
- ae %q{
- def m *a
- a
- end
-
- m
- }
-
- ae %q{
- def m *a
- a
- end
-
- m 1
- }
-
- ae %q{
- def m *a
- a
- end
-
- m 1, 2, 3
- }
-
- ae %q{
- def m x, *a
- [x, a]
- end
-
- m 1
- }
-
- ae %q{
- def m x, *a
- [x, a]
- end
-
- m 1, 2
- }
-
- ae %q{
- def m x, *a
- [x, a]
- end
-
- m 1, 2, 3, 4
- }
- end
-
- def test_opt
- ae %q{
- def m a=1
- a
- end
- m
- }
- ae %q{
- def m a=1
- a
- end
- m 2
- }
- ae %q{
- def m a=1, b=2
- [a, b]
- end
- m
- }
- ae %q{
- def m a=1, b=2
- [a, b]
- end
- m 10
- }
- ae %q{
- def m a=1, b=2
- [a, b]
- end
- m 10, 20
- }
- ae %q{
- def m x, a=1, b=2
- [x, a, b]
- end
- m 10
- }
- ae %q{
- def m x, a=1, b=2
- [x, a, b]
- end
- m 10, 20
- }
- ae %q{
- def m x, a=1, b=2
- [x, a, b]
- end
- m 10, 20, 30
- }
- ae %q{
- def m x, y, a
- [x, y, a]
- end
- m 10, 20, 30
- }
- end
-
-
- def test_opt_rest
- ae %q{
- def m0 b = 0, c = 1, *d
- [:sep, b, c, d]
- end
-
- def m1 a, b = 0, c = 1, *d
- [:sep, a, b, c, d]
- end
-
- def m2 x, a, b = 0, c = 1, *d
- [:sep, x, a, b, c, d]
- end
-
- def m3 x, y, a, b = 0, c = 1, *d
- [:sep, x, y, a, b, c, d]
- end
-
- def s3 x, y, a, b = 0, c = 1
- [:sep, x, y, a, b, c]
- end
-
- m0() +
- m0(:a) +
- m0(:a, :b) +
- m0(:a, :b, :c) +
- m0(:a, :b, :c, :d) +
- m0(:a, :b, :c, :d, :e) +
- m1(:a) +
- m1(:a, :b) +
- m1(:a, :b, :c) +
- m1(:a, :b, :c, :d) +
- m1(:a, :b, :c, :d, :e) +
- m2(:a, :b) +
- m2(:a, :b, :c) +
- m2(:a, :b, :c, :d) +
- m2(:a, :b, :c, :d, :e) +
- m2(:a, :b, :c, :d, :e, :f) +
- m3(:a, :b, :c) +
- m3(:a, :b, :c, :d) +
- m3(:a, :b, :c, :d, :e) +
- m3(:a, :b, :c, :d, :e, :f) +
- m3(:a, :b, :c, :d, :e, :f, :g)
- }
- end
-
- def test_opt_rest_block
- ae %q{
- def m a, b = 0, c = 1, *d, &pr
- [a, b, c, d, pr]
- end
- m(:a) +
- m(:a, :b) +
- m(:a, :b, :c) +
- m(:a, :b, :c, :d) +
- m(:a, :b, :c, :d, :e)
- }
- ae %q{
- def m a, b = 0, c = 1, *d, &pr
- [a, b, c, d, pr.call]
- end
-
- m(:a){1} +
- m(:a, :b){2} +
- m(:a, :b, :c){3} +
- m(:a, :b, :c, :d){4} +
- m(:a, :b, :c, :d, :e){5}
- }
- end
-
- def test_singletonmethod
- ae %q{
- lobj = Object.new
- def lobj.m
- :singleton
- end
- lobj.m
- }
- ae %q{
- class C
- def m
- :C_m
- end
- end
- lobj = C.new
- def lobj.m
- :Singleton_m
- end
- lobj.m
- }
- end
-
- def test_singletonmethod_with_const
- ae %q{
- class C
- Const = :C
- def self.m
- 1.times{
- Const
- }
- end
- end
- C.m
- }
- end
-
- def test_alias
- ae %q{
- def m1
- :ok
- end
- alias :m2 :m1
- m1
- }
- ae %q{
- def m1
- :ok
- end
- alias m2 m1
- m1
- }
- ae %q{
- def m1
- :ok
- end
- alias m2 :m1
- m1
- }
- ae %q{
- def m1
- :ok
- end
- alias :m2 m1
- m1
- }
- ae %q{
- def m1
- :ok
- end
- alias m2 m1
- def m1
- :ok2
- end
- [m1, m2]
- }
- end
-
- def test_split
- ae %q{
- 'abc'.split(/b/)
- }
- ae %q{
- 1.times{|bi|
- 'abc'.split(/b/)
- }
- }
- end
-
- def test_block_pass
- ae %q{
- def getproc &b
- b
- end
- def m
- yield
- end
- m(&getproc{
- "test"
- })
- }
- ae %q{
- def getproc &b
- b
- end
- def m a
- yield a
- end
- m(123, &getproc{|block_a|
- block_a
- })
- }
- ae %q{
- def getproc &b
- b
- end
- def m *a
- yield a
- end
- m(123, 456, &getproc{|block_a|
- block_a
- })
- }
- ae %q{
- def getproc &b
- b
- end
- [1,2,3].map(&getproc{|block_e| block_e*block_e})
- }
- ae %q{
- def m a, b, &c
- c.call(a, b)
- end
- m(10, 20){|x, y|
- [x+y, x*y]
- }
- }
- ae %q{
- def m &b
- b
- end
- m(&nil)
- }
- ae %q{
- def m a, &b
- [a, b]
- end
- m(1, &nil)
- }
- ae %q{
- def m a
- [a, block_given?]
- end
- m(1, &nil)
- }
- end
-
- def test_method_missing
- ae %q{
- class C
- def method_missing id
- id
- end
- end
- C.new.hoge
- } do
- remove_const :C
- end
-
- ae %q{
- class C
- def method_missing *args, &b
- b.call(args)
- end
- end
- C.new.foo(1){|args|
- args
- }
- C.new.foo(1){|args|
- args
- } +
- C.new.foo(1, 2){|args|
- args
- }
- }
- end
-
- def test_svar
- ae %q{
- 'abc'.match(/a(b)c/)
- $1
- }
- end
-
- def test_nested_method
- ae %q{
- class A
- def m
- def m2
- p :m2
- end
- m2()
- end
- end
- A.new.m
- }
- ae %q{
- class A
- def m
- def m2
- p :m2
- end
- m2()
- end
- end
- instance_eval('A.new.m')
- }
- end
-
- def test_private_class_method
- ae %q{
- class C
- def self.m
- :ok
- end
- def self.test
- m
- end
- private_class_method :m
- end
- C.test
- }
- end
-
- def test_alias_and_private
- ae %q{ # [yarv-dev:899]
- $ans = []
- class C
- def m
- $ans << "OK"
- end
- end
- C.new.m
- class C
- alias mm m
- private :mm
- end
- C.new.m
- begin
- C.new.mm
- rescue NoMethodError
- $ans << "OK!"
- end
- $ans
- }
- end
-
- def test_break_from_defined_method
- ae %q{
- class C
- define_method(:foo){
- break :ok
- }
- end
- C.new.foo
- }
- end
-
- def test_return_from_defined_method
- ae %q{
- class C
- define_method(:m){
- return :ok
- }
- end
- C.new.m
- }
- end
-
- def test_send
- ae %q{
- $r = []
- class C
- def m *args
- $r << "C#m #{args.inspect} #{block_given?}"
- end
- end
-
- obj = C.new
- obj.send :m
- obj.send :m, :x
- obj.send :m, :x, :y
- obj.send(:m){}
- obj.send(:m, :x){}
- $r
- }
- ae %q{
- class C
- def send
- :ok
- end
- end
- C.new.send
- }
- end
-
- def test_send_with_private
- ae %q{
- begin
- def m
- end
- self.send :m
- rescue NoMethodError
- :ok
- else
- :ng
- end
- }
- ae %q{
- begin
- def m
- end
- send :m
- rescue NoMethodError
- :ng
- else
- :ok
- end
- }
- end
-
- def test_funcall
- ae %q{
- $r = []
- def m *args
- $r << "m() #{args.inspect} #{block_given?}"
- end
-
- funcall :m
- funcall :m, :x
- funcall :m, :x, :y
- funcall(:m){}
- funcall(:m, :x){}
- }
- end
-end
-
+require 'yarvtest/yarvtest' +class TestMethod < YarvTestBase + + def test_simple_method + ae %q{ + def m_simple_method + 1 + end + m_simple_method() + } + end + + def test_polymorphic + ae %q{ + o1 = 'str' + o2 = 1 + str = '' + i = 1 + while i<10 + i+=1 + o = (i%2==0) ? o1 : o2 + str += o.to_s + end + str + } + end + + def test_arg + ae <<-'EOS' + def m_arg(a1, a2) + a1+a2 + end + m_arg(1,2) + EOS + end + + def test_rec + ae <<-'EOS' + def m_rec n + if n > 1 + n + m_rec(n-1) + else + 1 + end + end + m_rec(10) + EOS + end + + def test_splat + ae %q{ + def m a + a + end + begin + m(*1) + rescue TypeError + :ok + end + } + ae %q{ + def m a, b + [a, b] + end + m(*[1,2]) + } + ae %q{ + def m a, b, c + [a, b, c] + end + m(1, *[2, 3]) + } + + ae %q{ + def m a, b, c + [a, b, c] + end + + m(1, 2, *[3]) + } + end + + def test_rest + ae %q{ + def m *a + a + end + + m + } + + ae %q{ + def m *a + a + end + + m 1 + } + + ae %q{ + def m *a + a + end + + m 1, 2, 3 + } + + ae %q{ + def m x, *a + [x, a] + end + + m 1 + } + + ae %q{ + def m x, *a + [x, a] + end + + m 1, 2 + } + + ae %q{ + def m x, *a + [x, a] + end + + m 1, 2, 3, 4 + } + end + + def test_opt + ae %q{ + def m a=1 + a + end + m + } + ae %q{ + def m a=1 + a + end + m 2 + } + ae %q{ + def m a=1, b=2 + [a, b] + end + m + } + ae %q{ + def m a=1, b=2 + [a, b] + end + m 10 + } + ae %q{ + def m a=1, b=2 + [a, b] + end + m 10, 20 + } + ae %q{ + def m x, a=1, b=2 + [x, a, b] + end + m 10 + } + ae %q{ + def m x, a=1, b=2 + [x, a, b] + end + m 10, 20 + } + ae %q{ + def m x, a=1, b=2 + [x, a, b] + end + m 10, 20, 30 + } + ae %q{ + def m x, y, a + [x, y, a] + end + m 10, 20, 30 + } + end + + + def test_opt_rest + ae %q{ + def m0 b = 0, c = 1, *d + [:sep, b, c, d] + end + + def m1 a, b = 0, c = 1, *d + [:sep, a, b, c, d] + end + + def m2 x, a, b = 0, c = 1, *d + [:sep, x, a, b, c, d] + end + + def m3 x, y, a, b = 0, c = 1, *d + [:sep, x, y, a, b, c, d] + end + + def s3 x, y, a, b = 0, c = 1 + [:sep, x, y, a, b, c] + end + + m0() + + m0(:a) + + m0(:a, :b) + + m0(:a, :b, :c) + + m0(:a, :b, :c, :d) + + m0(:a, :b, :c, :d, :e) + + m1(:a) + + m1(:a, :b) + + m1(:a, :b, :c) + + m1(:a, :b, :c, :d) + + m1(:a, :b, :c, :d, :e) + + m2(:a, :b) + + m2(:a, :b, :c) + + m2(:a, :b, :c, :d) + + m2(:a, :b, :c, :d, :e) + + m2(:a, :b, :c, :d, :e, :f) + + m3(:a, :b, :c) + + m3(:a, :b, :c, :d) + + m3(:a, :b, :c, :d, :e) + + m3(:a, :b, :c, :d, :e, :f) + + m3(:a, :b, :c, :d, :e, :f, :g) + } + end + + def test_opt_rest_block + ae %q{ + def m a, b = 0, c = 1, *d, &pr + [a, b, c, d, pr] + end + m(:a) + + m(:a, :b) + + m(:a, :b, :c) + + m(:a, :b, :c, :d) + + m(:a, :b, :c, :d, :e) + } + ae %q{ + def m a, b = 0, c = 1, *d, &pr + [a, b, c, d, pr.call] + end + + m(:a){1} + + m(:a, :b){2} + + m(:a, :b, :c){3} + + m(:a, :b, :c, :d){4} + + m(:a, :b, :c, :d, :e){5} + } + end + + def test_singletonmethod + ae %q{ + lobj = Object.new + def lobj.m + :singleton + end + lobj.m + } + ae %q{ + class C + def m + :C_m + end + end + lobj = C.new + def lobj.m + :Singleton_m + end + lobj.m + } + end + + def test_singletonmethod_with_const + ae %q{ + class C + Const = :C + def self.m + 1.times{ + Const + } + end + end + C.m + } + end + + def test_alias + ae %q{ + def m1 + :ok + end + alias :m2 :m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias m2 m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias m2 :m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias :m2 m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias m2 m1 + def m1 + :ok2 + end + [m1, m2] + } + end + + def test_split + ae %q{ + 'abc'.split(/b/) + } + ae %q{ + 1.times{|bi| + 'abc'.split(/b/) + } + } + end + + def test_block_pass + ae %q{ + def getproc &b + b + end + def m + yield + end + m(&getproc{ + "test" + }) + } + ae %q{ + def getproc &b + b + end + def m a + yield a + end + m(123, &getproc{|block_a| + block_a + }) + } + ae %q{ + def getproc &b + b + end + def m *a + yield a + end + m(123, 456, &getproc{|block_a| + block_a + }) + } + ae %q{ + def getproc &b + b + end + [1,2,3].map(&getproc{|block_e| block_e*block_e}) + } + ae %q{ + def m a, b, &c + c.call(a, b) + end + m(10, 20){|x, y| + [x+y, x*y] + } + } + ae %q{ + def m &b + b + end + m(&nil) + } + ae %q{ + def m a, &b + [a, b] + end + m(1, &nil) + } + ae %q{ + def m a + [a, block_given?] + end + m(1, &nil) + } + end + + def test_method_missing + ae %q{ + class C + def method_missing id + id + end + end + C.new.hoge + } do + remove_const :C + end + + ae %q{ + class C + def method_missing *args, &b + b.call(args) + end + end + C.new.foo(1){|args| + args + } + C.new.foo(1){|args| + args + } + + C.new.foo(1, 2){|args| + args + } + } + end + + def test_svar + ae %q{ + 'abc'.match(/a(b)c/) + $1 + } + end + + def test_nested_method + ae %q{ + class A + def m + def m2 + p :m2 + end + m2() + end + end + A.new.m + } + ae %q{ + class A + def m + def m2 + p :m2 + end + m2() + end + end + instance_eval('A.new.m') + } + end + + def test_private_class_method + ae %q{ + class C + def self.m + :ok + end + def self.test + m + end + private_class_method :m + end + C.test + } + end + + def test_alias_and_private + ae %q{ # [yarv-dev:899] + $ans = [] + class C + def m + $ans << "OK" + end + end + C.new.m + class C + alias mm m + private :mm + end + C.new.m + begin + C.new.mm + rescue NoMethodError + $ans << "OK!" + end + $ans + } + end + + def test_break_from_defined_method + ae %q{ + class C + define_method(:foo){ + break :ok + } + end + C.new.foo + } + end + + def test_return_from_defined_method + ae %q{ + class C + define_method(:m){ + return :ok + } + end + C.new.m + } + end + + def test_send + ae %q{ + $r = [] + class C + def m *args + $r << "C#m #{args.inspect} #{block_given?}" + end + end + + obj = C.new + obj.send :m + obj.send :m, :x + obj.send :m, :x, :y + obj.send(:m){} + obj.send(:m, :x){} + $r + } + ae %q{ + class C + def send + :ok + end + end + C.new.send + } + end + + def test_send_with_private + ae %q{ + begin + def m + end + self.send :m + rescue NoMethodError + :ok + else + :ng + end + } + ae %q{ + begin + def m + end + send :m + rescue NoMethodError + :ng + else + :ok + end + } + end + + def test_funcall + ae %q{ + $r = [] + def m *args + $r << "m() #{args.inspect} #{block_given?}" + end + + funcall :m + funcall :m, :x + funcall :m, :x, :y + funcall(:m){} + funcall(:m, :x){} + } + end +end + diff --git a/yarvtest/test_opts.rb b/yarvtest/test_opts.rb index 689257c78a..7448e294e5 100644 --- a/yarvtest/test_opts.rb +++ b/yarvtest/test_opts.rb @@ -1,118 +1,118 @@ -require 'yarvtest/yarvtest'
-
-class TestOpt < YarvTestBase
- def test_plus
- ae %q{
- a, b = 1, 2
- a+b
- }
- ae %q{
- class Fixnum
- def +(*o)
- o
- end
- def -(*o)
- o
- end
- end
- [10+11, 100-101]
- }
- ae %q{
- class Float
- def +(o)
- self * o
- end
- end
-
- a, b = 1, 2
- a+b
- }
- end
-
- def test_opt_methdos
- klasses = [[Fixnum, 2, 3], [Float, 1.1, 2.2],
- [String, "abc", "def"], [Array, [1,2,3], [4, 5]],
- [Hash, {:a=>1, :b=>2}, {:x=>"foo", :y=>"bar"}]]
-
- bin_methods = [:+, :-, :*, :/, :%, ]
- one_methods = [:length, :succ, ]
- ary = []
-
- bin_methods.each{|m|
- klasses.each{|klass, obj, arg|
- str = %{
- ary = []
- if (#{obj.inspect}).respond_to? #{m.inspect}
- begin
- ary << (#{obj.inspect}).#{m.to_s}(#{arg.inspect})
- rescue Exception => e
- ary << :error
- end
- end
-
- class #{klass}
- def #{m}(o)
- [#{m.inspect}, :bin, #{klass}].inspect
- end
- end
- ary << (#{obj.inspect}).#{m.to_s}(#{arg.inspect})
- ary
- }
- ae str
- }
- }
- one_methods.each{|m|
- klasses.each{|klass, obj|
- str = %{
- ary = []
- if (#{obj.inspect}).respond_to? #{m.inspect}
- ary << (#{obj.inspect}).#{m.to_s}()
- end
-
- class #{klass}
- def #{m}()
- [#{m.inspect}, self, #{klass}].inspect
- end
- end
- ary << (#{obj.inspect}).#{m.to_s}()
- ary
- }
- ae str
- }
- }
- end
-
- def test_opt_plus
- ae %q{
- temp = 2**30 - 5
- (1..5).map do
- temp += 1
- [temp, temp.class]
- end
- }
- ae %q{
- temp = -(2**30 - 5)
- (1..10).map do
- temp += 1
- [temp, temp.class]
- end
- }
- end
-
- def test_eq
- ae %q{
- class Foo
- def ==(other)
- true
- end
- end
- foo = Foo.new
- [1.0 == foo,
- 1 == foo,
- "abc" == foo,
- ]
- }
- end
-end
-
-
+require 'yarvtest/yarvtest' + +class TestOpt < YarvTestBase + def test_plus + ae %q{ + a, b = 1, 2 + a+b + } + ae %q{ + class Fixnum + def +(*o) + o + end + def -(*o) + o + end + end + [10+11, 100-101] + } + ae %q{ + class Float + def +(o) + self * o + end + end + + a, b = 1, 2 + a+b + } + end + + def test_opt_methdos + klasses = [[Fixnum, 2, 3], [Float, 1.1, 2.2], + [String, "abc", "def"], [Array, [1,2,3], [4, 5]], + [Hash, {:a=>1, :b=>2}, {:x=>"foo", :y=>"bar"}]] + + bin_methods = [:+, :-, :*, :/, :%, ] + one_methods = [:length, :succ, ] + ary = [] + + bin_methods.each{|m| + klasses.each{|klass, obj, arg| + str = %{ + ary = [] + if (#{obj.inspect}).respond_to? #{m.inspect} + begin + ary << (#{obj.inspect}).#{m.to_s}(#{arg.inspect}) + rescue Exception => e + ary << :error + end + end + + class #{klass} + def #{m}(o) + [#{m.inspect}, :bin, #{klass}].inspect + end + end + ary << (#{obj.inspect}).#{m.to_s}(#{arg.inspect}) + ary + } + ae str + } + } + one_methods.each{|m| + klasses.each{|klass, obj| + str = %{ + ary = [] + if (#{obj.inspect}).respond_to? #{m.inspect} + ary << (#{obj.inspect}).#{m.to_s}() + end + + class #{klass} + def #{m}() + [#{m.inspect}, self, #{klass}].inspect + end + end + ary << (#{obj.inspect}).#{m.to_s}() + ary + } + ae str + } + } + end + + def test_opt_plus + ae %q{ + temp = 2**30 - 5 + (1..5).map do + temp += 1 + [temp, temp.class] + end + } + ae %q{ + temp = -(2**30 - 5) + (1..10).map do + temp += 1 + [temp, temp.class] + end + } + end + + def test_eq + ae %q{ + class Foo + def ==(other) + true + end + end + foo = Foo.new + [1.0 == foo, + 1 == foo, + "abc" == foo, + ] + } + end +end + + diff --git a/yarvtest/test_proc.rb b/yarvtest/test_proc.rb index 3f7fae09a0..2106d2e56e 100644 --- a/yarvtest/test_proc.rb +++ b/yarvtest/test_proc.rb @@ -1,293 +1,293 @@ -require 'yarvtest/yarvtest'
-
-class TestProc < YarvTestBase
- def test_simpleproc
- ae %q{
- def m(&b)
- b
- end
- m{1}.call
- }
-
- ae %q{
- def m(&b)
- b
- end
-
- m{
- a = 1
- a + 2
- }.call
- }
- end
-
- def test_procarg
- ae %q{
- def m(&b)
- b
- end
-
- m{|e_proctest| e_proctest}.call(1)
- }
-
- ae %q{
- def m(&b)
- b
- end
-
- m{|e_proctest1, e_proctest2|
- a = e_proctest1 * e_proctest2 * 2
- a * 3
- }.call(1, 2)
- }
-
- ae %q{
- [
- Proc.new{|*args| args}.call(),
- Proc.new{|*args| args}.call(1),
- Proc.new{|*args| args}.call(1, 2),
- Proc.new{|*args| args}.call(1, 2, 3),
- ]
- }
- ae %q{
- [
- Proc.new{|a, *b| [a, b]}.call(),
- Proc.new{|a, *b| [a, b]}.call(1),
- Proc.new{|a, *b| [a, b]}.call(1, 2),
- Proc.new{|a, *b| [a, b]}.call(1, 2, 3),
- ]
- }
- end
-
- def test_closure
- ae %q{
- def make_proc(&b)
- b
- end
-
- def make_closure
- a = 0
- make_proc{
- a+=1
- }
- end
-
- cl = make_closure
- cl.call + cl.call * cl.call
- }
- end
-
- def test_nestproc2
- ae %q{
- def iter
- yield
- end
-
- def getproc &b
- b
- end
-
- iter{
- bvar = 3
- getproc{
- bvar2 = 4
- bvar * bvar2
- }
- }.call
- }
-
- ae %q{
- def iter
- yield
- end
-
- def getproc &b
- b
- end
-
- loc1 = 0
- pr1 = iter{
- bl1 = 1
- getproc{
- loc1 += 1
- bl1 += 1
- loc1 + bl1
- }
- }
-
- pr2 = iter{
- bl1 = 1
- getproc{
- loc1 += 1
- bl1 += 1
- loc1 + bl1
- }
- }
-
- pr1.call; pr2.call
- pr1.call; pr2.call
- pr1.call; pr2.call
- (pr1.call + pr2.call) * loc1
- }
- end
-
- def test_proc_with_cref
- ae %q{
- Const = :top
- class C
- Const = :C
- $pr = proc{
- (1..2).map{
- Const
- }
- }
- end
- $pr.call
- }
- ae %q{
- Const = :top
- class C
- Const = :C
- end
- pr = proc{
- Const
- }
- C.class_eval %q{
- pr.call
- }
- }
- end
-
- def test_3nest
- ae %q{
- def getproc &b
- b
- end
-
- def m
- yield
- end
-
- m{
- i = 1
- m{
- j = 2
- m{
- k = 3
- getproc{
- [i, j, k]
- }
- }
- }
- }.call
- }
- end
-
- def test_nestproc1
- ae %q{
- def proc &b
- b
- end
-
- pr = []
- proc{|i_b|
- p3 = proc{|j_b|
- pr << proc{|k_b|
- [i_b, j_b, k_b]
- }
- }
- p3.call(1)
- p3.call(2)
- }.call(0)
-
- pr[0].call(:last).concat pr[1].call(:last)
- }
- end
-
- def test_proc_with_block
- ae %q{
- def proc(&pr)
- pr
- end
-
- def m
- a = 1
- m2{
- a
- }
- end
-
- def m2
- b = 2
- proc{
- [yield, b]
- }
- end
-
- pr = m
- x = ['a', 1,2,3,4,5,6,7,8,9,0,
- 1,2,3,4,5,6,7,8,9,0,
- 1,2,3,4,5,6,7,8,9,0,
- 1,2,3,4,5,6,7,8,9,0,
- 1,2,3,4,5,6,7,8,9,0,]
- pr.call
- }
- ae %q{
- def proc(&pr)
- pr
- end
-
- def m
- a = 1
- m2{
- a
- }
- end
-
- def m2
- b = 2
- proc{
- [yield, b]
- }
- 100000.times{|x|
- "#{x}"
- }
- yield
- end
- m
- }
- end
-
- def test_method_to_proc
- ae %q{
- class C
- def foo
- :ok
- end
- end
-
- def block
- C.method(:new).to_proc
- end
- b = block()
- b.call.foo
- }
- end
-
- def test_safe
- ae %q{
- pr = proc{
- $SAFE
- }
- $SAFE = 1
- pr.call
- }
- ae %q{
- pr = proc{
- $SAFE += 1
- }
- [pr.call, $SAFE]
- }
- end
-end
-
+require 'yarvtest/yarvtest' + +class TestProc < YarvTestBase + def test_simpleproc + ae %q{ + def m(&b) + b + end + m{1}.call + } + + ae %q{ + def m(&b) + b + end + + m{ + a = 1 + a + 2 + }.call + } + end + + def test_procarg + ae %q{ + def m(&b) + b + end + + m{|e_proctest| e_proctest}.call(1) + } + + ae %q{ + def m(&b) + b + end + + m{|e_proctest1, e_proctest2| + a = e_proctest1 * e_proctest2 * 2 + a * 3 + }.call(1, 2) + } + + ae %q{ + [ + Proc.new{|*args| args}.call(), + Proc.new{|*args| args}.call(1), + Proc.new{|*args| args}.call(1, 2), + Proc.new{|*args| args}.call(1, 2, 3), + ] + } + ae %q{ + [ + Proc.new{|a, *b| [a, b]}.call(), + Proc.new{|a, *b| [a, b]}.call(1), + Proc.new{|a, *b| [a, b]}.call(1, 2), + Proc.new{|a, *b| [a, b]}.call(1, 2, 3), + ] + } + end + + def test_closure + ae %q{ + def make_proc(&b) + b + end + + def make_closure + a = 0 + make_proc{ + a+=1 + } + end + + cl = make_closure + cl.call + cl.call * cl.call + } + end + + def test_nestproc2 + ae %q{ + def iter + yield + end + + def getproc &b + b + end + + iter{ + bvar = 3 + getproc{ + bvar2 = 4 + bvar * bvar2 + } + }.call + } + + ae %q{ + def iter + yield + end + + def getproc &b + b + end + + loc1 = 0 + pr1 = iter{ + bl1 = 1 + getproc{ + loc1 += 1 + bl1 += 1 + loc1 + bl1 + } + } + + pr2 = iter{ + bl1 = 1 + getproc{ + loc1 += 1 + bl1 += 1 + loc1 + bl1 + } + } + + pr1.call; pr2.call + pr1.call; pr2.call + pr1.call; pr2.call + (pr1.call + pr2.call) * loc1 + } + end + + def test_proc_with_cref + ae %q{ + Const = :top + class C + Const = :C + $pr = proc{ + (1..2).map{ + Const + } + } + end + $pr.call + } + ae %q{ + Const = :top + class C + Const = :C + end + pr = proc{ + Const + } + C.class_eval %q{ + pr.call + } + } + end + + def test_3nest + ae %q{ + def getproc &b + b + end + + def m + yield + end + + m{ + i = 1 + m{ + j = 2 + m{ + k = 3 + getproc{ + [i, j, k] + } + } + } + }.call + } + end + + def test_nestproc1 + ae %q{ + def proc &b + b + end + + pr = [] + proc{|i_b| + p3 = proc{|j_b| + pr << proc{|k_b| + [i_b, j_b, k_b] + } + } + p3.call(1) + p3.call(2) + }.call(0) + + pr[0].call(:last).concat pr[1].call(:last) + } + end + + def test_proc_with_block + ae %q{ + def proc(&pr) + pr + end + + def m + a = 1 + m2{ + a + } + end + + def m2 + b = 2 + proc{ + [yield, b] + } + end + + pr = m + x = ['a', 1,2,3,4,5,6,7,8,9,0, + 1,2,3,4,5,6,7,8,9,0, + 1,2,3,4,5,6,7,8,9,0, + 1,2,3,4,5,6,7,8,9,0, + 1,2,3,4,5,6,7,8,9,0,] + pr.call + } + ae %q{ + def proc(&pr) + pr + end + + def m + a = 1 + m2{ + a + } + end + + def m2 + b = 2 + proc{ + [yield, b] + } + 100000.times{|x| + "#{x}" + } + yield + end + m + } + end + + def test_method_to_proc + ae %q{ + class C + def foo + :ok + end + end + + def block + C.method(:new).to_proc + end + b = block() + b.call.foo + } + end + + def test_safe + ae %q{ + pr = proc{ + $SAFE + } + $SAFE = 1 + pr.call + } + ae %q{ + pr = proc{ + $SAFE += 1 + } + [pr.call, $SAFE] + } + end +end + diff --git a/yarvtest/test_syntax.rb b/yarvtest/test_syntax.rb index ce375328ac..a15159acdf 100644 --- a/yarvtest/test_syntax.rb +++ b/yarvtest/test_syntax.rb @@ -1,594 +1,594 @@ -require 'yarvtest/yarvtest'
-
-# test of syntax
-class TestSYNTAX < YarvTestBase
-
- def test_if_unless
- ae %q(if true then 1 ; end)
- ae %q(if false then 1 ; end)
- ae %q(if true then 1 ; else; 2; end)
- ae %q(if false then 1 ; else; 2; end)
- ae %q(if true then ; elsif true then ; 1 ; end)
- ae %q(if false then ; elsif true then ; 1 ; end)
-
- ae %q(unless true then 1 ; end)
- ae %q(unless false then 1 ; end)
- ae %q(unless true then 1 ; else; 2; end)
- ae %q(unless false then 1 ; else; 2; end)
-
- ae %q(1 if true)
- ae %q(1 if false)
- ae %q(1 if nil)
-
- ae %q(1 unless true)
- ae %q(1 unless false)
- ae %q(1 unless nil)
- end
-
- def test_while_until
- ae %q(
- i = 0
- while i < 10
- i+=1
- end)
-
- ae %q(
- i = 0
- while i < 10
- i+=1
- end; i)
-
- ae %q(
- i = 0
- until i > 10
- i+=1
- end)
-
- ae %q(
- i = 0
- until i > 10
- i+=1
- end; i)
- #
- ae %q{
- i = 0
- begin
- i+=1
- end while false
- i
- }
- ae %q{
- i = 0
- begin
- i+=1
- end until true
- i
- }
- end
-
- def test_and
- ae %q(1 && 2 && 3 && 4)
- ae %q(1 && nil && 3 && 4)
- ae %q(1 && 2 && 3 && nil)
- ae %q(1 && 2 && 3 && false)
-
- ae %q(1 and 2 and 3 and 4)
- ae %q(1 and nil and 3 and 4)
- ae %q(1 and 2 and 3 and nil)
- ae %q(1 and 2 and 3 and false)
- ae %q(nil && true)
- ae %q(false && true)
-
- end
-
- def test_or
- ae %q(1 || 2 || 3 || 4)
- ae %q(1 || false || 3 || 4)
- ae %q(nil || 2 || 3 || 4)
- ae %q(false || 2 || 3 || 4)
- ae %q(nil || false || nil || false)
-
- ae %q(1 or 2 or 3 or 4)
- ae %q(1 or false or 3 or 4)
- ae %q(nil or 2 or 3 or 4)
- ae %q(false or 2 or 3 or 4)
- ae %q(nil or false or nil or false)
- end
-
- def test_case
- ae %q(
- case 1
- when 2
- :ng
- end)
-
- ae %q(
- case 1
- when 10,20,30
- :ng1
- when 1,2,3
- :ok
- when 100,200,300
- :ng2
- else
- :elseng
- end)
- ae %q(
- case 123
- when 10,20,30
- :ng1
- when 1,2,3
- :ng2
- when 100,200,300
- :ng3
- else
- :elseok
- end
- )
- ae %q(
- case 'test'
- when /testx/
- :ng1
- when /test/
- :ok
- when /tetxx/
- :ng2
- else
- :ng_else
- end
- )
- ae %q(
- case Object.new
- when Object
- :ok
- end
- )
- ae %q(
- case Object
- when Object.new
- :ng
- else
- :ok
- end
- )
- ae %q{
- case 'test'
- when 'tes'
- :ng
- when 'te'
- :ng
- else
- :ok
- end
- }
- ae %q{
- case 'test'
- when 'tes'
- :ng
- when 'te'
- :ng
- when 'test'
- :ok
- end
- }
- ae %q{
- case 'test'
- when 'tes'
- :ng
- when /te/
- :ng
- else
- :ok
- end
- }
- ae %q{
- case 'test'
- when 'tes'
- :ng
- when /test/
- :ok
- else
- :ng
- end
- }
- ae %q{
- def test(arg)
- case 1
- when 2
- 3
- end
- return arg
- end
-
- test(100)
- }
- end
-
- def test_case_splat
- ae %q{
- ary = [1, 2]
- case 1
- when *ary
- :ok
- else
- :ng
- end
- }
- ae %q{
- ary = [1, 2]
- case 3
- when *ary
- :ng
- else
- :ok
- end
- }
- ae %q{
- ary = [1, 2]
- case 1
- when :x, *ary
- :ok
- when :z
- :ng1
- else
- :ng2
- end
- }
- ae %q{
- ary = [1, 2]
- case 3
- when :x, *ary
- :ng1
- when :z
- :ng2
- else
- :ok
- end
- }
- end
-
- def test_when
- ae %q(
- case
- when 1==2, 2==3
- :ng1
- when false, 4==5
- :ok
- when false
- :ng2
- else
- :elseng
- end
- )
-
- ae %q(
- case
- when nil, nil
- :ng1
- when 1,2,3
- :ok
- when false, false
- :ng2
- else
- :elseng
- end
- )
-
- ae %q(
- case
- when nil
- :ng1
- when false
- :ng2
- else
- :elseok
- end)
-
- ae %q{
- case
- when 1
- end
- }
-
- ae %q{
- r = nil
- ary = []
- case
- when false
- r = :ng1
- when false, false
- r = :ng2
- when *ary
- r = :ng3
- when false, *ary
- r = :ng4
- when true, *ary
- r = :ok
- end
- r
- }
- end
-
- def test_when_splat
- ae %q{
- ary = []
- case
- when false, *ary
- :ng
- else
- :ok
- end
- }
- ae %q{
- ary = [false, nil]
- case
- when *ary
- :ng
- else
- :ok
- end
- }
- ae %q{
- ary = [false, nil]
- case
- when *ary
- :ng
- when true
- :ok
- else
- :ng2
- end
- }
- ae %q{
- ary = [false, nil]
- case
- when *ary
- :ok
- else
- :ng
- end
- }
- ae %q{
- ary = [false, true]
- case
- when *ary
- :ok
- else
- :ng
- end
- }
- ae %q{
- ary = [false, true]
- case
- when false, false
- when false, *ary
- :ok
- else
- :ng
- end
- }
- end
-
- def test_flipflop
- ae %q{
- sum = 0
- 30.times{|ib|
- if ib % 10 == 0 .. true
- sum += ib
- end
- }
- sum
- }
- ae %q{
- sum = 0
- 30.times{|ib|
- if ib % 10 == 0 ... true
- sum += ib
- end
- }
- sum
- }
- ae %q{
- t = nil
- unless ''.respond_to? :lines
- class String
- def lines
- self
- end
- end
- end
-
- "this must not print
- Type: NUM
- 123
- 456
- Type: ARP
- aaa
- bbb
- \f
- this must not print
- hoge
- Type: ARP
- aaa
- bbb
- ".lines.each{|l|
- if (t = l[/^Type: (.*)/, 1])..(/^\f/ =~ l)
- p [t, l]
- end
- }
- }
- end
-
- def test_defined_vars
- ae %q{
- defined?(nil) + defined?(self) +
- defined?(true) + defined?(false)
- }
- #ae %q{
- # a = 1
- # defined?(a) # yarv returns "in block" in eval context
- #}
- ae %q{
- defined?(@a)
- }
- ae %q{
- @a = 1
- defined?(@a)
- }
- ae %q{
- defined?(@@a)
- }
- ae %q{
- @@a = 1
- defined?(@@a)
- }
- ae %q{
- defined?($a)
- }
- ae %q{
- $a = 1
- defined?($a)
- }
- ae %q{
- defined?(C_definedtest)
- }
- ae %q{
- C_definedtest = 1
- defined?(C_definedtest)
- } do
- remove_const :C_definedtest
- end
-
- ae %q{
- defined?(::C_definedtest)
- }
- ae %q{
- C_definedtest = 1
- defined?(::C_definedtest)
- } do
- remove_const :C_definedtest
- end
-
- ae %q{
- defined?(C_definedtestA::C_definedtestB::C_definedtestC)
- }
- ae %q{
- class C_definedtestA
- class C_definedtestB
- C_definedtestC = 1
- end
- end
- defined?(C_definedtestA::C_definedtestB::C_definedtestC)
- } do
- remove_const :C_definedtestA
- end
- end
-
- def test_defined_method
- ae %q{
- defined?(m)
- }
- ae %q{
- def m
- end
- defined?(m)
- }
-
- ae %q{
- defined?(a.class)
- }
- ae %q{
- a = 1
- defined?(a.class)
- }
- ae %q{
- class C
- def test
- [defined?(m1()), defined?(self.m1), defined?(C.new.m1),
- defined?(m2()), defined?(self.m2), defined?(C.new.m2),
- defined?(m3()), defined?(self.m3), defined?(C.new.m3)]
- end
- def m1
- end
- private
- def m2
- end
- protected
- def m3
- end
- end
- C.new.test + [defined?(C.new.m3)]
- }
- ae %q{
- $ans = [defined?($1), defined?($2), defined?($3), defined?($4)]
- /(a)(b)/ =~ 'ab'
- $ans + [defined?($1), defined?($2), defined?($3), defined?($4)]
- }
- end
-
- def test_condition
- ae %q{
-
- def make_perm ary, num
- if num == 1
- ary.map{|e| [e]}
- else
- base = make_perm(ary, num-1)
- res = []
- base.each{|b|
- ary.each{|e|
- res << [e] + b
- }
- }
- res
- end
- end
-
- def each_test
- conds = make_perm(['fv', 'tv'], 3)
- bangs = make_perm(['', '!'], 3)
- exprs = make_perm(['and', 'or'], 3)
- ['if', 'unless'].each{|syn|
- conds.each{|cs|
- bangs.each{|bs|
- exprs.each{|es|
- yield(syn, cs, bs, es)
- }
- }
- }
- }
- end
-
- fv = false
- tv = true
-
- $ans = []
- each_test{|syn, conds, bangs, exprs|
- c1, c2, c3 = conds
- bang1, bang2, bang3 = bangs
- e1, e2 = exprs
- eval %Q{
- #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
- $ans << :then
- else
- $ans << :false
- end
- }
- }
-
- each_test{|syn, conds, bangs, exprs|
- c1, c2, c3 = conds
- bang1, bang2, bang3 = bangs
- e1, e2 = exprs
- eval %Q{
- #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
- $ans << :then
- end
- $ans << :sep
- }
- }
- $ans
- }
- end
-end
-
+require 'yarvtest/yarvtest' + +# test of syntax +class TestSYNTAX < YarvTestBase + + def test_if_unless + ae %q(if true then 1 ; end) + ae %q(if false then 1 ; end) + ae %q(if true then 1 ; else; 2; end) + ae %q(if false then 1 ; else; 2; end) + ae %q(if true then ; elsif true then ; 1 ; end) + ae %q(if false then ; elsif true then ; 1 ; end) + + ae %q(unless true then 1 ; end) + ae %q(unless false then 1 ; end) + ae %q(unless true then 1 ; else; 2; end) + ae %q(unless false then 1 ; else; 2; end) + + ae %q(1 if true) + ae %q(1 if false) + ae %q(1 if nil) + + ae %q(1 unless true) + ae %q(1 unless false) + ae %q(1 unless nil) + end + + def test_while_until + ae %q( + i = 0 + while i < 10 + i+=1 + end) + + ae %q( + i = 0 + while i < 10 + i+=1 + end; i) + + ae %q( + i = 0 + until i > 10 + i+=1 + end) + + ae %q( + i = 0 + until i > 10 + i+=1 + end; i) + # + ae %q{ + i = 0 + begin + i+=1 + end while false + i + } + ae %q{ + i = 0 + begin + i+=1 + end until true + i + } + end + + def test_and + ae %q(1 && 2 && 3 && 4) + ae %q(1 && nil && 3 && 4) + ae %q(1 && 2 && 3 && nil) + ae %q(1 && 2 && 3 && false) + + ae %q(1 and 2 and 3 and 4) + ae %q(1 and nil and 3 and 4) + ae %q(1 and 2 and 3 and nil) + ae %q(1 and 2 and 3 and false) + ae %q(nil && true) + ae %q(false && true) + + end + + def test_or + ae %q(1 || 2 || 3 || 4) + ae %q(1 || false || 3 || 4) + ae %q(nil || 2 || 3 || 4) + ae %q(false || 2 || 3 || 4) + ae %q(nil || false || nil || false) + + ae %q(1 or 2 or 3 or 4) + ae %q(1 or false or 3 or 4) + ae %q(nil or 2 or 3 or 4) + ae %q(false or 2 or 3 or 4) + ae %q(nil or false or nil or false) + end + + def test_case + ae %q( + case 1 + when 2 + :ng + end) + + ae %q( + case 1 + when 10,20,30 + :ng1 + when 1,2,3 + :ok + when 100,200,300 + :ng2 + else + :elseng + end) + ae %q( + case 123 + when 10,20,30 + :ng1 + when 1,2,3 + :ng2 + when 100,200,300 + :ng3 + else + :elseok + end + ) + ae %q( + case 'test' + when /testx/ + :ng1 + when /test/ + :ok + when /tetxx/ + :ng2 + else + :ng_else + end + ) + ae %q( + case Object.new + when Object + :ok + end + ) + ae %q( + case Object + when Object.new + :ng + else + :ok + end + ) + ae %q{ + case 'test' + when 'tes' + :ng + when 'te' + :ng + else + :ok + end + } + ae %q{ + case 'test' + when 'tes' + :ng + when 'te' + :ng + when 'test' + :ok + end + } + ae %q{ + case 'test' + when 'tes' + :ng + when /te/ + :ng + else + :ok + end + } + ae %q{ + case 'test' + when 'tes' + :ng + when /test/ + :ok + else + :ng + end + } + ae %q{ + def test(arg) + case 1 + when 2 + 3 + end + return arg + end + + test(100) + } + end + + def test_case_splat + ae %q{ + ary = [1, 2] + case 1 + when *ary + :ok + else + :ng + end + } + ae %q{ + ary = [1, 2] + case 3 + when *ary + :ng + else + :ok + end + } + ae %q{ + ary = [1, 2] + case 1 + when :x, *ary + :ok + when :z + :ng1 + else + :ng2 + end + } + ae %q{ + ary = [1, 2] + case 3 + when :x, *ary + :ng1 + when :z + :ng2 + else + :ok + end + } + end + + def test_when + ae %q( + case + when 1==2, 2==3 + :ng1 + when false, 4==5 + :ok + when false + :ng2 + else + :elseng + end + ) + + ae %q( + case + when nil, nil + :ng1 + when 1,2,3 + :ok + when false, false + :ng2 + else + :elseng + end + ) + + ae %q( + case + when nil + :ng1 + when false + :ng2 + else + :elseok + end) + + ae %q{ + case + when 1 + end + } + + ae %q{ + r = nil + ary = [] + case + when false + r = :ng1 + when false, false + r = :ng2 + when *ary + r = :ng3 + when false, *ary + r = :ng4 + when true, *ary + r = :ok + end + r + } + end + + def test_when_splat + ae %q{ + ary = [] + case + when false, *ary + :ng + else + :ok + end + } + ae %q{ + ary = [false, nil] + case + when *ary + :ng + else + :ok + end + } + ae %q{ + ary = [false, nil] + case + when *ary + :ng + when true + :ok + else + :ng2 + end + } + ae %q{ + ary = [false, nil] + case + when *ary + :ok + else + :ng + end + } + ae %q{ + ary = [false, true] + case + when *ary + :ok + else + :ng + end + } + ae %q{ + ary = [false, true] + case + when false, false + when false, *ary + :ok + else + :ng + end + } + end + + def test_flipflop + ae %q{ + sum = 0 + 30.times{|ib| + if ib % 10 == 0 .. true + sum += ib + end + } + sum + } + ae %q{ + sum = 0 + 30.times{|ib| + if ib % 10 == 0 ... true + sum += ib + end + } + sum + } + ae %q{ + t = nil + unless ''.respond_to? :lines + class String + def lines + self + end + end + end + + "this must not print + Type: NUM + 123 + 456 + Type: ARP + aaa + bbb + \f + this must not print + hoge + Type: ARP + aaa + bbb + ".lines.each{|l| + if (t = l[/^Type: (.*)/, 1])..(/^\f/ =~ l) + p [t, l] + end + } + } + end + + def test_defined_vars + ae %q{ + defined?(nil) + defined?(self) + + defined?(true) + defined?(false) + } + #ae %q{ + # a = 1 + # defined?(a) # yarv returns "in block" in eval context + #} + ae %q{ + defined?(@a) + } + ae %q{ + @a = 1 + defined?(@a) + } + ae %q{ + defined?(@@a) + } + ae %q{ + @@a = 1 + defined?(@@a) + } + ae %q{ + defined?($a) + } + ae %q{ + $a = 1 + defined?($a) + } + ae %q{ + defined?(C_definedtest) + } + ae %q{ + C_definedtest = 1 + defined?(C_definedtest) + } do + remove_const :C_definedtest + end + + ae %q{ + defined?(::C_definedtest) + } + ae %q{ + C_definedtest = 1 + defined?(::C_definedtest) + } do + remove_const :C_definedtest + end + + ae %q{ + defined?(C_definedtestA::C_definedtestB::C_definedtestC) + } + ae %q{ + class C_definedtestA + class C_definedtestB + C_definedtestC = 1 + end + end + defined?(C_definedtestA::C_definedtestB::C_definedtestC) + } do + remove_const :C_definedtestA + end + end + + def test_defined_method + ae %q{ + defined?(m) + } + ae %q{ + def m + end + defined?(m) + } + + ae %q{ + defined?(a.class) + } + ae %q{ + a = 1 + defined?(a.class) + } + ae %q{ + class C + def test + [defined?(m1()), defined?(self.m1), defined?(C.new.m1), + defined?(m2()), defined?(self.m2), defined?(C.new.m2), + defined?(m3()), defined?(self.m3), defined?(C.new.m3)] + end + def m1 + end + private + def m2 + end + protected + def m3 + end + end + C.new.test + [defined?(C.new.m3)] + } + ae %q{ + $ans = [defined?($1), defined?($2), defined?($3), defined?($4)] + /(a)(b)/ =~ 'ab' + $ans + [defined?($1), defined?($2), defined?($3), defined?($4)] + } + end + + def test_condition + ae %q{ + + def make_perm ary, num + if num == 1 + ary.map{|e| [e]} + else + base = make_perm(ary, num-1) + res = [] + base.each{|b| + ary.each{|e| + res << [e] + b + } + } + res + end + end + + def each_test + conds = make_perm(['fv', 'tv'], 3) + bangs = make_perm(['', '!'], 3) + exprs = make_perm(['and', 'or'], 3) + ['if', 'unless'].each{|syn| + conds.each{|cs| + bangs.each{|bs| + exprs.each{|es| + yield(syn, cs, bs, es) + } + } + } + } + end + + fv = false + tv = true + + $ans = [] + each_test{|syn, conds, bangs, exprs| + c1, c2, c3 = conds + bang1, bang2, bang3 = bangs + e1, e2 = exprs + eval %Q{ + #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3} + $ans << :then + else + $ans << :false + end + } + } + + each_test{|syn, conds, bangs, exprs| + c1, c2, c3 = conds + bang1, bang2, bang3 = bangs + e1, e2 = exprs + eval %Q{ + #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3} + $ans << :then + end + $ans << :sep + } + } + $ans + } + end +end + diff --git a/yarvtest/test_test.rb b/yarvtest/test_test.rb index 17a0e2363b..a550f43640 100644 --- a/yarvtest/test_test.rb +++ b/yarvtest/test_test.rb @@ -1,8 +1,8 @@ -require 'yarvtest/yarvtest'
-
-# test of syntax
-class TestTest < YarvTestBase
- def test_1
- ae '100'
- end
-end
+require 'yarvtest/yarvtest' + +# test of syntax +class TestTest < YarvTestBase + def test_1 + ae '100' + end +end diff --git a/yarvtest/test_thread.rb b/yarvtest/test_thread.rb index ba0c0838dd..072e065497 100644 --- a/yarvtest/test_thread.rb +++ b/yarvtest/test_thread.rb @@ -1,209 +1,209 @@ -
-require 'yarvtest/yarvtest'
-
-class TestThread < YarvTestBase
- def test_create
- ae %q{
- Thread.new{
- }.join
- :ok
- }
- ae %q{
- Thread.new{
- :ok
- }.value
- }
- end
-
- def test_create_many_threads1
- ae %q{
- v = 0
- (1..200).map{|i|
- Thread.new{
- i
- }
- }.each{|t|
- v += t.value
- }
- v
- }
- end
-
- def test_create_many_threads2
- ae %q{
- 5000.times{|e|
- (1..2).map{
- Thread.new{
- }
- }.each{|e|
- e.join
- }
- }
- }
- end
-
- def test_create_many_threads3
- ae %q{
- 5000.times{
- t = Thread.new{}
- while t.alive?
- Thread.pass
- end
- }
- }
- end
-
- def test_create_many_threads4
- ae %q{
- 100.times{
- Thread.new{loop{Thread.pass}}
- }
- }
- end
-
- def test_raise
- ae %q{
- t = Thread.new{
- sleep
- }
- sleep 0.1
- t.raise
- begin
- t.join
- :ng
- rescue
- :ok
- end
- }
- ae %q{
- t = Thread.new{
- loop{}
- }
- Thread.pass
- t.raise
- begin
- t.join
- :ng
- rescue
- :ok
- end
- }
- ae %q{
- t = Thread.new{
- }
- Thread.pass
- t.join
- t.raise # raise to exited thread
- begin
- t.join
- :ok
- rescue
- :ng
- end
- }
- end
-
- def test_status
- ae %q{
- t = Thread.new{
- loop{}
- }
- st = t.status
- t.kill
- st
- }
- ae %q{
- t = Thread.new{
- sleep
- }
- sleep 0.1
- st = t.status
- t.kill
- st
- }
- ae %q{
- t = Thread.new{
- }
- t.kill
- sleep 0.1
- t.status
- }
- end
-
- def test_tlv
- ae %q{
- Thread.current[:a] = 1
- Thread.new{
- Thread.current[:a] = 10
- Thread.pass
- Thread.current[:a]
- }.value + Thread.current[:a]
- }
- end
-
- def test_thread_group
- ae %q{
- ptg = Thread.current.group
- Thread.new{
- ctg = Thread.current.group
- [ctg.class, ctg == ptg]
- }.value
- }
- ae %q{
- thg = ThreadGroup.new
-
- t = Thread.new{
- thg.add Thread.current
- sleep
- }
- sleep 0.1
- [thg.list.size, ThreadGroup::Default.list.size]
- }
- end
-
- def test_thread_local_svar
- ae %q{
- /a/ =~ 'a'
- $a = $~
- Thread.new{
- $b = $~
- /a/ =~ 'a'
- $c = $~
- }
- $d = $~
- [$a == $d, $b, $c != $d]
- }
- end
-
- def test_join
- ae %q{
- Thread.new{
- :ok
- }.join.value
- }
- ae %q{
- begin
- Thread.new{
- raise "ok"
- }.join
- rescue => e
- e
- end
- }
- ae %q{
- ans = nil
- t = Thread.new{
- begin
- sleep 0.5
- ensure
- ans = :ok
- end
- }
- Thread.pass
- t.kill
- t.join
- ans
- }
- end
-end
-
+ +require 'yarvtest/yarvtest' + +class TestThread < YarvTestBase + def test_create + ae %q{ + Thread.new{ + }.join + :ok + } + ae %q{ + Thread.new{ + :ok + }.value + } + end + + def test_create_many_threads1 + ae %q{ + v = 0 + (1..200).map{|i| + Thread.new{ + i + } + }.each{|t| + v += t.value + } + v + } + end + + def test_create_many_threads2 + ae %q{ + 5000.times{|e| + (1..2).map{ + Thread.new{ + } + }.each{|e| + e.join + } + } + } + end + + def test_create_many_threads3 + ae %q{ + 5000.times{ + t = Thread.new{} + while t.alive? + Thread.pass + end + } + } + end + + def test_create_many_threads4 + ae %q{ + 100.times{ + Thread.new{loop{Thread.pass}} + } + } + end + + def test_raise + ae %q{ + t = Thread.new{ + sleep + } + sleep 0.1 + t.raise + begin + t.join + :ng + rescue + :ok + end + } + ae %q{ + t = Thread.new{ + loop{} + } + Thread.pass + t.raise + begin + t.join + :ng + rescue + :ok + end + } + ae %q{ + t = Thread.new{ + } + Thread.pass + t.join + t.raise # raise to exited thread + begin + t.join + :ok + rescue + :ng + end + } + end + + def test_status + ae %q{ + t = Thread.new{ + loop{} + } + st = t.status + t.kill + st + } + ae %q{ + t = Thread.new{ + sleep + } + sleep 0.1 + st = t.status + t.kill + st + } + ae %q{ + t = Thread.new{ + } + t.kill + sleep 0.1 + t.status + } + end + + def test_tlv + ae %q{ + Thread.current[:a] = 1 + Thread.new{ + Thread.current[:a] = 10 + Thread.pass + Thread.current[:a] + }.value + Thread.current[:a] + } + end + + def test_thread_group + ae %q{ + ptg = Thread.current.group + Thread.new{ + ctg = Thread.current.group + [ctg.class, ctg == ptg] + }.value + } + ae %q{ + thg = ThreadGroup.new + + t = Thread.new{ + thg.add Thread.current + sleep + } + sleep 0.1 + [thg.list.size, ThreadGroup::Default.list.size] + } + end + + def test_thread_local_svar + ae %q{ + /a/ =~ 'a' + $a = $~ + Thread.new{ + $b = $~ + /a/ =~ 'a' + $c = $~ + } + $d = $~ + [$a == $d, $b, $c != $d] + } + end + + def test_join + ae %q{ + Thread.new{ + :ok + }.join.value + } + ae %q{ + begin + Thread.new{ + raise "ok" + }.join + rescue => e + e + end + } + ae %q{ + ans = nil + t = Thread.new{ + begin + sleep 0.5 + ensure + ans = :ok + end + } + Thread.pass + t.kill + t.join + ans + } + end +end + diff --git a/yarvtest/test_yield.rb b/yarvtest/test_yield.rb index 72b2182099..56fa48b0c8 100644 --- a/yarvtest/test_yield.rb +++ b/yarvtest/test_yield.rb @@ -1,207 +1,207 @@ -require 'yarvtest/yarvtest'
-class TestYield < YarvTestBase
- def test_simple
- ae %q{
- def iter
- yield
- end
- iter{
- 1
- }
- }
- end
-
- def test_hash_each
- ae %q{
- h = {:a => 1}
- a = []
- h.each{|k, v|
- a << [k, v]
- }
- h.each{|kv|
- a << kv
- }
- a
- }
- end
-
- def test_ary_each
- ae %q{
- ans = []
- ary = [1,2,3]
- ary.each{|a, b, c, d|
- ans << [a, b, c, d]
- }
- ary.each{|a, b, c|
- ans << [a, b, c]
- }
- ary.each{|a, b|
- ans << [a, b]
- }
- ary.each{|a|
- ans << [a]
- }
- ans
- }
- end
-
- def test_iter
- ae %q{
- def iter *args
- yield *args
- end
-
- ans = []
- ary = [1,2,3]
- ary.each{|a, b, c, d|
- ans << [a, b, c, d]
- }
- ary.each{|a, b, c|
- ans << [a, b, c]
- }
- ary.each{|a, b|
- ans << [a, b]
- }
- ary.each{|a|
- ans << [a]
- }
- ans
- }
- end
-
- def test_iter2
- ae %q{
- def iter args
- yield *args
- end
- ans = []
- iter([]){|a, b|
- ans << [a, b]
- }
- iter([1]){|a, b|
- ans << [a, b]
- }
- iter([1, 2]){|a, b|
- ans << [a, b]
- }
- iter([1, 2, 3]){|a, b|
- ans << [a, b]
- }
- ans
- }
- ae %q{
- def iter args
- yield *args
- end
- ans = []
-
- iter([]){|a|
- ans << a
- }
- iter([1]){|a|
- ans << a
- }
- iter([1, 2]){|a|
- ans << a
- }
- iter([1, 2, 3]){|a|
- ans << a
- }
- ans
- }
- end
-
- def test_1_ary_and_n_params
- ae %q{
- def iter args
- yield args
- end
- ans = []
- iter([]){|a, b|
- ans << [a, b]
- }
- iter([1]){|a, b|
- ans << [a, b]
- }
- iter([1, 2]){|a, b|
- ans << [a, b]
- }
- iter([1, 2, 3]){|a, b|
- ans << [a, b]
- }
- ans
- }
- end
-
- def test_1_ary_and_1_params
- ae %q{
- def iter args
- yield args
- end
- ans = []
- iter([]){|a|
- ans << a
- }
- iter([1]){|a|
- ans << a
- }
- iter([1, 2]){|a|
- ans << a
- }
- iter([1, 2, 3]){|a|
- ans << a
- }
- ans
- }
- end
-
- def test_argscat
- ae %q{
- def iter
- yield 1, *[2, 3]
- end
-
- iter{|a, b, c|
- [a, b, c]
- }
- }
- ae %q{
- def iter
- yield 1, *[]
- end
-
- iter{|a, b, c|
- [a, b, c]
- }
- }
- if false
- ae %q{
- def iter
- yield 1, *2
- end
-
- iter{|a, b, c|
- [a, b, c]
- }
- }
- end
- end
-
- def test_massgin
- ae %q{
- ans = []
- [[1, [2, 3]], [4, [5, 6]]].each{|a, (b, c)|
- ans << [a, b, c]
- }
- ans
- }
- ae %q{
- ans = []
- [[1, [2, 3]], [4, [5, 6]]].map{|a, (b, c)|
- ans << [a, b, c]
- } + ans
- }
- end
-end
-
-
+require 'yarvtest/yarvtest' +class TestYield < YarvTestBase + def test_simple + ae %q{ + def iter + yield + end + iter{ + 1 + } + } + end + + def test_hash_each + ae %q{ + h = {:a => 1} + a = [] + h.each{|k, v| + a << [k, v] + } + h.each{|kv| + a << kv + } + a + } + end + + def test_ary_each + ae %q{ + ans = [] + ary = [1,2,3] + ary.each{|a, b, c, d| + ans << [a, b, c, d] + } + ary.each{|a, b, c| + ans << [a, b, c] + } + ary.each{|a, b| + ans << [a, b] + } + ary.each{|a| + ans << [a] + } + ans + } + end + + def test_iter + ae %q{ + def iter *args + yield *args + end + + ans = [] + ary = [1,2,3] + ary.each{|a, b, c, d| + ans << [a, b, c, d] + } + ary.each{|a, b, c| + ans << [a, b, c] + } + ary.each{|a, b| + ans << [a, b] + } + ary.each{|a| + ans << [a] + } + ans + } + end + + def test_iter2 + ae %q{ + def iter args + yield *args + end + ans = [] + iter([]){|a, b| + ans << [a, b] + } + iter([1]){|a, b| + ans << [a, b] + } + iter([1, 2]){|a, b| + ans << [a, b] + } + iter([1, 2, 3]){|a, b| + ans << [a, b] + } + ans + } + ae %q{ + def iter args + yield *args + end + ans = [] + + iter([]){|a| + ans << a + } + iter([1]){|a| + ans << a + } + iter([1, 2]){|a| + ans << a + } + iter([1, 2, 3]){|a| + ans << a + } + ans + } + end + + def test_1_ary_and_n_params + ae %q{ + def iter args + yield args + end + ans = [] + iter([]){|a, b| + ans << [a, b] + } + iter([1]){|a, b| + ans << [a, b] + } + iter([1, 2]){|a, b| + ans << [a, b] + } + iter([1, 2, 3]){|a, b| + ans << [a, b] + } + ans + } + end + + def test_1_ary_and_1_params + ae %q{ + def iter args + yield args + end + ans = [] + iter([]){|a| + ans << a + } + iter([1]){|a| + ans << a + } + iter([1, 2]){|a| + ans << a + } + iter([1, 2, 3]){|a| + ans << a + } + ans + } + end + + def test_argscat + ae %q{ + def iter + yield 1, *[2, 3] + end + + iter{|a, b, c| + [a, b, c] + } + } + ae %q{ + def iter + yield 1, *[] + end + + iter{|a, b, c| + [a, b, c] + } + } + if false + ae %q{ + def iter + yield 1, *2 + end + + iter{|a, b, c| + [a, b, c] + } + } + end + end + + def test_massgin + ae %q{ + ans = [] + [[1, [2, 3]], [4, [5, 6]]].each{|a, (b, c)| + ans << [a, b, c] + } + ans + } + ae %q{ + ans = [] + [[1, [2, 3]], [4, [5, 6]]].map{|a, (b, c)| + ans << [a, b, c] + } + ans + } + end +end + + |