From fd81221a8e2c3a8c77599602fe38cd563d86191d Mon Sep 17 00:00:00 2001 From: shyouhei Date: Mon, 12 Feb 2007 23:01:19 +0000 Subject: [PATCH] set svn:eol-style git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- benchmark/bm_app_answer.rb | 30 +- benchmark/bm_app_factorial.rb | 20 +- benchmark/bm_app_fib.rb | 20 +- benchmark/bm_app_mandelbrot.rb | 46 +- benchmark/bm_app_pentomino.rb | 518 +- benchmark/bm_app_raise.rb | 16 +- benchmark/bm_app_strconcat.rb | 10 +- benchmark/bm_app_tak.rb | 26 +- benchmark/bm_app_tarai.rb | 20 +- benchmark/bm_loop_times.rb | 2 +- benchmark/bm_loop_whileloop.rb | 8 +- benchmark/bm_loop_whileloop2.rb | 10 +- benchmark/bm_so_ackermann.rb | 38 +- benchmark/bm_so_array.rb | 46 +- benchmark/bm_so_concatenate.rb | 36 +- benchmark/bm_so_count_words.rb | 36 +- benchmark/bm_so_exception.rb | 122 +- benchmark/bm_so_lists.rb | 94 +- benchmark/bm_so_matrix.rb | 96 +- benchmark/bm_so_nested_loop.rb | 48 +- benchmark/bm_so_object.rb | 112 +- benchmark/bm_so_random.rb | 40 +- benchmark/bm_so_sieve.rb | 48 +- benchmark/bm_vm1_block.rb | 18 +- benchmark/bm_vm1_const.rb | 16 +- benchmark/bm_vm1_ensure.rb | 22 +- benchmark/bm_vm1_length.rb | 18 +- benchmark/bm_vm1_rescue.rb | 14 +- benchmark/bm_vm1_simplereturn.rb | 18 +- benchmark/bm_vm1_swap.rb | 16 +- benchmark/bm_vm2_array.rb | 10 +- benchmark/bm_vm2_method.rb | 18 +- benchmark/bm_vm2_poly_method.rb | 40 +- benchmark/bm_vm2_poly_method_ov.rb | 40 +- benchmark/bm_vm2_proc.rb | 28 +- benchmark/bm_vm2_regexp.rb | 12 +- benchmark/bm_vm2_send.rb | 24 +- benchmark/bm_vm2_super.rb | 40 +- benchmark/bm_vm2_unif1.rb | 16 +- benchmark/bm_vm2_zsuper.rb | 40 +- benchmark/bm_vm3_thread_create_join.rb | 12 +- benchmark/other-lang/ack.pl | 22 +- benchmark/other-lang/ack.py | 32 +- benchmark/other-lang/ack.rb | 24 +- benchmark/other-lang/ack.scm | 14 +- benchmark/other-lang/eval.rb | 132 +- benchmark/other-lang/fact.pl | 26 +- benchmark/other-lang/fact.py | 36 +- benchmark/other-lang/fact.rb | 26 +- benchmark/other-lang/fact.scm | 16 +- benchmark/other-lang/fib.pl | 22 +- benchmark/other-lang/fib.py | 14 +- benchmark/other-lang/fib.rb | 18 +- benchmark/other-lang/fib.scm | 14 +- benchmark/other-lang/loop.pl | 6 +- benchmark/other-lang/loop.py | 4 +- benchmark/other-lang/loop.rb | 8 +- benchmark/other-lang/loop.scm | 2 +- benchmark/other-lang/loop2.rb | 2 +- benchmark/other-lang/tak.pl | 22 +- benchmark/other-lang/tak.py | 16 +- benchmark/other-lang/tak.rb | 26 +- benchmark/other-lang/tak.scm | 20 +- benchmark/report.rb | 162 +- benchmark/run.rb | 246 +- benchmark/runc.rb | 58 +- benchmark/wc.input.base | 50 +- doc/ChangeLog-YARV | 13834 +++++++++++------------ yarvtest/test_block.rb | 858 +- yarvtest/test_class.rb | 1586 +-- yarvtest/test_exception.rb | 816 +- yarvtest/test_flow.rb | 1182 +- yarvtest/test_jump.rb | 592 +- yarvtest/test_massign.rb | 834 +- yarvtest/test_method.rb | 1212 +- yarvtest/test_opts.rb | 236 +- yarvtest/test_proc.rb | 586 +- yarvtest/test_syntax.rb | 1188 +- yarvtest/test_test.rb | 16 +- yarvtest/test_thread.rb | 418 +- yarvtest/test_yield.rb | 414 +- 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= @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 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 < 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 < 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" -Date: 1996/04/28 -Message-Id: <4lv7bc$oh@news.ycc.yale.edu> -References: <317C405E.5DFA@panix.com> <4lk6vl$gde@ns.oar.net> -To: 75176.2330@compuserve.com -Content-Type: text/plain; charset=us-ascii -Organization: Yale University -X-Url: news:4lk6vl$gde@ns.oar.net -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" +Date: 1996/04/28 +Message-Id: <4lv7bc$oh@news.ycc.yale.edu> +References: <317C405E.5DFA@panix.com> <4lk6vl$gde@ns.oar.net> +To: 75176.2330@compuserve.com +Content-Type: text/plain; charset=us-ascii +Organization: Yale University +X-Url: news:4lk6vl$gde@ns.oar.net +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 - - * bin/* : ruby/trunk/bin 11437 - - -Sun Dec 31 17:42:05 2006 Koichi Sasada - - * eval.c : remove old Kernel#funcall definition - - -2006-12-30(Sat) 07:59:26 +0900 Koichi Sasada - - * 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 - - * 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 - - * compile.c : remove obsolete codes - - * insns.def : fix a comment of getconstant - - -2006-12-13(Wed) 16:26:06 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * vm_macro.def : fix to inherit visibility on - NODE_SUPER method invocation - - -2006-11-10(Fri) 09:13:46 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * iseq.c : fixed GC debugging outputs - - * rb/parse.rb : fixed output format - - -2006-11-04(Sat) 09:46:50 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * compile.c : fix a bug of peephole optimization and enable - regexp optimization - - -2006-08-21(Mon) 05:27:48 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * vm.c : clear callee_id ([yarv-dev:1073]) - - -2006-08-17(Thu) 22:14:15 +0900 Koichi Sasada - - * thread_pthread.h : fix error message - - -2006-08-17(Thu) 12:23:52 +0900 Koichi Sasada - - * 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 - - * class.c (clone_method) : check undef-ed method ([yarv-dev:1068]) - - -2006-08-15(Tue) 15:07:43 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * yarvcore.c : fix [yarv-dev:1040] bug - - -2006-07-18(Tue) 18:45:52 +0900 Koichi Sasada - - * some files : set property "svn:eol-style" as native - - -2006-07-18(Tue) 18:35:55 +0900 Koichi Sasada - - * 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 - - * 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 - - * yarv_version.h : 0.4.1 - - * Changes : ditto - - -2006-07-12(Wed) 13:38:03 +0900 Koichi Sasada - - * 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 - - * 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 - - * test/ruby/test_dir.rb: new test test_JVN_13947696. - - -2006-07-11(Tue) 21:26:41 +0900 Minero Aoki - - * test/ruby/test_alias.rb: new test test_JVN_83768862. - - -2006-07-11(Tue) 11:33:49 +0900 Koichi Sasada - - * compile.c : fix compile error on C90 - - -2006-07-11(Tue) 10:40:23 +0900 Koichi Sasada - - * 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 - - * lib/yasm.rb : pass builder object if block arity == 1 - - -2006-07-05(Wed) 11:23:50 +0900 Koichi Sasada - - * 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 - - * rb/compile.rb : added - - * yarvtest/yarvtest.rb : disable load/store test - - -2006-07-04(Tue) 18:17:15 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * parse.y : prohibit tail call optimization to mark vparsr - object - - -2006-05-25(Thu) 15:37:11 +0900 Koichi Sasada - - * 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 - - * intern.h : fix prototype declarations for last re.c change - - -2006-05-18(Thu) 12:12:03 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * thread_pthread.h : experimental support of thread cache - - -2006-04-25(Tue) 22:30:14 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * rb/yasm.rb : move to lib/yasm.rb - - -2006-04-09(Sun) 03:04:04 +0900 Koichi Sasada - - * 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 - - * compile.c : fix miss about range of catch "next" - - * eval.c : add braces - - -2006-04-07(Fri) 11:09:43 +0900 Koichi Sasada - - * 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 - - * lib/delegate.rb (DelegateClass): do not delegate #send and - #funcall. - - -2006-02-27(Mon) 22:39:17 +0900 Minero Aoki - - * 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 - - * 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 - - * ext/syslog: imported from Ruby CVS trunk HEAD. - - * ext/racc: ditto. - - -2006-02-27(Mon) 12:47:10 +0900 Minero Aoki - - * parse.y: follow coding style change. - - -2006-02-27(Mon) 11:53:07 +0900 Minero Aoki - - * 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 - - * 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 - - * lib/open3.rb: imported from Ruby CVS trunk HEAD (rev 1.12). - - -2006-02-23(Thu) 15:10:09 +0900 Koichi Sasada - - * 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 - - * 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 - - * ext/win32ole/.cvsignore : removed - - * ext/win32ole/.document : ditto - - -2006-02-22(Wed) 18:17:06 +0900 Koichi Sasada - - * yarvcore.c : set Binding as YARVCore::VM::Binding - - -2006-02-22(Wed) 12:54:45 +0900 Koichi Sasada - - * ChangeLog : remove needless line - - -2006-02-22(Wed) 12:49:02 +0900 Koichi Sasada - - * 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 - - * test.rb : removed - - -2006-02-22(Wed) 11:12:17 +0900 Koichi Sasada - - * README : renewed - - * version.c : fixed version message - - * yarvext/ : removed - - -2006-02-22(Wed) 10:33:04 +0900 Koichi Sasada - - * 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 - - * configure.in : remove last commit - - -2006-02-22(Wed) 06:18:53 +0900 Koichi Sasada - - * configure.in : add default program prefix "-yarv" - - -2006-02-22(Wed) 06:11:36 +0900 Koichi Sasada - - * 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 - - * 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 - - * yarvcore.c : initialize each stack of thread - - -2006-02-22(Wed) 00:02:08 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * thread.c : fix to synchronize signal_thread_list access - and fix typo - - -2006-02-20(Mon) 17:54:58 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * test/ruby/test_eval.rb: now Object#funcall is defined. - - -2006-02-20(Mon) 11:04:32 +0900 Minero Aoki - - * lib/irb/lc/ja/CVS: removed. - - -2006-02-20(Mon) 10:55:59 +0900 Minero Aoki - - * 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 - - * yarvcore.c (Init_yarvcore): fix typo (duo -> dup). - - -2006-02-19(Sun) 01:27:08 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * insns.def, vm.c : use th_yield_setup_args at yield and Proc#call - - -2006-02-16(Thu) 19:51:52 +0900 Koichi Sasada - - * 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 - - * 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 - - * lib/runit: forgot to commit. - - -2006-02-15(Wed) 22:12:25 +0900 Minero Aoki - - * 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 - - * 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 - - * 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 - - * test/rss: imported from Ruby CVS trunk HEAD. - - -2006-02-15(Wed) 19:47:51 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * insns.def : fix stack calc of send - - * sample/test.rb : remove SEGV causing code - - -2006-02-14(Tue) 02:24:21 +0900 Minero Aoki - - * 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 - - * 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 - - * 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 - - * test/ruby/test_class.rb: new file (imported from rubicon). - - -2006-02-14(Tue) 01:32:23 +0900 Minero Aoki - - * test/ruby/test_module.rb: ignore PP mixins. - - -2006-02-14(Tue) 01:24:56 +0900 Minero Aoki - - * test/ruby/test_lambda.rb: removed (->(){...} syntax is - obsolete). - - -2006-02-14(Tue) 01:20:54 +0900 Minero Aoki - - * test/ruby/test_module.rb: import many tests from rubicon. - - -2006-02-14(Tue) 01:06:57 +0900 Koichi Sasada - - * 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 - - * 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 - - * test/ruby/test_eval.rb: fix typo. - - * test/ruby/test_signal.rb: unlock tests. - - -2006-02-13(Mon) 23:53:27 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * compile.c : fix indent - - * compile.c : fix to prohibit "redo" from eval expression - - -2006-02-13(Mon) 20:36:06 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * test/ruby/test_proc.rb: method names were wrongly duplicated. - - -2006-02-08(Wed) 21:30:01 +0900 Minero Aoki - - * 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 - - * lib/find.rb: new file (imported from ruby CVS trunk HEAD, - rev 1.15). - - -2006-02-07(Tue) 17:58:18 +0900 Koichi Sasada - - * 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 - - * 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 - - * test/ruby/test_hash.rb: import many tests from rubicon. - - -2006-02-04(Sat) 18:36:41 +0900 Minero Aoki - - * test/ruby/test_array.rb: import many tests from rubicon. - - -2006-02-04(Sat) 17:47:44 +0900 Minero Aoki - - * 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 - - * test/ruby/test_readpartial.rb: lib/timeout.rb is not implemented - yet. - - -2006-02-04(Sat) 16:22:38 +0900 Minero Aoki - - * 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 - - * 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 - - * test/ruby/test_string.rb: import many tests from rubicon. - - -2006-02-02(Thu) 23:20:13 +0900 Minero Aoki - - * 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 - - * test/ruby/test_proc.rb: test [yarv-dev:777]. - - -2006-02-01(Wed) 03:51:39 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * vm.c: coding style change only. - - -2006-01-04(Wed) 14:12:47 +0900 Koichi Sasada - - * 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 - - * 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 - - * lib/benchmark.rb: new file (imported from original ruby, rev - 1.10). - - -2006-01-01(Sun) 03:51:10 +0900 Minero Aoki - - * 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 - - * variable.c: add prototype. - - * eval.c: ditto. - - * eval_load.c: ditto. - - -2006-01-01(Sun) 02:41:21 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * test/ruby/test_eval.rb: more tests for - module_eval/instance_eval. - - -2005-12-30(Fri) 05:06:49 +0900 Koichi Sasada - - * 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 - - * compile.c, yarvcore.h : - remvoe needless yarv_iseq_t#rewind_frame_size - - -2005-12-29(Thu) 11:17:58 +0900 Koichi Sasada - - * 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 - - * vm.c : fix setting of Proc cref ([yarv-dev:741]) - - * yarvcore.c : fix indent - - -2005-12-29(Thu) 00:17:03 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * test/ruby/test_basicinstructions.rb: new file. - - -2005-12-26(Mon) 08:40:02 +0900 Koichi Sasada - - * vm.c (eval_get_ev_const) : fix to skip nil - - -2005-12-26(Mon) 08:27:15 +0900 Koichi Sasada - - * insnhelper.h : fix GET_CVAR_EV_KLASS [yarv-dev:703] - - -2005-12-26(Mon) 07:51:01 +0900 Koichi Sasada - - * 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 - - * 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 - - * test/ruby/test_alias.rb: do not use unimplemented defined?. - - -2005-12-26(Mon) 02:00:11 +0900 Minero Aoki - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * yarv_version.h, Changes : 0.3.3 - - -2005-12-20(Tue) 04:04:45 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * vm_macro.def (macro_eval_invoke_method): fix printf type mismatch - for LP64 system. - - -2005-12-14(Wed) 03:49:40 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * compile.c, compile.h, yarvcore.c : remove "iseqobj" - variables and rename to "iseq" - - -2005-11-21(Mon) 07:31:50 +0900 Koichi Sasada - - * 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 - - * compile.c : optimize condition in literal - - * thread_win32.h : fix win32 thread function prototype - - -2005-11-20(Sun) 17:58:24 +0900 Koichi Sasada - - * compile.c : fix NODE_AND/OR bug - - * eval.c : support rb_frame_this_func() - - -2005-11-20(Sun) 12:32:31 +0900 Koichi Sasada - - * 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 - - * import ruby 1.9.0 (2005-11-18) - - -2005-11-19(Sat) 06:08:37 +0900 Koichi Sasada - - * lib/test : added - - -2005-11-19(Sat) 05:48:50 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * compile.c : push and pop values after checkincludearray for - stack caching - - -2005-10-31(Mon) 15:37:09 +0900 Koichi Sasada - - * 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 - - * yarvtest/test_method.rb : fix test - - -2005-10-28(Fri) 08:43:29 +0900 Koichi Sasada - - * 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 - - * some files : import from ruby 1.9.0 (2005-10-12) - - -2005-10-16(Sun) 14:50:02 +0900 Koichi Sasada - - * insns.def, compile.c, yarvcore.h, yarvcore.c : add insns "bitblt" and "answer" - - -2005-10-11(Tue) 17:01:13 +0900 Koichi Sasada - - * yarv_version.h, Changes : 0.3.2 - - -2005-10-11(Tue) 13:35:25 +0900 Koichi Sasada - - * 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 - - * yarvcore.h : add member variable "interrupt_flag" to yarv_thread_t - - -2005-10-05(Wed) 21:20:13 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * thread_pthread.h : add "system_working" global variable - - -2005-10-02(Sun) 01:23:44 +0900 Koichi Sasada - - * thread.c : add raw gets (for test), and fix indent - - -2005-10-01(Sat) 23:06:21 +0900 Koichi Sasada - - * 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 - - * 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 - - * thread.c : support join with timeout - - * yarvcore.h : use GET_VM() - - -2005-09-30(Fri) 14:59:29 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * eval.c : remove debug print - - -2005-09-27(Tue) 16:41:47 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * eval* : remove dependency to ruby_dyna_vars and ruby_class - - -2005-09-23(Fri) 20:39:14 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * vm_opts.h : added - - * yarvcore.h, rb/insns2vm.h : use vm_opts.h - - -2005-09-10(Sat) 04:53:22 +0900 Koichi Sasada - - * 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 - - * insns.def, compile.c : add splatarray - - * yarvtest/test_massign.rb : add tests for above - - -2005-08-31(Wed) 22:55:15 +0900 Koichi Sasada - - * 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 - - * rb/ir.rb : add some check - - * import today's ruby HEAD - - -2005-08-18(Thu) 23:29:52 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * compile.c : support nested massign - - * yarvtest/test_massign.rb : add tests for above - - -2005-08-16(Tue) 10:25:29 +0900 Koichi Sasada - - * eval.c : support rb_yield_0 with 0 args - - -2005-08-16(Tue) 09:09:21 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * base ruby : ruby 1.9.0 (2005-08-15) - - -2005-08-16(Tue) 03:54:17 +0900 Koichi Sasada - - * 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 - - * Changes : 0.3.0 - - -2005-08-15(Mon) 17:56:09 +0900 Koichi Sasada - - * yarvcore.c : fix to add prototype - - * all files : propset svn:eol-style native - - -2005-08-15(Mon) 10:48:53 +0900 Koichi Sasada - - * eval.c : support rb_load - - -2005-08-15(Mon) 09:42:01 +0900 Koichi Sasada - - * 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 - - * 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 - - * README : add description - - * yarvext/depend : move to topdir/depend - -2005-08-14(Sun) 01:50:43 +0900 Koichi Sasada - - * merge yarv to ruby (prepare) - - * make yarvext/ to build as extension - - -2005-08-13(Sat) 09:36:26 +0900 Koichi Sasada - - * 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 - - * version.h, Changes : 0.2.2 - - -2005-08-08(Mon) 17:17:50 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 "
" - - -2005-07-29(Fri) 13:20:19 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * insns.def : don't use fmod on AMD64 - - -2005-07-08(Fri) 00:14:22 +0900 Koichi Sasada - - * Changes : added - - -2005-07-07(Thu) 23:54:37 +0900 Koichi Sasada - - * version.h : 0.3.0 - - -2005-07-07(Thu) 23:52:03 +0900 Koichi Sasada - - * 0.2.1 : released - - -2005-07-07(Thu) 23:50:22 +0900 Koichi Sasada - - * version.h : 0.2.1 - - -2005-07-07(Thu) 23:47:55 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * insns.def : add GC protect for opt_aset - - -2005-07-02(Sat) 03:49:17 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * vm.c : fix method search - - -2005-06-28(Tue) 22:26:34 +0900 Koichi Sasada - - * extconf.rb : fix options - - -2005-06-28(Tue) 21:50:58 +0900 Koichi Sasada - - * benchmark/run.rb : fix output format - - -2005-06-28(Tue) 21:34:54 +0900 Koichi Sasada - - * depend : add option TOPT to test rules - - * benchmark/run.rb : fix output format - - -2005-06-28(Tue) 21:15:54 +0900 Koichi Sasada - - * 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 - - * extconf.rb, compile.c, tmpl/optinsn.inc.tmpl, vm.c : - change extconf options - -2005-06-28(Tue) 13:20:59 +0900 Koichi Sasada - - * benchmark/run.rb : add -y, --yarv-only option - - * depend : add BOPT to tbench rule - - -2005-06-27(Mon) 23:31:12 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * yarvcore.c : fix to remove compiler warning - - * version.h : 0.2.1 - - -2005-06-07(Tue) 08:16:22 +0900 Koichi Sasada - - * 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 - - * 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 - - * compile.c : fix previous commit - - -2005-06-04(Sat) 15:56:21 +0900 Koichi Sasada - - * compile.c : fix stack caching (after jump state) - - -2005-06-04(Sat) 09:12:13 +0900 Koichi Sasada - - * compile.c : fix some point for previous commit - - -2005-06-04(Sat) 07:31:21 +0900 Koichi Sasada - - * 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 - - * 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 - - * compile.c : apply flow optimization for while/until statement - - -2005-03-04(Fri) 19:34:32 +0900 Koichi Sasada - - * rb/insns2vm.rb : fix category (comment) - - * depend : remove space betweeen target name and colon - - -2005-03-04(Fri) 15:55:51 +0900 Koichi Sasada - - * tmpl/yarvarch.ja : fix typo - - -2005-03-04(Fri) 13:30:19 +0900 Koichi Sasada - - * 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 - - * extconf.rb : remove vm_evalbody.inc call_cfunc.inc from clean target - - -2005-03-03(Thu) 00:54:15 +0900 Koichi Sasada - - * tmpl/insns.inc.tmpl : fixed typo - - * insns.def : store th->pc to current pc - - -2005-03-03(Thu) 00:31:47 +0900 Koichi Sasada - - * tmpl/yarvarch.ja, doc/yarv.rb : write current architecture of yarv - - -2005-03-01(Tue) 13:50:04 +0900 Koichi Sasada - - * 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 - - * 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 - - * rb/yasm.rb : added - - -2005-02-24(Thu) 01:13:33 +0900 Koichi Sasada - - * compile.c : remove useless statements - - -2005-02-24(Thu) 00:46:44 +0900 Koichi Sasada - - * 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 - - * vm.c, yarvcore.c : thread_svar added and fix svar location - - -2005-02-21(Mon) 08:38:02 +0900 Koichi Sasada - - * 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 - - * yarvcore.c (compile_string) : remove null check of node - - -2005-02-19(Sat) 03:52:45 +0900 Koichi Sasada - - * version.h : 0.1.1 - - -2005-02-18(Fri) 20:57:18 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * compile.c : fix block passing - and block argument - - -2005-02-18(Fri) 05:52:41 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * ite.rb : added (ruby -rite [script file]) - - -2005-02-09(Wed) 02:25:43 +0900 Koichi Sasada - - * 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 - - * test/test_block.rb : add break test to test_times - - -2005-01-25(Tue) 03:34:04 +0900 Koichi Sasada - - * 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 - - * 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 - - * benchmark/run.rb : check ENV['RUBY'] to use ruby binary - - -2005-01-10(Mon) 08:44:40 +0900 Koichi Sasada - - * version.h : 0.1.0 - - -2005-01-09(Sun) 22:01:29 +0900 Koichi Sasada - - * repository : svn propset svn:eol-style native *.c *.h tmpl/*.tmpl - - -2005-01-09(Sun) 21:48:38 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * yarvcore.c, vm.c, evalc.patch : support making backtrace - (incompatible with current ruby interpreter) - - -2005-01-08(Sat) 11:25:46 +0900 Koichi Sasada - - * 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 - - * 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 - - * yarv : trying to support NODE_IFUNC (rb_iterate) - - -2005-01-05(Wed) 06:50:42 +0900 Koichi Sasada - - * 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 - - * 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 - - * README : fix version - - -2005-01-04(Tue) 09:57:25 +0900 Koichi Sasada - - * ToDo : reflect current status - - -2005-01-04(Tue) 09:43:54 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * benchmark/bm_super.rb : fix bug (remove infinite loop) - - -2005-01-01(Sat) 23:45:49 +0900 Koichi Sasada - - * benchmark/bm_z?super.rb : added - - -2005-01-01(Sat) 23:37:38 +0900 Koichi Sasada - - * benchmark/bmx_so_object.rb : rename to benchmark/bm_so_object.rb - - -2005-01-01(Sat) 23:19:02 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * insns.def : add getspecial insn - - * compile.c : support NODE_NTH_REF, NODE_BACK_REF - - -2005-01-01(Sat) 06:53:38 +0900 Koichi Sasada - - * 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 - - * 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 - - * insns.def : fix newhash - - -2004-12-15(Wed) 13:29:27 +0900 Koichi Sasada - - * yarvcore.c : add version string - - * compile.c : fix rescure clause bug - - -2004-12-14(Tue) 22:46:30 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * rb/insns2vm.rb : add macro INSN_IS_SC() - - -2004-12-11(Sat) 10:51:44 +0900 Koichi Sasada - - * 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 - - * benchmark/*.rb : modify - - * extconf.rb : add $cleanfiles - - -2004-12-08(Wed) 13:01:38 +0900 Koichi Sasada - - * compile.c, insns.def : change to disable stack caching - - -2004-12-07(Tue) 19:37:13 +0900 Koichi Sasada - - * rb/insns2vm.rb : add default after - - * insns.def : fix to work on stack caching - - -2004-12-07(Tue) 15:07:13 +0900 Koichi Sasada - - * 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 - - * extconf.rb : add vm.asm target if compiler is gcc - - -2004-12-06(Mon) 09:56:24 +0900 Koichi Sasada - - * 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 - - * compile.c, opt_operand.def, rb/insns2vm.rb, depend : - support operand unification - - -2004-12-05(Sun) 03:16:10 +0900 Koichi Sasada - - * vm.c, insns.def : speed up throw/catch scheme - - -2004-12-05(Sun) 01:47:05 +0900 Koichi Sasada - - * vm.c : fix catch handler bugs - - * test/test_jump.rb : test_complex_jump added - - -2004-12-03(Fri) 20:39:05 +0900 Koichi Sasada - - * benchmark/contrib/mcq.rb : added - (from URABE Syouhei) - - -2004-12-03(Fri) 20:35:28 +0900 Koichi Sasada - - * vm.c : support break in rb_yield block - - -2004-12-03(Fri) 14:26:35 +0900 Koichi Sasada - - * 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 - - * opt_operand.def : added - - -2004-12-02(Thu) 13:20:41 +0900 Koichi Sasada - - * 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 - - * 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 - - * benchmark/bm_so_array.rb : added - - * benchmark/bm_so_matrix.rb : added - - -2004-11-30(Tue) 14:11:30 +0900 Koichi Sasada - - * rb/getrev.rb : added - - * yarvcore.c : add YARVCore::REV, YARVCore::DATE constant - - -2004-11-30(Tue) 13:05:42 +0900 Koichi Sasada - - * compile.c : support NODE_OP_ASGN1 (incomplete) - - * insns.def : add dupn - - -2004-11-30(Tue) 08:52:01 +0900 Koichi Sasada - - * version.h : 0.0.0.f - - -2004-11-30(Tue) 08:43:59 +0900 Koichi Sasada - - * 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 - - * 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 - - * yarvcore.c : free -> ruby_xfree - - -2004-11-26(Fri) 02:11:11 +0900 Koichi Sasada - - * vm,c : fix bug - - -2004-11-22(Mon) 11:19:48 +0900 Koichi Sasada - - * 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 - - * 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 - - * vm.c : support Proc#call - - * test/test_proc.rb : added - - -2004-11-19(Fri) 18:04:10 +0900 Koichi Sasada - - * insns.def, vm.c : support creating Proc object - - -2004-11-15(Mon) 14:19:27 +0900 Koichi Sasada - - * 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 - - * 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 - - * add "vm_" prefix to (block_object, proc_object, env_object) - - -2004-11-03(Wed) 15:52:14 +0900 Koichi Sasada - - * 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 - - * 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 - - * compile.c : push exception iseq to iseqobj->iseq_mark_ary - to mark for GC - - -2004-10-10(Sun) 16:25:03 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * many many files: change stack frame design - - -2004-09-16(Thu) 08:51:37 +0900 Koichi Sasada - - * compile.c, yarvcore.h : support 'return' from method - in ensure clause - - -2004-09-13(Mon) 21:56:40 +0900 Koichi Sasada - - * 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 - - * compile.c, yarvcore.h : support redo/next/break in - while/until - - -2004-09-13(Mon) 08:50:19 +0900 Koichi Sasada - - * test/test_jump.rb : added(correctly) - - * benchamark/bm_(ensure|rescue|simplereturn).rb added - - -2004-09-12(Sun) 23:30:20 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * test/test_exception.rb : added - - -2004-09-01(Wed) 13:15:14 +0900 Koichi Sasada - - * vm.c, insns.def : implementing exception handling - - -2004-09-01(Wed) 00:18:54 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * compile.c : support NODE_DASGN - - * test/test_block.rb : add test - - -2004-08-28(Sat) 08:13:04 +0900 Koichi Sasada - - * 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 - - * test/test_block.rb : fix block parameter name - - -2004-08-28(Sat) 07:27:52 +0900 Koichi Sasada - - * 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 - - * compile.c(iseq_compile) : remove parameter iseqtype - (this information can access via self) - -2004-08-27(Fri) 17:13:35 +0900 Koichi Sasada - - * 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 - - * 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 - - * insns.def : fix getconstant/setconstant/classdef - - -2004-08-25(Wed) 14:27:10 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * 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 - - * test/test_method.rb : added - - -2004-05-19(Wed) 22:56:09 +0900 Koichi Sasada - - * 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 - - * 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 - - * 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 - - * compile.c : support NODE_XDSTR - - * test/test_bin.rb : add test for above change - - -2004-05-18(Tue) 09:46:33 +0900 Koichi Sasada - - * insns.def(send) : store regs before call_cfunc - - -2004-05-18(Tue) 08:55:17 +0900 Koichi Sasada - - * 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 - - * 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 - - * version.h, insns.def, yarvcore.c : add FAKE_INLINE_METHOD_CACHE - - -2004-05-17(Mon) 09:05:53 +0900 Koichi Sasada - - * compile.c : fix generating opt_* insn process - - -2004-05-17(Mon) 08:58:49 +0900 Koichi Sasada - - * benchmark/(bm_tarai.rb, bm_fib.rb) : added - - -2004-05-17(Mon) 08:20:12 +0900 Koichi Sasada - - * 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 - - * 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 - - * change frame structure(debugging) - - -2004-05-14(Fri) 15:06:02 +0900 Koichi Sasada - - * insns2vm.rb : support file name arguments - - -2004-05-14(Fri) 04:33:09 +0900 Koichi Sasada - - * insns.def : support (easy) constant - - -2004-05-12(Wed) 01:51:48 +0900 Koichi Sasada - - * rb/insns2vm.b : set directory prefix - - * disasm.c : fix bug - - -2004-05-12(Wed) 00:00:17 +0900 Koichi Sasada - - * vm.h, compiler.h, version.h : move *DEBUG defs to version.h - - -2004-05-11(Tue) 23:00:11 +0900 Koichi Sasada - - * 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 - - * 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 + + * bin/* : ruby/trunk/bin 11437 + + +Sun Dec 31 17:42:05 2006 Koichi Sasada + + * eval.c : remove old Kernel#funcall definition + + +2006-12-30(Sat) 07:59:26 +0900 Koichi Sasada + + * 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 + + * 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 + + * compile.c : remove obsolete codes + + * insns.def : fix a comment of getconstant + + +2006-12-13(Wed) 16:26:06 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * vm_macro.def : fix to inherit visibility on + NODE_SUPER method invocation + + +2006-11-10(Fri) 09:13:46 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * iseq.c : fixed GC debugging outputs + + * rb/parse.rb : fixed output format + + +2006-11-04(Sat) 09:46:50 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * compile.c : fix a bug of peephole optimization and enable + regexp optimization + + +2006-08-21(Mon) 05:27:48 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * vm.c : clear callee_id ([yarv-dev:1073]) + + +2006-08-17(Thu) 22:14:15 +0900 Koichi Sasada + + * thread_pthread.h : fix error message + + +2006-08-17(Thu) 12:23:52 +0900 Koichi Sasada + + * 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 + + * class.c (clone_method) : check undef-ed method ([yarv-dev:1068]) + + +2006-08-15(Tue) 15:07:43 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * yarvcore.c : fix [yarv-dev:1040] bug + + +2006-07-18(Tue) 18:45:52 +0900 Koichi Sasada + + * some files : set property "svn:eol-style" as native + + +2006-07-18(Tue) 18:35:55 +0900 Koichi Sasada + + * 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 + + * 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 + + * yarv_version.h : 0.4.1 + + * Changes : ditto + + +2006-07-12(Wed) 13:38:03 +0900 Koichi Sasada + + * 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 + + * 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 + + * test/ruby/test_dir.rb: new test test_JVN_13947696. + + +2006-07-11(Tue) 21:26:41 +0900 Minero Aoki + + * test/ruby/test_alias.rb: new test test_JVN_83768862. + + +2006-07-11(Tue) 11:33:49 +0900 Koichi Sasada + + * compile.c : fix compile error on C90 + + +2006-07-11(Tue) 10:40:23 +0900 Koichi Sasada + + * 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 + + * lib/yasm.rb : pass builder object if block arity == 1 + + +2006-07-05(Wed) 11:23:50 +0900 Koichi Sasada + + * 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 + + * rb/compile.rb : added + + * yarvtest/yarvtest.rb : disable load/store test + + +2006-07-04(Tue) 18:17:15 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * parse.y : prohibit tail call optimization to mark vparsr + object + + +2006-05-25(Thu) 15:37:11 +0900 Koichi Sasada + + * 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 + + * intern.h : fix prototype declarations for last re.c change + + +2006-05-18(Thu) 12:12:03 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * thread_pthread.h : experimental support of thread cache + + +2006-04-25(Tue) 22:30:14 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * rb/yasm.rb : move to lib/yasm.rb + + +2006-04-09(Sun) 03:04:04 +0900 Koichi Sasada + + * 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 + + * compile.c : fix miss about range of catch "next" + + * eval.c : add braces + + +2006-04-07(Fri) 11:09:43 +0900 Koichi Sasada + + * 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 + + * lib/delegate.rb (DelegateClass): do not delegate #send and + #funcall. + + +2006-02-27(Mon) 22:39:17 +0900 Minero Aoki + + * 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 + + * 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 + + * ext/syslog: imported from Ruby CVS trunk HEAD. + + * ext/racc: ditto. + + +2006-02-27(Mon) 12:47:10 +0900 Minero Aoki + + * parse.y: follow coding style change. + + +2006-02-27(Mon) 11:53:07 +0900 Minero Aoki + + * 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 + + * 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 + + * lib/open3.rb: imported from Ruby CVS trunk HEAD (rev 1.12). + + +2006-02-23(Thu) 15:10:09 +0900 Koichi Sasada + + * 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 + + * 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 + + * ext/win32ole/.cvsignore : removed + + * ext/win32ole/.document : ditto + + +2006-02-22(Wed) 18:17:06 +0900 Koichi Sasada + + * yarvcore.c : set Binding as YARVCore::VM::Binding + + +2006-02-22(Wed) 12:54:45 +0900 Koichi Sasada + + * ChangeLog : remove needless line + + +2006-02-22(Wed) 12:49:02 +0900 Koichi Sasada + + * 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 + + * test.rb : removed + + +2006-02-22(Wed) 11:12:17 +0900 Koichi Sasada + + * README : renewed + + * version.c : fixed version message + + * yarvext/ : removed + + +2006-02-22(Wed) 10:33:04 +0900 Koichi Sasada + + * 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 + + * configure.in : remove last commit + + +2006-02-22(Wed) 06:18:53 +0900 Koichi Sasada + + * configure.in : add default program prefix "-yarv" + + +2006-02-22(Wed) 06:11:36 +0900 Koichi Sasada + + * 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 + + * 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 + + * yarvcore.c : initialize each stack of thread + + +2006-02-22(Wed) 00:02:08 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * thread.c : fix to synchronize signal_thread_list access + and fix typo + + +2006-02-20(Mon) 17:54:58 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * test/ruby/test_eval.rb: now Object#funcall is defined. + + +2006-02-20(Mon) 11:04:32 +0900 Minero Aoki + + * lib/irb/lc/ja/CVS: removed. + + +2006-02-20(Mon) 10:55:59 +0900 Minero Aoki + + * 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 + + * yarvcore.c (Init_yarvcore): fix typo (duo -> dup). + + +2006-02-19(Sun) 01:27:08 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * insns.def, vm.c : use th_yield_setup_args at yield and Proc#call + + +2006-02-16(Thu) 19:51:52 +0900 Koichi Sasada + + * 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 + + * 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 + + * lib/runit: forgot to commit. + + +2006-02-15(Wed) 22:12:25 +0900 Minero Aoki + + * 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 + + * 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 + + * 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 + + * test/rss: imported from Ruby CVS trunk HEAD. + + +2006-02-15(Wed) 19:47:51 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * insns.def : fix stack calc of send + + * sample/test.rb : remove SEGV causing code + + +2006-02-14(Tue) 02:24:21 +0900 Minero Aoki + + * 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 + + * 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 + + * 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 + + * test/ruby/test_class.rb: new file (imported from rubicon). + + +2006-02-14(Tue) 01:32:23 +0900 Minero Aoki + + * test/ruby/test_module.rb: ignore PP mixins. + + +2006-02-14(Tue) 01:24:56 +0900 Minero Aoki + + * test/ruby/test_lambda.rb: removed (->(){...} syntax is + obsolete). + + +2006-02-14(Tue) 01:20:54 +0900 Minero Aoki + + * test/ruby/test_module.rb: import many tests from rubicon. + + +2006-02-14(Tue) 01:06:57 +0900 Koichi Sasada + + * 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 + + * 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 + + * test/ruby/test_eval.rb: fix typo. + + * test/ruby/test_signal.rb: unlock tests. + + +2006-02-13(Mon) 23:53:27 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * compile.c : fix indent + + * compile.c : fix to prohibit "redo" from eval expression + + +2006-02-13(Mon) 20:36:06 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * test/ruby/test_proc.rb: method names were wrongly duplicated. + + +2006-02-08(Wed) 21:30:01 +0900 Minero Aoki + + * 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 + + * lib/find.rb: new file (imported from ruby CVS trunk HEAD, + rev 1.15). + + +2006-02-07(Tue) 17:58:18 +0900 Koichi Sasada + + * 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 + + * 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 + + * test/ruby/test_hash.rb: import many tests from rubicon. + + +2006-02-04(Sat) 18:36:41 +0900 Minero Aoki + + * test/ruby/test_array.rb: import many tests from rubicon. + + +2006-02-04(Sat) 17:47:44 +0900 Minero Aoki + + * 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 + + * test/ruby/test_readpartial.rb: lib/timeout.rb is not implemented + yet. + + +2006-02-04(Sat) 16:22:38 +0900 Minero Aoki + + * 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 + + * 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 + + * test/ruby/test_string.rb: import many tests from rubicon. + + +2006-02-02(Thu) 23:20:13 +0900 Minero Aoki + + * 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 + + * test/ruby/test_proc.rb: test [yarv-dev:777]. + + +2006-02-01(Wed) 03:51:39 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * vm.c: coding style change only. + + +2006-01-04(Wed) 14:12:47 +0900 Koichi Sasada + + * 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 + + * 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 + + * lib/benchmark.rb: new file (imported from original ruby, rev + 1.10). + + +2006-01-01(Sun) 03:51:10 +0900 Minero Aoki + + * 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 + + * variable.c: add prototype. + + * eval.c: ditto. + + * eval_load.c: ditto. + + +2006-01-01(Sun) 02:41:21 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * test/ruby/test_eval.rb: more tests for + module_eval/instance_eval. + + +2005-12-30(Fri) 05:06:49 +0900 Koichi Sasada + + * 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 + + * compile.c, yarvcore.h : + remvoe needless yarv_iseq_t#rewind_frame_size + + +2005-12-29(Thu) 11:17:58 +0900 Koichi Sasada + + * 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 + + * vm.c : fix setting of Proc cref ([yarv-dev:741]) + + * yarvcore.c : fix indent + + +2005-12-29(Thu) 00:17:03 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * test/ruby/test_basicinstructions.rb: new file. + + +2005-12-26(Mon) 08:40:02 +0900 Koichi Sasada + + * vm.c (eval_get_ev_const) : fix to skip nil + + +2005-12-26(Mon) 08:27:15 +0900 Koichi Sasada + + * insnhelper.h : fix GET_CVAR_EV_KLASS [yarv-dev:703] + + +2005-12-26(Mon) 07:51:01 +0900 Koichi Sasada + + * 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 + + * 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 + + * test/ruby/test_alias.rb: do not use unimplemented defined?. + + +2005-12-26(Mon) 02:00:11 +0900 Minero Aoki + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * yarv_version.h, Changes : 0.3.3 + + +2005-12-20(Tue) 04:04:45 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * vm_macro.def (macro_eval_invoke_method): fix printf type mismatch + for LP64 system. + + +2005-12-14(Wed) 03:49:40 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * compile.c, compile.h, yarvcore.c : remove "iseqobj" + variables and rename to "iseq" + + +2005-11-21(Mon) 07:31:50 +0900 Koichi Sasada + + * 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 + + * compile.c : optimize condition in literal + + * thread_win32.h : fix win32 thread function prototype + + +2005-11-20(Sun) 17:58:24 +0900 Koichi Sasada + + * compile.c : fix NODE_AND/OR bug + + * eval.c : support rb_frame_this_func() + + +2005-11-20(Sun) 12:32:31 +0900 Koichi Sasada + + * 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 + + * import ruby 1.9.0 (2005-11-18) + + +2005-11-19(Sat) 06:08:37 +0900 Koichi Sasada + + * lib/test : added + + +2005-11-19(Sat) 05:48:50 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * compile.c : push and pop values after checkincludearray for + stack caching + + +2005-10-31(Mon) 15:37:09 +0900 Koichi Sasada + + * 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 + + * yarvtest/test_method.rb : fix test + + +2005-10-28(Fri) 08:43:29 +0900 Koichi Sasada + + * 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 + + * some files : import from ruby 1.9.0 (2005-10-12) + + +2005-10-16(Sun) 14:50:02 +0900 Koichi Sasada + + * insns.def, compile.c, yarvcore.h, yarvcore.c : add insns "bitblt" and "answer" + + +2005-10-11(Tue) 17:01:13 +0900 Koichi Sasada + + * yarv_version.h, Changes : 0.3.2 + + +2005-10-11(Tue) 13:35:25 +0900 Koichi Sasada + + * 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 + + * yarvcore.h : add member variable "interrupt_flag" to yarv_thread_t + + +2005-10-05(Wed) 21:20:13 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * thread_pthread.h : add "system_working" global variable + + +2005-10-02(Sun) 01:23:44 +0900 Koichi Sasada + + * thread.c : add raw gets (for test), and fix indent + + +2005-10-01(Sat) 23:06:21 +0900 Koichi Sasada + + * 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 + + * 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 + + * thread.c : support join with timeout + + * yarvcore.h : use GET_VM() + + +2005-09-30(Fri) 14:59:29 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * eval.c : remove debug print + + +2005-09-27(Tue) 16:41:47 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * eval* : remove dependency to ruby_dyna_vars and ruby_class + + +2005-09-23(Fri) 20:39:14 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * vm_opts.h : added + + * yarvcore.h, rb/insns2vm.h : use vm_opts.h + + +2005-09-10(Sat) 04:53:22 +0900 Koichi Sasada + + * 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 + + * insns.def, compile.c : add splatarray + + * yarvtest/test_massign.rb : add tests for above + + +2005-08-31(Wed) 22:55:15 +0900 Koichi Sasada + + * 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 + + * rb/ir.rb : add some check + + * import today's ruby HEAD + + +2005-08-18(Thu) 23:29:52 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * compile.c : support nested massign + + * yarvtest/test_massign.rb : add tests for above + + +2005-08-16(Tue) 10:25:29 +0900 Koichi Sasada + + * eval.c : support rb_yield_0 with 0 args + + +2005-08-16(Tue) 09:09:21 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * base ruby : ruby 1.9.0 (2005-08-15) + + +2005-08-16(Tue) 03:54:17 +0900 Koichi Sasada + + * 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 + + * Changes : 0.3.0 + + +2005-08-15(Mon) 17:56:09 +0900 Koichi Sasada + + * yarvcore.c : fix to add prototype + + * all files : propset svn:eol-style native + + +2005-08-15(Mon) 10:48:53 +0900 Koichi Sasada + + * eval.c : support rb_load + + +2005-08-15(Mon) 09:42:01 +0900 Koichi Sasada + + * 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 + + * 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 + + * README : add description + + * yarvext/depend : move to topdir/depend + +2005-08-14(Sun) 01:50:43 +0900 Koichi Sasada + + * merge yarv to ruby (prepare) + + * make yarvext/ to build as extension + + +2005-08-13(Sat) 09:36:26 +0900 Koichi Sasada + + * 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 + + * version.h, Changes : 0.2.2 + + +2005-08-08(Mon) 17:17:50 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 "
" + + +2005-07-29(Fri) 13:20:19 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * insns.def : don't use fmod on AMD64 + + +2005-07-08(Fri) 00:14:22 +0900 Koichi Sasada + + * Changes : added + + +2005-07-07(Thu) 23:54:37 +0900 Koichi Sasada + + * version.h : 0.3.0 + + +2005-07-07(Thu) 23:52:03 +0900 Koichi Sasada + + * 0.2.1 : released + + +2005-07-07(Thu) 23:50:22 +0900 Koichi Sasada + + * version.h : 0.2.1 + + +2005-07-07(Thu) 23:47:55 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * insns.def : add GC protect for opt_aset + + +2005-07-02(Sat) 03:49:17 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * vm.c : fix method search + + +2005-06-28(Tue) 22:26:34 +0900 Koichi Sasada + + * extconf.rb : fix options + + +2005-06-28(Tue) 21:50:58 +0900 Koichi Sasada + + * benchmark/run.rb : fix output format + + +2005-06-28(Tue) 21:34:54 +0900 Koichi Sasada + + * depend : add option TOPT to test rules + + * benchmark/run.rb : fix output format + + +2005-06-28(Tue) 21:15:54 +0900 Koichi Sasada + + * 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 + + * extconf.rb, compile.c, tmpl/optinsn.inc.tmpl, vm.c : + change extconf options + +2005-06-28(Tue) 13:20:59 +0900 Koichi Sasada + + * benchmark/run.rb : add -y, --yarv-only option + + * depend : add BOPT to tbench rule + + +2005-06-27(Mon) 23:31:12 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * yarvcore.c : fix to remove compiler warning + + * version.h : 0.2.1 + + +2005-06-07(Tue) 08:16:22 +0900 Koichi Sasada + + * 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 + + * 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 + + * compile.c : fix previous commit + + +2005-06-04(Sat) 15:56:21 +0900 Koichi Sasada + + * compile.c : fix stack caching (after jump state) + + +2005-06-04(Sat) 09:12:13 +0900 Koichi Sasada + + * compile.c : fix some point for previous commit + + +2005-06-04(Sat) 07:31:21 +0900 Koichi Sasada + + * 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 + + * 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 + + * compile.c : apply flow optimization for while/until statement + + +2005-03-04(Fri) 19:34:32 +0900 Koichi Sasada + + * rb/insns2vm.rb : fix category (comment) + + * depend : remove space betweeen target name and colon + + +2005-03-04(Fri) 15:55:51 +0900 Koichi Sasada + + * tmpl/yarvarch.ja : fix typo + + +2005-03-04(Fri) 13:30:19 +0900 Koichi Sasada + + * 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 + + * extconf.rb : remove vm_evalbody.inc call_cfunc.inc from clean target + + +2005-03-03(Thu) 00:54:15 +0900 Koichi Sasada + + * tmpl/insns.inc.tmpl : fixed typo + + * insns.def : store th->pc to current pc + + +2005-03-03(Thu) 00:31:47 +0900 Koichi Sasada + + * tmpl/yarvarch.ja, doc/yarv.rb : write current architecture of yarv + + +2005-03-01(Tue) 13:50:04 +0900 Koichi Sasada + + * 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 + + * 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 + + * rb/yasm.rb : added + + +2005-02-24(Thu) 01:13:33 +0900 Koichi Sasada + + * compile.c : remove useless statements + + +2005-02-24(Thu) 00:46:44 +0900 Koichi Sasada + + * 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 + + * vm.c, yarvcore.c : thread_svar added and fix svar location + + +2005-02-21(Mon) 08:38:02 +0900 Koichi Sasada + + * 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 + + * yarvcore.c (compile_string) : remove null check of node + + +2005-02-19(Sat) 03:52:45 +0900 Koichi Sasada + + * version.h : 0.1.1 + + +2005-02-18(Fri) 20:57:18 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * compile.c : fix block passing + and block argument + + +2005-02-18(Fri) 05:52:41 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * ite.rb : added (ruby -rite [script file]) + + +2005-02-09(Wed) 02:25:43 +0900 Koichi Sasada + + * 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 + + * test/test_block.rb : add break test to test_times + + +2005-01-25(Tue) 03:34:04 +0900 Koichi Sasada + + * 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 + + * 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 + + * benchmark/run.rb : check ENV['RUBY'] to use ruby binary + + +2005-01-10(Mon) 08:44:40 +0900 Koichi Sasada + + * version.h : 0.1.0 + + +2005-01-09(Sun) 22:01:29 +0900 Koichi Sasada + + * repository : svn propset svn:eol-style native *.c *.h tmpl/*.tmpl + + +2005-01-09(Sun) 21:48:38 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * yarvcore.c, vm.c, evalc.patch : support making backtrace + (incompatible with current ruby interpreter) + + +2005-01-08(Sat) 11:25:46 +0900 Koichi Sasada + + * 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 + + * 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 + + * yarv : trying to support NODE_IFUNC (rb_iterate) + + +2005-01-05(Wed) 06:50:42 +0900 Koichi Sasada + + * 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 + + * 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 + + * README : fix version + + +2005-01-04(Tue) 09:57:25 +0900 Koichi Sasada + + * ToDo : reflect current status + + +2005-01-04(Tue) 09:43:54 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * benchmark/bm_super.rb : fix bug (remove infinite loop) + + +2005-01-01(Sat) 23:45:49 +0900 Koichi Sasada + + * benchmark/bm_z?super.rb : added + + +2005-01-01(Sat) 23:37:38 +0900 Koichi Sasada + + * benchmark/bmx_so_object.rb : rename to benchmark/bm_so_object.rb + + +2005-01-01(Sat) 23:19:02 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * insns.def : add getspecial insn + + * compile.c : support NODE_NTH_REF, NODE_BACK_REF + + +2005-01-01(Sat) 06:53:38 +0900 Koichi Sasada + + * 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 + + * 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 + + * insns.def : fix newhash + + +2004-12-15(Wed) 13:29:27 +0900 Koichi Sasada + + * yarvcore.c : add version string + + * compile.c : fix rescure clause bug + + +2004-12-14(Tue) 22:46:30 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * rb/insns2vm.rb : add macro INSN_IS_SC() + + +2004-12-11(Sat) 10:51:44 +0900 Koichi Sasada + + * 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 + + * benchmark/*.rb : modify + + * extconf.rb : add $cleanfiles + + +2004-12-08(Wed) 13:01:38 +0900 Koichi Sasada + + * compile.c, insns.def : change to disable stack caching + + +2004-12-07(Tue) 19:37:13 +0900 Koichi Sasada + + * rb/insns2vm.rb : add default after + + * insns.def : fix to work on stack caching + + +2004-12-07(Tue) 15:07:13 +0900 Koichi Sasada + + * 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 + + * extconf.rb : add vm.asm target if compiler is gcc + + +2004-12-06(Mon) 09:56:24 +0900 Koichi Sasada + + * 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 + + * compile.c, opt_operand.def, rb/insns2vm.rb, depend : + support operand unification + + +2004-12-05(Sun) 03:16:10 +0900 Koichi Sasada + + * vm.c, insns.def : speed up throw/catch scheme + + +2004-12-05(Sun) 01:47:05 +0900 Koichi Sasada + + * vm.c : fix catch handler bugs + + * test/test_jump.rb : test_complex_jump added + + +2004-12-03(Fri) 20:39:05 +0900 Koichi Sasada + + * benchmark/contrib/mcq.rb : added + (from URABE Syouhei) + + +2004-12-03(Fri) 20:35:28 +0900 Koichi Sasada + + * vm.c : support break in rb_yield block + + +2004-12-03(Fri) 14:26:35 +0900 Koichi Sasada + + * 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 + + * opt_operand.def : added + + +2004-12-02(Thu) 13:20:41 +0900 Koichi Sasada + + * 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 + + * 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 + + * benchmark/bm_so_array.rb : added + + * benchmark/bm_so_matrix.rb : added + + +2004-11-30(Tue) 14:11:30 +0900 Koichi Sasada + + * rb/getrev.rb : added + + * yarvcore.c : add YARVCore::REV, YARVCore::DATE constant + + +2004-11-30(Tue) 13:05:42 +0900 Koichi Sasada + + * compile.c : support NODE_OP_ASGN1 (incomplete) + + * insns.def : add dupn + + +2004-11-30(Tue) 08:52:01 +0900 Koichi Sasada + + * version.h : 0.0.0.f + + +2004-11-30(Tue) 08:43:59 +0900 Koichi Sasada + + * 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 + + * 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 + + * yarvcore.c : free -> ruby_xfree + + +2004-11-26(Fri) 02:11:11 +0900 Koichi Sasada + + * vm,c : fix bug + + +2004-11-22(Mon) 11:19:48 +0900 Koichi Sasada + + * 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 + + * 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 + + * vm.c : support Proc#call + + * test/test_proc.rb : added + + +2004-11-19(Fri) 18:04:10 +0900 Koichi Sasada + + * insns.def, vm.c : support creating Proc object + + +2004-11-15(Mon) 14:19:27 +0900 Koichi Sasada + + * 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 + + * 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 + + * add "vm_" prefix to (block_object, proc_object, env_object) + + +2004-11-03(Wed) 15:52:14 +0900 Koichi Sasada + + * 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 + + * 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 + + * compile.c : push exception iseq to iseqobj->iseq_mark_ary + to mark for GC + + +2004-10-10(Sun) 16:25:03 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * many many files: change stack frame design + + +2004-09-16(Thu) 08:51:37 +0900 Koichi Sasada + + * compile.c, yarvcore.h : support 'return' from method + in ensure clause + + +2004-09-13(Mon) 21:56:40 +0900 Koichi Sasada + + * 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 + + * compile.c, yarvcore.h : support redo/next/break in + while/until + + +2004-09-13(Mon) 08:50:19 +0900 Koichi Sasada + + * test/test_jump.rb : added(correctly) + + * benchamark/bm_(ensure|rescue|simplereturn).rb added + + +2004-09-12(Sun) 23:30:20 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * test/test_exception.rb : added + + +2004-09-01(Wed) 13:15:14 +0900 Koichi Sasada + + * vm.c, insns.def : implementing exception handling + + +2004-09-01(Wed) 00:18:54 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * compile.c : support NODE_DASGN + + * test/test_block.rb : add test + + +2004-08-28(Sat) 08:13:04 +0900 Koichi Sasada + + * 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 + + * test/test_block.rb : fix block parameter name + + +2004-08-28(Sat) 07:27:52 +0900 Koichi Sasada + + * 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 + + * compile.c(iseq_compile) : remove parameter iseqtype + (this information can access via self) + +2004-08-27(Fri) 17:13:35 +0900 Koichi Sasada + + * 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 + + * 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 + + * insns.def : fix getconstant/setconstant/classdef + + +2004-08-25(Wed) 14:27:10 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * 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 + + * test/test_method.rb : added + + +2004-05-19(Wed) 22:56:09 +0900 Koichi Sasada + + * 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 + + * 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 + + * 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 + + * compile.c : support NODE_XDSTR + + * test/test_bin.rb : add test for above change + + +2004-05-18(Tue) 09:46:33 +0900 Koichi Sasada + + * insns.def(send) : store regs before call_cfunc + + +2004-05-18(Tue) 08:55:17 +0900 Koichi Sasada + + * 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 + + * 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 + + * version.h, insns.def, yarvcore.c : add FAKE_INLINE_METHOD_CACHE + + +2004-05-17(Mon) 09:05:53 +0900 Koichi Sasada + + * compile.c : fix generating opt_* insn process + + +2004-05-17(Mon) 08:58:49 +0900 Koichi Sasada + + * benchmark/(bm_tarai.rb, bm_fib.rb) : added + + +2004-05-17(Mon) 08:20:12 +0900 Koichi Sasada + + * 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 + + * 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 + + * change frame structure(debugging) + + +2004-05-14(Fri) 15:06:02 +0900 Koichi Sasada + + * insns2vm.rb : support file name arguments + + +2004-05-14(Fri) 04:33:09 +0900 Koichi Sasada + + * insns.def : support (easy) constant + + +2004-05-12(Wed) 01:51:48 +0900 Koichi Sasada + + * rb/insns2vm.b : set directory prefix + + * disasm.c : fix bug + + +2004-05-12(Wed) 00:00:17 +0900 Koichi Sasada + + * vm.h, compiler.h, version.h : move *DEBUG defs to version.h + + +2004-05-11(Tue) 23:00:11 +0900 Koichi Sasada + + * 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 + + * 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 + +