//go:build !race
// +build !race

package decoder

import (
	

	
)

func ( *runtime.Type) (Decoder, error) {
	initDecoder()
	 := uintptr(unsafe.Pointer())
	if  > typeAddr.MaxTypeAddr {
		return compileToGetDecoderSlowPath(, )
	}

	 := ( - typeAddr.BaseTypeAddr) >> typeAddr.AddrShift
	if  := cachedDecoder[];  != nil {
		return , nil
	}

	,  := compileHead(, map[uintptr]Decoder{})
	if  != nil {
		return nil, 
	}
	cachedDecoder[] = 
	return , nil
}