rubinius-compiler 3.1 → 3.2

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: 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.