diff options
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal/loader/funcdata_go115.go')
-rw-r--r-- | vendor/github.com/bytedance/sonic/internal/loader/funcdata_go115.go | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/loader/funcdata_go115.go b/vendor/github.com/bytedance/sonic/internal/loader/funcdata_go115.go deleted file mode 100644 index b0d2d6c65..000000000 --- a/vendor/github.com/bytedance/sonic/internal/loader/funcdata_go115.go +++ /dev/null @@ -1,169 +0,0 @@ -// +build go1.15,!go1.16 - -/* - * Copyright 2021 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 loader - -import ( - `unsafe` - - `github.com/bytedance/sonic/internal/rt` -) - -type _Func struct { - entry uintptr // start pc - nameoff int32 // function name - args int32 // in/out args size - deferreturn uint32 // offset of start of a deferreturn call instruction from entry, if any. - pcsp int32 - pcfile int32 - pcln int32 - npcdata int32 - funcID uint8 // set for certain special runtime functions - _ [2]int8 // unused - nfuncdata uint8 // must be last - argptrs uintptr - localptrs uintptr -} - -type _FuncTab struct { - entry uintptr - funcoff uintptr -} - -type _BitVector struct { - n int32 // # of bits - bytedata *uint8 -} - -type _PtabEntry struct { - name int32 - typ int32 -} - -type _TextSection struct { - vaddr uintptr // prelinked section vaddr - length uintptr // section length - baseaddr uintptr // relocated section address -} - -type _ModuleData struct { - pclntable []byte - ftab []_FuncTab - filetab []uint32 - findfunctab *_FindFuncBucket - minpc, maxpc uintptr - text, etext uintptr - noptrdata, enoptrdata uintptr - data, edata uintptr - bss, ebss uintptr - noptrbss, enoptrbss uintptr - end, gcdata, gcbss uintptr - types, etypes uintptr - textsectmap []_TextSection - typelinks []int32 // offsets from types - itablinks []*rt.GoItab - ptab []_PtabEntry - pluginpath string - pkghashes []byte - modulename string - modulehashes []byte - hasmain uint8 // 1 if module contains the main function, 0 otherwise - gcdatamask, gcbssmask _BitVector - typemap map[int32]*rt.GoType // offset to *_rtype in previous module - bad bool // module failed to load and should be ignored - next *_ModuleData -} - -type _FindFuncBucket struct { - idx uint32 - subbuckets [16]byte -} - -var findFuncTab = &_FindFuncBucket { - idx: 1, -} - -func registerFunction(name string, pc uintptr, textSize uintptr, fp int, args int, size uintptr, argPtrs []bool, localPtrs []bool) { - mod := new(_ModuleData) - minpc := pc - maxpc := pc + size - - /* build the PC & line table */ - pclnt := []byte { - 0xfb, 0xff, 0xff, 0xff, // magic : 0xfffffffb - 0, // pad1 : 0 - 0, // pad2 : 0 - 1, // minLC : 1 - 4 << (^uintptr(0) >> 63), // ptrSize : 4 << (^uintptr(0) >> 63) - } - - // cache arg and local stackmap - argptrs, localptrs := cacheStackmap(argPtrs, localPtrs, mod) - - /* add the function name */ - noff := len(pclnt) - pclnt = append(append(pclnt, name...), 0) - - /* add PCDATA */ - pcsp := len(pclnt) - pclnt = append(pclnt, encodeVariant((fp + 1) << 1)...) - pclnt = append(pclnt, encodeVariant(int(size))...) - - /* function entry */ - fnv := _Func { - entry : pc, - nameoff : int32(noff), - args : int32(args), - pcsp : int32(pcsp), - nfuncdata : 2, - argptrs : uintptr(argptrs), - localptrs : uintptr(localptrs), - } - - /* align the func to 8 bytes */ - if p := len(pclnt) % 8; p != 0 { - pclnt = append(pclnt, make([]byte, 8 - p)...) - } - - /* add the function descriptor */ - foff := len(pclnt) - pclnt = append(pclnt, (*(*[unsafe.Sizeof(_Func{})]byte)(unsafe.Pointer(&fnv)))[:]...) - - /* function table */ - tab := []_FuncTab { - {entry: pc, funcoff: uintptr(foff)}, - {entry: pc, funcoff: uintptr(foff)}, - {entry: maxpc}, - } - - /* module data */ - *mod = _ModuleData { - pclntable : pclnt, - ftab : tab, - findfunctab : findFuncTab, - minpc : minpc, - maxpc : maxpc, - modulename : name, - gcdata: uintptr(unsafe.Pointer(&emptyByte)), - gcbss: uintptr(unsafe.Pointer(&emptyByte)), - } - - /* verify and register the new module */ - moduledataverify1(mod) - registerModule(mod) -} |