2015-03-03 13:38:14 -08:00
|
|
|
// 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
|
|
|
|
|
}
|
|
|
|
|
|
2016-04-22 12:15:08 -04:00
|
|
|
// get allocates an ID and returns it. IDs are always > 0.
|
2015-03-03 13:38:14 -08:00
|
|
|
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)
|
|
|
|
|
}
|