On Mon, Jun 29, 2020 at 5:32 PM Bill Morgan
<arthurwilliammor...@gmail.com> wrote:
>
> for this code:
>
> m := make(map[int]int, 9)
>
> I think the compiler creates a maptype that is stored at type.*+60480(SB) 
> that it uses for the call to runtime.makemap:
>
> m := make(map[int]int, 9)
>   0x10d0b81 488d05f8ec0000 LEAQ type.*+60480(SB), AX
>   0x10d0b88 48890424 MOVQ AX, 0(SP)
>   0x10d0b8c 48c744240809000000 MOVQ $0x9, 0x8(SP)
>   0x10d0b95 48c744241000000000 MOVQ $0x0, 0x10(SP)
>   0x10d0b9e 6690 NOPW
>   0x10d0ba0 e8fbdff3ff CALL runtime.makemap(SB)
>
> Where is the code in the compiler that creates the maptype? I'm wondering how 
> the bucket size is computed and how the rest of the maptype structure is 
> filled out.

https://golang.org/src/cmd/compile/internal/gc/reflect.go#L189

> Is there a way to print out the type info stored in the binary?

I'm not sure if this is what you want, but you can use reflect.TypeOf:
https://play.golang.org/p/FEUIoqc6SMU .

Ian

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcUGm0oBhg5Ad9hnaEN7P9seFEtcELGBdGr_FjXiVxkO-A%40mail.gmail.com.

Reply via email to