summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/internal/encoder/vars/stack.go
diff options
context:
space:
mode:
authorLibravatar Terin Stock <terinjokes@gmail.com>2025-03-09 17:47:56 +0100
committerLibravatar Terin Stock <terinjokes@gmail.com>2025-03-10 01:59:49 +0100
commit3ac1ee16f377d31a0fb80c8dae28b6239ac4229e (patch)
treef61faa581feaaeaba2542b9f2b8234a590684413 /vendor/github.com/bytedance/sonic/internal/encoder/vars/stack.go
parent[chore] update URLs to forked source (diff)
downloadgotosocial-3ac1ee16f377d31a0fb80c8dae28b6239ac4229e.tar.xz
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal/encoder/vars/stack.go')
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/vars/stack.go146
1 files changed, 0 insertions, 146 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/vars/stack.go b/vendor/github.com/bytedance/sonic/internal/encoder/vars/stack.go
deleted file mode 100644
index 28a630b40..000000000
--- a/vendor/github.com/bytedance/sonic/internal/encoder/vars/stack.go
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Copyright 2024 ByteDance Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vars
-
-import (
- "bytes"
- "sync"
- "unsafe"
-
- "github.com/bytedance/sonic/internal/caching"
- "github.com/bytedance/sonic/internal/rt"
- "github.com/bytedance/sonic/option"
-)
-
-type State struct {
- x int
- f uint64
- p unsafe.Pointer
- q unsafe.Pointer
-}
-
-type Stack struct {
- sp uintptr
- sb [MaxStack]State
-}
-
-var (
- bytesPool = sync.Pool{}
- stackPool = sync.Pool{
- New: func() interface{} {
- return &Stack{}
- },
- }
- bufferPool = sync.Pool{}
- programCache = caching.CreateProgramCache()
-)
-
-func NewBytes() *[]byte {
- if ret := bytesPool.Get(); ret != nil {
- return ret.(*[]byte)
- } else {
- ret := make([]byte, 0, option.DefaultEncoderBufferSize)
- return &ret
- }
-}
-
-func NewStack() *Stack {
- ret := stackPool.Get().(*Stack)
- ret.sp = 0
- return ret
-}
-
-func ResetStack(p *Stack) {
- rt.MemclrNoHeapPointers(unsafe.Pointer(p), StackSize)
-}
-
-func (s *Stack) Top() *State {
- return (*State)(rt.Add(unsafe.Pointer(&s.sb[0]), s.sp))
-}
-
-func (s *Stack) Cur() *State {
- return (*State)(rt.Add(unsafe.Pointer(&s.sb[0]), s.sp - uintptr(StateSize)))
-}
-
-const _MaxStackSP = uintptr(MaxStack * StateSize)
-
-func (s *Stack) Push(v State) bool {
- if uintptr(s.sp) >= _MaxStackSP {
- return false
- }
- st := s.Top()
- *st = v
- s.sp += uintptr(StateSize)
- return true
-}
-
-func (s *Stack) Pop() State {
- s.sp -= uintptr(StateSize)
- st := s.Top()
- ret := *st
- *st = State{}
- return ret
-}
-
-func (s *Stack) Load() (int, uint64, unsafe.Pointer, unsafe.Pointer) {
- st := s.Cur()
- return st.x, st.f, st.p, st.q
-}
-
-func (s *Stack) Save(x int, f uint64, p unsafe.Pointer, q unsafe.Pointer) bool {
- return s.Push(State{x: x, f:f, p: p, q: q})
-}
-
-func (s *Stack) Drop() (int, uint64, unsafe.Pointer, unsafe.Pointer) {
- st := s.Pop()
- return st.x, st.f, st.p, st.q
-}
-
-func NewBuffer() *bytes.Buffer {
- if ret := bufferPool.Get(); ret != nil {
- return ret.(*bytes.Buffer)
- } else {
- return bytes.NewBuffer(make([]byte, 0, option.DefaultEncoderBufferSize))
- }
-}
-
-func FreeBytes(p *[]byte) {
- if rt.CanSizeResue(cap(*p)) {
- (*p) = (*p)[:0]
- bytesPool.Put(p)
- }
-}
-
-func FreeStack(p *Stack) {
- p.sp = 0
- stackPool.Put(p)
-}
-
-func FreeBuffer(p *bytes.Buffer) {
- if rt.CanSizeResue(cap(p.Bytes())) {
- p.Reset()
- bufferPool.Put(p)
- }
-}
-
-var (
- ArgPtrs = []bool{true, true, true, false}
- LocalPtrs = []bool{}
-
- ArgPtrs_generic = []bool{true}
- LocalPtrs_generic = []bool{}
-) \ No newline at end of file