rubinius-compiler 1.0.1
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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE +25 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/lib/rubinius/compiler.rb +11 -0
- data/lib/rubinius/compiler/compiled_file.rb +338 -0
- data/lib/rubinius/compiler/compiler.rb +377 -0
- data/lib/rubinius/compiler/evaluator.rb +334 -0
- data/lib/rubinius/compiler/generator.rb +646 -0
- data/lib/rubinius/compiler/generator_methods.rb +802 -0
- data/lib/rubinius/compiler/iseq.rb +146 -0
- data/lib/rubinius/compiler/locals.rb +147 -0
- data/lib/rubinius/compiler/opcodes.rb +150 -0
- data/lib/rubinius/compiler/printers.rb +115 -0
- data/lib/rubinius/compiler/runtime.rb +72 -0
- data/lib/rubinius/compiler/stages.rb +254 -0
- data/lib/rubinius/compiler/version.rb +5 -0
- data/rubinius-compiler.gemspec +22 -0
- metadata +91 -0
@@ -0,0 +1,802 @@
|
|
1
|
+
# *** This file is generated by InstructionParser ***
|
2
|
+
|
3
|
+
module Rubinius::ToolSet.current::TS
|
4
|
+
module GeneratorMethods
|
5
|
+
def noop
|
6
|
+
@stream << 0
|
7
|
+
@ip += 1
|
8
|
+
@current_block.add_stack(0, 0)
|
9
|
+
@instruction = 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def push_nil
|
13
|
+
@stream << 1
|
14
|
+
@ip += 1
|
15
|
+
@current_block.add_stack(0, 1)
|
16
|
+
@instruction = 1
|
17
|
+
end
|
18
|
+
|
19
|
+
def push_true
|
20
|
+
@stream << 2
|
21
|
+
@ip += 1
|
22
|
+
@current_block.add_stack(0, 1)
|
23
|
+
@instruction = 2
|
24
|
+
end
|
25
|
+
|
26
|
+
def push_false
|
27
|
+
@stream << 3
|
28
|
+
@ip += 1
|
29
|
+
@current_block.add_stack(0, 1)
|
30
|
+
@instruction = 3
|
31
|
+
end
|
32
|
+
|
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
|
53
|
+
end
|
54
|
+
|
55
|
+
def push_self
|
56
|
+
@stream << 5
|
57
|
+
@ip += 1
|
58
|
+
@current_block.add_stack(0, 1)
|
59
|
+
@instruction = 5
|
60
|
+
end
|
61
|
+
|
62
|
+
def set_literal(arg1)
|
63
|
+
@stream << 6 << arg1
|
64
|
+
@ip += 2
|
65
|
+
@current_block.add_stack(1, 1)
|
66
|
+
@instruction = 6
|
67
|
+
end
|
68
|
+
|
69
|
+
def emit_push_literal(arg1)
|
70
|
+
@stream << 7 << arg1
|
71
|
+
@ip += 2
|
72
|
+
@current_block.add_stack(0, 1)
|
73
|
+
@instruction = 7
|
74
|
+
end
|
75
|
+
|
76
|
+
def goto(arg1)
|
77
|
+
location = @ip + 1
|
78
|
+
@stream << 8 << arg1
|
79
|
+
@ip += 2
|
80
|
+
arg1.used_at location
|
81
|
+
@current_block.add_stack(0, 0)
|
82
|
+
@current_block.left = arg1.basic_block
|
83
|
+
@current_block.close
|
84
|
+
@current_block = new_basic_block
|
85
|
+
@instruction = 8
|
86
|
+
end
|
87
|
+
|
88
|
+
def goto_if_false(arg1)
|
89
|
+
location = @ip + 1
|
90
|
+
@stream << 9 << arg1
|
91
|
+
@ip += 2
|
92
|
+
arg1.used_at location
|
93
|
+
@current_block.add_stack(1, 0)
|
94
|
+
@current_block.left = arg1.basic_block
|
95
|
+
@current_block.close
|
96
|
+
block = new_basic_block
|
97
|
+
@current_block.right = block
|
98
|
+
@current_block = block
|
99
|
+
@instruction = 9
|
100
|
+
end
|
101
|
+
|
102
|
+
def goto_if_true(arg1)
|
103
|
+
location = @ip + 1
|
104
|
+
@stream << 10 << arg1
|
105
|
+
@ip += 2
|
106
|
+
arg1.used_at location
|
107
|
+
@current_block.add_stack(1, 0)
|
108
|
+
@current_block.left = arg1.basic_block
|
109
|
+
@current_block.close
|
110
|
+
block = new_basic_block
|
111
|
+
@current_block.right = block
|
112
|
+
@current_block = block
|
113
|
+
@instruction = 10
|
114
|
+
end
|
115
|
+
|
116
|
+
def ret
|
117
|
+
@stream << 11
|
118
|
+
@ip += 1
|
119
|
+
@current_block.add_stack(1, 1)
|
120
|
+
@current_block.close true
|
121
|
+
@current_block = new_basic_block
|
122
|
+
@instruction = 11
|
123
|
+
end
|
124
|
+
|
125
|
+
def swap_stack
|
126
|
+
@stream << 12
|
127
|
+
@ip += 1
|
128
|
+
@current_block.add_stack(2, 2)
|
129
|
+
@instruction = 12
|
130
|
+
end
|
131
|
+
|
132
|
+
def dup_top
|
133
|
+
@stream << 13
|
134
|
+
@ip += 1
|
135
|
+
@current_block.add_stack(1, 2)
|
136
|
+
@instruction = 13
|
137
|
+
end
|
138
|
+
|
139
|
+
def dup_many(arg1)
|
140
|
+
@stream << 14 << arg1
|
141
|
+
@ip += 2
|
142
|
+
@current_block.add_stack(arg1, (arg1 * 2))
|
143
|
+
@instruction = 14
|
144
|
+
end
|
145
|
+
|
146
|
+
def pop
|
147
|
+
@stream << 15
|
148
|
+
@ip += 1
|
149
|
+
@current_block.add_stack(1, 0)
|
150
|
+
@instruction = 15
|
151
|
+
end
|
152
|
+
|
153
|
+
def pop_many(arg1)
|
154
|
+
@stream << 16 << arg1
|
155
|
+
@ip += 2
|
156
|
+
@current_block.add_stack(arg1, 0)
|
157
|
+
@instruction = 16
|
158
|
+
end
|
159
|
+
|
160
|
+
def rotate(arg1)
|
161
|
+
@stream << 17 << arg1
|
162
|
+
@ip += 2
|
163
|
+
@current_block.add_stack(arg1, (arg1 * 1))
|
164
|
+
@instruction = 17
|
165
|
+
end
|
166
|
+
|
167
|
+
def move_down(arg1)
|
168
|
+
@stream << 18 << arg1
|
169
|
+
@ip += 2
|
170
|
+
@current_block.add_stack(arg1, (arg1 * 1))
|
171
|
+
@instruction = 18
|
172
|
+
end
|
173
|
+
|
174
|
+
def set_local(arg1)
|
175
|
+
@stream << 19 << arg1
|
176
|
+
@ip += 2
|
177
|
+
@current_block.add_stack(1, 1)
|
178
|
+
@instruction = 19
|
179
|
+
end
|
180
|
+
|
181
|
+
def push_local(arg1)
|
182
|
+
@stream << 20 << arg1
|
183
|
+
@ip += 2
|
184
|
+
@current_block.add_stack(0, 1)
|
185
|
+
@instruction = 20
|
186
|
+
end
|
187
|
+
|
188
|
+
def push_local_depth(arg1, arg2)
|
189
|
+
@stream << 21 << arg1 << arg2
|
190
|
+
@ip += 3
|
191
|
+
@current_block.add_stack(0, 1)
|
192
|
+
@instruction = 21
|
193
|
+
end
|
194
|
+
|
195
|
+
def set_local_depth(arg1, arg2)
|
196
|
+
@stream << 22 << arg1 << arg2
|
197
|
+
@ip += 3
|
198
|
+
@current_block.add_stack(1, 1)
|
199
|
+
@instruction = 22
|
200
|
+
end
|
201
|
+
|
202
|
+
def passed_arg(arg1)
|
203
|
+
@stream << 23 << arg1
|
204
|
+
@ip += 2
|
205
|
+
@current_block.add_stack(0, 1)
|
206
|
+
@instruction = 23
|
207
|
+
end
|
208
|
+
|
209
|
+
def push_current_exception
|
210
|
+
@stream << 24
|
211
|
+
@ip += 1
|
212
|
+
@current_block.add_stack(0, 1)
|
213
|
+
@instruction = 24
|
214
|
+
end
|
215
|
+
|
216
|
+
def clear_exception
|
217
|
+
@stream << 25
|
218
|
+
@ip += 1
|
219
|
+
@current_block.add_stack(0, 0)
|
220
|
+
@instruction = 25
|
221
|
+
end
|
222
|
+
|
223
|
+
def push_exception_state
|
224
|
+
@stream << 26
|
225
|
+
@ip += 1
|
226
|
+
@current_block.add_stack(0, 1)
|
227
|
+
@instruction = 26
|
228
|
+
end
|
229
|
+
|
230
|
+
def restore_exception_state
|
231
|
+
@stream << 27
|
232
|
+
@ip += 1
|
233
|
+
@current_block.add_stack(1, 0)
|
234
|
+
@instruction = 27
|
235
|
+
end
|
236
|
+
|
237
|
+
def raise_exc
|
238
|
+
@stream << 28
|
239
|
+
@ip += 1
|
240
|
+
@current_block.add_stack(1, 0)
|
241
|
+
@current_block.close false
|
242
|
+
@current_block = new_basic_block
|
243
|
+
@instruction = 28
|
244
|
+
end
|
245
|
+
|
246
|
+
def setup_unwind(arg1, arg2)
|
247
|
+
location = @ip + 1
|
248
|
+
@stream << 29 << arg1 << arg2
|
249
|
+
@ip += 3
|
250
|
+
arg1.used_at location
|
251
|
+
@current_block.add_stack(0, 0)
|
252
|
+
@current_block.left = arg1.basic_block
|
253
|
+
@current_block.close
|
254
|
+
block = new_basic_block
|
255
|
+
@current_block.right = block
|
256
|
+
@current_block = block
|
257
|
+
@instruction = 29
|
258
|
+
end
|
259
|
+
|
260
|
+
def pop_unwind
|
261
|
+
@stream << 30
|
262
|
+
@ip += 1
|
263
|
+
@current_block.add_stack(0, 0)
|
264
|
+
@instruction = 30
|
265
|
+
end
|
266
|
+
|
267
|
+
def raise_return
|
268
|
+
@stream << 31
|
269
|
+
@ip += 1
|
270
|
+
@current_block.add_stack(1, 1)
|
271
|
+
@current_block.close true
|
272
|
+
@current_block = new_basic_block
|
273
|
+
@instruction = 31
|
274
|
+
end
|
275
|
+
|
276
|
+
def ensure_return
|
277
|
+
@stream << 32
|
278
|
+
@ip += 1
|
279
|
+
@current_block.add_stack(1, 1)
|
280
|
+
@current_block.close true
|
281
|
+
@current_block = new_basic_block
|
282
|
+
@instruction = 32
|
283
|
+
end
|
284
|
+
|
285
|
+
def raise_break
|
286
|
+
@stream << 33
|
287
|
+
@ip += 1
|
288
|
+
@current_block.add_stack(1, 1)
|
289
|
+
@current_block.close false
|
290
|
+
@current_block = new_basic_block
|
291
|
+
@instruction = 33
|
292
|
+
end
|
293
|
+
|
294
|
+
def reraise
|
295
|
+
@stream << 34
|
296
|
+
@ip += 1
|
297
|
+
@current_block.add_stack(0, 0)
|
298
|
+
@current_block.close false
|
299
|
+
@current_block = new_basic_block
|
300
|
+
@instruction = 34
|
301
|
+
end
|
302
|
+
|
303
|
+
def make_array(arg1)
|
304
|
+
@stream << 35 << arg1
|
305
|
+
@ip += 2
|
306
|
+
@current_block.add_stack(arg1, 1)
|
307
|
+
@instruction = 35
|
308
|
+
end
|
309
|
+
|
310
|
+
def cast_array
|
311
|
+
unless @instruction == 36 or @instruction == 35
|
312
|
+
@stream << 36
|
313
|
+
@ip += 1
|
314
|
+
end
|
315
|
+
@instruction = 36
|
316
|
+
end
|
317
|
+
|
318
|
+
def shift_array
|
319
|
+
@stream << 37
|
320
|
+
@ip += 1
|
321
|
+
@current_block.add_stack(1, 2)
|
322
|
+
@instruction = 37
|
323
|
+
end
|
324
|
+
|
325
|
+
def set_ivar(arg1)
|
326
|
+
arg1 = find_literal arg1
|
327
|
+
@stream << 38 << arg1
|
328
|
+
@ip += 2
|
329
|
+
@current_block.add_stack(1, 1)
|
330
|
+
@instruction = 38
|
331
|
+
end
|
332
|
+
|
333
|
+
def push_ivar(arg1)
|
334
|
+
arg1 = find_literal arg1
|
335
|
+
@stream << 39 << arg1
|
336
|
+
@ip += 2
|
337
|
+
@current_block.add_stack(0, 1)
|
338
|
+
@instruction = 39
|
339
|
+
end
|
340
|
+
|
341
|
+
def set_const(arg1)
|
342
|
+
@stream << 41 << arg1
|
343
|
+
@ip += 2
|
344
|
+
@current_block.add_stack(1, 1)
|
345
|
+
@instruction = 41
|
346
|
+
end
|
347
|
+
|
348
|
+
def set_const_at(arg1)
|
349
|
+
@stream << 42 << arg1
|
350
|
+
@ip += 2
|
351
|
+
@current_block.add_stack(2, 1)
|
352
|
+
@instruction = 42
|
353
|
+
end
|
354
|
+
|
355
|
+
def find_const(arg1)
|
356
|
+
arg1 = find_literal arg1
|
357
|
+
@stream << 43 << arg1
|
358
|
+
@ip += 2
|
359
|
+
@current_block.add_stack(1, 1)
|
360
|
+
@instruction = 43
|
361
|
+
end
|
362
|
+
|
363
|
+
def push_cpath_top
|
364
|
+
@stream << 44
|
365
|
+
@ip += 1
|
366
|
+
@current_block.add_stack(0, 1)
|
367
|
+
@instruction = 44
|
368
|
+
end
|
369
|
+
|
370
|
+
def push_const_fast(arg1)
|
371
|
+
@stream << 45 << arg1
|
372
|
+
@ip += 2
|
373
|
+
@current_block.add_stack(0, 1)
|
374
|
+
@instruction = 45
|
375
|
+
end
|
376
|
+
|
377
|
+
def find_const_fast(arg1)
|
378
|
+
@stream << 46 << arg1
|
379
|
+
@ip += 2
|
380
|
+
@current_block.add_stack(1, 1)
|
381
|
+
@instruction = 46
|
382
|
+
end
|
383
|
+
|
384
|
+
def set_call_flags(arg1)
|
385
|
+
@stream << 47 << arg1
|
386
|
+
@ip += 2
|
387
|
+
@current_block.add_stack(0, 0)
|
388
|
+
@instruction = 47
|
389
|
+
end
|
390
|
+
|
391
|
+
def allow_private
|
392
|
+
@stream << 48
|
393
|
+
@ip += 1
|
394
|
+
@current_block.add_stack(0, 0)
|
395
|
+
@instruction = 48
|
396
|
+
end
|
397
|
+
|
398
|
+
def send_method(arg1)
|
399
|
+
@stream << 49 << arg1
|
400
|
+
@ip += 2
|
401
|
+
@current_block.add_stack(1, 1)
|
402
|
+
@instruction = 49
|
403
|
+
end
|
404
|
+
|
405
|
+
def send_stack(arg1, arg2)
|
406
|
+
@stream << 50 << arg1 << arg2
|
407
|
+
@ip += 3
|
408
|
+
@current_block.add_stack(arg2+1, 1)
|
409
|
+
@instruction = 50
|
410
|
+
end
|
411
|
+
|
412
|
+
def send_stack_with_block(arg1, arg2)
|
413
|
+
@stream << 51 << arg1 << arg2
|
414
|
+
@ip += 3
|
415
|
+
@current_block.add_stack(arg2+2, 1)
|
416
|
+
@instruction = 51
|
417
|
+
end
|
418
|
+
|
419
|
+
def send_stack_with_splat(arg1, arg2)
|
420
|
+
@stream << 52 << arg1 << arg2
|
421
|
+
@ip += 3
|
422
|
+
@current_block.add_stack(arg2+3, 1)
|
423
|
+
@instruction = 52
|
424
|
+
end
|
425
|
+
|
426
|
+
def send_super_stack_with_block(arg1, arg2)
|
427
|
+
@stream << 53 << arg1 << arg2
|
428
|
+
@ip += 3
|
429
|
+
@current_block.add_stack(arg2+1, 1)
|
430
|
+
@instruction = 53
|
431
|
+
end
|
432
|
+
|
433
|
+
def send_super_stack_with_splat(arg1, arg2)
|
434
|
+
@stream << 54 << arg1 << arg2
|
435
|
+
@ip += 3
|
436
|
+
@current_block.add_stack(arg2+2, 1)
|
437
|
+
@instruction = 54
|
438
|
+
end
|
439
|
+
|
440
|
+
def push_block
|
441
|
+
@stream << 55
|
442
|
+
@ip += 1
|
443
|
+
@current_block.add_stack(0, 1)
|
444
|
+
@instruction = 55
|
445
|
+
end
|
446
|
+
|
447
|
+
def passed_blockarg(arg1)
|
448
|
+
@stream << 56 << arg1
|
449
|
+
@ip += 2
|
450
|
+
@current_block.add_stack(0, 1)
|
451
|
+
@instruction = 56
|
452
|
+
end
|
453
|
+
|
454
|
+
def create_block(arg1)
|
455
|
+
arg1 = add_literal arg1
|
456
|
+
@generators << arg1
|
457
|
+
@stream << 57 << arg1
|
458
|
+
@ip += 2
|
459
|
+
@current_block.add_stack(0, 1)
|
460
|
+
@instruction = 57
|
461
|
+
end
|
462
|
+
|
463
|
+
def cast_for_single_block_arg
|
464
|
+
@stream << 58
|
465
|
+
@ip += 1
|
466
|
+
@current_block.add_stack(0, 1)
|
467
|
+
@instruction = 58
|
468
|
+
end
|
469
|
+
|
470
|
+
def cast_for_multi_block_arg
|
471
|
+
@stream << 59
|
472
|
+
@ip += 1
|
473
|
+
@current_block.add_stack(0, 1)
|
474
|
+
@instruction = 59
|
475
|
+
end
|
476
|
+
|
477
|
+
def cast_for_splat_block_arg
|
478
|
+
@stream << 60
|
479
|
+
@ip += 1
|
480
|
+
@current_block.add_stack(0, 1)
|
481
|
+
@instruction = 60
|
482
|
+
end
|
483
|
+
|
484
|
+
def yield_stack(arg1)
|
485
|
+
@stream << 61 << arg1
|
486
|
+
@ip += 2
|
487
|
+
@current_block.add_stack(arg1, 1)
|
488
|
+
@instruction = 61
|
489
|
+
end
|
490
|
+
|
491
|
+
def yield_splat(arg1)
|
492
|
+
@stream << 62 << arg1
|
493
|
+
@ip += 2
|
494
|
+
@current_block.add_stack(arg1+1, 1)
|
495
|
+
@instruction = 62
|
496
|
+
end
|
497
|
+
|
498
|
+
def string_append
|
499
|
+
@stream << 63
|
500
|
+
@ip += 1
|
501
|
+
@current_block.add_stack(2, 1)
|
502
|
+
@instruction = 63
|
503
|
+
end
|
504
|
+
|
505
|
+
def string_build(arg1)
|
506
|
+
@stream << 64 << arg1
|
507
|
+
@ip += 2
|
508
|
+
@current_block.add_stack(arg1, 1)
|
509
|
+
@instruction = 64
|
510
|
+
end
|
511
|
+
|
512
|
+
def string_dup
|
513
|
+
@stream << 65
|
514
|
+
@ip += 1
|
515
|
+
@current_block.add_stack(1, 1)
|
516
|
+
@instruction = 65
|
517
|
+
end
|
518
|
+
|
519
|
+
def push_scope
|
520
|
+
@stream << 66
|
521
|
+
@ip += 1
|
522
|
+
@current_block.add_stack(0, 1)
|
523
|
+
@instruction = 66
|
524
|
+
end
|
525
|
+
|
526
|
+
def add_scope
|
527
|
+
@stream << 67
|
528
|
+
@ip += 1
|
529
|
+
@current_block.add_stack(1, 0)
|
530
|
+
@instruction = 67
|
531
|
+
end
|
532
|
+
|
533
|
+
def push_variables
|
534
|
+
@stream << 68
|
535
|
+
@ip += 1
|
536
|
+
@current_block.add_stack(0, 1)
|
537
|
+
@instruction = 68
|
538
|
+
end
|
539
|
+
|
540
|
+
def check_interrupts
|
541
|
+
@stream << 69
|
542
|
+
@ip += 1
|
543
|
+
@current_block.add_stack(0, 0)
|
544
|
+
@instruction = 69
|
545
|
+
end
|
546
|
+
|
547
|
+
def yield_debugger
|
548
|
+
@stream << 70
|
549
|
+
@ip += 1
|
550
|
+
@current_block.add_stack(0, 0)
|
551
|
+
@instruction = 70
|
552
|
+
end
|
553
|
+
|
554
|
+
def is_nil
|
555
|
+
@stream << 71
|
556
|
+
@ip += 1
|
557
|
+
@current_block.add_stack(1, 1)
|
558
|
+
@instruction = 71
|
559
|
+
end
|
560
|
+
|
561
|
+
def check_serial(arg1, arg2)
|
562
|
+
arg1 = find_literal arg1
|
563
|
+
arg2 = Integer(arg2)
|
564
|
+
@stream << 72 << arg1 << arg2
|
565
|
+
@ip += 3
|
566
|
+
@current_block.add_stack(1, 1)
|
567
|
+
@instruction = 72
|
568
|
+
end
|
569
|
+
|
570
|
+
def check_serial_private(arg1, arg2)
|
571
|
+
arg1 = find_literal arg1
|
572
|
+
arg2 = Integer(arg2)
|
573
|
+
@stream << 73 << arg1 << arg2
|
574
|
+
@ip += 3
|
575
|
+
@current_block.add_stack(1, 1)
|
576
|
+
@instruction = 73
|
577
|
+
end
|
578
|
+
|
579
|
+
def push_my_field(arg1)
|
580
|
+
@stream << 74 << arg1
|
581
|
+
@ip += 2
|
582
|
+
@current_block.add_stack(0, 1)
|
583
|
+
@instruction = 74
|
584
|
+
end
|
585
|
+
|
586
|
+
def store_my_field(arg1)
|
587
|
+
@stream << 75 << arg1
|
588
|
+
@ip += 2
|
589
|
+
@current_block.add_stack(1, 1)
|
590
|
+
@instruction = 75
|
591
|
+
end
|
592
|
+
|
593
|
+
def kind_of
|
594
|
+
@stream << 76
|
595
|
+
@ip += 1
|
596
|
+
@current_block.add_stack(2, 1)
|
597
|
+
@instruction = 76
|
598
|
+
end
|
599
|
+
|
600
|
+
def instance_of
|
601
|
+
@stream << 77
|
602
|
+
@ip += 1
|
603
|
+
@current_block.add_stack(2, 1)
|
604
|
+
@instruction = 77
|
605
|
+
end
|
606
|
+
|
607
|
+
def meta_push_neg_1
|
608
|
+
@stream << 78
|
609
|
+
@ip += 1
|
610
|
+
@current_block.add_stack(0, 1)
|
611
|
+
@instruction = 78
|
612
|
+
end
|
613
|
+
|
614
|
+
def meta_push_0
|
615
|
+
@stream << 79
|
616
|
+
@ip += 1
|
617
|
+
@current_block.add_stack(0, 1)
|
618
|
+
@instruction = 79
|
619
|
+
end
|
620
|
+
|
621
|
+
def meta_push_1
|
622
|
+
@stream << 80
|
623
|
+
@ip += 1
|
624
|
+
@current_block.add_stack(0, 1)
|
625
|
+
@instruction = 80
|
626
|
+
end
|
627
|
+
|
628
|
+
def meta_push_2
|
629
|
+
@stream << 81
|
630
|
+
@ip += 1
|
631
|
+
@current_block.add_stack(0, 1)
|
632
|
+
@instruction = 81
|
633
|
+
end
|
634
|
+
|
635
|
+
def meta_send_op_plus(arg1)
|
636
|
+
@stream << 82 << arg1
|
637
|
+
@ip += 2
|
638
|
+
@current_block.add_stack(2, 1)
|
639
|
+
@instruction = 82
|
640
|
+
end
|
641
|
+
|
642
|
+
def meta_send_op_minus(arg1)
|
643
|
+
@stream << 83 << arg1
|
644
|
+
@ip += 2
|
645
|
+
@current_block.add_stack(2, 1)
|
646
|
+
@instruction = 83
|
647
|
+
end
|
648
|
+
|
649
|
+
def meta_send_op_equal(arg1)
|
650
|
+
@stream << 84 << arg1
|
651
|
+
@ip += 2
|
652
|
+
@current_block.add_stack(2, 1)
|
653
|
+
@instruction = 84
|
654
|
+
end
|
655
|
+
|
656
|
+
def meta_send_op_lt(arg1)
|
657
|
+
@stream << 85 << arg1
|
658
|
+
@ip += 2
|
659
|
+
@current_block.add_stack(2, 1)
|
660
|
+
@instruction = 85
|
661
|
+
end
|
662
|
+
|
663
|
+
def meta_send_op_gt(arg1)
|
664
|
+
@stream << 86 << arg1
|
665
|
+
@ip += 2
|
666
|
+
@current_block.add_stack(2, 1)
|
667
|
+
@instruction = 86
|
668
|
+
end
|
669
|
+
|
670
|
+
def meta_send_op_tequal(arg1)
|
671
|
+
@stream << 87 << arg1
|
672
|
+
@ip += 2
|
673
|
+
@current_block.add_stack(2, 1)
|
674
|
+
@instruction = 87
|
675
|
+
end
|
676
|
+
|
677
|
+
def meta_send_call(arg1, arg2)
|
678
|
+
@stream << 88 << arg1 << arg2
|
679
|
+
@ip += 3
|
680
|
+
@current_block.add_stack(arg2+1, 1)
|
681
|
+
@instruction = 88
|
682
|
+
end
|
683
|
+
|
684
|
+
def push_my_offset(arg1)
|
685
|
+
@stream << 89 << arg1
|
686
|
+
@ip += 2
|
687
|
+
@current_block.add_stack(0, 1)
|
688
|
+
@instruction = 89
|
689
|
+
end
|
690
|
+
|
691
|
+
def zsuper(arg1)
|
692
|
+
arg1 = find_literal arg1
|
693
|
+
@stream << 90 << arg1
|
694
|
+
@ip += 2
|
695
|
+
@current_block.add_stack(1, 1)
|
696
|
+
@instruction = 90
|
697
|
+
end
|
698
|
+
|
699
|
+
def push_block_arg
|
700
|
+
@stream << 91
|
701
|
+
@ip += 1
|
702
|
+
@current_block.add_stack(0, 1)
|
703
|
+
@instruction = 91
|
704
|
+
end
|
705
|
+
|
706
|
+
def push_undef
|
707
|
+
@stream << 92
|
708
|
+
@ip += 1
|
709
|
+
@current_block.add_stack(0, 1)
|
710
|
+
@instruction = 92
|
711
|
+
end
|
712
|
+
|
713
|
+
def push_stack_local(arg1)
|
714
|
+
@stream << 93 << arg1
|
715
|
+
@ip += 2
|
716
|
+
@current_block.add_stack(0, 1)
|
717
|
+
@instruction = 93
|
718
|
+
end
|
719
|
+
|
720
|
+
def set_stack_local(arg1)
|
721
|
+
@stream << 94 << arg1
|
722
|
+
@ip += 2
|
723
|
+
@current_block.add_stack(1, 1)
|
724
|
+
@instruction = 94
|
725
|
+
end
|
726
|
+
|
727
|
+
def push_has_block
|
728
|
+
@stream << 95
|
729
|
+
@ip += 1
|
730
|
+
@current_block.add_stack(0, 1)
|
731
|
+
@instruction = 95
|
732
|
+
end
|
733
|
+
|
734
|
+
def push_proc
|
735
|
+
@stream << 96
|
736
|
+
@ip += 1
|
737
|
+
@current_block.add_stack(0, 1)
|
738
|
+
@instruction = 96
|
739
|
+
end
|
740
|
+
|
741
|
+
def check_frozen
|
742
|
+
@stream << 97
|
743
|
+
@ip += 1
|
744
|
+
@current_block.add_stack(1, 1)
|
745
|
+
@instruction = 97
|
746
|
+
end
|
747
|
+
|
748
|
+
def cast_multi_value
|
749
|
+
@stream << 98
|
750
|
+
@ip += 1
|
751
|
+
@current_block.add_stack(1, 1)
|
752
|
+
@instruction = 98
|
753
|
+
end
|
754
|
+
|
755
|
+
def invoke_primitive(arg1, arg2)
|
756
|
+
arg1 = find_literal arg1
|
757
|
+
arg2 = Integer(arg2)
|
758
|
+
@stream << 99 << arg1 << arg2
|
759
|
+
@ip += 3
|
760
|
+
@current_block.add_stack(arg2, 1)
|
761
|
+
@instruction = 99
|
762
|
+
end
|
763
|
+
|
764
|
+
def push_rubinius
|
765
|
+
@stream << 100
|
766
|
+
@ip += 1
|
767
|
+
@current_block.add_stack(0, 1)
|
768
|
+
@instruction = 100
|
769
|
+
end
|
770
|
+
|
771
|
+
def call_custom(arg1, arg2)
|
772
|
+
arg1 = find_literal arg1
|
773
|
+
arg2 = Integer(arg2)
|
774
|
+
@stream << 101 << arg1 << arg2
|
775
|
+
@ip += 3
|
776
|
+
@current_block.add_stack(arg2+1, 1)
|
777
|
+
@instruction = 101
|
778
|
+
end
|
779
|
+
|
780
|
+
def meta_to_s(arg1)
|
781
|
+
@stream << 102 << arg1
|
782
|
+
@ip += 2
|
783
|
+
@current_block.add_stack(1, 1)
|
784
|
+
@instruction = 102
|
785
|
+
end
|
786
|
+
|
787
|
+
def push_type
|
788
|
+
@stream << 103
|
789
|
+
@ip += 1
|
790
|
+
@current_block.add_stack(0, 1)
|
791
|
+
@instruction = 103
|
792
|
+
end
|
793
|
+
|
794
|
+
def push_mirror
|
795
|
+
@stream << 104
|
796
|
+
@ip += 1
|
797
|
+
@current_block.add_stack(0, 1)
|
798
|
+
@instruction = 104
|
799
|
+
end
|
800
|
+
|
801
|
+
end
|
802
|
+
end
|