   fneg: { compile: (b) -> b.push "-#{b.pop()}" }
   dneg: { compile: (b) -> b.push2 "-#{rs.pop2()}" }
 
+  iinc: { compile: (b) -> b.put_cl @index, "wrap_int(#{b.cl(@index)}+#{@const})" }
+
   ireturn: { compile: (b) -> b.add_line "return #{b.pop()}" }
   lreturn: { compile: (b) -> b.add_line "return #{b.pop2()}" }
   freturn: { compile: (b) -> b.add_line "return #{b.pop()}" }

    temp = b.new_temp()
    b.add_line "#{temp} = rs.init_object(#{JSON.stringify @class})"
    b.push temp }

  goto_w: { compile: (b, idx) ->
    b.next = [@offset + idx]

    b.stack.length -= method.param_bytes

    virtual = @name in ['invokevirtual', 'invokeinterface']
    b.add_line "rs.method_lookup(#{JSON.stringify @method_spec}).run(rs, #{virtual}, [#{params.join ","}])"

    unless method.return_type.toString() is 'V'
      temp = b.new_temp()

      if method.return_type.toString() in ['D', 'J']
        b.add_line "#{temp} = rs.pop2()"
        b.push2 temp
      else
        b.add_line "#{temp} = rs.pop()"
        b.push temp

compile_obj_handlers = {
  aconst_null: { compile: (b) -> b.push "null"; }
