fastruby 0.0.21 → 0.0.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/Rakefile +1 -1
  2. data/benchmarks/benchmark.rb +3 -0
  3. data/benchmarks/benchmark.rb~ +3 -12
  4. data/benchmarks/benchmark8.rb +48 -0
  5. data/benchmarks/benchmark8.rb~ +46 -0
  6. data/lib/fastruby.rb +2 -1
  7. data/lib/fastruby.rb~ +2 -1
  8. data/lib/fastruby/builder.rb +18 -1
  9. data/lib/fastruby/builder.rb~ +18 -5
  10. data/lib/fastruby/modules/lvar_type/lasgn.rb~ +41 -0
  11. data/lib/fastruby/modules/translator/block.rb +1 -1
  12. data/lib/fastruby/modules/translator/block.rb~ +128 -0
  13. data/lib/fastruby/modules/translator/call.rb +62 -139
  14. data/lib/fastruby/modules/translator/call.rb~ +61 -140
  15. data/lib/fastruby/modules/translator/defn.rb +49 -105
  16. data/lib/fastruby/modules/translator/defn.rb~ +211 -0
  17. data/lib/fastruby/modules/translator/exceptions.rb +1 -0
  18. data/lib/fastruby/modules/translator/exceptions.rb~ +120 -0
  19. data/lib/fastruby/modules/translator/iter.rb +13 -20
  20. data/lib/fastruby/modules/translator/iter.rb~ +738 -0
  21. data/lib/fastruby/modules/translator/literal.rb +8 -1
  22. data/lib/fastruby/modules/translator/literal.rb~ +157 -0
  23. data/lib/fastruby/modules/translator/nonlocal.rb +7 -0
  24. data/lib/fastruby/modules/translator/nonlocal.rb~ +304 -0
  25. data/lib/fastruby/modules/translator/static.rb +1 -0
  26. data/lib/fastruby/modules/translator/static.rb~ +290 -0
  27. data/lib/fastruby/modules/translator/variable.rb +24 -6
  28. data/lib/fastruby/modules/translator/variable.rb~ +298 -0
  29. data/lib/fastruby/translator/translator.rb +411 -284
  30. data/lib/fastruby/translator/translator.rb~ +1728 -0
  31. data/spec/fastruby_only/base_spec.rb~ +74 -0
  32. data/spec/ruby/base_spec.rb~ +1 -338
  33. data/spec/ruby/block/break_spec.rb~ +21 -0
  34. data/spec/ruby/block/callcc_spec.rb~ +236 -0
  35. data/spec/ruby/block/lambda_spec.rb~ +1 -178
  36. data/spec/ruby/block/next_spec.rb~ +85 -0
  37. data/spec/ruby/block/proc_spec.rb~ +22 -0
  38. data/spec/ruby/block/redo_spec.rb~ +133 -0
  39. data/spec/ruby/block/retry_spec.rb~ +135 -0
  40. data/spec/ruby/block_spec.rb~ +494 -2
  41. data/spec/ruby/call/base_call_spec.rb~ +60 -2
  42. data/spec/ruby/defn/default_args_spec.rb~ +303 -0
  43. data/spec/ruby/defn/multiple_args_spec.rb~ +317 -0
  44. data/spec/ruby/defn/replacement_spec.rb +29 -1
  45. data/spec/ruby/defn/replacement_spec.rb~ +52 -21
  46. data/spec/ruby/exception/internal_ex_spec.rb~ +2 -2
  47. data/spec/ruby/variable_spec.rb~ +46 -23
  48. data/spec/static/flow_spec.rb~ +48 -0
  49. metadata +34 -12
@@ -160,5 +160,33 @@ describe FastRuby, "fastruby" do
160
160
  alias round original_round
161
161
  end
162
162
  end
163
- end
163
+ end
164
+
165
+ it "should allow replace methods when receiver types are not inferenced" do
166
+ fastruby "
167
+ class ::JU7
168
+ def foo
169
+ 77
170
+ end
171
+ end
172
+ "
173
+
174
+ fastruby "
175
+ class ::JU8
176
+ def bar(l)
177
+ l.call.foo
178
+ end
179
+ end
180
+ "
181
+
182
+ ::JU8.new.bar(lambda{::JU7.new}).should be == 77
183
+
184
+ class ::JU7
185
+ def foo
186
+ 99
187
+ end
188
+ end
189
+
190
+ ::JU8.new.bar(lambda{::JU7.new}).should be == 99
191
+ end
164
192
  end
@@ -131,32 +131,63 @@ describe FastRuby, "fastruby" do
131
131
  end
132
132
 
133
133
  it "should allow replace CFUNC methods using ruby after they are called and compiled at runtime (through other method)" do
134
- class Fixnum
135
- alias original_round round
134
+ begin
135
+
136
+ class Fixnum
137
+ alias original_round round
138
+ end
139
+
140
+ fastruby "
141
+ class ::JU6
142
+ def foo(a)
143
+ a.round
144
+ end
145
+ end
146
+ "
147
+
148
+ ::JU6.new.foo(0)
149
+
150
+ class Fixnum
151
+ def round
152
+ 86
153
+ end
154
+ end
155
+
156
+ ::JU6.new.foo(0).should be == 86
157
+
158
+ ensure
159
+ class Fixnum
160
+ alias round original_round
161
+ end
136
162
  end
137
-
163
+ end
164
+
165
+ it "should allow replace methods when receiver types are not inferenced" do
166
+ class ::JU7
167
+ def foo
168
+ 77
169
+ end
170
+ end
171
+
138
172
  fastruby "
139
- class ::JU6
140
- def foo(a)
141
- a.round
173
+ class ::JU8
174
+ def bar(l)
175
+ l.call.foo
142
176
  end
143
177
  end
144
178
  "
145
-
146
- ::JU6.new.foo(0)
147
-
148
- class Fixnum
149
- def round
150
- 86
179
+
180
+ ::JU8.new.bar(lambda{::JU7.new}).should be == 77
181
+
182
+ fastruby "
183
+ class ::JU7
184
+ def foo
185
+ 99
151
186
  end
152
- end
187
+
188
+ end
189
+ "
153
190
 
154
- ::JU6.new.foo(0).should be == 86
155
-
156
- ensure
157
- class Fixnum
158
- alias round original_round
159
- end
160
-
161
- end
191
+ ::JU8.new.bar(lambda{::JU7.new}).should be == 99
192
+ end
162
193
  end
@@ -40,7 +40,7 @@ describe FastRuby, "fastruby" do
40
40
 
41
41
  def foo
42
42
  bar # this will raise TypeError
43
- ensure
43
+ #ensure
44
44
  @a = 1
45
45
  end
46
46
  end
@@ -83,4 +83,4 @@ describe FastRuby, "fastruby" do
83
83
  llj3.a.should be == 1
84
84
  end
85
85
 
86
- end
86
+ end
@@ -2,30 +2,53 @@ require "fastruby"
2
2
 
3
3
  describe FastRuby, "fastruby" do
4
4
 
5
- $u_class_number = 30
6
- def self.test_defined(code,title,defined_name)
7
- it "should call defined? to defined #{title} and return '#{defined_name}" do
8
- classname = "::U"+$u_class_number.to_s
9
-
10
- $u_class_number = $u_class_number + 1
11
- code = "def foo; #{code}; end"
12
- eval("class #{classname}
13
- fastruby #{code.inspect}
14
- end")
15
- eval(classname).new.foo.should be == defined_name
5
+ class ::U8
6
+ class U81
7
+ fastruby "
8
+ def foo
9
+ U8C
10
+ end
11
+ "
16
12
  end
17
13
  end
18
- test_defined "@a =17; defined? @a", "instance variable", "instance-variable"
19
-
20
- $a = 9
21
- test_defined "defined? $a", "global variable", "global-variable"
22
- test_defined "a = 17; defined? a", "local variable", "local-variable"
23
- test_defined "defined? Fixnum", "constant", "constant"
24
- test_defined "defined? true", "true", "true"
25
- test_defined "defined? false", "false", "false"
26
- test_defined "defined? nil", "nil", "nil"
27
- test_defined "defined? self", "self", "self"
28
- test_defined "defined? print", "method", "method"
29
- test_defined "defined?(if 0; 4; end)", "expression", "expression"
14
+ it "should read nested constants" do
15
+ ::U8::U81::U8C = 11
16
+ ::U8::U81.new.foo.should be == 11
17
+ end
18
+
19
+ it "should read class variable" do
20
+ class ::U17
21
+
22
+ def self.foo(a)
23
+ @@a = a
24
+ end
25
+
26
+ fastruby "
27
+ def foo
28
+ @@a
29
+ end
30
+ "
31
+ end
32
+ ::U17.foo(31)
33
+ ::U17.new.foo.should be === 31
34
+ end
35
+
36
+ it "should write class variable" do
37
+ class ::U18
38
+
39
+ def self.foo
40
+ @@a
41
+ end
42
+
43
+ fastruby "
44
+ def foo(a)
45
+ @@a = a
46
+ end
47
+ "
48
+ end
49
+ ::U18.new.foo(71)
50
+ ::U18.foo.should be == 71
51
+ end
52
+
30
53
 
31
54
  end
@@ -0,0 +1,48 @@
1
+ require "fastruby"
2
+
3
+ describe FastRuby::FastRubySexp, "FastRubySexp" do
4
+ fastruby "
5
+ class STATICFLOW1
6
+ def foo(a)
7
+ _static do
8
+ if (FIX2INT(a))
9
+ INT2FIX(20)
10
+ else
11
+ INT2FIX(40)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ "
17
+
18
+
19
+ def self.test_static_if(*args)
20
+ args.each do |arg|
21
+ it "should should evaluate #{arg} as #{arg != 0} on static if" do
22
+ STATICFLOW1.new.foo(arg).should be == (arg == 0 ? 40 : 20)
23
+ end
24
+ end
25
+ end
26
+
27
+ test_static_if false.__id__, true.__id__, nil.__id__, 10, 11
28
+
29
+ it "should allow static while" do
30
+ fastruby "
31
+ class STATICFLOW2
32
+ def foo(a)
33
+ ret = 0
34
+ _static do
35
+ while (FIX2INT(a) > 0)
36
+ a = INT2FIX(FIX2INT(a) - 1)
37
+ ret = INT2FIX(FIX2INT(ret) + 1)
38
+ end
39
+ end
40
+ ret
41
+ end
42
+ end
43
+ "
44
+
45
+ STATICFLOW2.new.foo(7).should be == 7
46
+ STATICFLOW2.new.foo(0).should be == 0
47
+ end
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21
4
+ version: 0.0.22
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-24 00:00:00.000000000Z
12
+ date: 2012-08-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: RubyInline
16
- requirement: &73515840 !ruby/object:Gem::Requirement
16
+ requirement: &79352690 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.11.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *73515840
24
+ version_requirements: *79352690
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ruby_parser
27
- requirement: &73515590 !ruby/object:Gem::Requirement
27
+ requirement: &79352440 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.0.6
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *73515590
35
+ version_requirements: *79352440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: define_method_handler
38
- requirement: &73515350 !ruby/object:Gem::Requirement
38
+ requirement: &79352200 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.0.6
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *73515350
46
+ version_requirements: *79352200
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: method_source
49
- requirement: &73515110 !ruby/object:Gem::Requirement
49
+ requirement: &79351960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.6.7
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *73515110
57
+ version_requirements: *79351960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: ruby2ruby
60
- requirement: &73514880 !ruby/object:Gem::Requirement
60
+ requirement: &79351730 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 1.3.1
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *73514880
68
+ version_requirements: *79351730
69
69
  description:
70
70
  email: robertodarioseminara@gmail.com
71
71
  executables: []
@@ -87,7 +87,9 @@ files:
87
87
  - benchmarks/benchmark3.rb
88
88
  - benchmarks/benchmark7.rb
89
89
  - benchmarks/benchmark6.rb~
90
+ - benchmarks/benchmark8.rb
90
91
  - benchmarks/benchmark4.rb
92
+ - benchmarks/benchmark8.rb~
91
93
  - examples/example2.rb
92
94
  - examples/example3.rb
93
95
  - examples/example4.rb
@@ -104,14 +106,22 @@ files:
104
106
  - lib/fastruby/builder/reductor.rb
105
107
  - lib/fastruby/builder.rb~
106
108
  - lib/fastruby/modules/translator/defn.rb
109
+ - lib/fastruby/modules/translator/block.rb~
110
+ - lib/fastruby/modules/translator/iter.rb~
111
+ - lib/fastruby/modules/translator/literal.rb~
112
+ - lib/fastruby/modules/translator/nonlocal.rb~
107
113
  - lib/fastruby/modules/translator/iter.rb
108
114
  - lib/fastruby/modules/translator/directive.rb
109
115
  - lib/fastruby/modules/translator/exceptions.rb
110
116
  - lib/fastruby/modules/translator/static.rb
117
+ - lib/fastruby/modules/translator/static.rb~
111
118
  - lib/fastruby/modules/translator/method_group.rb
119
+ - lib/fastruby/modules/translator/exceptions.rb~
112
120
  - lib/fastruby/modules/translator/nonlocal.rb
121
+ - lib/fastruby/modules/translator/variable.rb~
113
122
  - lib/fastruby/modules/translator/variable.rb
114
123
  - lib/fastruby/modules/translator/call.rb
124
+ - lib/fastruby/modules/translator/defn.rb~
115
125
  - lib/fastruby/modules/translator/block.rb
116
126
  - lib/fastruby/modules/translator/call.rb~
117
127
  - lib/fastruby/modules/translator/flow.rb
@@ -122,6 +132,7 @@ files:
122
132
  - lib/fastruby/modules/lvar_type/recursive.rb
123
133
  - lib/fastruby/modules/lvar_type/defn.rb
124
134
  - lib/fastruby/modules/lvar_type/lasgn.rb
135
+ - lib/fastruby/modules/lvar_type/lasgn.rb~
125
136
  - lib/fastruby/modules/lvar_type/call.rb
126
137
  - lib/fastruby/modules/inliner/recursive.rb
127
138
  - lib/fastruby/modules/inliner/defn.rb
@@ -141,6 +152,7 @@ files:
141
152
  - lib/fastruby/translator/scope_mode_helper.rb
142
153
  - lib/fastruby/translator/translator.rb
143
154
  - lib/fastruby/translator/translator_modules.rb
155
+ - lib/fastruby/translator/translator.rb~
144
156
  - lib/fastruby/set_tree.rb
145
157
  - lib/fastruby/object.rb~
146
158
  - lib/fastruby/cache/cache.rb
@@ -168,16 +180,22 @@ files:
168
180
  - spec/sexp2graph/exception_spec.rb
169
181
  - spec/sexp2graph/flow_spec.rb
170
182
  - spec/sexp2graph/logical_spec.rb
183
+ - spec/ruby/block/callcc_spec.rb~
171
184
  - spec/ruby/block/retry_spec.rb
172
185
  - spec/ruby/block/arguments_spec.rb
173
186
  - spec/ruby/block/proc_spec.rb
174
187
  - spec/ruby/block/break_spec.rb
188
+ - spec/ruby/block/break_spec.rb~
189
+ - spec/ruby/block/redo_spec.rb~
175
190
  - spec/ruby/block/proc_as_block_spec.rb
191
+ - spec/ruby/block/proc_spec.rb~
176
192
  - spec/ruby/block/next_spec.rb
177
193
  - spec/ruby/block/lambda_spec.rb
178
194
  - spec/ruby/block/lambda_spec.rb~
179
195
  - spec/ruby/block/redo_spec.rb
180
196
  - spec/ruby/block/block_as_proc_spec.rb
197
+ - spec/ruby/block/retry_spec.rb~
198
+ - spec/ruby/block/next_spec.rb~
181
199
  - spec/ruby/block/proc_as_block_spec.rb~
182
200
  - spec/ruby/block/callcc_spec.rb
183
201
  - spec/ruby/base_spec.rb~
@@ -211,7 +229,9 @@ files:
211
229
  - spec/ruby/defn/default_args_spec.rb
212
230
  - spec/ruby/defn/single_function_spec.rb
213
231
  - spec/ruby/defn/replacement_spec.rb
232
+ - spec/ruby/defn/multiple_args_spec.rb~
214
233
  - spec/ruby/defn/replacement_spec.rb~
234
+ - spec/ruby/defn/default_args_spec.rb~
215
235
  - spec/ruby/expression_spec.rb
216
236
  - spec/ruby/control_spec.rb
217
237
  - spec/sugar/base_spec.rb~
@@ -222,10 +242,12 @@ files:
222
242
  - spec/graph/vertex_spec.rb
223
243
  - spec/graph/path_spec.rb
224
244
  - spec/graph/vertex_spec.rb~
245
+ - spec/fastruby_only/base_spec.rb~
225
246
  - spec/fastruby_only/base_spec.rb
226
247
  - spec/static/operator_spec.rb
227
248
  - spec/static/base_spec.rb
228
249
  - spec/static/flow_spec.rb
250
+ - spec/static/flow_spec.rb~
229
251
  - spec/corelib/numeric/fixnum_spec.rb~
230
252
  - spec/corelib/numeric/integer_spec.rb
231
253
  - spec/corelib/numeric/integer_spec.rb~