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 +4 -4
- data/lib/rubinius/code/compiler/generator.rb +63 -150
- data/lib/rubinius/code/compiler/generator_methods.rb +152 -237
- data/lib/rubinius/code/compiler/opcodes.rb +54 -72
- data/lib/rubinius/code/compiler/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8f0185b47866838d791ca5875d2c2c86a92c5e9
|
4
|
+
data.tar.gz: cc1d20dc50c05e28554a5efd60ac10f34d2c2a65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
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
|
-
|
154
|
+
puts
|
156
155
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
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
|
-
|
169
|
-
|
170
|
-
|
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
|
-
|
167
|
+
stack += pro - use
|
168
|
+
else
|
169
|
+
stack += insn.stack_difference
|
174
170
|
end
|
175
171
|
|
176
|
-
|
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
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
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
|
503
|
-
index =
|
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
|
-
|
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
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
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
|
-
|
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
|
-
|
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
|
563
|
+
send_super_stack_with_splat meth, args
|
646
564
|
else
|
647
|
-
send_super_stack_with_block
|
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
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
-
|
417
|
+
arg1 = find_literal(arg1)
|
418
|
+
@stream << 46 << arg1
|
427
419
|
@ip += 2
|
428
420
|
@current_block.add_stack(1, 1)
|
429
|
-
@instruction =
|
421
|
+
@instruction = 46
|
430
422
|
end
|
431
423
|
|
432
424
|
def set_const_at(arg1)
|
433
|
-
|
425
|
+
arg1 = find_literal(arg1)
|
426
|
+
@stream << 47 << arg1
|
434
427
|
@ip += 2
|
435
428
|
@current_block.add_stack(2, 1)
|
436
|
-
@instruction =
|
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 <<
|
433
|
+
@stream << 48
|
449
434
|
@ip += 1
|
450
435
|
@current_block.add_stack(0, 1)
|
451
|
-
@instruction =
|
436
|
+
@instruction = 48
|
452
437
|
end
|
453
438
|
|
454
|
-
def
|
455
|
-
|
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 =
|
444
|
+
@instruction = 49
|
459
445
|
end
|
460
446
|
|
461
|
-
def
|
462
|
-
|
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 =
|
452
|
+
@instruction = 50
|
466
453
|
end
|
467
454
|
|
468
455
|
def set_call_flags(arg1)
|
469
|
-
@stream <<
|
456
|
+
@stream << 51 << arg1
|
470
457
|
@ip += 2
|
471
458
|
@current_block.add_stack(0, 0)
|
472
|
-
@instruction =
|
459
|
+
@instruction = 51
|
473
460
|
end
|
474
461
|
|
475
462
|
def allow_private
|
476
|
-
@stream <<
|
463
|
+
@stream << 52
|
477
464
|
@ip += 1
|
478
465
|
@current_block.add_stack(0, 0)
|
479
|
-
@instruction =
|
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
|
-
|
478
|
+
arg1 = find_literal(arg1)
|
479
|
+
@stream << 54 << arg1
|
484
480
|
@ip += 2
|
485
481
|
@current_block.add_stack(1, 1)
|
486
|
-
@instruction =
|
482
|
+
@instruction = 54
|
487
483
|
end
|
488
484
|
|
489
485
|
def send_stack(arg1, arg2)
|
490
|
-
|
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 =
|
491
|
+
@instruction = 55
|
494
492
|
end
|
495
493
|
|
496
494
|
def send_stack_with_block(arg1, arg2)
|
497
|
-
|
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 =
|
500
|
+
@instruction = 56
|
501
501
|
end
|
502
502
|
|
503
503
|
def send_stack_with_splat(arg1, arg2)
|
504
|
-
|
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 =
|
509
|
+
@instruction = 57
|
508
510
|
end
|
509
511
|
|
510
512
|
def send_super_stack_with_block(arg1, arg2)
|
511
|
-
|
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 =
|
518
|
+
@instruction = 58
|
515
519
|
end
|
516
520
|
|
517
521
|
def send_super_stack_with_splat(arg1, arg2)
|
518
|
-
|
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 =
|
527
|
+
@instruction = 59
|
522
528
|
end
|
523
529
|
|
524
530
|
def push_block
|
525
|
-
@stream <<
|
531
|
+
@stream << 60
|
526
532
|
@ip += 1
|
527
533
|
@current_block.add_stack(0, 1)
|
528
|
-
@instruction =
|
534
|
+
@instruction = 60
|
529
535
|
end
|
530
536
|
|
531
537
|
def passed_blockarg(arg1)
|
532
|
-
|
538
|
+
arg1 = Integer(arg1)
|
539
|
+
@stream << 61 << arg1
|
533
540
|
@ip += 2
|
534
541
|
@current_block.add_stack(0, 1)
|
535
|
-
@instruction =
|
542
|
+
@instruction = 61
|
536
543
|
end
|
537
544
|
|
538
545
|
def create_block(arg1)
|
539
|
-
arg1 =
|
540
|
-
@
|
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 =
|
550
|
+
@instruction = 62
|
545
551
|
end
|
546
552
|
|
547
553
|
def cast_for_single_block_arg
|
548
|
-
@stream <<
|
554
|
+
@stream << 63
|
549
555
|
@ip += 1
|
550
556
|
@current_block.add_stack(0, 1)
|
551
|
-
@instruction =
|
557
|
+
@instruction = 63
|
552
558
|
end
|
553
559
|
|
554
560
|
def cast_for_multi_block_arg
|
555
|
-
@stream <<
|
561
|
+
@stream << 64
|
556
562
|
@ip += 1
|
557
563
|
@current_block.add_stack(0, 1)
|
558
|
-
@instruction =
|
564
|
+
@instruction = 64
|
559
565
|
end
|
560
566
|
|
561
567
|
def cast_for_splat_block_arg
|
562
|
-
@stream <<
|
568
|
+
@stream << 65
|
563
569
|
@ip += 1
|
564
570
|
@current_block.add_stack(0, 1)
|
565
|
-
@instruction =
|
571
|
+
@instruction = 65
|
566
572
|
end
|
567
573
|
|
568
574
|
def yield_stack(arg1)
|
569
|
-
|
575
|
+
arg1 = Integer(arg1)
|
576
|
+
@stream << 66 << arg1
|
570
577
|
@ip += 2
|
571
578
|
@current_block.add_stack(arg1, 1)
|
572
|
-
@instruction =
|
579
|
+
@instruction = 66
|
573
580
|
end
|
574
581
|
|
575
582
|
def yield_splat(arg1)
|
576
|
-
|
583
|
+
arg1 = Integer(arg1)
|
584
|
+
@stream << 67 << arg1
|
577
585
|
@ip += 2
|
578
586
|
@current_block.add_stack(arg1+1, 1)
|
579
|
-
@instruction =
|
587
|
+
@instruction = 67
|
580
588
|
end
|
581
589
|
|
582
590
|
def string_append
|
583
|
-
@stream <<
|
591
|
+
@stream << 68
|
584
592
|
@ip += 1
|
585
593
|
@current_block.add_stack(2, 1)
|
586
|
-
@instruction =
|
594
|
+
@instruction = 68
|
587
595
|
end
|
588
596
|
|
589
597
|
def string_build(arg1)
|
590
|
-
|
598
|
+
arg1 = Integer(arg1)
|
599
|
+
@stream << 69 << arg1
|
591
600
|
@ip += 2
|
592
601
|
@current_block.add_stack(arg1, 1)
|
593
|
-
@instruction =
|
602
|
+
@instruction = 69
|
594
603
|
end
|
595
604
|
|
596
605
|
def string_dup
|
597
|
-
@stream <<
|
606
|
+
@stream << 70
|
598
607
|
@ip += 1
|
599
608
|
@current_block.add_stack(1, 1)
|
600
|
-
@instruction =
|
609
|
+
@instruction = 70
|
601
610
|
end
|
602
611
|
|
603
612
|
def push_scope
|
604
|
-
@stream <<
|
613
|
+
@stream << 71
|
605
614
|
@ip += 1
|
606
615
|
@current_block.add_stack(0, 1)
|
607
|
-
@instruction =
|
616
|
+
@instruction = 71
|
608
617
|
end
|
609
618
|
|
610
619
|
def add_scope
|
611
|
-
@stream <<
|
620
|
+
@stream << 72
|
612
621
|
@ip += 1
|
613
622
|
@current_block.add_stack(1, 0)
|
614
|
-
@instruction =
|
623
|
+
@instruction = 72
|
615
624
|
end
|
616
625
|
|
617
626
|
def push_variables
|
618
|
-
@stream <<
|
627
|
+
@stream << 73
|
619
628
|
@ip += 1
|
620
629
|
@current_block.add_stack(0, 1)
|
621
|
-
@instruction =
|
630
|
+
@instruction = 73
|
622
631
|
end
|
623
632
|
|
624
633
|
def check_interrupts
|
625
|
-
@stream <<
|
634
|
+
@stream << 74
|
626
635
|
@ip += 1
|
627
636
|
@current_block.add_stack(0, 0)
|
628
|
-
@instruction =
|
637
|
+
@instruction = 74
|
629
638
|
end
|
630
639
|
|
631
640
|
def yield_debugger
|
632
|
-
@stream <<
|
641
|
+
@stream << 75
|
633
642
|
@ip += 1
|
634
643
|
@current_block.add_stack(0, 0)
|
635
|
-
@instruction =
|
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
|
647
|
-
|
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 =
|
652
|
+
@instruction = 76
|
652
653
|
end
|
653
654
|
|
654
655
|
def check_serial_private(arg1, arg2)
|
655
|
-
arg1 = find_literal
|
656
|
-
|
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 =
|
660
|
+
@instruction = 77
|
661
661
|
end
|
662
662
|
|
663
663
|
def push_my_field(arg1)
|
664
|
-
@stream <<
|
664
|
+
@stream << 78 << arg1
|
665
665
|
@ip += 2
|
666
666
|
@current_block.add_stack(0, 1)
|
667
|
-
@instruction =
|
667
|
+
@instruction = 78
|
668
668
|
end
|
669
669
|
|
670
670
|
def store_my_field(arg1)
|
671
|
-
@stream <<
|
671
|
+
@stream << 79 << arg1
|
672
672
|
@ip += 2
|
673
673
|
@current_block.add_stack(1, 1)
|
674
|
-
@instruction =
|
674
|
+
@instruction = 79
|
675
675
|
end
|
676
676
|
|
677
677
|
def kind_of
|
678
|
-
@stream <<
|
678
|
+
@stream << 80
|
679
679
|
@ip += 1
|
680
680
|
@current_block.add_stack(2, 1)
|
681
|
-
@instruction =
|
681
|
+
@instruction = 80
|
682
682
|
end
|
683
683
|
|
684
684
|
def instance_of
|
685
|
-
@stream <<
|
685
|
+
@stream << 81
|
686
686
|
@ip += 1
|
687
687
|
@current_block.add_stack(2, 1)
|
688
|
-
@instruction =
|
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 <<
|
692
|
+
@stream << 82 << arg1
|
770
693
|
@ip += 2
|
771
694
|
@current_block.add_stack(0, 1)
|
772
|
-
@instruction =
|
695
|
+
@instruction = 82
|
773
696
|
end
|
774
697
|
|
775
698
|
def zsuper(arg1)
|
776
|
-
arg1 = find_literal
|
777
|
-
@stream <<
|
699
|
+
arg1 = find_literal(arg1)
|
700
|
+
@stream << 83 << arg1
|
778
701
|
@ip += 2
|
779
702
|
@current_block.add_stack(1, 1)
|
780
|
-
@instruction =
|
703
|
+
@instruction = 83
|
781
704
|
end
|
782
705
|
|
783
706
|
def push_block_arg
|
784
|
-
@stream <<
|
707
|
+
@stream << 84
|
785
708
|
@ip += 1
|
786
709
|
@current_block.add_stack(0, 1)
|
787
|
-
@instruction =
|
710
|
+
@instruction = 84
|
788
711
|
end
|
789
712
|
|
790
713
|
def push_undef
|
791
|
-
@stream <<
|
714
|
+
@stream << 85
|
792
715
|
@ip += 1
|
793
716
|
@current_block.add_stack(0, 1)
|
794
|
-
@instruction =
|
717
|
+
@instruction = 85
|
795
718
|
end
|
796
719
|
|
797
720
|
def push_stack_local(arg1)
|
798
|
-
@stream <<
|
721
|
+
@stream << 86 << arg1
|
799
722
|
@ip += 2
|
800
723
|
@current_block.add_stack(0, 1)
|
801
|
-
@instruction =
|
724
|
+
@instruction = 86
|
802
725
|
end
|
803
726
|
|
804
727
|
def set_stack_local(arg1)
|
805
|
-
@stream <<
|
728
|
+
@stream << 87 << arg1
|
806
729
|
@ip += 2
|
807
730
|
@current_block.add_stack(1, 1)
|
808
|
-
@instruction =
|
731
|
+
@instruction = 87
|
809
732
|
end
|
810
733
|
|
811
734
|
def push_has_block
|
812
|
-
@stream <<
|
735
|
+
@stream << 88
|
813
736
|
@ip += 1
|
814
737
|
@current_block.add_stack(0, 1)
|
815
|
-
@instruction =
|
738
|
+
@instruction = 88
|
816
739
|
end
|
817
740
|
|
818
741
|
def push_proc
|
819
|
-
@stream <<
|
742
|
+
@stream << 89
|
820
743
|
@ip += 1
|
821
744
|
@current_block.add_stack(0, 1)
|
822
|
-
@instruction =
|
745
|
+
@instruction = 89
|
823
746
|
end
|
824
747
|
|
825
748
|
def check_frozen
|
826
|
-
@stream <<
|
749
|
+
@stream << 90
|
827
750
|
@ip += 1
|
828
751
|
@current_block.add_stack(1, 1)
|
829
|
-
@instruction =
|
752
|
+
@instruction = 90
|
830
753
|
end
|
831
754
|
|
832
755
|
def cast_multi_value
|
833
|
-
@stream <<
|
756
|
+
@stream << 91
|
834
757
|
@ip += 1
|
835
758
|
@current_block.add_stack(1, 1)
|
836
|
-
@instruction =
|
759
|
+
@instruction = 91
|
837
760
|
end
|
838
761
|
|
839
762
|
def invoke_primitive(arg1, arg2)
|
840
|
-
arg1 = find_literal
|
763
|
+
arg1 = find_literal(arg1)
|
841
764
|
arg2 = Integer(arg2)
|
842
|
-
@stream <<
|
765
|
+
@stream << 92 << arg1 << arg2
|
843
766
|
@ip += 3
|
844
767
|
@current_block.add_stack(arg2, 1)
|
845
|
-
@instruction =
|
768
|
+
@instruction = 92
|
846
769
|
end
|
847
770
|
|
848
771
|
def push_rubinius
|
849
|
-
@stream <<
|
772
|
+
@stream << 93
|
850
773
|
@ip += 1
|
851
774
|
@current_block.add_stack(0, 1)
|
852
|
-
@instruction =
|
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
|
865
|
-
|
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 =
|
783
|
+
@instruction = 94
|
869
784
|
end
|
870
785
|
|
871
786
|
def push_type
|
872
|
-
@stream <<
|
787
|
+
@stream << 95
|
873
788
|
@ip += 1
|
874
789
|
@current_block.add_stack(0, 1)
|
875
|
-
@instruction =
|
790
|
+
@instruction = 95
|
876
791
|
end
|
877
792
|
|
878
793
|
def push_mirror
|
879
|
-
@stream <<
|
794
|
+
@stream << 96
|
880
795
|
@ip += 1
|
881
796
|
@current_block.add_stack(0, 1)
|
882
|
-
@instruction =
|
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, :
|
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, :
|
32
|
-
opcode 19, :
|
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, :
|
70
|
-
opcode 47, :
|
71
|
-
opcode 48, :
|
72
|
-
opcode 49, :
|
73
|
-
opcode 50, :
|
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
|
79
|
-
opcode
|
80
|
-
opcode
|
81
|
-
opcode
|
82
|
-
opcode
|
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
|
87
|
-
opcode
|
88
|
-
opcode
|
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
|
92
|
-
opcode
|
93
|
-
opcode
|
94
|
-
opcode
|
95
|
-
opcode
|
96
|
-
opcode
|
97
|
-
opcode
|
98
|
-
opcode
|
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
|
102
|
-
opcode
|
103
|
-
opcode
|
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
|
107
|
-
opcode
|
108
|
-
opcode
|
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
|
112
|
-
opcode
|
113
|
-
opcode
|
114
|
-
opcode
|
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
|
119
|
-
opcode
|
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
|
123
|
-
opcode
|
124
|
-
|
125
|
-
|
126
|
-
opcode 84, :
|
127
|
-
opcode 85, :
|
128
|
-
opcode 86, :
|
129
|
-
opcode 87, :
|
130
|
-
opcode 88, :
|
131
|
-
opcode 89, :
|
132
|
-
opcode 90, :
|
133
|
-
opcode 91, :
|
134
|
-
opcode 92, :
|
135
|
-
opcode 93, :
|
136
|
-
opcode 94, :
|
137
|
-
|
138
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
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
|
-
|
21
|
-
|
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
|
-
|
26
|
+
type: :development
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
|
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
|
-
|
35
|
-
|
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
|
-
|
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.
|
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.
|