github.com/bir3/gocompiler@v0.3.205/src/cmd/compile/internal/ssa/allocators.go (about)

     1  // Code generated from _gen/allocators.go; DO NOT EDIT.
     2  
     3  package ssa
     4  
     5  import (
     6  	"math/bits"
     7  	"sync"
     8  )
     9  
    10  var poolFreeValueSlice [27]sync.Pool
    11  
    12  func (c *Cache) allocValueSlice(n int) []*Value {
    13  	var s []*Value
    14  	n2 := n
    15  	if n2 < 32 {
    16  		n2 = 32
    17  	}
    18  	b := bits.Len(uint(n2 - 1))
    19  	v := poolFreeValueSlice[b-5].Get()
    20  	if v == nil {
    21  		s = make([]*Value, 1<<b)
    22  	} else {
    23  		sp := v.(*[]*Value)
    24  		s = *sp
    25  		*sp = nil
    26  		c.hdrValueSlice = append(c.hdrValueSlice, sp)
    27  	}
    28  	s = s[:n]
    29  	return s
    30  }
    31  func (c *Cache) freeValueSlice(s []*Value) {
    32  	for i := range s {
    33  		s[i] = nil
    34  	}
    35  	b := bits.Len(uint(cap(s)) - 1)
    36  	var sp *[]*Value
    37  	if len(c.hdrValueSlice) == 0 {
    38  		sp = new([]*Value)
    39  	} else {
    40  		sp = c.hdrValueSlice[len(c.hdrValueSlice)-1]
    41  		c.hdrValueSlice[len(c.hdrValueSlice)-1] = nil
    42  		c.hdrValueSlice = c.hdrValueSlice[:len(c.hdrValueSlice)-1]
    43  	}
    44  	*sp = s
    45  	poolFreeValueSlice[b-5].Put(sp)
    46  }
    47  
    48  var poolFreeBlockSlice [27]sync.Pool
    49  
    50  func (c *Cache) allocBlockSlice(n int) []*Block {
    51  	var s []*Block
    52  	n2 := n
    53  	if n2 < 32 {
    54  		n2 = 32
    55  	}
    56  	b := bits.Len(uint(n2 - 1))
    57  	v := poolFreeBlockSlice[b-5].Get()
    58  	if v == nil {
    59  		s = make([]*Block, 1<<b)
    60  	} else {
    61  		sp := v.(*[]*Block)
    62  		s = *sp
    63  		*sp = nil
    64  		c.hdrBlockSlice = append(c.hdrBlockSlice, sp)
    65  	}
    66  	s = s[:n]
    67  	return s
    68  }
    69  func (c *Cache) freeBlockSlice(s []*Block) {
    70  	for i := range s {
    71  		s[i] = nil
    72  	}
    73  	b := bits.Len(uint(cap(s)) - 1)
    74  	var sp *[]*Block
    75  	if len(c.hdrBlockSlice) == 0 {
    76  		sp = new([]*Block)
    77  	} else {
    78  		sp = c.hdrBlockSlice[len(c.hdrBlockSlice)-1]
    79  		c.hdrBlockSlice[len(c.hdrBlockSlice)-1] = nil
    80  		c.hdrBlockSlice = c.hdrBlockSlice[:len(c.hdrBlockSlice)-1]
    81  	}
    82  	*sp = s
    83  	poolFreeBlockSlice[b-5].Put(sp)
    84  }
    85  
    86  var poolFreeBoolSlice [24]sync.Pool
    87  
    88  func (c *Cache) allocBoolSlice(n int) []bool {
    89  	var s []bool
    90  	n2 := n
    91  	if n2 < 256 {
    92  		n2 = 256
    93  	}
    94  	b := bits.Len(uint(n2 - 1))
    95  	v := poolFreeBoolSlice[b-8].Get()
    96  	if v == nil {
    97  		s = make([]bool, 1<<b)
    98  	} else {
    99  		sp := v.(*[]bool)
   100  		s = *sp
   101  		*sp = nil
   102  		c.hdrBoolSlice = append(c.hdrBoolSlice, sp)
   103  	}
   104  	s = s[:n]
   105  	return s
   106  }
   107  func (c *Cache) freeBoolSlice(s []bool) {
   108  	for i := range s {
   109  		s[i] = false
   110  	}
   111  	b := bits.Len(uint(cap(s)) - 1)
   112  	var sp *[]bool
   113  	if len(c.hdrBoolSlice) == 0 {
   114  		sp = new([]bool)
   115  	} else {
   116  		sp = c.hdrBoolSlice[len(c.hdrBoolSlice)-1]
   117  		c.hdrBoolSlice[len(c.hdrBoolSlice)-1] = nil
   118  		c.hdrBoolSlice = c.hdrBoolSlice[:len(c.hdrBoolSlice)-1]
   119  	}
   120  	*sp = s
   121  	poolFreeBoolSlice[b-8].Put(sp)
   122  }
   123  
   124  var poolFreeIntSlice [27]sync.Pool
   125  
   126  func (c *Cache) allocIntSlice(n int) []int {
   127  	var s []int
   128  	n2 := n
   129  	if n2 < 32 {
   130  		n2 = 32
   131  	}
   132  	b := bits.Len(uint(n2 - 1))
   133  	v := poolFreeIntSlice[b-5].Get()
   134  	if v == nil {
   135  		s = make([]int, 1<<b)
   136  	} else {
   137  		sp := v.(*[]int)
   138  		s = *sp
   139  		*sp = nil
   140  		c.hdrIntSlice = append(c.hdrIntSlice, sp)
   141  	}
   142  	s = s[:n]
   143  	return s
   144  }
   145  func (c *Cache) freeIntSlice(s []int) {
   146  	for i := range s {
   147  		s[i] = 0
   148  	}
   149  	b := bits.Len(uint(cap(s)) - 1)
   150  	var sp *[]int
   151  	if len(c.hdrIntSlice) == 0 {
   152  		sp = new([]int)
   153  	} else {
   154  		sp = c.hdrIntSlice[len(c.hdrIntSlice)-1]
   155  		c.hdrIntSlice[len(c.hdrIntSlice)-1] = nil
   156  		c.hdrIntSlice = c.hdrIntSlice[:len(c.hdrIntSlice)-1]
   157  	}
   158  	*sp = s
   159  	poolFreeIntSlice[b-5].Put(sp)
   160  }
   161  
   162  var poolFreeInt32Slice [26]sync.Pool
   163  
   164  func (c *Cache) allocInt32Slice(n int) []int32 {
   165  	var s []int32
   166  	n2 := n
   167  	if n2 < 64 {
   168  		n2 = 64
   169  	}
   170  	b := bits.Len(uint(n2 - 1))
   171  	v := poolFreeInt32Slice[b-6].Get()
   172  	if v == nil {
   173  		s = make([]int32, 1<<b)
   174  	} else {
   175  		sp := v.(*[]int32)
   176  		s = *sp
   177  		*sp = nil
   178  		c.hdrInt32Slice = append(c.hdrInt32Slice, sp)
   179  	}
   180  	s = s[:n]
   181  	return s
   182  }
   183  func (c *Cache) freeInt32Slice(s []int32) {
   184  	for i := range s {
   185  		s[i] = 0
   186  	}
   187  	b := bits.Len(uint(cap(s)) - 1)
   188  	var sp *[]int32
   189  	if len(c.hdrInt32Slice) == 0 {
   190  		sp = new([]int32)
   191  	} else {
   192  		sp = c.hdrInt32Slice[len(c.hdrInt32Slice)-1]
   193  		c.hdrInt32Slice[len(c.hdrInt32Slice)-1] = nil
   194  		c.hdrInt32Slice = c.hdrInt32Slice[:len(c.hdrInt32Slice)-1]
   195  	}
   196  	*sp = s
   197  	poolFreeInt32Slice[b-6].Put(sp)
   198  }
   199  
   200  var poolFreeInt8Slice [24]sync.Pool
   201  
   202  func (c *Cache) allocInt8Slice(n int) []int8 {
   203  	var s []int8
   204  	n2 := n
   205  	if n2 < 256 {
   206  		n2 = 256
   207  	}
   208  	b := bits.Len(uint(n2 - 1))
   209  	v := poolFreeInt8Slice[b-8].Get()
   210  	if v == nil {
   211  		s = make([]int8, 1<<b)
   212  	} else {
   213  		sp := v.(*[]int8)
   214  		s = *sp
   215  		*sp = nil
   216  		c.hdrInt8Slice = append(c.hdrInt8Slice, sp)
   217  	}
   218  	s = s[:n]
   219  	return s
   220  }
   221  func (c *Cache) freeInt8Slice(s []int8) {
   222  	for i := range s {
   223  		s[i] = 0
   224  	}
   225  	b := bits.Len(uint(cap(s)) - 1)
   226  	var sp *[]int8
   227  	if len(c.hdrInt8Slice) == 0 {
   228  		sp = new([]int8)
   229  	} else {
   230  		sp = c.hdrInt8Slice[len(c.hdrInt8Slice)-1]
   231  		c.hdrInt8Slice[len(c.hdrInt8Slice)-1] = nil
   232  		c.hdrInt8Slice = c.hdrInt8Slice[:len(c.hdrInt8Slice)-1]
   233  	}
   234  	*sp = s
   235  	poolFreeInt8Slice[b-8].Put(sp)
   236  }
   237  
   238  var poolFreeIDSlice [26]sync.Pool
   239  
   240  func (c *Cache) allocIDSlice(n int) []ID {
   241  	var s []ID
   242  	n2 := n
   243  	if n2 < 64 {
   244  		n2 = 64
   245  	}
   246  	b := bits.Len(uint(n2 - 1))
   247  	v := poolFreeIDSlice[b-6].Get()
   248  	if v == nil {
   249  		s = make([]ID, 1<<b)
   250  	} else {
   251  		sp := v.(*[]ID)
   252  		s = *sp
   253  		*sp = nil
   254  		c.hdrIDSlice = append(c.hdrIDSlice, sp)
   255  	}
   256  	s = s[:n]
   257  	return s
   258  }
   259  func (c *Cache) freeIDSlice(s []ID) {
   260  	for i := range s {
   261  		s[i] = 0
   262  	}
   263  	b := bits.Len(uint(cap(s)) - 1)
   264  	var sp *[]ID
   265  	if len(c.hdrIDSlice) == 0 {
   266  		sp = new([]ID)
   267  	} else {
   268  		sp = c.hdrIDSlice[len(c.hdrIDSlice)-1]
   269  		c.hdrIDSlice[len(c.hdrIDSlice)-1] = nil
   270  		c.hdrIDSlice = c.hdrIDSlice[:len(c.hdrIDSlice)-1]
   271  	}
   272  	*sp = s
   273  	poolFreeIDSlice[b-6].Put(sp)
   274  }
   275  
   276  var poolFreeSparseSet [27]sync.Pool
   277  
   278  func (c *Cache) allocSparseSet(n int) *sparseSet {
   279  	var s *sparseSet
   280  	n2 := n
   281  	if n2 < 32 {
   282  		n2 = 32
   283  	}
   284  	b := bits.Len(uint(n2 - 1))
   285  	v := poolFreeSparseSet[b-5].Get()
   286  	if v == nil {
   287  		s = newSparseSet(1 << b)
   288  	} else {
   289  		s = v.(*sparseSet)
   290  	}
   291  	return s
   292  }
   293  func (c *Cache) freeSparseSet(s *sparseSet) {
   294  	s.clear()
   295  	b := bits.Len(uint(s.cap()) - 1)
   296  	poolFreeSparseSet[b-5].Put(s)
   297  }
   298  
   299  var poolFreeSparseMap [27]sync.Pool
   300  
   301  func (c *Cache) allocSparseMap(n int) *sparseMap {
   302  	var s *sparseMap
   303  	n2 := n
   304  	if n2 < 32 {
   305  		n2 = 32
   306  	}
   307  	b := bits.Len(uint(n2 - 1))
   308  	v := poolFreeSparseMap[b-5].Get()
   309  	if v == nil {
   310  		s = newSparseMap(1 << b)
   311  	} else {
   312  		s = v.(*sparseMap)
   313  	}
   314  	return s
   315  }
   316  func (c *Cache) freeSparseMap(s *sparseMap) {
   317  	s.clear()
   318  	b := bits.Len(uint(s.cap()) - 1)
   319  	poolFreeSparseMap[b-5].Put(s)
   320  }
   321  
   322  var poolFreeSparseMapPos [27]sync.Pool
   323  
   324  func (c *Cache) allocSparseMapPos(n int) *sparseMapPos {
   325  	var s *sparseMapPos
   326  	n2 := n
   327  	if n2 < 32 {
   328  		n2 = 32
   329  	}
   330  	b := bits.Len(uint(n2 - 1))
   331  	v := poolFreeSparseMapPos[b-5].Get()
   332  	if v == nil {
   333  		s = newSparseMapPos(1 << b)
   334  	} else {
   335  		s = v.(*sparseMapPos)
   336  	}
   337  	return s
   338  }
   339  func (c *Cache) freeSparseMapPos(s *sparseMapPos) {
   340  	s.clear()
   341  	b := bits.Len(uint(s.cap()) - 1)
   342  	poolFreeSparseMapPos[b-5].Put(s)
   343  }