rubinius-compiler 3.1 → 3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9475b19de7fdf62a0364df86c2df209defe0887
4
- data.tar.gz: 7322ab0ae205811afe3d7a6777b77e3bbe4955e7
3
+ metadata.gz: b8f0185b47866838d791ca5875d2c2c86a92c5e9
4
+ data.tar.gz: cc1d20dc50c05e28554a5efd60ac10f34d2c2a65
5
5
  SHA512:
6
- metadata.gz: 8c045081ecc961a40d86ae3191175d493ecf59c3eb97a9964350ee3339a599ec8fd0c29e891909a4e79b34d30d16ff76582cf7185c12320cb3df5248afd6f1fb
7
- data.tar.gz: 3877f3e03865069f90ac984d5453a2564a9152657506386cd10fc5fe95d31b6d736e2164d793d691e3927ef2fc8162d8579e6b9ccbc717d785d2682938f3ac41
6
+ metadata.gz: 2cc1d06ee268a446f6eba05e33f59a98e44659bf8e63c31b8b00d7dd05c171cf7940b193de3333e647a7c2ea88a29df5bb7c903c5e31b38f06c170d9ed419d0d
7
+ data.tar.gz: 51a91af6651953519056ec02b9b8ca708907d26c10124e72cfbbebe41c97767dffa01a6abb20fd91ba212653049d78057d5a68b69956285612382563fbffd521
@@ -7,13 +7,13 @@ module CodeTools
7
7
  ##
8
8
  # Jump label for the branch instructions. The use scenarios for labels:
9
9
  # 1. Used and then set
10
- # g.gif label
10
+ # g.goto_if_false label
11
11
  # ...
12
12
  # label.set!
13
13
  # 2. Set and then used
14
14
  # label.set!
15
15
  # ...
16
- # g.git label
16
+ # g.goto_if_true label
17
17
  # 3. 1, 2
18
18
  #
19
19
  # Many labels are only used once. This class employs two small
@@ -119,63 +119,61 @@ module CodeTools
119
119
  SEPARATOR_SIZE = 40
120
120
 
121
121
  def invalid(message)
122
- if $DEBUG
123
- puts message
124
- name = @generator.name.inspect
125
- size = (SEPARATOR_SIZE - name.size - 2) / 2
126
- size = 1 if size <= 0
127
- puts "\n#{"=" * size} #{name} #{"=" * (size + name.size % 2)}"
128
-
129
- literals = @generator.literals
130
- names = @generator.local_names
131
- stream = @generator.stream
132
- i = 0
133
- n = stream.size
134
- stack = 0
135
-
136
- while i < n
137
- insn = Rubinius::InstructionSet[stream[i]]
138
- printf "[%3d] %04d %-28s" % [stack, i, insn.opcode.inspect]
139
-
140
- args = stream[i+1, insn.size-1]
141
- if insn.size > 1
142
- insn.args.each_with_index do |kind, index|
143
- arg = args[index]
144
- case kind
145
- when :literal
146
- printf "%s " % literals[arg].inspect
147
- when :local
148
- printf "%s " % (names ? names[arg] : arg)
149
- else
150
- printf "%d " % arg
151
- end
122
+ puts message
123
+ name = @generator.name.inspect
124
+ size = (SEPARATOR_SIZE - name.size - 2) / 2
125
+ size = 1 if size <= 0
126
+ puts "\n#{"=" * size} #{name} #{"=" * (size + name.size % 2)}"
127
+
128
+ literals = @generator.literals
129
+ names = @generator.local_names
130
+ stream = @generator.stream
131
+ i = 0
132
+ n = stream.size
133
+ stack = 0
134
+
135
+ while i < n
136
+ insn = Rubinius::InstructionSet[stream[i]]
137
+ printf "[%3d] %04d %-28s" % [stack, i, insn.opcode.inspect]
138
+
139
+ args = stream[i+1, insn.size-1]
140
+ if insn.size > 1
141
+ insn.args.each_with_index do |kind, index|
142
+ arg = args[index]
143
+ case kind
144
+ when :literal
145
+ printf "%s " % literals[arg].inspect
146
+ when :local
147
+ printf "%s " % (names ? names[arg] : arg)
148
+ else
149
+ printf "%d " % arg
152
150
  end
153
151
  end
152
+ end
154
153
 
155
- puts
154
+ puts
156
155
 
157
- if insn.variable_stack?
158
- use = insn.stack_consumed
159
- if use.kind_of? Array
160
- use = args[use[1] - 1] + use[0]
161
- end
162
-
163
- pro = insn.stack_produced
164
- if pro.kind_of? Array
165
- pro = (args[pro[1] - 1] * pro[2]) + pro[0]
166
- end
156
+ if insn.variable_stack?
157
+ use = insn.stack_consumed
158
+ if use.kind_of? Array
159
+ use = args[use[1] - 1] + use[0]
160
+ end
167
161
 
168
- stack += pro - use
169
- else
170
- stack += insn.stack_difference
162
+ pro = insn.stack_produced
163
+ if pro.kind_of? Array
164
+ pro = (args[pro[1] - 1] * pro[2]) + pro[0]
171
165
  end
172
166
 
173
- i += insn.size
167
+ stack += pro - use
168
+ else
169
+ stack += insn.stack_difference
174
170
  end
175
171
 
176
- puts "-" * SEPARATOR_SIZE
172
+ i += insn.size
177
173
  end
178
174
 
175
+ puts "-" * SEPARATOR_SIZE
176
+
179
177
  raise CompileError, message
180
178
  end
181
179
 
@@ -447,19 +445,6 @@ module CodeTools
447
445
  Label.new(self)
448
446
  end
449
447
 
450
- # Aliases
451
-
452
- alias_method :dup, :dup_top
453
- alias_method :git, :goto_if_true
454
- alias_method :gif, :goto_if_false
455
- alias_method :gin, :goto_if_nil
456
- alias_method :ginn, :goto_if_not_nil
457
- alias_method :giu, :goto_if_undefined
458
- alias_method :ginu, :goto_if_not_undefined
459
- alias_method :gie, :goto_if_equal
460
- alias_method :gine, :goto_if_not_equal
461
- alias_method :swap, :swap_stack
462
-
463
448
  # Helpers
464
449
 
465
450
  def new_basic_block
@@ -482,82 +467,27 @@ module CodeTools
482
467
  return idx
483
468
  end
484
469
 
485
- def push(what)
486
- case what
487
- when :true
488
- push_true
489
- when :false
490
- push_false
491
- when :self
492
- push_self
493
- when :nil
494
- push_nil
495
- when Integer
496
- push_int what
497
- else
498
- raise CompileError, "Unknown push argument '#{what.inspect}'"
499
- end
470
+ def push_generator(generator)
471
+ index = @literals.size
472
+ push_literal generator
473
+ @generators << index
474
+ index
500
475
  end
501
476
 
502
- def push_generator(generator)
503
- index = push_literal generator
477
+ def add_generator(generator)
478
+ index = add_literal generator
504
479
  @generators << index
505
480
  index
506
481
  end
507
482
 
508
- # Find the index for the specified literal, or create a new slot if the
509
- # literal has not been encountered previously.
510
483
  def find_literal(literal)
511
484
  @literals_map[literal]
512
485
  end
513
486
 
514
- # Add literal exists to allow RegexLiteral's to create a new regex literal
515
- # object at run-time. All other literals should be added via find_literal,
516
- # which re-use an existing matching literal if one exists.
517
487
  def add_literal(literal)
518
488
  index = @literals.size
519
489
  @literals << literal
520
- return index
521
- end
522
-
523
- # Pushes the specified literal value into the literal's tuple
524
- def push_literal(literal)
525
- index = find_literal literal
526
- emit_push_literal index
527
- return index
528
- end
529
-
530
- # Puts +what+ is the literals tuple without trying to see if
531
- # something that is like +what+ is already there.
532
- def push_unique_literal(literal)
533
- index = add_literal literal
534
- emit_push_literal index
535
- return index
536
- end
537
-
538
- # Pushes the literal value on the stack into the specified position in the
539
- # literals tuple. Most timees, push_literal should be used instead; this
540
- # method exists to support RegexLiteral, where the compiled literal value
541
- # (a Regex object) does not exist until runtime.
542
- def push_literal_at(index)
543
- emit_push_literal index
544
- return index
545
- end
546
-
547
- # The push_const instruction itself is unused right now. The instruction
548
- # parser does not emit a GeneratorMethods#push_const. This method/opcode
549
- # was used in the compiler before the push_const_fast instruction. Rather
550
- # than changing the compiler code, this helper was used.
551
- def push_const(name)
552
- push_const_fast find_literal(name)
553
- end
554
-
555
- # The find_const instruction itself is unused right now. The instruction
556
- # parser does not emit a GeneratorMethods#find_const. This method/opcode
557
- # was used in the compiler before the find_const_fast instruction. Rather
558
- # than changing the compiler code, this helper was used.
559
- def find_const(name)
560
- find_const_fast find_literal(name)
490
+ index
561
491
  end
562
492
 
563
493
  def push_local(idx)
@@ -601,18 +531,11 @@ module CodeTools
601
531
  raise CompileError, "count must be a number"
602
532
  end
603
533
 
604
- idx = find_literal(meth)
605
-
606
- # Don't use send_method, it's only for when the syntax
607
- # specified no arguments and no parens.
608
- send_stack idx, count
609
- end
610
-
611
- # Do a private send to self with no arguments specified, ie, a vcall
612
- # style send.
613
- def send_vcall(meth)
614
- idx = find_literal(meth)
615
- send_method idx
534
+ if count == 0
535
+ send_method meth
536
+ else
537
+ send_stack meth, count
538
+ end
616
539
  end
617
540
 
618
541
  def send_with_block(meth, count, priv=false)
@@ -622,9 +545,7 @@ module CodeTools
622
545
  raise CompileError, "count must be a number"
623
546
  end
624
547
 
625
- idx = find_literal(meth)
626
-
627
- send_stack_with_block idx, count
548
+ send_stack_with_block meth, count
628
549
  end
629
550
 
630
551
  def send_with_splat(meth, args, priv=false, concat=false)
@@ -634,23 +555,15 @@ module CodeTools
634
555
 
635
556
  allow_private if priv
636
557
 
637
- idx = find_literal(meth)
638
- send_stack_with_splat idx, args
558
+ send_stack_with_splat meth, args
639
559
  end
640
560
 
641
561
  def send_super(meth, args, splat=false)
642
- idx = find_literal(meth)
643
-
644
562
  if splat
645
- send_super_stack_with_splat idx, args
563
+ send_super_stack_with_splat meth, args
646
564
  else
647
- send_super_stack_with_block idx, args
565
+ send_super_stack_with_block meth, args
648
566
  end
649
567
  end
650
-
651
- def meta_to_s(name=:to_s, priv=true)
652
- allow_private if priv
653
- super find_literal(name)
654
- end
655
568
  end
656
569
  end
@@ -31,25 +31,10 @@ module CodeTools
31
31
  end
32
32
 
33
33
  def push_int(arg1)
34
- if arg1 > 2 and arg1 < 256
35
- @stream << 4 << arg1
36
- @current_block.add_stack(0, 1)
37
- @ip += 2
38
- @instruction = 4
39
- else
40
- case arg1
41
- when -1
42
- meta_push_neg_1
43
- when 0
44
- meta_push_0
45
- when 1
46
- meta_push_1
47
- when 2
48
- meta_push_2
49
- else
50
- push_literal arg1
51
- end
52
- end
34
+ @stream << 4 << arg1
35
+ @ip += 2
36
+ @current_block.add_stack(0, 1)
37
+ @instruction = 4
53
38
  end
54
39
 
55
40
  def push_self
@@ -59,14 +44,16 @@ module CodeTools
59
44
  @instruction = 5
60
45
  end
61
46
 
62
- def set_literal(arg1)
47
+ def push_memo(arg1)
48
+ arg1 = find_literal(arg1)
63
49
  @stream << 6 << arg1
64
50
  @ip += 2
65
51
  @current_block.add_stack(1, 1)
66
52
  @instruction = 6
67
53
  end
68
54
 
69
- def emit_push_literal(arg1)
55
+ def push_literal(arg1)
56
+ arg1 = find_literal(arg1)
70
57
  @stream << 7 << arg1
71
58
  @ip += 2
72
59
  @current_block.add_stack(0, 1)
@@ -206,14 +193,14 @@ module CodeTools
206
193
  @instruction = 17
207
194
  end
208
195
 
209
- def swap_stack
196
+ def swap
210
197
  @stream << 18
211
198
  @ip += 1
212
199
  @current_block.add_stack(2, 2)
213
200
  @instruction = 18
214
201
  end
215
202
 
216
- def dup_top
203
+ def dup
217
204
  @stream << 19
218
205
  @ip += 1
219
206
  @current_block.add_stack(1, 2)
@@ -221,6 +208,7 @@ module CodeTools
221
208
  end
222
209
 
223
210
  def dup_many(arg1)
211
+ arg1 = Integer(arg1)
224
212
  @stream << 20 << arg1
225
213
  @ip += 2
226
214
  @current_block.add_stack(arg1, (arg1 * 2))
@@ -235,6 +223,7 @@ module CodeTools
235
223
  end
236
224
 
237
225
  def pop_many(arg1)
226
+ arg1 = Integer(arg1)
238
227
  @stream << 22 << arg1
239
228
  @ip += 2
240
229
  @current_block.add_stack(arg1, 0)
@@ -242,6 +231,7 @@ module CodeTools
242
231
  end
243
232
 
244
233
  def rotate(arg1)
234
+ arg1 = Integer(arg1)
245
235
  @stream << 23 << arg1
246
236
  @ip += 2
247
237
  @current_block.add_stack(arg1, (arg1 * 1))
@@ -385,6 +375,7 @@ module CodeTools
385
375
  end
386
376
 
387
377
  def make_array(arg1)
378
+ arg1 = Integer(arg1)
388
379
  @stream << 41 << arg1
389
380
  @ip += 2
390
381
  @current_block.add_stack(arg1, 1)
@@ -407,7 +398,7 @@ module CodeTools
407
398
  end
408
399
 
409
400
  def set_ivar(arg1)
410
- arg1 = find_literal arg1
401
+ arg1 = find_literal(arg1)
411
402
  @stream << 44 << arg1
412
403
  @ip += 2
413
404
  @current_block.add_stack(1, 1)
@@ -415,7 +406,7 @@ module CodeTools
415
406
  end
416
407
 
417
408
  def push_ivar(arg1)
418
- arg1 = find_literal arg1
409
+ arg1 = find_literal(arg1)
419
410
  @stream << 45 << arg1
420
411
  @ip += 2
421
412
  @current_block.add_stack(0, 1)
@@ -423,463 +414,387 @@ module CodeTools
423
414
  end
424
415
 
425
416
  def set_const(arg1)
426
- @stream << 47 << arg1
417
+ arg1 = find_literal(arg1)
418
+ @stream << 46 << arg1
427
419
  @ip += 2
428
420
  @current_block.add_stack(1, 1)
429
- @instruction = 47
421
+ @instruction = 46
430
422
  end
431
423
 
432
424
  def set_const_at(arg1)
433
- @stream << 48 << arg1
425
+ arg1 = find_literal(arg1)
426
+ @stream << 47 << arg1
434
427
  @ip += 2
435
428
  @current_block.add_stack(2, 1)
436
- @instruction = 48
437
- end
438
-
439
- def find_const(arg1)
440
- arg1 = find_literal arg1
441
- @stream << 49 << arg1
442
- @ip += 2
443
- @current_block.add_stack(1, 1)
444
- @instruction = 49
429
+ @instruction = 47
445
430
  end
446
431
 
447
432
  def push_cpath_top
448
- @stream << 50
433
+ @stream << 48
449
434
  @ip += 1
450
435
  @current_block.add_stack(0, 1)
451
- @instruction = 50
436
+ @instruction = 48
452
437
  end
453
438
 
454
- def push_const_fast(arg1)
455
- @stream << 51 << arg1
439
+ def push_const(arg1)
440
+ arg1 = find_literal(arg1)
441
+ @stream << 49 << arg1
456
442
  @ip += 2
457
443
  @current_block.add_stack(0, 1)
458
- @instruction = 51
444
+ @instruction = 49
459
445
  end
460
446
 
461
- def find_const_fast(arg1)
462
- @stream << 52 << arg1
447
+ def find_const(arg1)
448
+ arg1 = find_literal(arg1)
449
+ @stream << 50 << arg1
463
450
  @ip += 2
464
451
  @current_block.add_stack(1, 1)
465
- @instruction = 52
452
+ @instruction = 50
466
453
  end
467
454
 
468
455
  def set_call_flags(arg1)
469
- @stream << 53 << arg1
456
+ @stream << 51 << arg1
470
457
  @ip += 2
471
458
  @current_block.add_stack(0, 0)
472
- @instruction = 53
459
+ @instruction = 51
473
460
  end
474
461
 
475
462
  def allow_private
476
- @stream << 54
463
+ @stream << 52
477
464
  @ip += 1
478
465
  @current_block.add_stack(0, 0)
479
- @instruction = 54
466
+ @instruction = 52
467
+ end
468
+
469
+ def send_vcall(arg1)
470
+ arg1 = find_literal(arg1)
471
+ @stream << 53 << arg1
472
+ @ip += 2
473
+ @current_block.add_stack(0, 1)
474
+ @instruction = 53
480
475
  end
481
476
 
482
477
  def send_method(arg1)
483
- @stream << 55 << arg1
478
+ arg1 = find_literal(arg1)
479
+ @stream << 54 << arg1
484
480
  @ip += 2
485
481
  @current_block.add_stack(1, 1)
486
- @instruction = 55
482
+ @instruction = 54
487
483
  end
488
484
 
489
485
  def send_stack(arg1, arg2)
490
- @stream << 56 << arg1 << arg2
486
+ arg1 = find_literal(arg1)
487
+ arg2 = Integer(arg2)
488
+ @stream << 55 << arg1 << arg2
491
489
  @ip += 3
492
490
  @current_block.add_stack(arg2+1, 1)
493
- @instruction = 56
491
+ @instruction = 55
494
492
  end
495
493
 
496
494
  def send_stack_with_block(arg1, arg2)
497
- @stream << 57 << arg1 << arg2
495
+ arg1 = find_literal(arg1)
496
+ arg2 = Integer(arg2)
497
+ @stream << 56 << arg1 << arg2
498
498
  @ip += 3
499
499
  @current_block.add_stack(arg2+2, 1)
500
- @instruction = 57
500
+ @instruction = 56
501
501
  end
502
502
 
503
503
  def send_stack_with_splat(arg1, arg2)
504
- @stream << 58 << arg1 << arg2
504
+ arg1 = find_literal(arg1)
505
+ arg2 = Integer(arg2)
506
+ @stream << 57 << arg1 << arg2
505
507
  @ip += 3
506
508
  @current_block.add_stack(arg2+3, 1)
507
- @instruction = 58
509
+ @instruction = 57
508
510
  end
509
511
 
510
512
  def send_super_stack_with_block(arg1, arg2)
511
- @stream << 59 << arg1 << arg2
513
+ arg1 = find_literal(arg1)
514
+ arg2 = Integer(arg2)
515
+ @stream << 58 << arg1 << arg2
512
516
  @ip += 3
513
517
  @current_block.add_stack(arg2+1, 1)
514
- @instruction = 59
518
+ @instruction = 58
515
519
  end
516
520
 
517
521
  def send_super_stack_with_splat(arg1, arg2)
518
- @stream << 60 << arg1 << arg2
522
+ arg1 = find_literal(arg1)
523
+ arg2 = Integer(arg2)
524
+ @stream << 59 << arg1 << arg2
519
525
  @ip += 3
520
526
  @current_block.add_stack(arg2+2, 1)
521
- @instruction = 60
527
+ @instruction = 59
522
528
  end
523
529
 
524
530
  def push_block
525
- @stream << 61
531
+ @stream << 60
526
532
  @ip += 1
527
533
  @current_block.add_stack(0, 1)
528
- @instruction = 61
534
+ @instruction = 60
529
535
  end
530
536
 
531
537
  def passed_blockarg(arg1)
532
- @stream << 62 << arg1
538
+ arg1 = Integer(arg1)
539
+ @stream << 61 << arg1
533
540
  @ip += 2
534
541
  @current_block.add_stack(0, 1)
535
- @instruction = 62
542
+ @instruction = 61
536
543
  end
537
544
 
538
545
  def create_block(arg1)
539
- arg1 = add_literal arg1
540
- @generators << arg1
541
- @stream << 63 << arg1
546
+ arg1 = add_generator(arg1)
547
+ @stream << 62 << arg1
542
548
  @ip += 2
543
549
  @current_block.add_stack(0, 1)
544
- @instruction = 63
550
+ @instruction = 62
545
551
  end
546
552
 
547
553
  def cast_for_single_block_arg
548
- @stream << 64
554
+ @stream << 63
549
555
  @ip += 1
550
556
  @current_block.add_stack(0, 1)
551
- @instruction = 64
557
+ @instruction = 63
552
558
  end
553
559
 
554
560
  def cast_for_multi_block_arg
555
- @stream << 65
561
+ @stream << 64
556
562
  @ip += 1
557
563
  @current_block.add_stack(0, 1)
558
- @instruction = 65
564
+ @instruction = 64
559
565
  end
560
566
 
561
567
  def cast_for_splat_block_arg
562
- @stream << 66
568
+ @stream << 65
563
569
  @ip += 1
564
570
  @current_block.add_stack(0, 1)
565
- @instruction = 66
571
+ @instruction = 65
566
572
  end
567
573
 
568
574
  def yield_stack(arg1)
569
- @stream << 67 << arg1
575
+ arg1 = Integer(arg1)
576
+ @stream << 66 << arg1
570
577
  @ip += 2
571
578
  @current_block.add_stack(arg1, 1)
572
- @instruction = 67
579
+ @instruction = 66
573
580
  end
574
581
 
575
582
  def yield_splat(arg1)
576
- @stream << 68 << arg1
583
+ arg1 = Integer(arg1)
584
+ @stream << 67 << arg1
577
585
  @ip += 2
578
586
  @current_block.add_stack(arg1+1, 1)
579
- @instruction = 68
587
+ @instruction = 67
580
588
  end
581
589
 
582
590
  def string_append
583
- @stream << 69
591
+ @stream << 68
584
592
  @ip += 1
585
593
  @current_block.add_stack(2, 1)
586
- @instruction = 69
594
+ @instruction = 68
587
595
  end
588
596
 
589
597
  def string_build(arg1)
590
- @stream << 70 << arg1
598
+ arg1 = Integer(arg1)
599
+ @stream << 69 << arg1
591
600
  @ip += 2
592
601
  @current_block.add_stack(arg1, 1)
593
- @instruction = 70
602
+ @instruction = 69
594
603
  end
595
604
 
596
605
  def string_dup
597
- @stream << 71
606
+ @stream << 70
598
607
  @ip += 1
599
608
  @current_block.add_stack(1, 1)
600
- @instruction = 71
609
+ @instruction = 70
601
610
  end
602
611
 
603
612
  def push_scope
604
- @stream << 72
613
+ @stream << 71
605
614
  @ip += 1
606
615
  @current_block.add_stack(0, 1)
607
- @instruction = 72
616
+ @instruction = 71
608
617
  end
609
618
 
610
619
  def add_scope
611
- @stream << 73
620
+ @stream << 72
612
621
  @ip += 1
613
622
  @current_block.add_stack(1, 0)
614
- @instruction = 73
623
+ @instruction = 72
615
624
  end
616
625
 
617
626
  def push_variables
618
- @stream << 74
627
+ @stream << 73
619
628
  @ip += 1
620
629
  @current_block.add_stack(0, 1)
621
- @instruction = 74
630
+ @instruction = 73
622
631
  end
623
632
 
624
633
  def check_interrupts
625
- @stream << 75
634
+ @stream << 74
626
635
  @ip += 1
627
636
  @current_block.add_stack(0, 0)
628
- @instruction = 75
637
+ @instruction = 74
629
638
  end
630
639
 
631
640
  def yield_debugger
632
- @stream << 76
641
+ @stream << 75
633
642
  @ip += 1
634
643
  @current_block.add_stack(0, 0)
635
- @instruction = 76
636
- end
637
-
638
- def is_nil
639
- @stream << 77
640
- @ip += 1
641
- @current_block.add_stack(1, 1)
642
- @instruction = 77
644
+ @instruction = 75
643
645
  end
644
646
 
645
647
  def check_serial(arg1, arg2)
646
- arg1 = find_literal arg1
647
- arg2 = Integer(arg2)
648
- @stream << 78 << arg1 << arg2
648
+ arg1 = find_literal(arg1)
649
+ @stream << 76 << arg1 << arg2
649
650
  @ip += 3
650
651
  @current_block.add_stack(1, 1)
651
- @instruction = 78
652
+ @instruction = 76
652
653
  end
653
654
 
654
655
  def check_serial_private(arg1, arg2)
655
- arg1 = find_literal arg1
656
- arg2 = Integer(arg2)
657
- @stream << 79 << arg1 << arg2
656
+ arg1 = find_literal(arg1)
657
+ @stream << 77 << arg1 << arg2
658
658
  @ip += 3
659
659
  @current_block.add_stack(1, 1)
660
- @instruction = 79
660
+ @instruction = 77
661
661
  end
662
662
 
663
663
  def push_my_field(arg1)
664
- @stream << 80 << arg1
664
+ @stream << 78 << arg1
665
665
  @ip += 2
666
666
  @current_block.add_stack(0, 1)
667
- @instruction = 80
667
+ @instruction = 78
668
668
  end
669
669
 
670
670
  def store_my_field(arg1)
671
- @stream << 81 << arg1
671
+ @stream << 79 << arg1
672
672
  @ip += 2
673
673
  @current_block.add_stack(1, 1)
674
- @instruction = 81
674
+ @instruction = 79
675
675
  end
676
676
 
677
677
  def kind_of
678
- @stream << 82
678
+ @stream << 80
679
679
  @ip += 1
680
680
  @current_block.add_stack(2, 1)
681
- @instruction = 82
681
+ @instruction = 80
682
682
  end
683
683
 
684
684
  def instance_of
685
- @stream << 83
685
+ @stream << 81
686
686
  @ip += 1
687
687
  @current_block.add_stack(2, 1)
688
- @instruction = 83
689
- end
690
-
691
- def meta_push_neg_1
692
- @stream << 84
693
- @ip += 1
694
- @current_block.add_stack(0, 1)
695
- @instruction = 84
696
- end
697
-
698
- def meta_push_0
699
- @stream << 85
700
- @ip += 1
701
- @current_block.add_stack(0, 1)
702
- @instruction = 85
703
- end
704
-
705
- def meta_push_1
706
- @stream << 86
707
- @ip += 1
708
- @current_block.add_stack(0, 1)
709
- @instruction = 86
710
- end
711
-
712
- def meta_push_2
713
- @stream << 87
714
- @ip += 1
715
- @current_block.add_stack(0, 1)
716
- @instruction = 87
717
- end
718
-
719
- def meta_send_op_plus(arg1)
720
- @stream << 88 << arg1
721
- @ip += 2
722
- @current_block.add_stack(2, 1)
723
- @instruction = 88
724
- end
725
-
726
- def meta_send_op_minus(arg1)
727
- @stream << 89 << arg1
728
- @ip += 2
729
- @current_block.add_stack(2, 1)
730
- @instruction = 89
731
- end
732
-
733
- def meta_send_op_equal(arg1)
734
- @stream << 90 << arg1
735
- @ip += 2
736
- @current_block.add_stack(2, 1)
737
- @instruction = 90
738
- end
739
-
740
- def meta_send_op_lt(arg1)
741
- @stream << 91 << arg1
742
- @ip += 2
743
- @current_block.add_stack(2, 1)
744
- @instruction = 91
745
- end
746
-
747
- def meta_send_op_gt(arg1)
748
- @stream << 92 << arg1
749
- @ip += 2
750
- @current_block.add_stack(2, 1)
751
- @instruction = 92
752
- end
753
-
754
- def meta_send_op_tequal(arg1)
755
- @stream << 93 << arg1
756
- @ip += 2
757
- @current_block.add_stack(2, 1)
758
- @instruction = 93
759
- end
760
-
761
- def meta_send_call(arg1, arg2)
762
- @stream << 94 << arg1 << arg2
763
- @ip += 3
764
- @current_block.add_stack(arg2+1, 1)
765
- @instruction = 94
688
+ @instruction = 81
766
689
  end
767
690
 
768
691
  def push_my_offset(arg1)
769
- @stream << 95 << arg1
692
+ @stream << 82 << arg1
770
693
  @ip += 2
771
694
  @current_block.add_stack(0, 1)
772
- @instruction = 95
695
+ @instruction = 82
773
696
  end
774
697
 
775
698
  def zsuper(arg1)
776
- arg1 = find_literal arg1
777
- @stream << 96 << arg1
699
+ arg1 = find_literal(arg1)
700
+ @stream << 83 << arg1
778
701
  @ip += 2
779
702
  @current_block.add_stack(1, 1)
780
- @instruction = 96
703
+ @instruction = 83
781
704
  end
782
705
 
783
706
  def push_block_arg
784
- @stream << 97
707
+ @stream << 84
785
708
  @ip += 1
786
709
  @current_block.add_stack(0, 1)
787
- @instruction = 97
710
+ @instruction = 84
788
711
  end
789
712
 
790
713
  def push_undef
791
- @stream << 98
714
+ @stream << 85
792
715
  @ip += 1
793
716
  @current_block.add_stack(0, 1)
794
- @instruction = 98
717
+ @instruction = 85
795
718
  end
796
719
 
797
720
  def push_stack_local(arg1)
798
- @stream << 99 << arg1
721
+ @stream << 86 << arg1
799
722
  @ip += 2
800
723
  @current_block.add_stack(0, 1)
801
- @instruction = 99
724
+ @instruction = 86
802
725
  end
803
726
 
804
727
  def set_stack_local(arg1)
805
- @stream << 100 << arg1
728
+ @stream << 87 << arg1
806
729
  @ip += 2
807
730
  @current_block.add_stack(1, 1)
808
- @instruction = 100
731
+ @instruction = 87
809
732
  end
810
733
 
811
734
  def push_has_block
812
- @stream << 101
735
+ @stream << 88
813
736
  @ip += 1
814
737
  @current_block.add_stack(0, 1)
815
- @instruction = 101
738
+ @instruction = 88
816
739
  end
817
740
 
818
741
  def push_proc
819
- @stream << 102
742
+ @stream << 89
820
743
  @ip += 1
821
744
  @current_block.add_stack(0, 1)
822
- @instruction = 102
745
+ @instruction = 89
823
746
  end
824
747
 
825
748
  def check_frozen
826
- @stream << 103
749
+ @stream << 90
827
750
  @ip += 1
828
751
  @current_block.add_stack(1, 1)
829
- @instruction = 103
752
+ @instruction = 90
830
753
  end
831
754
 
832
755
  def cast_multi_value
833
- @stream << 104
756
+ @stream << 91
834
757
  @ip += 1
835
758
  @current_block.add_stack(1, 1)
836
- @instruction = 104
759
+ @instruction = 91
837
760
  end
838
761
 
839
762
  def invoke_primitive(arg1, arg2)
840
- arg1 = find_literal arg1
763
+ arg1 = find_literal(arg1)
841
764
  arg2 = Integer(arg2)
842
- @stream << 105 << arg1 << arg2
765
+ @stream << 92 << arg1 << arg2
843
766
  @ip += 3
844
767
  @current_block.add_stack(arg2, 1)
845
- @instruction = 105
768
+ @instruction = 92
846
769
  end
847
770
 
848
771
  def push_rubinius
849
- @stream << 106
772
+ @stream << 93
850
773
  @ip += 1
851
774
  @current_block.add_stack(0, 1)
852
- @instruction = 106
853
- end
854
-
855
- def call_custom(arg1, arg2)
856
- arg1 = find_literal arg1
857
- arg2 = Integer(arg2)
858
- @stream << 107 << arg1 << arg2
859
- @ip += 3
860
- @current_block.add_stack(arg2+1, 1)
861
- @instruction = 107
775
+ @instruction = 93
862
776
  end
863
777
 
864
- def meta_to_s(arg1)
865
- @stream << 108 << arg1
778
+ def object_to_s(arg1)
779
+ arg1 = find_literal(arg1)
780
+ @stream << 94 << arg1
866
781
  @ip += 2
867
782
  @current_block.add_stack(1, 1)
868
- @instruction = 108
783
+ @instruction = 94
869
784
  end
870
785
 
871
786
  def push_type
872
- @stream << 109
787
+ @stream << 95
873
788
  @ip += 1
874
789
  @current_block.add_stack(0, 1)
875
- @instruction = 109
790
+ @instruction = 95
876
791
  end
877
792
 
878
793
  def push_mirror
879
- @stream << 110
794
+ @stream << 96
880
795
  @ip += 1
881
796
  @current_block.add_stack(0, 1)
882
- @instruction = 110
797
+ @instruction = 96
883
798
  end
884
799
 
885
800
  end
@@ -12,7 +12,7 @@ module Rubinius
12
12
  opcode 5, :push_self, :stack => [0, 1], :args => [], :control_flow => :next
13
13
 
14
14
  # Manipulate literals
15
- opcode 6, :set_literal, :stack => [1, 1], :args => [:literal], :control_flow => :next
15
+ opcode 6, :push_memo, :stack => [1, 1], :args => [:literal], :control_flow => :next
16
16
  opcode 7, :push_literal, :stack => [0, 1], :args => [:literal], :control_flow => :next
17
17
 
18
18
  # Flow control
@@ -28,8 +28,8 @@ module Rubinius
28
28
  opcode 17, :ret, :stack => [1, 1], :args => [], :control_flow => :return
29
29
 
30
30
  # Stack manipulations
31
- opcode 18, :swap_stack, :stack => [2, 2], :args => [], :control_flow => :next
32
- opcode 19, :dup_top, :stack => [1, 2], :args => [], :control_flow => :next
31
+ opcode 18, :swap, :stack => [2, 2], :args => [], :control_flow => :next
32
+ opcode 19, :dup, :stack => [1, 2], :args => [], :control_flow => :next
33
33
  opcode 20, :dup_many, :stack => [[0,1], [0, 1, 2]],:args => [:count], :control_flow => :next
34
34
  opcode 21, :pop, :stack => [1, 0], :args => [], :control_flow => :next
35
35
  opcode 22, :pop_many, :stack => [[0,1], 0], :args => [:count], :control_flow => :next
@@ -66,91 +66,73 @@ module Rubinius
66
66
  opcode 45, :push_ivar, :stack => [0, 1], :args => [:literal], :control_flow => :next
67
67
 
68
68
  # Manipulate constants
69
- opcode 46, :push_const, :stack => [0, 1], :args => [:literal], :control_flow => :next
70
- opcode 47, :set_const, :stack => [1, 1], :args => [:literal], :control_flow => :next
71
- opcode 48, :set_const_at, :stack => [2, 1], :args => [:literal], :control_flow => :next
72
- opcode 49, :find_const, :stack => [1, 1], :args => [:literal], :control_flow => :next
73
- opcode 50, :push_cpath_top, :stack => [0, 1], :args => [], :control_flow => :next
74
- opcode 51, :push_const_fast, :stack => [0, 1], :args => [:literal], :control_flow => :next
75
- opcode 52, :find_const_fast, :stack => [1, 1], :args => [:literal], :control_flow => :next
69
+ opcode 46, :set_const, :stack => [1, 1], :args => [:literal], :control_flow => :next
70
+ opcode 47, :set_const_at, :stack => [2, 1], :args => [:literal], :control_flow => :next
71
+ opcode 48, :push_cpath_top, :stack => [0, 1], :args => [], :control_flow => :next
72
+ opcode 49, :push_const, :stack => [0, 1], :args => [:literal], :control_flow => :next
73
+ opcode 50, :find_const, :stack => [1, 1], :args => [:literal], :control_flow => :next
76
74
 
77
75
  # Send messages
78
- opcode 53, :set_call_flags, :stack => [0, 0], :args => [:flags], :control_flow => :next
79
- opcode 54, :allow_private, :stack => [0, 0], :args => [], :control_flow => :next
80
- opcode 55, :send_method, :stack => [1, 1], :args => [:literal], :control_flow => :send
81
- opcode 56, :send_stack, :stack => [[1,2], 1], :args => [:literal, :count], :control_flow => :send
82
- opcode 57, :send_stack_with_block, :stack => [[2,2], 1], :args => [:literal, :count], :control_flow => :send
76
+ opcode 51, :set_call_flags, :stack => [0, 0], :args => [:flags], :control_flow => :next
77
+ opcode 52, :allow_private, :stack => [0, 0], :args => [], :control_flow => :next
78
+ opcode 53, :send_vcall, :stack => [0, 1], :args => [:literal], :control_flow => :send
79
+ opcode 54, :send_method, :stack => [1, 1], :args => [:literal], :control_flow => :send
80
+ opcode 55, :send_stack, :stack => [[1,2], 1], :args => [:literal, :count], :control_flow => :send
81
+ opcode 56, :send_stack_with_block, :stack => [[2,2], 1], :args => [:literal, :count], :control_flow => :send
83
82
 
84
83
  CALL_FLAG_CONCAT = 2
85
84
 
86
- opcode 58, :send_stack_with_splat, :stack => [[3,2], 1], :args => [:literal, :count], :control_flow => :send
87
- opcode 59, :send_super_stack_with_block, :stack => [[1,2], 1], :args => [:literal, :count], :control_flow => :send
88
- opcode 60, :send_super_stack_with_splat, :stack => [[2,2], 1], :args => [:literal, :count], :control_flow => :send
85
+ opcode 57, :send_stack_with_splat, :stack => [[3,2], 1], :args => [:literal, :count], :control_flow => :send
86
+ opcode 58, :send_super_stack_with_block, :stack => [[1,2], 1], :args => [:literal, :count], :control_flow => :send
87
+ opcode 59, :send_super_stack_with_splat, :stack => [[2,2], 1], :args => [:literal, :count], :control_flow => :send
89
88
 
90
89
  # Manipulate blocks
91
- opcode 61, :push_block, :stack => [0, 1], :args => [], :control_flow => :next
92
- opcode 62, :passed_blockarg, :stack => [0, 1], :args => [:count], :control_flow => :next
93
- opcode 63, :create_block, :stack => [0, 1], :args => [:literal], :control_flow => :next
94
- opcode 64, :cast_for_single_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
95
- opcode 65, :cast_for_multi_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
96
- opcode 66, :cast_for_splat_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
97
- opcode 67, :yield_stack, :stack => [[0,1], 1], :args => [:count], :control_flow => :yield
98
- opcode 68, :yield_splat, :stack => [[1,1], 1], :args => [:count], :control_flow => :yield
90
+ opcode 60, :push_block, :stack => [0, 1], :args => [], :control_flow => :next
91
+ opcode 61, :passed_blockarg, :stack => [0, 1], :args => [:count], :control_flow => :next
92
+ opcode 62, :create_block, :stack => [0, 1], :args => [:literal], :control_flow => :next
93
+ opcode 63, :cast_for_single_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
94
+ opcode 64, :cast_for_multi_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
95
+ opcode 65, :cast_for_splat_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
96
+ opcode 66, :yield_stack, :stack => [[0,1], 1], :args => [:count], :control_flow => :yield
97
+ opcode 67, :yield_splat, :stack => [[1,1], 1], :args => [:count], :control_flow => :yield
99
98
 
100
99
  # Manipulate strings
101
- opcode 69, :string_append, :stack => [2, 1], :args => [], :control_flow => :next
102
- opcode 70, :string_build, :stack => [[0,1], 1], :args => [:count], :control_flow => :next
103
- opcode 71, :string_dup, :stack => [1, 1], :args => [], :control_flow => :next
100
+ opcode 68, :string_append, :stack => [2, 1], :args => [], :control_flow => :next
101
+ opcode 69, :string_build, :stack => [[0,1], 1], :args => [:count], :control_flow => :next
102
+ opcode 70, :string_dup, :stack => [1, 1], :args => [], :control_flow => :next
104
103
 
105
104
  # Manipulate scope
106
- opcode 72, :push_scope, :stack => [0, 1], :args => [], :control_flow => :next
107
- opcode 73, :add_scope, :stack => [1, 0], :args => [], :control_flow => :next
108
- opcode 74, :push_variables, :stack => [0, 1], :args => [], :control_flow => :next
105
+ opcode 71, :push_scope, :stack => [0, 1], :args => [], :control_flow => :next
106
+ opcode 72, :add_scope, :stack => [1, 0], :args => [], :control_flow => :next
107
+ opcode 73, :push_variables, :stack => [0, 1], :args => [], :control_flow => :next
109
108
 
110
109
  # Miscellaneous. TODO: better categorize these
111
- opcode 75, :check_interrupts, :stack => [0, 0], :args => [], :control_flow => :next
112
- opcode 76, :yield_debugger, :stack => [0, 0], :args => [], :control_flow => :next
113
- opcode 77, :is_nil, :stack => [1, 1], :args => [], :control_flow => :next
114
- opcode 78, :check_serial, :stack => [1, 1], :args => [:literal, :serial], :control_flow => :next
115
- opcode 79, :check_serial_private, :stack => [1, 1], :args => [:literal, :serial], :control_flow => :next
110
+ opcode 74, :check_interrupts, :stack => [0, 0], :args => [], :control_flow => :next
111
+ opcode 75, :yield_debugger, :stack => [0, 0], :args => [], :control_flow => :next
112
+ opcode 76, :check_serial, :stack => [1, 1], :args => [:literal, :serial], :control_flow => :next
113
+ opcode 77, :check_serial_private, :stack => [1, 1], :args => [:literal, :serial], :control_flow => :next
116
114
 
117
115
  # Access object fields
118
- opcode 80, :push_my_field, :stack => [0, 1], :args => [:index], :control_flow => :next
119
- opcode 81, :store_my_field, :stack => [1, 1], :args => [:index], :control_flow => :next
116
+ opcode 78, :push_my_field, :stack => [0, 1], :args => [:index], :control_flow => :next
117
+ opcode 79, :store_my_field, :stack => [1, 1], :args => [:index], :control_flow => :next
120
118
 
121
119
  # Type checks
122
- opcode 82, :kind_of, :stack => [2, 1], :args => [], :control_flow => :next
123
- opcode 83, :instance_of, :stack => [2, 1], :args => [], :control_flow => :next
124
-
125
- # Optimizations
126
- opcode 84, :meta_push_neg_1, :stack => [0, 1], :args => [], :control_flow => :next
127
- opcode 85, :meta_push_0, :stack => [0, 1], :args => [], :control_flow => :next
128
- opcode 86, :meta_push_1, :stack => [0, 1], :args => [], :control_flow => :next
129
- opcode 87, :meta_push_2, :stack => [0, 1], :args => [], :control_flow => :next
130
- opcode 88, :meta_send_op_plus, :stack => [2, 1], :args => [:literal], :control_flow => :send
131
- opcode 89, :meta_send_op_minus, :stack => [2, 1], :args => [:literal], :control_flow => :send
132
- opcode 90, :meta_send_op_equal, :stack => [2, 1], :args => [:literal], :control_flow => :send
133
- opcode 91, :meta_send_op_lt, :stack => [2, 1], :args => [:literal], :control_flow => :next
134
- opcode 92, :meta_send_op_gt, :stack => [2, 1], :args => [:literal], :control_flow => :next
135
- opcode 93, :meta_send_op_tequal, :stack => [2, 1], :args => [:literal], :control_flow => :send
136
- opcode 94, :meta_send_call, :stack => [[1,2], 1], :args => [:literal, :count], :control_flow => :send
137
-
138
- # More misc
139
- opcode 95, :push_my_offset, :stack => [0, 1], :args => [:index], :control_flow => :next
140
- opcode 96, :zsuper, :stack => [1, 1], :args => [:literal], :control_flow => :next
141
- opcode 97, :push_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
142
- opcode 98, :push_undef, :stack => [0, 1], :args => [], :control_flow => :next
143
- opcode 99, :push_stack_local, :stack => [0, 1], :args => [:which], :control_flow => :next
144
- opcode 100, :set_stack_local, :stack => [1, 1], :args => [:which], :control_flow => :next
145
- opcode 101, :push_has_block, :stack => [0, 1], :args => [], :control_flow => :next
146
- opcode 102, :push_proc, :stack => [0, 1], :args => [], :control_flow => :next
147
- opcode 103, :check_frozen, :stack => [1, 1], :args => [], :control_flow => :next
148
- opcode 104, :cast_multi_value, :stack => [1, 1], :args => [], :control_flow => :next
149
- opcode 105, :invoke_primitive, :stack => [[0,2], 1], :args => [:literal, :count], :control_flow => :next
150
- opcode 106, :push_rubinius, :stack => [0, 1], :args => [], :control_flow => :next
151
- opcode 107, :call_custom, :stack => [[1,2], 1], :args => [:literal, :count], :control_flow => :send
152
- opcode 108, :meta_to_s, :stack => [1, 1], :args => [:literal], :control_flow => :send
153
- opcode 109, :push_type, :stack => [0, 1], :args => [], :control_flow => :next
154
- opcode 110, :push_mirror, :stack => [0, 1], :args => [], :control_flow => :next
120
+ opcode 80, :kind_of, :stack => [2, 1], :args => [], :control_flow => :next
121
+ opcode 81, :instance_of, :stack => [2, 1], :args => [], :control_flow => :next
122
+ opcode 82, :push_my_offset, :stack => [0, 1], :args => [:index], :control_flow => :next
123
+ opcode 83, :zsuper, :stack => [1, 1], :args => [:literal], :control_flow => :next
124
+ opcode 84, :push_block_arg, :stack => [0, 1], :args => [], :control_flow => :next
125
+ opcode 85, :push_undef, :stack => [0, 1], :args => [], :control_flow => :next
126
+ opcode 86, :push_stack_local, :stack => [0, 1], :args => [:which], :control_flow => :next
127
+ opcode 87, :set_stack_local, :stack => [1, 1], :args => [:which], :control_flow => :next
128
+ opcode 88, :push_has_block, :stack => [0, 1], :args => [], :control_flow => :next
129
+ opcode 89, :push_proc, :stack => [0, 1], :args => [], :control_flow => :next
130
+ opcode 90, :check_frozen, :stack => [1, 1], :args => [], :control_flow => :next
131
+ opcode 91, :cast_multi_value, :stack => [1, 1], :args => [], :control_flow => :next
132
+ opcode 92, :invoke_primitive, :stack => [[0,2], 1], :args => [:literal, :count], :control_flow => :next
133
+ opcode 93, :push_rubinius, :stack => [0, 1], :args => [], :control_flow => :next
134
+ opcode 94, :object_to_s, :stack => [1, 1], :args => [:literal], :control_flow => :send
135
+ opcode 95, :push_type, :stack => [0, 1], :args => [], :control_flow => :next
136
+ opcode 96, :push_mirror, :stack => [0, 1], :args => [], :control_flow => :next
155
137
  end
156
138
  end
@@ -1,5 +1,5 @@
1
1
  module CodeTools
2
2
  class Compiler
3
- VERSION = "3.1"
3
+ VERSION = "3.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubinius-compiler
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.1'
4
+ version: '3.2'
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: A Bytecode compiler for the Rubinius language platform.
42
42
  email:
43
43
  - brixen@gmail.com
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  version: '0'
78
78
  requirements: []
79
79
  rubyforge_project:
80
- rubygems_version: 2.5.1
80
+ rubygems_version: 2.6.2
81
81
  signing_key:
82
82
  specification_version: 4
83
83
  summary: A Bytecode compiler for the Rubinius language platform.