code: func checkpool(ctxt *liblink.Link, p *liblink.Prog, sz int) bool {
  	if pool.size >= 0xff0 || immaddr(int((p.Pc+int64(sz)+4)+4+(12+pool.size)-(pool.start+8))) == 0 {
  		return flushpool(ctxt, p, 1, 0)
  	} else if p.Link == nil {
  		return flushpool(ctxt, p, 2, 0)
  	}
  	return false
  }
docs: /*
   * when the first reference to the literal pool threatens
   * to go out of range of a 12-bit PC-relative offset,
   * drop the pool now, and branch round it.
   * this happens only in extended basic blocks that exceed 4k.
   */