def int_free(av, ptr)
      chunk = dumper.call(ptr, size_t * 2).to_chunk
      size = ulong chunk.size
      invalid_pointer(ptr, size)
      invalid_size(size)
      # check_inuse_chunk # off
      if size <= get_max_fast
        int_free_fast(av, ptr, size)
      elsif !chunk_is_mmapped(ptr) # Though this has been checked in #libc_free
        int_free_small(av, ptr, size)
        # else # never reached block, redundant code in glibc.
        # munmap_chunk(ptr)
      end
    end
def int_free(av, ptr)
      chunk = dumper.call(ptr, size_t * 2).to_chunk
      size = ulong chunk.size
      invalid_pointer(ptr, size)
      invalid_size(size)
      # check_inuse_chunk # off
      if size <= get_max_fast
        int_free_fast(av, ptr, size)
      elsif !chunk_is_mmapped(ptr) # Though this has been checked in #libc_free
        int_free_small(av, ptr, size)
        # else # never reached block, redundant code in glibc.
        # munmap_chunk(ptr)
      end
    end
Implmentation of <tt>void _int_free (mstate av, mchunkptr p, [int have_lock])</tt>.

 The original method in C is too long, split to multiple methods to match ruby convention.
 @param [HeapInfo::Arena] av
 @param [Integer] ptr Use <tt>ptr</tt> instead of <tt>p</tt> to prevent confusing with ruby native method.