Report abuse


			
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: