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