1
0
mirror of https://github.com/golang/go synced 2024-09-28 18:14:29 -06:00
go/test/typeparam
Keith Randall b730a26729 [dev.typeparams] cmd/compile: put shape types in their own package
Put shape types in the top level package called ".shape".
Name them using the serialization of the shape name, instead of
the .shapeN names.

This allows the linker to deduplicate instantiations across packages.

Not sure that this is entirely correct, as shapes in this package
may reference other packages (e.g. a field of a struct). But it seems
to work for now.

For the added test, when you look at the resulting binary (use the -k
option with run.go) it has only one instantiation of F, and 4 call sites:

$ objdump -d a.exe | grep _a\.F
 1053cb0:	e8 8b 00 00 00 	callq	139 <_a.F[.shape.*uint8]>
 1053ce9:	e8 52 00 00 00 	callq	82 <_a.F[.shape.*uint8]>
_a.F[.shape.*uint8]:
 1053d90:	e8 ab ff ff ff 	callq	-85 <_a.F[.shape.*uint8]>
 1053dc9:	e8 72 ff ff ff 	callq	-142 <_a.F[.shape.*uint8]>

Change-Id: I627f7e50210aabe4a10d0e2717d87b75ac82e99b
Reviewed-on: https://go-review.googlesource.com/c/go/+/339595
Trust: Keith Randall <khr@golang.org>
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Dan Scales <danscales@google.com>
2021-08-04 17:56:00 +00:00
..
absdiffimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
aliasimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
chansimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dedup.dir [dev.typeparams] cmd/compile: put shape types in their own package 2021-08-04 17:56:00 +00:00
factimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
listimp2.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
listimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
mapimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
mapsimp.dir [dev.typeparams] Don't check typecheck(3) on transform, so no need to export/import it 2021-05-24 22:17:33 +00:00
mdempsky [dev.typeparams] cmd/compile: fix unified IR support for //go:nointerface 2021-07-26 18:43:12 +00:00
mincheck.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
minimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
mutualimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
orderedmapsimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
pairimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
setsimp.dir [dev.typeparams] cmd/compile: always generate (*T).M wrappers for instantiated methods 2021-05-26 21:39:54 +00:00
sliceimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
stringerimp.dir [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
valimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
absdiff.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
absdiffimp.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
adder.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
aliasimp.go [dev.typeparams] cmd/compile: get type aliases working with generic types 2021-05-26 21:38:54 +00:00
append.go cmd/compile: getting more built-ins to work with generics 2021-03-17 16:53:00 +00:00
boundmethod.go [dev.typeparams] cmd/compile: handle meth expressions on typeparams 2021-07-29 21:58:06 +00:00
builtins.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
chans.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
chansimp.go [dev.typeparams] cmd/compile: fixing import of comm clauses/closures in generic functions 2021-05-21 23:13:46 +00:00
combine.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
cons.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dedup.go [dev.typeparams] cmd/compile: put shape types in their own package 2021-08-04 17:56:00 +00:00
dedup.out [dev.typeparams] cmd/compile: put shape types in their own package 2021-08-04 17:56:00 +00:00
dictionaryCapture-noinline.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dictionaryCapture.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dottype.go [dev.typeparams] cmd/compile: implement generic .(T) operations 2021-07-29 17:15:21 +00:00
dottype.out [dev.typeparams] cmd/compile: implement generic .(T) operations 2021-07-29 17:15:21 +00:00
double.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
equal.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
fact.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
factimp.go [dev.typeparams] cmd/compile: export OFUNCINST and OSELRECV2 nodes (for generic functions) 2021-05-21 17:03:30 +00:00
graph.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
ifaceconv.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
importtest.go [dev.typeparams] cmd/compile: use existing findpkg algorithm when importing through types2 2020-11-11 01:11:43 +00:00
index.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
interfacearg.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue39755.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue44688.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue45547.go [dev.typeparams] test: rename blank functions 2021-07-28 21:41:07 +00:00
issue45722.go cmd/compile: fix handling of ir.CurFunc during stenciling 2021-04-27 16:55:20 +00:00
issue45738.go cmd/compile: fix nongeneric closures in generic functions 2021-04-27 19:30:11 +00:00
issue45817.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue46472.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue47258.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
list2.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
list.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
listimp2.go [dev.typeparams] cmd/compile: Fix handling of Name nodes during stenciling 2021-05-24 22:16:09 +00:00
listimp.go [dev.typeparams] cmd/compile: move to new export version, keep reading previous version 2021-05-21 04:03:26 +00:00
lockable.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
map.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
mapimp.go [dev.typeparams] cmd/compile: add import/export of calls to builtin functions 2021-05-21 17:14:19 +00:00
maps.go cmd/compile: add support for generic maps 2021-03-15 20:28:34 +00:00
mapsimp.go [dev.typeparams] Don't check typecheck(3) on transform, so no need to export/import it 2021-05-24 22:17:33 +00:00
metrics.go cmd/compile: fix case where func-valued field of a generic type is called 2021-03-15 20:29:11 +00:00
min.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
mincheck.go [dev.typeparams] cmd/compile: adding union support in types1 2021-05-26 15:33:02 +00:00
minimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
mutualimp.go [dev.typeparams] cmd/compile: create .dict Param in the package of the instantiated function 2021-06-07 19:34:39 +00:00
nested.go [dev.typeparams] test: add expected failure mechanism 2021-07-07 11:12:13 +00:00
nested.out [dev.typeparams] cmd/compile/internal/types2: support local defined types 2021-06-16 21:38:50 +00:00
ordered.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
orderedmap.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
orderedmapsimp.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
pair.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
pairimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
pragma.go cmd/compile: propagate pragmas from generic function to stenciled implementation 2021-04-15 00:29:05 +00:00
sets.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
setsimp.go [dev.typeparams] cmd/compile: always generate (*T).M wrappers for instantiated methods 2021-05-26 21:39:54 +00:00
settable.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
shape1.go [dev.typeparams] cmd/compile: make all pointer types have the same shape 2021-07-31 17:03:07 +00:00
shape1.out [dev.typeparams] cmd/compile: make all pointer types have the same shape 2021-07-31 17:03:07 +00:00
sliceimp.go [dev.typeparams] cmd/compile: fix handling of Nname field in (*subster).tstruct. 2021-05-21 23:25:07 +00:00
slices.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
smallest.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
smoketest.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
stringable.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
stringer.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
stringerimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
struct.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
subdict.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
sum.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
tparam1.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
typelist.go [dev.typeparams] test: rename blank functions 2021-07-28 21:41:07 +00:00
valimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
value.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00