...

Package rt

import "github.com/bytedance/sonic/internal/rt"
Overview
Index

Overview ▾

Index ▾

Constants
Variables
func BytesFrom(p unsafe.Pointer, n int, c int) (r []byte)
func FuncAddr(f interface{}) unsafe.Pointer
func GcwbAddr() uintptr
func Get16(v []byte) int16
func Get32(v []byte) int32
func Get64(v []byte) int64
func GuardSlice(buf *[]byte, n int)
func IndexByte(ptr []byte, index int) unsafe.Pointer
func IndexChar(src string, index int) unsafe.Pointer
func Mem2Str(v []byte) (s string)
func MoreStack(size uintptr)
func NoEscape(p unsafe.Pointer) unsafe.Pointer
func PackInt(v int) uint64
func Ptr2SlicePtr(s unsafe.Pointer, l int, c int) unsafe.Pointer
func StartProf()
func StopProf()
func Str2Mem(s string) (v []byte)
func StrFrom(p unsafe.Pointer, n int64) (s string)
func StrPtr(s string) unsafe.Pointer
func UnpackInt(v uint64) int
type BitVec
    func (self BitVec) Bit(i uintptr) byte
    func (self BitVec) String() string
type Bitmap
    func (self *Bitmap) Append(bv int)
    func (self *Bitmap) AppendMany(n int, bv int)
    func (self *Bitmap) Set(i int, bv int)
type GoEface
    func UnpackEface(v interface{}) GoEface
    func (self GoEface) Pack() (v interface{})
type GoIface
    func AssertI2I2(t *GoType, i GoIface) (r GoIface)
    func UnpackIface(v interface{}) GoIface
type GoInterfaceMethod
type GoInterfaceType
    func IfaceType(t *GoType) *GoInterfaceType
type GoItab
    func Getitab(inter *GoInterfaceType, typ *GoType, canfail bool) *GoItab
type GoMap
type GoMapIterator
type GoMapType
    func MapType(t *GoType) *GoMapType
    func (self *GoMapType) IndirectElem() bool
type GoPtrType
type GoSlice
type GoString
type GoStructField
type GoStructType
type GoType
    func PtrElem(t *GoType) *GoType
    func UnpackType(t reflect.Type) *GoType
    func (self *GoType) Indirect() bool
    func (self *GoType) IsNamed() bool
    func (self *GoType) Kind() reflect.Kind
    func (self *GoType) Pack() (t reflect.Type)
    func (self *GoType) String() string
type StackMap
    func (self *StackMap) Get(i int32) BitVec
    func (self *StackMap) MarshalBinary() ([]byte, error)
    func (self *StackMap) Pin() uintptr
    func (self *StackMap) String() string
type StackMapBuilder
    func (self *StackMapBuilder) AddField(ptr bool)
    func (self *StackMapBuilder) AddFields(n int, ptr bool)
    func (self *StackMapBuilder) Build() (p *StackMap)

Package files

fastmem.go fastvalue.go gcwb.go int48.go stackmap.go

Constants

GoType.KindFlags const

const (
    F_direct    = 1 << 5
    F_kind_mask = (1 << 5) - 1
)
const (
    MinInt48 int64 = -(1 << 47)
    MaxInt48 int64 = +(1 << 47) - 1
)

Variables

StopProfiling is used to stop traceback introduced by SIGPROF while native code is running. WARN: this option is only a workaround for traceback issue (https://github.com/bytedance/sonic/issues/310), and will be dropped when the issue is fixed.

var StopProfiling = os.Getenv("SONIC_STOP_PROFILING") != ""

func BytesFrom

func BytesFrom(p unsafe.Pointer, n int, c int) (r []byte)

func FuncAddr

func FuncAddr(f interface{}) unsafe.Pointer

func GcwbAddr

func GcwbAddr() uintptr

func Get16

func Get16(v []byte) int16

func Get32

func Get32(v []byte) int32

func Get64

func Get64(v []byte) int64

func GuardSlice

func GuardSlice(buf *[]byte, n int)

func IndexByte

func IndexByte(ptr []byte, index int) unsafe.Pointer

func IndexChar

func IndexChar(src string, index int) unsafe.Pointer

func Mem2Str

func Mem2Str(v []byte) (s string)

func MoreStack

func MoreStack(size uintptr)

func NoEscape

func NoEscape(p unsafe.Pointer) unsafe.Pointer

NoEscape hides a pointer from escape analysis. NoEscape is the identity function but escape analysis doesn't think the output depends on the input. NoEscape is inlined and currently compiles down to zero instructions. USE CAREFULLY!

func PackInt

func PackInt(v int) uint64

func Ptr2SlicePtr

func Ptr2SlicePtr(s unsafe.Pointer, l int, c int) unsafe.Pointer

func StartProf

func StartProf()

func StopProf

func StopProf()

func Str2Mem

func Str2Mem(s string) (v []byte)

func StrFrom

func StrFrom(p unsafe.Pointer, n int64) (s string)

func StrPtr

func StrPtr(s string) unsafe.Pointer

func UnpackInt

func UnpackInt(v uint64) int

type BitVec

type BitVec struct {
    N uintptr
    B unsafe.Pointer
}

func (BitVec) Bit

func (self BitVec) Bit(i uintptr) byte

func (BitVec) String

func (self BitVec) String() string

type Bitmap

type Bitmap struct {
    N int
    B []byte
}

func (*Bitmap) Append

func (self *Bitmap) Append(bv int)

func (*Bitmap) AppendMany

func (self *Bitmap) AppendMany(n int, bv int)

func (*Bitmap) Set

func (self *Bitmap) Set(i int, bv int)

type GoEface

type GoEface struct {
    Type  *GoType
    Value unsafe.Pointer
}

func UnpackEface

func UnpackEface(v interface{}) GoEface

func (GoEface) Pack

func (self GoEface) Pack() (v interface{})

type GoIface

type GoIface struct {
    Itab  *GoItab
    Value unsafe.Pointer
}

func AssertI2I2

func AssertI2I2(t *GoType, i GoIface) (r GoIface)

func UnpackIface

func UnpackIface(v interface{}) GoIface

type GoInterfaceMethod

type GoInterfaceMethod struct {
    Name int32
    Type int32
}

type GoInterfaceType

type GoInterfaceType struct {
    GoType
    PkgPath *byte
    Methods []GoInterfaceMethod
}

func IfaceType

func IfaceType(t *GoType) *GoInterfaceType

type GoItab

type GoItab struct {
    Vt *GoType
    // contains filtered or unexported fields
}

func Getitab

func Getitab(inter *GoInterfaceType, typ *GoType, canfail bool) *GoItab

type GoMap

type GoMap struct {
    Count      int
    Flags      uint8
    B          uint8
    Overflow   uint16
    Hash0      uint32
    Buckets    unsafe.Pointer
    OldBuckets unsafe.Pointer
    Evacuate   uintptr
    Extra      unsafe.Pointer
}

type GoMapIterator

type GoMapIterator struct {
    K           unsafe.Pointer
    V           unsafe.Pointer
    T           *GoMapType
    H           *GoMap
    Buckets     unsafe.Pointer
    Bptr        *unsafe.Pointer
    Overflow    *[]unsafe.Pointer
    OldOverflow *[]unsafe.Pointer
    StartBucket uintptr
    Offset      uint8
    Wrapped     bool
    B           uint8
    I           uint8
    Bucket      uintptr
    CheckBucket uintptr
}

type GoMapType

type GoMapType struct {
    GoType
    Key        *GoType
    Elem       *GoType
    Bucket     *GoType
    Hasher     func(unsafe.Pointer, uintptr) uintptr
    KeySize    uint8
    ElemSize   uint8
    BucketSize uint16
    Flags      uint32
}

func MapType

func MapType(t *GoType) *GoMapType

func (*GoMapType) IndirectElem

func (self *GoMapType) IndirectElem() bool

type GoPtrType

type GoPtrType struct {
    GoType
    Elem *GoType
}

type GoSlice

type GoSlice struct {
    Ptr unsafe.Pointer
    Len int
    Cap int
}

type GoString

type GoString struct {
    Ptr unsafe.Pointer
    Len int
}

type GoStructField

type GoStructField struct {
    Name     *byte
    Type     *GoType
    OffEmbed uintptr
}

type GoStructType

type GoStructType struct {
    GoType
    Pkg    *byte
    Fields []GoStructField
}

type GoType

type GoType struct {
    Size       uintptr
    PtrData    uintptr
    Hash       uint32
    Flags      uint8
    Align      uint8
    FieldAlign uint8
    KindFlags  uint8
    Traits     unsafe.Pointer
    GCData     *byte
    Str        int32
    PtrToSelf  int32
}

func PtrElem

func PtrElem(t *GoType) *GoType

func UnpackType

func UnpackType(t reflect.Type) *GoType

func (*GoType) Indirect

func (self *GoType) Indirect() bool

func (*GoType) IsNamed

func (self *GoType) IsNamed() bool

func (*GoType) Kind

func (self *GoType) Kind() reflect.Kind

func (*GoType) Pack

func (self *GoType) Pack() (t reflect.Type)

func (*GoType) String

func (self *GoType) String() string

type StackMap

type StackMap struct {
    N int32
    L int32
    B [1]byte
}

func (*StackMap) Get

func (self *StackMap) Get(i int32) BitVec

func (*StackMap) MarshalBinary

func (self *StackMap) MarshalBinary() ([]byte, error)

func (*StackMap) Pin

func (self *StackMap) Pin() uintptr

func (*StackMap) String

func (self *StackMap) String() string

type StackMapBuilder

type StackMapBuilder struct {
    // contains filtered or unexported fields
}

func (*StackMapBuilder) AddField

func (self *StackMapBuilder) AddField(ptr bool)

func (*StackMapBuilder) AddFields

func (self *StackMapBuilder) AddFields(n int, ptr bool)

func (*StackMapBuilder) Build

func (self *StackMapBuilder) Build() (p *StackMap)