ytl 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/ytl.rb +46 -7
- data/lib/ytl/accmem.rb +254 -55
- data/lib/ytl/macro.rb +20 -2
- data/lib/ytl/thread.rb +251 -0
- data/runtime/prelude.rb +65 -2
- data/runtime/thread.rb +27 -0
- data/runtime/type.rb +2 -0
- data/test/bar.rb +8 -0
- data/test/basictest.rb +6 -0
- data/test/breaktest.rb +22 -8
- data/test/exttest.rb +21 -7
- data/test/foo.rb +14 -0
- data/test/macrotest.rb +9 -6
- data/test/simple.rb +6 -0
- data/test/th_nested.rb +31 -0
- data/test/threadfib.rb +37 -0
- data/test/threadtest.rb +41 -0
- data/test/varargtest.rb +7 -0
- metadata +20 -18
data/test/breaktest.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
def test0
|
2
2
|
begin
|
3
|
-
return
|
3
|
+
return false
|
4
4
|
ensure
|
5
5
|
p "BAR0"
|
6
6
|
end
|
@@ -17,7 +17,7 @@ end
|
|
17
17
|
def test2
|
18
18
|
[1, 2, 3].each do |n|
|
19
19
|
p n
|
20
|
-
return
|
20
|
+
return false
|
21
21
|
end
|
22
22
|
p "bar2"
|
23
23
|
end
|
@@ -26,7 +26,7 @@ def test3
|
|
26
26
|
begin
|
27
27
|
[1, 2, 3].each do |n|
|
28
28
|
p n
|
29
|
-
return
|
29
|
+
return false
|
30
30
|
end
|
31
31
|
p "foo3"
|
32
32
|
ensure
|
@@ -47,13 +47,13 @@ def test4
|
|
47
47
|
end
|
48
48
|
|
49
49
|
|
50
|
-
test0
|
50
|
+
p test0
|
51
51
|
|
52
|
-
test1
|
53
|
-
test2
|
52
|
+
p test1
|
53
|
+
p test2
|
54
54
|
|
55
|
-
test3
|
56
|
-
test4
|
55
|
+
p test3
|
56
|
+
p test4
|
57
57
|
|
58
58
|
=begin
|
59
59
|
# Not support yet
|
@@ -82,3 +82,17 @@ def test6
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
=end
|
85
|
+
|
86
|
+
def test7
|
87
|
+
[1, 2, 3].each do |m|
|
88
|
+
[4, 5, 6].each do |n|
|
89
|
+
p m
|
90
|
+
p n
|
91
|
+
return false if n + m == 7
|
92
|
+
end
|
93
|
+
p "bar7-1"
|
94
|
+
end
|
95
|
+
p "bar7-2"
|
96
|
+
end
|
97
|
+
|
98
|
+
p test7
|
data/test/exttest.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Please Execute
|
2
2
|
# ruby -I lib lib/ytl.rb -r runtime/type.rb test/exttest.rb
|
3
|
+
=begin
|
3
4
|
module YTL
|
4
5
|
class Memory
|
5
6
|
end
|
@@ -16,6 +17,9 @@ end
|
|
16
17
|
def id(x)
|
17
18
|
x
|
18
19
|
end
|
20
|
+
=end
|
21
|
+
include YTLJit
|
22
|
+
include YTLJit::AsmType
|
19
23
|
|
20
24
|
c = YTLJit::Runtime::Arena.new
|
21
25
|
a = YTL::Memory.instance
|
@@ -23,13 +27,23 @@ a = YTL::Memory.instance
|
|
23
27
|
b = c.address
|
24
28
|
p b
|
25
29
|
p c
|
26
|
-
|
27
|
-
|
28
|
-
p
|
29
|
-
p
|
30
|
+
n = [1.9]
|
31
|
+
foo = (n[0]).__id__ * 2
|
32
|
+
p n
|
33
|
+
p a[foo, RFloat[:float_value]]
|
34
|
+
a[foo, AsmType::RFloat[:float_value]] = 2.0
|
35
|
+
p n
|
36
|
+
p a[foo, RFloat[:float_value]]
|
37
|
+
a[b, RFloat[:float_value]] = 3.14
|
38
|
+
p VALUE
|
39
|
+
p RBasic[:klass]
|
40
|
+
p RString[:as][:heap][:len]
|
41
|
+
p RString[:basic][:flags]
|
42
|
+
p RFloat[:float_value]
|
30
43
|
p a[b, :machine_word]
|
44
|
+
#p a[0x106667b8, RString[:as][:heap][:ptr]]
|
31
45
|
p a[b, :float]
|
32
|
-
|
33
|
-
p a[b,
|
34
|
-
p a[b,
|
46
|
+
p a[b, RString[:basic][:flags]]
|
47
|
+
p a[b, RString[:as][:heap][:len]]
|
48
|
+
p a[b, RFloat[:float_value]]
|
35
49
|
p a[b, :machine_word]
|
data/test/foo.rb
ADDED
data/test/macrotest.rb
CHANGED
@@ -8,16 +8,18 @@ class Module
|
|
8
8
|
end
|
9
9
|
|
10
10
|
class Foo
|
11
|
+
myattr :foo, :bar
|
12
|
+
def initialize
|
13
|
+
@foo = 1
|
14
|
+
@bar = 3
|
15
|
+
end
|
11
16
|
def myattr(x)
|
12
17
|
p x
|
13
18
|
end
|
14
19
|
end
|
15
20
|
|
16
|
-
myattr :foo, :bar
|
17
21
|
Foo.new.myattr("abc")
|
18
|
-
|
19
|
-
# Can't psss this test yet
|
20
|
-
=begin
|
22
|
+
p Foo.new.bar
|
21
23
|
|
22
24
|
def fact(x)
|
23
25
|
if x == 0 then
|
@@ -28,8 +30,9 @@ def fact(x)
|
|
28
30
|
end
|
29
31
|
|
30
32
|
def fact_inline(x)
|
31
|
-
eval fact(x)
|
33
|
+
eval "\" a = #{fact(x)} \""
|
32
34
|
end
|
33
35
|
|
36
|
+
y= 5
|
34
37
|
p fact_inline(5)
|
35
|
-
|
38
|
+
|
data/test/simple.rb
ADDED
data/test/th_nested.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
class Foo
|
2
|
+
def initialize
|
3
|
+
@res = 0
|
4
|
+
end
|
5
|
+
|
6
|
+
attr_accessor :res
|
7
|
+
|
8
|
+
def foo
|
9
|
+
th = nil
|
10
|
+
th2 = YTLJit::Runtime::Thread.new do
|
11
|
+
th = YTLJit::Runtime::Thread.new do
|
12
|
+
@res = 2
|
13
|
+
end
|
14
|
+
@res = 1
|
15
|
+
end
|
16
|
+
while th == nil
|
17
|
+
end
|
18
|
+
th.join
|
19
|
+
p @res
|
20
|
+
th2.join
|
21
|
+
p @res
|
22
|
+
end
|
23
|
+
|
24
|
+
def self_merge(cself, pself)
|
25
|
+
pself.res = pself.res + cself.res
|
26
|
+
pself
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
Foo.new.foo
|
31
|
+
|
data/test/threadfib.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# ytl -r runtime/thread.rb threadtest.rb
|
2
|
+
def fib(x)
|
3
|
+
if x < 2 then
|
4
|
+
1
|
5
|
+
else
|
6
|
+
fib(x - 1) + fib(x -2)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class MultiFib
|
11
|
+
def initialize
|
12
|
+
@res = 32 # 32 is dummy (not 0 to detect bug)
|
13
|
+
end
|
14
|
+
attr_accessor :res
|
15
|
+
|
16
|
+
def compute(n)
|
17
|
+
th = YTLJit::Runtime::Thread.new do
|
18
|
+
@res = fib(n - 1)
|
19
|
+
end
|
20
|
+
|
21
|
+
@res = fib(n - 2)
|
22
|
+
|
23
|
+
th.join
|
24
|
+
@res
|
25
|
+
end
|
26
|
+
|
27
|
+
def self_merge(cself, pself)
|
28
|
+
pself.res = pself.res + cself.res
|
29
|
+
pself
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
mfib = MultiFib.new
|
34
|
+
print "computing fib 2 threads fib(40) \n"
|
35
|
+
p mfib.compute(40)
|
36
|
+
print "single fib(40)\n"
|
37
|
+
p fib(40)
|
data/test/threadtest.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# ytl -r runtime/thread.rb threadtest.rb
|
2
|
+
p "start"
|
3
|
+
def fib(x)
|
4
|
+
if x < 2 then
|
5
|
+
1
|
6
|
+
else
|
7
|
+
fib(x - 1) + fib(x -2)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class Foo
|
12
|
+
def initialize
|
13
|
+
@res = 0
|
14
|
+
end
|
15
|
+
|
16
|
+
attr :res
|
17
|
+
|
18
|
+
def foo
|
19
|
+
YTLJit::Runtime::Thread.new do |arg|
|
20
|
+
@res = fib(30)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Merge method whose return value is self object of joined thread
|
25
|
+
#=begin
|
26
|
+
def self_merge(cself, pself)
|
27
|
+
cself
|
28
|
+
end
|
29
|
+
#=end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
p self
|
34
|
+
foo = Foo.new
|
35
|
+
th = foo.foo
|
36
|
+
p "computing fib 2 threads"
|
37
|
+
p fib(30)
|
38
|
+
p th
|
39
|
+
|
40
|
+
th.join
|
41
|
+
p foo.res
|
data/test/varargtest.rb
ADDED
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ytl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
version: 0.0.4
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.5
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Hideki Miura
|
@@ -14,8 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date:
|
18
|
-
default_executable:
|
13
|
+
date: 2012-01-20 00:00:00 Z
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
16
|
name: ytljit
|
@@ -25,10 +20,6 @@ dependencies:
|
|
25
20
|
requirements:
|
26
21
|
- - ">="
|
27
22
|
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 0
|
31
|
-
- 7
|
32
23
|
version: 0.0.7
|
33
24
|
type: :runtime
|
34
25
|
version_requirements: *id001
|
@@ -45,8 +36,11 @@ files:
|
|
45
36
|
- lib/ytl/accmem.rb
|
46
37
|
- lib/ytl/importobj.rb
|
47
38
|
- lib/ytl/macro.rb
|
39
|
+
- lib/ytl/thread.rb
|
48
40
|
- runtime/prelude.rb
|
41
|
+
- runtime/thread.rb
|
49
42
|
- runtime/type.rb
|
43
|
+
- test/bar.rb
|
50
44
|
- test/basictest.rb
|
51
45
|
- test/breaktest.rb
|
52
46
|
- test/classtest.rb
|
@@ -55,14 +49,19 @@ files:
|
|
55
49
|
- test/execytl.rb
|
56
50
|
- test/exttest.rb
|
57
51
|
- test/floattest.rb
|
52
|
+
- test/foo.rb
|
58
53
|
- test/hashtest.rb
|
59
54
|
- test/ivtest.rb
|
60
55
|
- test/looptest.rb
|
61
56
|
- test/macrotest.rb
|
57
|
+
- test/simple.rb
|
58
|
+
- test/threadfib.rb
|
59
|
+
- test/threadtest.rb
|
60
|
+
- test/th_nested.rb
|
62
61
|
- test/tmp.rb
|
62
|
+
- test/varargtest.rb
|
63
63
|
- bin/ytl
|
64
64
|
- README
|
65
|
-
has_rdoc: true
|
66
65
|
homepage:
|
67
66
|
licenses: []
|
68
67
|
|
@@ -76,25 +75,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
75
|
requirements:
|
77
76
|
- - ">="
|
78
77
|
- !ruby/object:Gem::Version
|
79
|
-
segments:
|
80
|
-
- 0
|
81
78
|
version: "0"
|
82
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
80
|
none: false
|
84
81
|
requirements:
|
85
82
|
- - ">="
|
86
83
|
- !ruby/object:Gem::Version
|
87
|
-
segments:
|
88
|
-
- 0
|
89
84
|
version: "0"
|
90
85
|
requirements: []
|
91
86
|
|
92
87
|
rubyforge_project:
|
93
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 1.8.11
|
94
89
|
signing_key:
|
95
90
|
specification_version: 3
|
96
91
|
summary: Very tiny subset of YARV to native code translator
|
97
92
|
test_files:
|
93
|
+
- test/bar.rb
|
98
94
|
- test/basictest.rb
|
99
95
|
- test/breaktest.rb
|
100
96
|
- test/classtest.rb
|
@@ -103,8 +99,14 @@ test_files:
|
|
103
99
|
- test/execytl.rb
|
104
100
|
- test/exttest.rb
|
105
101
|
- test/floattest.rb
|
102
|
+
- test/foo.rb
|
106
103
|
- test/hashtest.rb
|
107
104
|
- test/ivtest.rb
|
108
105
|
- test/looptest.rb
|
109
106
|
- test/macrotest.rb
|
107
|
+
- test/simple.rb
|
108
|
+
- test/threadfib.rb
|
109
|
+
- test/threadtest.rb
|
110
|
+
- test/th_nested.rb
|
110
111
|
- test/tmp.rb
|
112
|
+
- test/varargtest.rb
|