|
|
Path: test/benchmark/yarv/bm_vm1_swap.rb
Size: 74 bytes
Sexp:
[:block,
[:newline, 1, "(eval)", [:lasgn, :a, 0, [:lit, 1]]],
[:newline, 2, "(eval)", [:lasgn, :b, 0, [:lit, 2]]],
[:newline, 3, "(eval)", [:lasgn, :i, 0, [:fixnum, 0]]],
[:newline, 4, "(eval)",
[:while,
[:call, [:lvar, :i, 0], :<, [:array, [:lit, 30000000]]],
[:block,
[:newline, 5, "(eval)",
[:lasgn, :i, 0,
[:call, [:lvar, :i, 0], :+, [:array, [:lit, 1]]]
]
],
[:newline, 6, "(eval)",
[:masgn,
[:array, [:lasgn, :a, 0], [:lasgn, :b, 0]], nil,
[:array, [:lvar, :b, 0], [:lvar, :a, 0]]
]
]
], true
]
]
]
Assembly:
allocate_stack 3
#line 1
push 1
set_local_fp 3 ; local a
pop
#line 2
push 2
set_local_fp 1 ; local b
pop
#line 3
push 0
set_local_fp 2 ; local i
pop
#line 4
next_lbl1:
push 30000000
get_local_fp 2 ; local i
meta_send_op_lt
gif break_lbl2
redo_lbl3:
#line 5
push 1
get_local_fp 2 ; local i
meta_send_op_plus
set_local_fp 2 ; local i
pop
#line 6
get_local_fp 3 ; local a
get_local_fp 1 ; local b
set_local_fp 3 ; local a
pop
set_local_fp 1 ; local b
pop
push true
pop
goto next_lbl1
break_lbl2:
push nil
pop
push true
ret
Sub methods:
|