code: def _new_arena(self, size):
      # Create a new arena with at least the given *size*
      length = self._roundup(max(self._size, size), mmap.PAGESIZE)
      # We carve larger and larger arenas, for efficiency, until we
      # reach a large-ish size (roughly L3 cache-sized)
      if self._size < self._DOUBLE_ARENA_SIZE_UNTIL:
          self._size *= 2
      util.info("allocating a new mmap of length %d", length)
      arena = Arena(length)
      self._arenas.append(arena)
      return (arena, 0, length)
  
imports: import bisect
  from collections import defaultdict
  import mmap
  import os
  import sys
  import tempfile
  import threading
  from .context import reduction, assert_spawning
  from .None import util
label_desc: Use image node_id 3 for calling the Heap obj's underlying member method code with example usage: obj._new_arena(size) and returns: arena,  int,  length