| // Copyright 2015 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package ssa |
| |
| type ID int32 |
| |
| // idAlloc provides an allocator for unique integers. |
| type idAlloc struct { |
| last ID |
| } |
| |
| // get allocates an ID and returns it. IDs are always > 0. |
| func (a *idAlloc) get() ID { |
| x := a.last |
| x++ |
| if x == 1<<31-1 { |
| panic("too many ids for this function") |
| } |
| a.last = x |
| return x |
| } |
| |
| // num returns the maximum ID ever returned + 1. |
| func (a *idAlloc) num() int { |
| return int(a.last + 1) |
| } |