2
									
								
								vendor/github.com/modern-go/reflect2/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/modern-go/reflect2/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
language: go
 | 
			
		||||
 | 
			
		||||
go:
 | 
			
		||||
  - 1.8.x
 | 
			
		||||
  - 1.9.x
 | 
			
		||||
  - 1.x
 | 
			
		||||
 | 
			
		||||
before_install:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								vendor/github.com/modern-go/reflect2/Gopkg.lock
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/modern-go/reflect2/Gopkg.lock
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,15 +1,9 @@
 | 
			
		||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[[projects]]
 | 
			
		||||
  name = "github.com/modern-go/concurrent"
 | 
			
		||||
  packages = ["."]
 | 
			
		||||
  revision = "e0a39a4cb4216ea8db28e22a69f4ec25610d513a"
 | 
			
		||||
  version = "1.0.0"
 | 
			
		||||
 | 
			
		||||
[solve-meta]
 | 
			
		||||
  analyzer-name = "dep"
 | 
			
		||||
  analyzer-version = 1
 | 
			
		||||
  inputs-digest = "daee8a88b3498b61c5640056665b8b9eea062006f5e596bbb6a3ed9119a11ec7"
 | 
			
		||||
  input-imports = []
 | 
			
		||||
  solver-name = "gps-cdcl"
 | 
			
		||||
  solver-version = 1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/modern-go/reflect2/Gopkg.toml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/modern-go/reflect2/Gopkg.toml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -26,10 +26,6 @@
 | 
			
		||||
 | 
			
		||||
ignored = []
 | 
			
		||||
 | 
			
		||||
[[constraint]]
 | 
			
		||||
  name = "github.com/modern-go/concurrent"
 | 
			
		||||
  version = "1.0.0"
 | 
			
		||||
 | 
			
		||||
[prune]
 | 
			
		||||
  go-tests = true
 | 
			
		||||
  unused-packages = true
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/github.com/modern-go/reflect2/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/modern-go/reflect2/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
module github.com/modern-go/reflect2
 | 
			
		||||
 | 
			
		||||
go 1.12
 | 
			
		||||
							
								
								
									
										23
									
								
								vendor/github.com/modern-go/reflect2/go_above_118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/modern-go/reflect2/go_above_118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
//+build go1.18
 | 
			
		||||
 | 
			
		||||
package reflect2
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// m escapes into the return value, but the caller of mapiterinit
 | 
			
		||||
// doesn't let the return value escape.
 | 
			
		||||
//go:noescape
 | 
			
		||||
//go:linkname mapiterinit reflect.mapiterinit
 | 
			
		||||
func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer, it *hiter)
 | 
			
		||||
 | 
			
		||||
func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator {
 | 
			
		||||
	var it hiter
 | 
			
		||||
	mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj), &it)
 | 
			
		||||
	return &UnsafeMapIterator{
 | 
			
		||||
		hiter:      &it,
 | 
			
		||||
		pKeyRType:  type2.pKeyRType,
 | 
			
		||||
		pElemRType: type2.pElemRType,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								vendor/github.com/modern-go/reflect2/go_above_17.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/modern-go/reflect2/go_above_17.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,8 +0,0 @@
 | 
			
		||||
//+build go1.7
 | 
			
		||||
 | 
			
		||||
package reflect2
 | 
			
		||||
 | 
			
		||||
import "unsafe"
 | 
			
		||||
 | 
			
		||||
//go:linkname resolveTypeOff reflect.resolveTypeOff
 | 
			
		||||
func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/github.com/modern-go/reflect2/go_above_19.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/modern-go/reflect2/go_above_19.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -6,6 +6,9 @@ import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:linkname resolveTypeOff reflect.resolveTypeOff
 | 
			
		||||
func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer
 | 
			
		||||
 | 
			
		||||
//go:linkname makemap reflect.makemap
 | 
			
		||||
func makemap(rtype unsafe.Pointer, cap int) (m unsafe.Pointer)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								vendor/github.com/modern-go/reflect2/go_below_118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/modern-go/reflect2/go_below_118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
//+build !go1.18
 | 
			
		||||
 | 
			
		||||
package reflect2
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// m escapes into the return value, but the caller of mapiterinit
 | 
			
		||||
// doesn't let the return value escape.
 | 
			
		||||
//go:noescape
 | 
			
		||||
//go:linkname mapiterinit reflect.mapiterinit
 | 
			
		||||
func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer) (val *hiter)
 | 
			
		||||
 | 
			
		||||
func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator {
 | 
			
		||||
	return &UnsafeMapIterator{
 | 
			
		||||
		hiter:      mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj)),
 | 
			
		||||
		pKeyRType:  type2.pKeyRType,
 | 
			
		||||
		pElemRType: type2.pElemRType,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/github.com/modern-go/reflect2/go_below_17.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/modern-go/reflect2/go_below_17.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,9 +0,0 @@
 | 
			
		||||
//+build !go1.7
 | 
			
		||||
 | 
			
		||||
package reflect2
 | 
			
		||||
 | 
			
		||||
import "unsafe"
 | 
			
		||||
 | 
			
		||||
func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								vendor/github.com/modern-go/reflect2/go_below_19.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/modern-go/reflect2/go_below_19.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,14 +0,0 @@
 | 
			
		||||
//+build !go1.9
 | 
			
		||||
 | 
			
		||||
package reflect2
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:linkname makemap reflect.makemap
 | 
			
		||||
func makemap(rtype unsafe.Pointer) (m unsafe.Pointer)
 | 
			
		||||
 | 
			
		||||
func makeMapWithSize(rtype unsafe.Pointer, cap int) unsafe.Pointer {
 | 
			
		||||
	return makemap(rtype)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								vendor/github.com/modern-go/reflect2/reflect2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/modern-go/reflect2/reflect2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,8 +1,9 @@
 | 
			
		||||
package reflect2
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/modern-go/concurrent"
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -130,13 +131,13 @@ var ConfigSafe = Config{UseSafeImplementation: true}.Froze()
 | 
			
		||||
 | 
			
		||||
type frozenConfig struct {
 | 
			
		||||
	useSafeImplementation bool
 | 
			
		||||
	cache                 *concurrent.Map
 | 
			
		||||
	cache                 *sync.Map
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (cfg Config) Froze() *frozenConfig {
 | 
			
		||||
	return &frozenConfig{
 | 
			
		||||
		useSafeImplementation: cfg.UseSafeImplementation,
 | 
			
		||||
		cache: concurrent.NewMap(),
 | 
			
		||||
		cache:                 new(sync.Map),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -288,11 +289,12 @@ func NoEscape(p unsafe.Pointer) unsafe.Pointer {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func UnsafeCastString(str string) []byte {
 | 
			
		||||
	bytes := make([]byte, 0)
 | 
			
		||||
	stringHeader := (*reflect.StringHeader)(unsafe.Pointer(&str))
 | 
			
		||||
	sliceHeader := &reflect.SliceHeader{
 | 
			
		||||
		Data: stringHeader.Data,
 | 
			
		||||
		Cap: stringHeader.Len,
 | 
			
		||||
		Len: stringHeader.Len,
 | 
			
		||||
	}
 | 
			
		||||
	return *(*[]byte)(unsafe.Pointer(sliceHeader))
 | 
			
		||||
	sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&bytes))
 | 
			
		||||
	sliceHeader.Data = stringHeader.Data
 | 
			
		||||
	sliceHeader.Cap = stringHeader.Len
 | 
			
		||||
	sliceHeader.Len = stringHeader.Len
 | 
			
		||||
	runtime.KeepAlive(str)
 | 
			
		||||
	return bytes
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/github.com/modern-go/reflect2/test.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/modern-go/reflect2/test.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,12 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
echo "" > coverage.txt
 | 
			
		||||
 | 
			
		||||
for d in $(go list github.com/modern-go/reflect2-tests/... | grep -v vendor); do
 | 
			
		||||
    go test -coverprofile=profile.out -coverpkg=github.com/modern-go/reflect2 $d
 | 
			
		||||
    if [ -f profile.out ]; then
 | 
			
		||||
        cat profile.out >> coverage.txt
 | 
			
		||||
        rm profile.out
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										51
									
								
								vendor/github.com/modern-go/reflect2/type_map.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								vendor/github.com/modern-go/reflect2/type_map.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,17 +1,13 @@
 | 
			
		||||
// +build !gccgo
 | 
			
		||||
 | 
			
		||||
package reflect2
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// typelinks1 for 1.5 ~ 1.6
 | 
			
		||||
//go:linkname typelinks1 reflect.typelinks
 | 
			
		||||
func typelinks1() [][]unsafe.Pointer
 | 
			
		||||
 | 
			
		||||
// typelinks2 for 1.7 ~
 | 
			
		||||
//go:linkname typelinks2 reflect.typelinks
 | 
			
		||||
func typelinks2() (sections []unsafe.Pointer, offset [][]int32)
 | 
			
		||||
@@ -27,49 +23,10 @@ func discoverTypes() {
 | 
			
		||||
	types = make(map[string]reflect.Type)
 | 
			
		||||
	packages = make(map[string]map[string]reflect.Type)
 | 
			
		||||
 | 
			
		||||
	ver := runtime.Version()
 | 
			
		||||
	if ver == "go1.5" || strings.HasPrefix(ver, "go1.5.") {
 | 
			
		||||
		loadGo15Types()
 | 
			
		||||
	} else if ver == "go1.6" || strings.HasPrefix(ver, "go1.6.") {
 | 
			
		||||
		loadGo15Types()
 | 
			
		||||
	} else {
 | 
			
		||||
		loadGo17Types()
 | 
			
		||||
	}
 | 
			
		||||
	loadGoTypes()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func loadGo15Types() {
 | 
			
		||||
	var obj interface{} = reflect.TypeOf(0)
 | 
			
		||||
	typePtrss := typelinks1()
 | 
			
		||||
	for _, typePtrs := range typePtrss {
 | 
			
		||||
		for _, typePtr := range typePtrs {
 | 
			
		||||
			(*emptyInterface)(unsafe.Pointer(&obj)).word = typePtr
 | 
			
		||||
			typ := obj.(reflect.Type)
 | 
			
		||||
			if typ.Kind() == reflect.Ptr && typ.Elem().Kind() == reflect.Struct {
 | 
			
		||||
				loadedType := typ.Elem()
 | 
			
		||||
				pkgTypes := packages[loadedType.PkgPath()]
 | 
			
		||||
				if pkgTypes == nil {
 | 
			
		||||
					pkgTypes = map[string]reflect.Type{}
 | 
			
		||||
					packages[loadedType.PkgPath()] = pkgTypes
 | 
			
		||||
				}
 | 
			
		||||
				types[loadedType.String()] = loadedType
 | 
			
		||||
				pkgTypes[loadedType.Name()] = loadedType
 | 
			
		||||
			}
 | 
			
		||||
			if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Ptr &&
 | 
			
		||||
				typ.Elem().Elem().Kind() == reflect.Struct {
 | 
			
		||||
				loadedType := typ.Elem().Elem()
 | 
			
		||||
				pkgTypes := packages[loadedType.PkgPath()]
 | 
			
		||||
				if pkgTypes == nil {
 | 
			
		||||
					pkgTypes = map[string]reflect.Type{}
 | 
			
		||||
					packages[loadedType.PkgPath()] = pkgTypes
 | 
			
		||||
				}
 | 
			
		||||
				types[loadedType.String()] = loadedType
 | 
			
		||||
				pkgTypes[loadedType.Name()] = loadedType
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func loadGo17Types() {
 | 
			
		||||
func loadGoTypes() {
 | 
			
		||||
	var obj interface{} = reflect.TypeOf(0)
 | 
			
		||||
	sections, offset := typelinks2()
 | 
			
		||||
	for i, offs := range offset {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/github.com/modern-go/reflect2/unsafe_link.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/modern-go/reflect2/unsafe_link.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,18 +19,12 @@ func typedslicecopy(elemType unsafe.Pointer, dst, src sliceHeader) int
 | 
			
		||||
 | 
			
		||||
//go:linkname mapassign reflect.mapassign
 | 
			
		||||
//go:noescape
 | 
			
		||||
func mapassign(rtype unsafe.Pointer, m unsafe.Pointer, key, val unsafe.Pointer)
 | 
			
		||||
func mapassign(rtype unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer, val unsafe.Pointer)
 | 
			
		||||
 | 
			
		||||
//go:linkname mapaccess reflect.mapaccess
 | 
			
		||||
//go:noescape
 | 
			
		||||
func mapaccess(rtype unsafe.Pointer, m unsafe.Pointer, key unsafe.Pointer) (val unsafe.Pointer)
 | 
			
		||||
 | 
			
		||||
// m escapes into the return value, but the caller of mapiterinit
 | 
			
		||||
// doesn't let the return value escape.
 | 
			
		||||
//go:noescape
 | 
			
		||||
//go:linkname mapiterinit reflect.mapiterinit
 | 
			
		||||
func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer) *hiter
 | 
			
		||||
 | 
			
		||||
//go:noescape
 | 
			
		||||
//go:linkname mapiternext reflect.mapiternext
 | 
			
		||||
func mapiternext(it *hiter)
 | 
			
		||||
@@ -42,9 +36,21 @@ func ifaceE2I(rtype unsafe.Pointer, src interface{}, dst unsafe.Pointer)
 | 
			
		||||
// If you modify hiter, also change cmd/internal/gc/reflect.go to indicate
 | 
			
		||||
// the layout of this structure.
 | 
			
		||||
type hiter struct {
 | 
			
		||||
	key   unsafe.Pointer // Must be in first position.  Write nil to indicate iteration end (see cmd/internal/gc/range.go).
 | 
			
		||||
	value unsafe.Pointer // Must be in second position (see cmd/internal/gc/range.go).
 | 
			
		||||
	// rest fields are ignored
 | 
			
		||||
	key         unsafe.Pointer
 | 
			
		||||
	value       unsafe.Pointer
 | 
			
		||||
	t           unsafe.Pointer
 | 
			
		||||
	h           unsafe.Pointer
 | 
			
		||||
	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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// add returns p+x.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								vendor/github.com/modern-go/reflect2/unsafe_map.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/modern-go/reflect2/unsafe_map.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -107,14 +107,6 @@ func (type2 *UnsafeMapType) Iterate(obj interface{}) MapIterator {
 | 
			
		||||
	return type2.UnsafeIterate(objEFace.data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator {
 | 
			
		||||
	return &UnsafeMapIterator{
 | 
			
		||||
		hiter:      mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj)),
 | 
			
		||||
		pKeyRType:  type2.pKeyRType,
 | 
			
		||||
		pElemRType: type2.pElemRType,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UnsafeMapIterator struct {
 | 
			
		||||
	*hiter
 | 
			
		||||
	pKeyRType  unsafe.Pointer
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user