github.com/bytedance/sonic@v1.11.7-0.20240517092252-d2edb31b167b/internal/rt/stub_go120.go (about)

     1  // +build go1.20
     2  
     3  // Copyright 2024 CloudWeGo Authors
     4  // 
     5  // Licensed under the Apache License, Version 2.0 (the "License");
     6  // you may not use this file except in compliance with the License.
     7  // You may obtain a copy of the License at
     8  // 
     9  //     https://www.apache.org/licenses/LICENSE-2.0
    10  // 
    11  // Unless required by applicable law or agreed to in writing, software
    12  // distributed under the License is distributed on an "AS IS" BASIS,
    13  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  // See the License for the specific language governing permissions and
    15  // limitations under the License.
    16  
    17  package rt
    18  
    19  import "unsafe"
    20  
    21  func GrowSlice(et *GoType, old GoSlice, cap int) GoSlice {
    22  	s := growslice(old.Ptr, cap, old.Cap, cap - old.Len, et)
    23  	s.Len = old.Len
    24  	return s
    25  }
    26  
    27  //go:linkname growslice runtime.growslice
    28  //goland:noinspection GoUnusedParameter
    29  func growslice(oldPtr unsafe.Pointer, newLen, oldCap, num int, et *GoType) GoSlice