rubinius-ast 3.2 → 3.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d59ed449206fc1272a1f2bcef93c32a795c12eab
4
- data.tar.gz: 4a14eb185f155aab1a3d45205aca2d797a1f1ad6
3
+ metadata.gz: 441f4803e58f63bef70234bf6cec699b0a5203d4
4
+ data.tar.gz: 33a871b9c9a23b399aad57e3df7fea74e0564c0e
5
5
  SHA512:
6
- metadata.gz: a2e6c7abf59737613b1d7cf6bf0f5135fa2ff1ff9797d2e1a93c098192c1696e008e27a9733fef90a900a3e0d701655600b8011c99328092025774f4f8c7e59f
7
- data.tar.gz: 2dc8f70121984a05221cfe4b0bc5e2cee284098a6e383b74262dbbe272f7ab6f8563be76af0937c19e8b1ac4793e50fa2aa927192032c5e8c268dac71208052d
6
+ metadata.gz: 1467bb1c7d966a43e9a40b44eb5afe4063d0ba6f4c9b1421bca8bd12e4607e17c8ee629bdbe5636d971513522389c0eca1cbc03713a9f077044ec4bd244a119b
7
+ data.tar.gz: 8a12054422776ef10e5fc120bc09f3be60349ecb8315b4eb0295c38243f7ed967a484ecb5e0a344a434e7dccc09750cce28bf81991bb05ae3ca854277a402ae9
@@ -69,7 +69,7 @@ module CodeTools
69
69
  g.goto done
70
70
 
71
71
  f.set!
72
- g.push :nil
72
+ g.push_nil
73
73
 
74
74
  done.set!
75
75
  end
@@ -87,7 +87,11 @@ module CodeTools
87
87
 
88
88
  @parent.bytecode(g)
89
89
  g.push_literal @name
90
- g.push(const_missing ? :true : :false)
90
+ if const_missing
91
+ g.push_true
92
+ else
93
+ g.push_false
94
+ end
91
95
  g.invoke_primitive :vm_const_defined_under, 3
92
96
 
93
97
  g.pop_unwind
@@ -151,7 +155,7 @@ module CodeTools
151
155
  g.goto done
152
156
 
153
157
  f.set!
154
- g.push :nil
158
+ g.push_nil
155
159
 
156
160
  done.set!
157
161
  end
@@ -169,7 +173,7 @@ module CodeTools
169
173
 
170
174
  g.push_cpath_top
171
175
  g.push_literal @name
172
- g.push :false
176
+ g.push_false
173
177
  g.invoke_primitive :vm_const_defined_under, 3
174
178
 
175
179
  g.pop_unwind
@@ -246,7 +250,7 @@ module CodeTools
246
250
  g.goto done
247
251
 
248
252
  f.set!
249
- g.push :nil
253
+ g.push_nil
250
254
 
251
255
  done.set!
252
256
  end
@@ -129,12 +129,12 @@ module CodeTools
129
129
 
130
130
  if @single
131
131
  condition_bytecode(g, @single)
132
- g.gif nxt
132
+ g.goto_if_false nxt
133
133
  else
134
134
  if @conditions
135
135
  @conditions.body.each do |c|
136
136
  condition_bytecode(g, c)
137
- g.git body
137
+ g.goto_if_true body
138
138
  end
139
139
  end
140
140
 
@@ -159,12 +159,12 @@ module CodeTools
159
159
 
160
160
  if @single
161
161
  @single.bytecode(g)
162
- g.gif nxt
162
+ g.goto_if_false nxt
163
163
  else
164
164
  if @conditions
165
165
  @conditions.body.each do |condition|
166
166
  condition.bytecode(g)
167
- g.git body
167
+ g.goto_if_true body
168
168
  end
169
169
  end
170
170
 
@@ -209,7 +209,7 @@ module CodeTools
209
209
  g.find_const :Runtime
210
210
  g.rotate(3)
211
211
  g.send :matches_when, 2
212
- g.git body
212
+ g.goto_if_true body
213
213
  end
214
214
 
215
215
  def bytecode(g, body, nxt)
@@ -243,11 +243,11 @@ module CodeTools
243
243
  g.state.push_flip_flop
244
244
 
245
245
  get_flip_flop(g, index)
246
- g.git on_label
246
+ g.goto_if_true on_label
247
247
 
248
248
  @start.bytecode(g)
249
249
  g.dup
250
- g.gif done
250
+ g.goto_if_false done
251
251
  g.pop
252
252
  set_flip_flop(g, index, true)
253
253
 
@@ -258,9 +258,9 @@ module CodeTools
258
258
  end
259
259
 
260
260
  on_label.set!
261
- g.push_literal true
261
+ g.push_true
262
262
  @finish.bytecode(g)
263
- g.gif done
263
+ g.goto_if_false done
264
264
  set_flip_flop(g, index, false)
265
265
  g.pop
266
266
 
@@ -271,7 +271,7 @@ module CodeTools
271
271
  g.push_rubinius
272
272
  g.find_const :Runtime
273
273
  g.push_scope
274
- g.push_literal index
274
+ g.push_int index
275
275
  g.send(:get_flip_flop, 2)
276
276
  end
277
277
 
@@ -279,8 +279,12 @@ module CodeTools
279
279
  g.push_rubinius
280
280
  g.find_const :Runtime
281
281
  g.push_scope
282
- g.push_literal index
283
- g.push_literal value
282
+ g.push_int index
283
+ if value
284
+ g.push_true
285
+ else
286
+ g.push_false
287
+ end
284
288
  g.send(:set_flip_flop, 3)
285
289
  end
286
290
 
@@ -316,7 +320,7 @@ module CodeTools
316
320
  else_label = g.new_label
317
321
 
318
322
  @condition.bytecode(g)
319
- g.gif else_label
323
+ g.goto_if_false else_label
320
324
 
321
325
  @body.bytecode(g)
322
326
  g.goto done
@@ -354,9 +358,9 @@ module CodeTools
354
358
  def condition_bytecode(g, bottom, use_gif)
355
359
  @condition.bytecode(g)
356
360
  if use_gif
357
- g.gif bottom
361
+ g.goto_if_false bottom
358
362
  else
359
- g.git bottom
363
+ g.goto_if_true bottom
360
364
  end
361
365
  end
362
366
 
@@ -406,7 +410,7 @@ module CodeTools
406
410
  g.set_line 0
407
411
 
408
412
  bottom.set!
409
- g.push :nil
413
+ g.push_nil
410
414
  g.break.set!
411
415
 
412
416
  g.pop_modifiers
@@ -606,7 +610,7 @@ module CodeTools
606
610
  if @value
607
611
  @value.bytecode(g)
608
612
  else
609
- g.push :nil
613
+ g.push_nil
610
614
  end
611
615
 
612
616
  if g.state.loop?
@@ -697,7 +701,7 @@ module CodeTools
697
701
  elsif @value
698
702
  @value.bytecode(g)
699
703
  else
700
- g.push :nil
704
+ g.push_nil
701
705
  end
702
706
 
703
707
  if lcl = g.state.rescue?
@@ -19,7 +19,7 @@ module CodeTools
19
19
  g.push_rubinius
20
20
  g.push_scope
21
21
  g.send :data_path, 0
22
- g.push_literal @offset
22
+ g.push_int @offset
23
23
  g.send :set_data, 2
24
24
  g.pop
25
25
 
@@ -565,7 +565,7 @@ module CodeTools
565
565
  done = g.new_label
566
566
 
567
567
  arg.variable.get_bytecode(g)
568
- g.ginu done
568
+ g.goto_if_not_undefined done
569
569
  arg.bytecode(g)
570
570
  g.pop
571
571
 
@@ -658,7 +658,7 @@ module CodeTools
658
658
  g.send :find_item, 1, true
659
659
 
660
660
  g.dup
661
- g.gif missing_value
661
+ g.goto_if_false missing_value
662
662
 
663
663
  g.send :value, 0, true
664
664
 
@@ -684,8 +684,8 @@ module CodeTools
684
684
  if @defaults.empty?
685
685
  g.dup
686
686
  g.send :size, 0, true
687
- g.push @arguments.size
688
- g.gine extra_keys
687
+ g.push_int @arguments.size
688
+ g.goto_if_not_equal extra_keys
689
689
 
690
690
  if @kwrest
691
691
  g.push_cpath_top
@@ -706,7 +706,7 @@ module CodeTools
706
706
  g.send :find_item, 1, true
707
707
 
708
708
  g.dup
709
- g.gif default_value
709
+ g.goto_if_false default_value
710
710
 
711
711
  g.send :value, 0, true
712
712
  arg.variable.set_bytecode(g)
@@ -729,9 +729,9 @@ module CodeTools
729
729
  g.swap
730
730
 
731
731
  if @kwrest
732
- g.push :true
732
+ g.push_true
733
733
  else
734
- g.push :false
734
+ g.push_false
735
735
  end
736
736
 
737
737
  g.send :keywords_extra, 2, true
@@ -941,7 +941,7 @@ module CodeTools
941
941
  class EmptyBody < Node
942
942
  def bytecode(g)
943
943
  g.pop
944
- g.push :nil
944
+ g.push_nil
945
945
  end
946
946
 
947
947
  def to_sexp
@@ -1079,7 +1079,7 @@ module CodeTools
1079
1079
  attach_and_call g, :__metaclass_init__, true, true
1080
1080
  else
1081
1081
  g.pop
1082
- g.push :nil
1082
+ g.push_nil
1083
1083
  end
1084
1084
  end
1085
1085
  end
@@ -1225,7 +1225,7 @@ module CodeTools
1225
1225
  container_bytecode(g) do
1226
1226
  @body.bytecode(g)
1227
1227
  g.pop
1228
- g.push :true
1228
+ g.push_true
1229
1229
  g.ret
1230
1230
  end
1231
1231
  end
@@ -77,7 +77,7 @@ module CodeTools
77
77
  new_break.set!
78
78
  g.pop_unwind
79
79
 
80
- g.push :true
80
+ g.push_true
81
81
  g.set_stack_local used_break_local
82
82
  g.pop
83
83
 
@@ -93,7 +93,7 @@ module CodeTools
93
93
  new_next.set!
94
94
  g.pop_unwind
95
95
 
96
- g.push :true
96
+ g.push_true
97
97
  g.set_stack_local used_next_local
98
98
  g.pop
99
99
 
@@ -123,7 +123,7 @@ module CodeTools
123
123
  ok.set!
124
124
 
125
125
  if check_break
126
- g.push :false
126
+ g.push_false
127
127
  g.set_stack_local used_break_local
128
128
  g.pop
129
129
 
@@ -131,7 +131,7 @@ module CodeTools
131
131
  end
132
132
 
133
133
  if check_next
134
- g.push :false
134
+ g.push_false
135
135
  g.set_stack_local used_next_local
136
136
  g.pop
137
137
 
@@ -147,7 +147,7 @@ module CodeTools
147
147
  post = g.new_label
148
148
 
149
149
  g.push_stack_local used_break_local
150
- g.gif post
150
+ g.goto_if_false post
151
151
 
152
152
  if g.break
153
153
  g.goto g.break
@@ -161,7 +161,7 @@ module CodeTools
161
161
  post = g.new_label
162
162
 
163
163
  g.push_stack_local used_next_local
164
- g.gif post
164
+ g.goto_if_false post
165
165
 
166
166
  g.next ? g.goto(g.next) : g.ret
167
167
  post.set!
@@ -193,7 +193,7 @@ module CodeTools
193
193
  if @body.nil?
194
194
  if @else.nil?
195
195
  # Stupid. No body and no else.
196
- g.push :nil
196
+ g.push_nil
197
197
  else
198
198
  # Only an else, run it.
199
199
  @else.bytecode(g)
@@ -431,7 +431,7 @@ module CodeTools
431
431
  c.bytecode(g)
432
432
  g.swap
433
433
  g.send :===, 1
434
- g.git body
434
+ g.goto_if_true body
435
435
  end
436
436
  end
437
437
 
@@ -553,7 +553,7 @@ module CodeTools
553
553
  g.cast_array
554
554
  g.swap
555
555
  g.send :__rescue_match__, 1
556
- g.git body
556
+ g.goto_if_true body
557
557
  end
558
558
 
559
559
  def to_sexp
@@ -25,7 +25,7 @@ module CodeTools
25
25
  done = g.new_label
26
26
  @body.each do |x|
27
27
  x.defined(g)
28
- g.gif not_found
28
+ g.goto_if_false not_found
29
29
  end
30
30
  g.push_literal "expression"
31
31
  g.goto done
@@ -61,7 +61,7 @@ module CodeTools
61
61
  def bytecode(g)
62
62
  pos(g)
63
63
 
64
- g.push :false
64
+ g.push_false
65
65
  end
66
66
 
67
67
  def defined(g)
@@ -77,7 +77,7 @@ module CodeTools
77
77
  def bytecode(g)
78
78
  pos(g)
79
79
 
80
- g.push :true
80
+ g.push_true
81
81
  end
82
82
 
83
83
  def defined(g)
@@ -100,7 +100,7 @@ module CodeTools
100
100
  def bytecode(g)
101
101
  pos(g)
102
102
 
103
- g.push_unique_literal @value
103
+ g.push_literal @value
104
104
  end
105
105
 
106
106
  def defined(g)
@@ -128,7 +128,7 @@ module CodeTools
128
128
 
129
129
  g.push_cpath_top
130
130
  g.find_const :Hash
131
- g.push count / 2
131
+ g.push_int count / 2
132
132
  g.send :new_from_literal, 1
133
133
 
134
134
  while i < count
@@ -225,7 +225,7 @@ module CodeTools
225
225
  def bytecode(g)
226
226
  pos(g)
227
227
 
228
- g.push :nil
228
+ g.push_nil
229
229
  end
230
230
 
231
231
  def defined(g)
@@ -248,7 +248,7 @@ module CodeTools
248
248
  def bytecode(g)
249
249
  pos(g)
250
250
 
251
- g.push_unique_literal @value
251
+ g.push_literal @value
252
252
  end
253
253
 
254
254
  def defined(g)
@@ -269,7 +269,7 @@ module CodeTools
269
269
  def bytecode(g)
270
270
  pos(g)
271
271
 
272
- g.push @value
272
+ g.push_int @value
273
273
  end
274
274
 
275
275
  def defined(g)
@@ -340,7 +340,7 @@ module CodeTools
340
340
  g.dup
341
341
  @start.bytecode(g)
342
342
  @finish.bytecode(g)
343
- g.push :true
343
+ g.push_true
344
344
  g.send :initialize, 3, true
345
345
  g.pop
346
346
  end
@@ -362,25 +362,25 @@ module CodeTools
362
362
  def bytecode(g)
363
363
  pos(g)
364
364
 
365
- # A regex literal should only be converted to a Regexp the first time it
366
- # is encountered. We push a literal nil here, and then overwrite the
367
- # literal value with the created Regexp if it is nil, i.e. the first time
368
- # only. Subsequent encounters will use the previously created Regexp
369
- idx = g.add_literal(nil)
370
- g.push_literal_at idx
365
+ build = g.new_label
366
+ done = g.new_label
367
+
368
+ g.push_nil
369
+
370
+ build.set!
371
+ g.push_memo nil
371
372
  g.dup
372
- g.is_nil
373
+ g.goto_if_not_nil done
373
374
 
374
- lbl = g.new_label
375
- g.gif lbl
376
375
  g.pop
377
376
  g.push_cpath_top
378
377
  g.find_const :Regexp
379
378
  g.push_literal @source
380
- g.push @options
379
+ g.push_int @options
381
380
  g.send :new, 2
382
- g.set_literal idx
383
- lbl.set!
381
+ g.goto build
382
+
383
+ done.set!
384
384
  end
385
385
 
386
386
  def defined(g)
@@ -403,7 +403,6 @@ module CodeTools
403
403
  def bytecode(g)
404
404
  pos(g)
405
405
 
406
- # TODO: change to push_unique_literal
407
406
  g.push_literal @string
408
407
  g.string_dup
409
408
  end
@@ -532,7 +531,7 @@ module CodeTools
532
531
 
533
532
  class DynamicExecuteString < DynamicString
534
533
  def bytecode(g)
535
- g.push :self
534
+ g.push_self
536
535
  super(g)
537
536
  g.send :`, 1, true #`
538
537
  end
@@ -552,7 +551,7 @@ module CodeTools
552
551
  g.push_cpath_top
553
552
  g.find_const :Regexp
554
553
  super(g)
555
- g.push @options
554
+ g.push_int @options
556
555
  g.send :new, 2
557
556
  end
558
557
 
@@ -571,19 +570,21 @@ module CodeTools
571
570
  def bytecode(g)
572
571
  pos(g)
573
572
 
574
- idx = g.add_literal(nil)
575
- g.push_literal_at idx
573
+ build = g.new_label
574
+ done = g.new_label
575
+
576
+ g.push_nil
577
+
578
+ build.set!
579
+ g.push_memo nil
576
580
  g.dup
577
- g.is_nil
581
+ g.goto_if_not_nil done
578
582
 
579
- lbl = g.new_label
580
- g.gif lbl
581
583
  g.pop
582
-
583
584
  super(g)
585
+ g.goto build
584
586
 
585
- g.set_literal idx
586
- lbl.set!
587
+ done.set!
587
588
  end
588
589
 
589
590
  def sexp_name
@@ -595,7 +596,7 @@ module CodeTools
595
596
  def bytecode(g)
596
597
  pos(g)
597
598
 
598
- g.push :self
599
+ g.push_self
599
600
  super(g)
600
601
  g.send :`, 1, true # ` (silly vim/emacs)
601
602
  end
@@ -95,10 +95,10 @@ module CodeTools
95
95
  g.push_rubinius
96
96
  g.push_scope
97
97
  g.send :active_path, 0
98
- g.push @line
98
+ g.push_int @line
99
99
  g.send :unrecognized_defined, 2
100
100
  g.pop
101
- g.push :nil
101
+ g.push_nil
102
102
  end
103
103
 
104
104
  def value_defined(g, f)
@@ -128,7 +128,7 @@ module CodeTools
128
128
  found = g.new_label
129
129
  bytecode(g)
130
130
  g.dup
131
- g.git found
131
+ g.goto_if_true found
132
132
  g.pop
133
133
  yield
134
134
  found.set!
@@ -17,9 +17,9 @@ module CodeTools
17
17
  lbl = g.new_label
18
18
 
19
19
  if use_gif
20
- g.gif lbl
20
+ g.goto_if_false lbl
21
21
  else
22
- g.git lbl
22
+ g.goto_if_true lbl
23
23
  end
24
24
 
25
25
  g.pop
@@ -64,13 +64,13 @@ module CodeTools
64
64
  end_label = g.new_label
65
65
 
66
66
  @value.bytecode(g)
67
- g.git true_label
67
+ g.goto_if_true true_label
68
68
 
69
- g.push :true
69
+ g.push_true
70
70
  g.goto end_label
71
71
 
72
72
  true_label.set!
73
- g.push :false
73
+ g.push_false
74
74
  end_label.set!
75
75
  end
76
76
 
@@ -92,7 +92,7 @@ module CodeTools
92
92
  g.goto done
93
93
 
94
94
  f.set!
95
- g.push :nil
95
+ g.push_nil
96
96
 
97
97
  done.set!
98
98
  end
@@ -134,7 +134,7 @@ module CodeTools
134
134
  # @arguments.size will be 1
135
135
 
136
136
  if @arguments.splat?
137
- g.push :nil
137
+ g.push_nil
138
138
  g.send_with_splat :[], @arguments.size
139
139
  else
140
140
  g.send :[], @arguments.size
@@ -153,9 +153,9 @@ module CodeTools
153
153
 
154
154
  g.dup
155
155
  if @op == :or
156
- g.git fnd
156
+ g.goto_if_true fnd
157
157
  else
158
- g.gif fnd
158
+ g.goto_if_false fnd
159
159
  end
160
160
 
161
161
  # Ok, take the extra copy off and pull the value onto the stack
@@ -174,7 +174,7 @@ module CodeTools
174
174
  new_break.set!
175
175
  if old_break
176
176
  g.pop_many recv_stack + 1
177
- g.push :nil
177
+ g.push_nil
178
178
  g.goto old_break
179
179
  end
180
180
 
@@ -188,7 +188,7 @@ module CodeTools
188
188
 
189
189
  if @arguments.splat?
190
190
  g.send :push, 1
191
- g.push :nil
191
+ g.push_nil
192
192
  g.send_with_splat :[]=, @arguments.size
193
193
  else
194
194
  g.send :[]=, @arguments.size + 1
@@ -222,7 +222,7 @@ module CodeTools
222
222
  new_break.set!
223
223
  if old_break
224
224
  g.pop_many recv_stack + 2
225
- g.push :nil
225
+ g.push_nil
226
226
  g.goto old_break
227
227
  end
228
228
 
@@ -247,7 +247,7 @@ module CodeTools
247
247
  # X: Call []=(:a, 5) on h
248
248
  if @arguments.splat?
249
249
  g.send :push, 1
250
- g.push :nil
250
+ g.push_nil
251
251
  g.send_with_splat :[]=, @arguments.size
252
252
  else
253
253
  g.send :[]=, @arguments.size + 1
@@ -307,9 +307,9 @@ module CodeTools
307
307
 
308
308
  g.dup
309
309
  if @op == :or
310
- g.git fnd
310
+ g.goto_if_true fnd
311
311
  else
312
- g.gif fnd
312
+ g.goto_if_false fnd
313
313
  end
314
314
 
315
315
  # Remove the copy of 2 and push @value on the stack
@@ -326,7 +326,7 @@ module CodeTools
326
326
  new_break.set!
327
327
  if old_break
328
328
  g.pop_many 2
329
- g.push :nil
329
+ g.push_nil
330
330
  g.goto old_break
331
331
  end
332
332
 
@@ -365,7 +365,7 @@ module CodeTools
365
365
  new_break.set!
366
366
  if old_break
367
367
  g.pop_many 3
368
- g.push :nil
368
+ g.push_nil
369
369
  g.goto old_break
370
370
  end
371
371
 
@@ -417,7 +417,7 @@ module CodeTools
417
417
  @left.bytecode(g)
418
418
  lbl = g.new_label
419
419
  g.dup
420
- g.gif lbl
420
+ g.goto_if_false lbl
421
421
  g.pop
422
422
  @right.bytecode(g)
423
423
  lbl.set!
@@ -6,7 +6,7 @@ module CodeTools
6
6
  def bytecode(g)
7
7
  pos(g)
8
8
 
9
- g.push :self
9
+ g.push_self
10
10
  end
11
11
 
12
12
  def defined(g)
@@ -14,7 +14,7 @@ module CodeTools
14
14
  end
15
15
 
16
16
  def value_defined(g, f)
17
- g.push :self
17
+ g.push_self
18
18
  end
19
19
 
20
20
  def to_sexp
@@ -23,12 +23,14 @@ module CodeTools
23
23
  def bytecode(g)
24
24
  pos(g)
25
25
 
26
- if @vcall_style and reference = check_local_reference(g)
27
- return reference.get_bytecode(g)
26
+ if @vcall_style
27
+ if reference = check_local_reference(g)
28
+ return reference.get_bytecode(g)
29
+ end
30
+ else
31
+ @receiver.bytecode(g)
28
32
  end
29
33
 
30
- @receiver.bytecode(g)
31
-
32
34
  if @block
33
35
  @block.bytecode(g)
34
36
  g.send_with_block @name, 0, @privately
@@ -83,18 +85,18 @@ module CodeTools
83
85
  g.push_literal @name
84
86
 
85
87
  if @vcall_style or @privately
86
- g.push :true
88
+ g.push_true
87
89
  g.send :__respond_to_p__, 2
88
90
  else
89
91
  g.push_self
90
92
  g.invoke_primitive :vm_check_callable, 3
91
93
  end
92
- g.gif f
94
+ g.goto_if_false f
93
95
  g.push_literal "method"
94
96
  g.goto done
95
97
 
96
98
  f.set!
97
- g.push :nil
99
+ g.push_nil
98
100
 
99
101
  done.set!
100
102
  end
@@ -141,7 +143,7 @@ module CodeTools
141
143
  pos(g)
142
144
 
143
145
  if @arguments.splat?
144
- @block ? @block.bytecode(g) : g.push(:nil)
146
+ @block ? @block.bytecode(g) : g.push_nil
145
147
  g.send_with_splat @name, @arguments.size, @privately, false
146
148
  elsif @block
147
149
  @block.bytecode(g)
@@ -190,7 +192,7 @@ module CodeTools
190
192
  if @arguments.splat?
191
193
  g.move_down @arguments.size + 2
192
194
  g.swap
193
- g.push :nil
195
+ g.push_nil
194
196
  g.send_with_splat @name, @arguments.size, @privately, true
195
197
  else
196
198
  g.move_down @arguments.size + 1
@@ -252,7 +254,7 @@ module CodeTools
252
254
  flag = false
253
255
  end
254
256
 
255
- g.push :nil
257
+ g.push_nil
256
258
  g.send_with_splat @name, @arguments.size, @privately, flag
257
259
  else
258
260
  g.move_down @arguments.size + 1
@@ -343,8 +345,7 @@ module CodeTools
343
345
  def convert(g)
344
346
  nil_block = g.new_label
345
347
  g.dup
346
- g.is_nil
347
- g.git nil_block
348
+ g.goto_if_nil nil_block
348
349
 
349
350
  g.push_cpath_top
350
351
  g.find_const :Proc
@@ -410,7 +411,7 @@ module CodeTools
410
411
  g.find_const :Hash
411
412
  g.swap
412
413
  g.kind_of
413
- g.gif not_hash
414
+ g.goto_if_false not_hash
414
415
 
415
416
  g.make_array 1
416
417
  g.goto done
@@ -909,8 +910,10 @@ module CodeTools
909
910
  def bytecode(g)
910
911
  pos(g)
911
912
 
912
- if @value.kind_of? NumberLiteral
913
- g.push(-@value.value)
913
+ if @value.kind_of? FixnumLiteral
914
+ g.push_int(-@value.value)
915
+ elsif @value.kind_of? NumberLiteral
916
+ g.push_literal(-@value.value)
914
917
  else
915
918
  @value.bytecode(g)
916
919
  g.send :"-@", 0
@@ -962,14 +965,14 @@ module CodeTools
962
965
 
963
966
  g.invoke_primitive :vm_check_super_callable, 0
964
967
 
965
- g.gif nope
968
+ g.goto_if_false nope
966
969
 
967
970
  g.push_literal "super"
968
971
  g.string_dup
969
972
  g.goto done
970
973
 
971
974
  nope.set!
972
- g.push :nil
975
+ g.push_nil
973
976
 
974
977
  done.set!
975
978
  end
@@ -1020,8 +1023,8 @@ module CodeTools
1020
1023
  f = g.new_label
1021
1024
 
1022
1025
  g.push_block
1023
- g.git t
1024
- g.push :nil
1026
+ g.goto_if_true t
1027
+ g.push_nil
1025
1028
  g.goto f
1026
1029
 
1027
1030
  t.set!
@@ -271,7 +271,7 @@ module CodeTools
271
271
  else
272
272
  g.check_serial :new, Rubinius::CompiledCode::KernelMethodSerial
273
273
  end
274
- g.gif slow
274
+ g.goto_if_false slow
275
275
 
276
276
  # fast path
277
277
  g.send :allocate, 0, true
@@ -354,7 +354,7 @@ module CodeTools
354
354
  const.bytecode(g)
355
355
  g.swap
356
356
  g.kind_of
357
- g.git done
357
+ g.goto_if_true done
358
358
  g.pop
359
359
  super(g)
360
360
 
@@ -23,9 +23,9 @@ module CodeTools
23
23
 
24
24
  g.dup
25
25
  g.push_literal :to_a
26
- g.push :true
26
+ g.push_true
27
27
  g.send :respond_to?, 2, true
28
- g.git coerce
28
+ g.goto_if_true coerce
29
29
 
30
30
  make_array.set!
31
31
  g.make_array 1
@@ -48,8 +48,7 @@ module CodeTools
48
48
  check_array = g.new_label
49
49
 
50
50
  g.dup
51
- g.is_nil
52
- g.gif check_array
51
+ g.goto_if_not_nil check_array
53
52
 
54
53
  g.pop
55
54
  g.goto make_array
@@ -78,7 +77,7 @@ module CodeTools
78
77
  g.find_const :Array
79
78
  g.swap
80
79
  g.instance_of
81
- g.git label
80
+ g.goto_if_true label
82
81
  end
83
82
 
84
83
  def kind_of_array(g, label)
@@ -87,7 +86,7 @@ module CodeTools
87
86
  g.find_const :Array
88
87
  g.swap
89
88
  g.kind_of
90
- g.git label
89
+ g.goto_if_true label
91
90
  end
92
91
 
93
92
  def to_sexp
@@ -127,9 +126,9 @@ module CodeTools
127
126
 
128
127
  g.dup
129
128
  g.push_literal :to_a
130
- g.push :true
129
+ g.push_true
131
130
  g.send :respond_to?, 2, true
132
- g.git coerce
131
+ g.goto_if_true coerce
133
132
 
134
133
  make_array.set!
135
134
  g.make_array 1
@@ -143,8 +142,7 @@ module CodeTools
143
142
  check_array = g.new_label
144
143
 
145
144
  g.dup
146
- g.is_nil
147
- g.gif check_array
145
+ g.goto_if_not_nil check_array
148
146
 
149
147
  g.pop
150
148
  g.goto make_array
@@ -173,7 +171,7 @@ module CodeTools
173
171
  g.find_const :Array
174
172
  g.swap
175
173
  g.kind_of
176
- g.git label
174
+ g.goto_if_true label
177
175
  end
178
176
 
179
177
  # Dive down and try to find an array of regular values
@@ -246,11 +244,11 @@ module CodeTools
246
244
 
247
245
  g.dup
248
246
  g.send :size, 0
249
- g.push 1
247
+ g.push_int 1
250
248
  g.send :>, 1
251
- g.git done
249
+ g.goto_if_true done
252
250
 
253
- g.push 0
251
+ g.push_int 0
254
252
  g.send :at, 1
255
253
 
256
254
  done.set!
@@ -294,7 +292,7 @@ module CodeTools
294
292
  pos(g)
295
293
 
296
294
  @value.bytecode(g)
297
- g.meta_to_s
295
+ g.object_to_s :to_s
298
296
  end
299
297
 
300
298
  def value_defined(g, f)
@@ -42,8 +42,7 @@ module CodeTools
42
42
  done = g.new_label
43
43
 
44
44
  g.last_match mode, 0
45
- g.is_nil
46
- g.git f
45
+ g.goto_if_nil f
47
46
 
48
47
  g.push_literal "global-variable"
49
48
  g.string_dup
@@ -51,7 +50,7 @@ module CodeTools
51
50
  g.goto done
52
51
 
53
52
  f.set!
54
- g.push :nil
53
+ g.push_nil
55
54
 
56
55
  done.set!
57
56
  end
@@ -84,8 +83,7 @@ module CodeTools
84
83
  done = g.new_label
85
84
 
86
85
  g.last_match Mode, @which - 1
87
- g.is_nil
88
- g.git f
86
+ g.goto_if_nil f
89
87
 
90
88
  g.push_literal "global-variable"
91
89
  g.string_dup
@@ -93,7 +91,7 @@ module CodeTools
93
91
  g.goto done
94
92
 
95
93
  f.set!
96
- g.push :nil
94
+ g.push_nil
97
95
 
98
96
  done.set!
99
97
  end
@@ -149,7 +147,7 @@ module CodeTools
149
147
  # Ok, we know the value exists, get it.
150
148
  bytecode(g)
151
149
  g.dup
152
- g.git done
150
+ g.goto_if_true done
153
151
  g.pop
154
152
 
155
153
  # yield to generate the code for when it's not found
@@ -168,7 +166,7 @@ module CodeTools
168
166
 
169
167
  def push_scope(g)
170
168
  if g.state.scope.module?
171
- g.push :self
169
+ g.push_self
172
170
  else
173
171
  g.push_scope
174
172
  end
@@ -178,7 +176,7 @@ module CodeTools
178
176
  def variable_defined(g, f)
179
177
  push_scope(g)
180
178
  g.send :class_variable_defined?, 1
181
- g.gif f
179
+ g.goto_if_false f
182
180
  end
183
181
 
184
182
  def defined(g)
@@ -190,7 +188,7 @@ module CodeTools
190
188
  g.goto done
191
189
 
192
190
  f.set!
193
- g.push :nil
191
+ g.push_nil
194
192
 
195
193
  done.set!
196
194
  end
@@ -205,7 +203,7 @@ module CodeTools
205
203
  pos(g)
206
204
 
207
205
  if g.state.scope.module?
208
- g.push :self
206
+ g.push_self
209
207
  else
210
208
  g.push_scope
211
209
  end
@@ -287,7 +285,7 @@ module CodeTools
287
285
  g.find_const :Globals
288
286
  g.push_literal @name
289
287
  g.send :key?, 1
290
- g.gif f
288
+ g.goto_if_false f
291
289
  end
292
290
 
293
291
  def defined(g)
@@ -299,7 +297,7 @@ module CodeTools
299
297
  g.goto done
300
298
 
301
299
  f.set!
302
- g.push :nil
300
+ g.push_nil
303
301
 
304
302
  done.set!
305
303
  end
@@ -391,7 +389,7 @@ module CodeTools
391
389
  g.find_const :Array
392
390
  g.swap
393
391
  g.kind_of
394
- g.git assign
392
+ g.goto_if_true assign
395
393
  g.make_array 1
396
394
 
397
395
  assign.set!
@@ -430,10 +428,10 @@ module CodeTools
430
428
  end
431
429
 
432
430
  def variable_defined(g, f)
433
- g.push :self
431
+ g.push_self
434
432
  g.push_literal @name
435
433
  g.send :__instance_variable_defined_p__, 1
436
- g.gif f
434
+ g.goto_if_false f
437
435
  end
438
436
 
439
437
  def defined(g)
@@ -445,7 +443,7 @@ module CodeTools
445
443
  g.goto done
446
444
 
447
445
  f.set!
448
- g.push :nil
446
+ g.push_nil
449
447
 
450
448
  done.set!
451
449
  end
@@ -635,7 +633,7 @@ module CodeTools
635
633
  g.pop
636
634
 
637
635
  index = g.new_stack_local
638
- g.push 0
636
+ g.push_int 0
639
637
  g.set_stack_local index
640
638
  g.pop
641
639
 
@@ -651,7 +649,7 @@ module CodeTools
651
649
 
652
650
  if @post
653
651
  g.push_stack_local size
654
- g.push @post.body.size
652
+ g.push_int @post.body.size
655
653
  g.send :-, 1, true
656
654
 
657
655
  g.push_stack_local index
@@ -677,9 +675,9 @@ module CodeTools
677
675
 
678
676
  check_count.set!
679
677
  g.dup
680
- g.push 0
678
+ g.push_int 0
681
679
  g.send :<, 1, true
682
- g.git underflow
680
+ g.goto_if_true underflow
683
681
 
684
682
  g.dup
685
683
  g.push_stack_local index
@@ -720,9 +718,9 @@ module CodeTools
720
718
 
721
719
  g.dup
722
720
  g.push_literal :to_ary
723
- g.push :true
721
+ g.push_true
724
722
  g.send :respond_to?, 2, true
725
- g.git coerce
723
+ g.goto_if_true coerce
726
724
 
727
725
  make_array.set!
728
726
  g.make_array 1
@@ -745,8 +743,7 @@ module CodeTools
745
743
  check_array = g.new_label
746
744
 
747
745
  g.dup
748
- g.is_nil
749
- g.gif check_array
746
+ g.goto_if_not_nil check_array
750
747
 
751
748
  g.pop
752
749
  g.goto make_array
@@ -775,7 +772,7 @@ module CodeTools
775
772
  g.find_const :Array
776
773
  g.swap
777
774
  g.instance_of
778
- g.git label
775
+ g.goto_if_true label
779
776
  end
780
777
 
781
778
  def kind_of_array(g, label)
@@ -784,7 +781,7 @@ module CodeTools
784
781
  g.find_const :Array
785
782
  g.swap
786
783
  g.kind_of
787
- g.git label
784
+ g.goto_if_true label
788
785
  end
789
786
 
790
787
  def get_element(g, index)
@@ -792,7 +789,7 @@ module CodeTools
792
789
  g.push_stack_local index
793
790
 
794
791
  g.dup
795
- g.push 1
792
+ g.push_int 1
796
793
  g.send :+, 1, true
797
794
  g.set_stack_local index
798
795
  g.pop
@@ -1,5 +1,5 @@
1
1
  module CodeTools
2
2
  module AST
3
- VERSION = "3.2"
3
+ VERSION = "3.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubinius-ast
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.2'
4
+ version: '3.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Shirai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-29 00:00:00.000000000 Z
11
+ date: 2016-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- version_requirements: !ruby/object:Gem::Requirement
14
+ requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
18
  version: '1.3'
19
19
  name: bundler
20
- type: :development
21
- requirement: !ruby/object:Gem::Requirement
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: '1.3'
26
- prerelease: false
26
+ type: :development
27
27
  - !ruby/object:Gem::Dependency
28
- version_requirements: !ruby/object:Gem::Requirement
28
+ requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '10.0'
33
33
  name: rake
34
- type: :development
35
- requirement: !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '10.0'
40
- prerelease: false
40
+ type: :development
41
41
  description: An Abstract Syntax Tree for the Rubinius language platform.
42
42
  email:
43
43
  - brixen@gmail.com
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  version: '0'
84
84
  requirements: []
85
85
  rubyforge_project:
86
- rubygems_version: 2.5.1
86
+ rubygems_version: 2.6.2
87
87
  signing_key:
88
88
  specification_version: 4
89
89
  summary: An Abstract Syntax Tree for the Rubinius language platform.