rt

package
v0.0.0-...-9588fa0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	F_direct    = 1 << 5
	F_kind_mask = (1 << 5) - 1
)

GoType.KindFlags const

View Source
const (
	MinInt48 int64 = -(1 << 47)
	MaxInt48 int64 = +(1 << 47) - 1
)

Variables

View Source
var (
	BoolType    = UnpackType(reflect.TypeOf(false))
	ByteType    = UnpackType(reflect.TypeOf(byte(0)))
	IncntType   = UnpackType(reflect.TypeOf(int(0)))
	Int8Type    = UnpackType(reflect.TypeOf(int8(0)))
	Int16Type   = UnpackType(reflect.TypeOf(int16(0)))
	Int32Type   = UnpackType(reflect.TypeOf(int32(0)))
	Int64Type   = UnpackType(reflect.TypeOf(int64(0)))
	UintType    = UnpackType(reflect.TypeOf(uint(0)))
	Uint8Type   = UnpackType(reflect.TypeOf(uint8(0)))
	Uint16Type  = UnpackType(reflect.TypeOf(uint16(0)))
	Uint32Type  = UnpackType(reflect.TypeOf(uint32(0)))
	Uint64Type  = UnpackType(reflect.TypeOf(uint64(0)))
	Float32Type = UnpackType(reflect.TypeOf(float32(0)))
	Float64Type = UnpackType(reflect.TypeOf(float64(0)))

	StringType     = UnpackType(reflect.TypeOf(""))
	BytesType      = UnpackType(reflect.TypeOf([]byte(nil)))
	JsonNumberType = UnpackType(reflect.TypeOf(json.Number("")))

	SliceEfaceType  = UnpackType(reflect.TypeOf([]interface{}(nil)))
	SliceStringType = UnpackType(reflect.TypeOf([]string(nil)))
	SliceI32Type    = UnpackType(reflect.TypeOf([]int32(nil)))
	SliceI64Type    = UnpackType(reflect.TypeOf([]int64(nil)))
	SliceU32Type    = UnpackType(reflect.TypeOf([]uint32(nil)))
	SliceU64Type    = UnpackType(reflect.TypeOf([]uint64(nil)))

	AnyType       = UnpackType(reflect.TypeOf((*interface{})(nil)).Elem())
	MapEfaceType  = UnpackType(reflect.TypeOf(map[string]interface{}(nil)))
	MapStringType = UnpackType(reflect.TypeOf(map[string]string(nil)))

	MapEfaceMapType = MapType(UnpackType(reflect.TypeOf(map[string]interface{}(nil))))
)
View Source
var EmptySlice = *(*GoSlice)(unsafe.Pointer(&emptyBytes))
View Source
var Hex = "0123456789abcdef"
View Source
var RuntimeWriteBarrier uintptr
View Source
var SafeSet = [utf8.RuneSelf]bool{
	' ':      true,
	'!':      true,
	'"':      false,
	'#':      true,
	'$':      true,
	'%':      true,
	'&':      true,
	'\'':     true,
	'(':      true,
	')':      true,
	'*':      true,
	'+':      true,
	',':      true,
	'-':      true,
	'.':      true,
	'/':      true,
	'0':      true,
	'1':      true,
	'2':      true,
	'3':      true,
	'4':      true,
	'5':      true,
	'6':      true,
	'7':      true,
	'8':      true,
	'9':      true,
	':':      true,
	';':      true,
	'<':      true,
	'=':      true,
	'>':      true,
	'?':      true,
	'@':      true,
	'A':      true,
	'B':      true,
	'C':      true,
	'D':      true,
	'E':      true,
	'F':      true,
	'G':      true,
	'H':      true,
	'I':      true,
	'J':      true,
	'K':      true,
	'L':      true,
	'M':      true,
	'N':      true,
	'O':      true,
	'P':      true,
	'Q':      true,
	'R':      true,
	'S':      true,
	'T':      true,
	'U':      true,
	'V':      true,
	'W':      true,
	'X':      true,
	'Y':      true,
	'Z':      true,
	'[':      true,
	'\\':     false,
	']':      true,
	'^':      true,
	'_':      true,
	'`':      true,
	'a':      true,
	'b':      true,
	'c':      true,
	'd':      true,
	'e':      true,
	'f':      true,
	'g':      true,
	'h':      true,
	'i':      true,
	'j':      true,
	'k':      true,
	'l':      true,
	'm':      true,
	'n':      true,
	'o':      true,
	'p':      true,
	'q':      true,
	'r':      true,
	's':      true,
	't':      true,
	'u':      true,
	'v':      true,
	'w':      true,
	'x':      true,
	'y':      true,
	'z':      true,
	'{':      true,
	'|':      true,
	'}':      true,
	'~':      true,
	'\u007f': true,
}

Functions

func Add

func Add(ptr unsafe.Pointer, off uintptr) unsafe.Pointer

func BytesFrom

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

func CanSizeResue

func CanSizeResue(cap int) bool

CanSizeResue

func ClearMemory

func ClearMemory(et *GoType, ptr unsafe.Pointer, size uintptr)

func ConvTBool

func ConvTBool(val bool, ep *interface{})

func DecodeBase64

func DecodeBase64(raw []byte) ([]byte, error)

func EncodeBase64

func EncodeBase64(src []byte) string

func FuncAddr

func FuncAddr(f interface{}) unsafe.Pointer

func GcWriteBarrier2

func GcWriteBarrier2()

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 GuardSlice2

func GuardSlice2(buf []byte, n int) []byte

func IndexByte

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

func IndexChar

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

func IsMapfast

func IsMapfast(vt reflect.Type) bool

func IsValidNumber

func IsValidNumber(s string) bool

func Makemap

func Makemap(*GoType, int) unsafe.Pointer

func Mallocgc

func Mallocgc(size uintptr, typ *GoType, needzero bool) unsafe.Pointer

func Mapassign

func Mapassign(t *GoMapType, h unsafe.Pointer, k unsafe.Pointer) unsafe.Pointer

func Mapassign_fast32

func Mapassign_fast32(t *GoMapType, h unsafe.Pointer, k uint32) unsafe.Pointer

func Mapassign_fast64

func Mapassign_fast64(t *GoMapType, h unsafe.Pointer, k uint64) unsafe.Pointer

func Mapassign_faststr

func Mapassign_faststr(t *GoMapType, h unsafe.Pointer, s string) unsafe.Pointer

func Mapiterinit

func Mapiterinit(t *GoMapType, m *GoMap, it *GoMapIterator)

func Mapiternext

func Mapiternext(it *GoMapIterator)

func Mem2Str

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

func MemclrHasPointers

func MemclrHasPointers(ptr unsafe.Pointer, n uintptr)

func MemclrNoHeapPointers

func MemclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)

func Memmove

func Memmove(to unsafe.Pointer, from unsafe.Pointer, n uintptr)

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 PtrAdd

func PtrAdd(ptr unsafe.Pointer, offset uintptr) unsafe.Pointer

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

Types

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 AssertI2I

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

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
}

func GrowSlice

func GrowSlice(et *GoType, old GoSlice, newCap int) GoSlice

Growslice to newCap, not append length Note: the [old, newCap) will not be zeroed if et does not have any ptr data.

func MakeSlice

func MakeSlice(oldPtr unsafe.Pointer, et *GoType, newLen int) *GoSlice

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 AsGoType

func AsGoType(t uintptr) *GoType

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) IsInt32

func (t *GoType) IsInt32() bool

func (*GoType) IsInt64

func (t *GoType) IsInt64() bool

func (*GoType) IsNamed

func (self *GoType) IsNamed() bool

func (*GoType) IsUint32

func (t *GoType) IsUint32() bool

func (*GoType) IsUint64

func (t *GoType) IsUint64() 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 Map32Assign

type Map32Assign func(t *GoMapType, h unsafe.Pointer, k uint32) unsafe.Pointer

func GetMap32Assign

func GetMap32Assign(vt reflect.Type) Map32Assign

type Map64Assign

type Map64Assign func(t *GoMapType, h unsafe.Pointer, k uint64) unsafe.Pointer

func GetMap64Assign

func GetMap64Assign(vt reflect.Type) Map64Assign

type MapStrAssign

type MapStrAssign func(t *GoMapType, h unsafe.Pointer, s string) unsafe.Pointer

func GetMapStrAssign

func GetMapStrAssign(vt reflect.Type) MapStrAssign

type SlicePool

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

func NewPool

func NewPool(typ *GoType, size int) SlicePool

func (*SlicePool) GetSlice

func (self *SlicePool) GetSlice(size int) unsafe.Pointer

func (*SlicePool) Remain

func (self *SlicePool) Remain() int

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)

type T64Pool

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

func NewT64Pool

func NewT64Pool(hint int) T64Pool

func (*T64Pool) Conv

func (self *T64Pool) Conv(val uint64, typ *GoType, ep *interface{})

func (*T64Pool) Free

func (self *T64Pool) Free()

type TslicePool

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

func NewTslicePool

func NewTslicePool(hint int) TslicePool

func (*TslicePool) Conv

func (self *TslicePool) Conv(val GoSlice, typ *GoType, ep *interface{})

func (*TslicePool) Free

func (self *TslicePool) Free()

type TstringPool

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

func NewTstringPool

func NewTstringPool(hint int) TstringPool

func (*TstringPool) Conv

func (self *TstringPool) Conv(val string, ep *interface{})

func (*TstringPool) ConvNum

func (self *TstringPool) ConvNum(val json.Number, ep *interface{})

func (*TstringPool) Free

func (self *TstringPool) Free()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL