Calling frames keeps object alive in all paths. Use references in allocate()/allocate_when_possible()