1
0
mirror of https://github.com/golang/go synced 2024-11-23 05:50:05 -07:00
go/test
Keith Randall 48e207d518 cmd/compile: fix mapassign_fast* routines for pointer keys
The signature of the mapassign_fast* routines need to distinguish
the pointerness of their key argument.  If the affected routines
suspend part way through, the object pointed to by the key might
get garbage collected because the key is typed as a uint{32,64}.

This is not a problem for mapaccess or mapdelete because the key
in those situations do not live beyond the call involved.  If the
object referenced by the key is garbage collected prematurely, the
code still works fine.  Even if that object is subsequently reallocated,
it can't be written to the map in time to affect the lookup/delete.

Fixes #22781

Change-Id: I0bbbc5e9883d5ce702faf4e655348be1191ee439
Reviewed-on: https://go-review.googlesource.com/79018
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Martin Möhrmann <moehrmann@google.com>
2017-11-22 04:30:27 +00:00
..
alias3.dir [dev.typealias] cmd/compile: export/import test cases for type aliases 2017-01-20 05:55:53 +00:00
bench test/bench/go1: fix typo in parserdata_test.go comment 2017-03-22 03:23:16 +00:00
chan all: fix article typos 2017-09-15 02:39:16 +00:00
closure3.dir cmd/compile: inline closures with captures 2017-11-05 04:18:05 +00:00
ddd2.dir
dwarf
fixedbugs cmd/compile: fix mapassign_fast* routines for pointer keys 2017-11-22 04:30:27 +00:00
import2.dir
import4.dir
interface cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
intrinsic.dir cmd/compile: intrinsics for math/bits.TrailingZerosX 2017-03-16 02:44:16 +00:00
ken
linkname.dir cmd/compile: include linknames in export data 2017-02-08 20:59:45 +00:00
method4.dir
safe
stress
syntax cmd/compile/internal/parser: improved a couple of error messages 2017-02-24 18:54:36 +00:00
uintptrescapes.dir
64bit.go
235.go
alg.go
alias1.go
alias2.go [dev.typealias] cmd/compile: declare methods after resolving receiver type 2017-01-25 08:04:17 +00:00
alias3.go [dev.typealias] cmd/compile: export/import test cases for type aliases 2017-01-20 05:55:53 +00:00
alias.go
append1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
append.go
args.go
armimm.go cmd/internal/obj: continue to optimize ARM's constant pool 2017-05-11 13:53:54 +00:00
assign1.go
assign.go
atomicload.go
bigalg.go
bigmap.go
blank1.go
blank.go
bom.go
bombad.go
bounds.go
chancap.go cmd/compile: generate makechan calls with int arguments 2017-08-15 05:54:24 +00:00
chanlinear.go
char_lit1.go
char_lit.go
checkbce.go test: add missing copyright header to checkbce.go 2017-05-18 00:05:25 +00:00
clearfat.go
closedchan.go
closure1.go
closure2.go
closure3.go cmd/compile: fix reassignment check 2017-11-03 20:09:26 +00:00
closure.go
cmp6.go
cmp.go
cmplx.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
cmplxdivide1.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide.c runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cmplxdivide.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
complit1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
complit.go
compos.go
const1.go
const2.go
const3.go
const4.go
const5.go
const6.go
const.go
convert1.go
convert2.go
convert3.go
convert.go
convlit1.go
convlit.go
convT2X.go
copy1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
copy.go
crlf.go
ddd1.go test: reenable ... test 2017-08-11 17:41:17 +00:00
ddd2.go
ddd.go
decl.go
declbad.go
defer.go
deferfin.go
deferprint.go
deferprint.out
devirt.go cmd/compile: de-virtualize interface calls 2017-03-14 18:49:23 +00:00
divide.go
divmod.go
empty.go
env.go
eof1.go
eof.go
errchk
escape2.go test: add missing escape analysis test 2017-08-11 00:56:21 +00:00
escape2n.go test: add missing escape analysis test 2017-08-11 00:56:21 +00:00
escape3.go
escape4.go cmd/compile: inline calls to local closures 2017-10-11 22:32:36 +00:00
escape5.go cmd/compile: unnamed parameters do not escape 2017-03-24 17:14:00 +00:00
escape_array.go
escape_because.go
escape_calls.go
escape_closure.go cmd/compile/internal/syntax: establish principled position information 2017-02-15 01:33:03 +00:00
escape_field.go
escape_iface.go
escape_indir.go
escape_level.go
escape_map.go
escape_param.go
escape_slice.go
escape_struct_param1.go
escape_struct_param2.go
escape_struct_return.go
escape.go
fibo.go
finprofiled.go
float_lit2.go
float_lit3.go
float_lit.go
floatcmp.go
for.go
func1.go
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go
func8.go
func.go
funcdup2.go
funcdup.go
gc1.go
gc2.go
gc.go
gcstring.go
goprint.go
goprint.out
goto.go cmd/compile: report block start for gotos jumping into blocks 2017-04-19 02:27:58 +00:00
heapsampling.go
helloworld.go
helloworld.out
if.go
import1.go
import2.go
import4.go
import5.go cmd/compile: be slightly more tolerant in case of certain syntax errors 2017-03-24 20:07:15 +00:00
import6.go cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests 2017-02-10 01:22:30 +00:00
import.go
index0.go
index1.go
index2.go
index.go
indirect1.go
indirect.go
init1.go
init.go Revert "cmd/compile: improve error message if init is directly invoked" 2017-03-06 23:48:37 +00:00
initcomma.go
initialize.go
initializerr.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
initloop.go
inline_caller.go runtime: skip logical frames in runtime.Caller 2017-04-18 19:56:30 +00:00
inline_callers.go test: make inline_callers.go test not inline the runtime 2017-11-22 00:52:54 +00:00
inline_literal.go cmd/compile: copy literals when inlining 2017-03-03 21:29:32 +00:00
inline_variadic.go
inline.go cmd/compile: inline closures with captures 2017-11-05 04:18:05 +00:00
int_lit.go
intcvt.go
intrinsic_atomic.go cmd/compile: intrinsify atomics on MIPS64 2017-10-10 19:43:38 +00:00
intrinsic.go
iota.go
label1.go cmd/compile/internal/gc: don't panic on continue in switch 2017-04-12 14:27:45 +00:00
label.go
linkmain_run.go
linkmain.go
linkname.go cmd/compile: include linknames in export data 2017-02-08 20:59:45 +00:00
linkobj.go
linkx_run.go
linkx.go
literal.go
live1.go
live2.go cmd/compile: specialize map creation for small hint sizes 2017-11-02 17:03:45 +00:00
live_syscall.go
live.go cmd/compile: specialize map creation for small hint sizes 2017-11-02 17:03:45 +00:00
locklinear.go test: deflake locklinear again 2017-04-05 18:46:31 +00:00
loopbce.go cmd/compile: make loop guard+rotate conditional on GOEXPERIMENT 2017-06-21 22:07:33 +00:00
makechan.go cmd/compile: generate makechan calls with int arguments 2017-08-15 05:54:24 +00:00
makemap.go cmd/compile: generate makemap calls with int arguments 2017-08-22 20:28:21 +00:00
makenew.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
mallocfin.go
map1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
map.go
maplinear.go
mergemul.go cmd/compile: combine x*n - y*n into (x-y)*n 2017-09-03 14:29:38 +00:00
method1.go
method2.go cmd/compile: add two error position tests for the typechecker 2017-10-12 20:50:20 +00:00
method3.go
method4.go
method5.go
method6.go cmd/compile: add two error position tests for the typechecker 2017-10-12 20:50:20 +00:00
method7.go test: add test cases for method expressions with literal receiver types 2017-10-26 03:47:37 +00:00
method.go
named1.go
named.go
nil.go
nilcheck.go
nilptr2.go
nilptr3.go cmd/compile: remove more nil ptr checks after newobject 2017-08-25 03:26:58 +00:00
nilptr4.go
nilptr.go
nosplit.go test: fix and re-enable nosplit.go 2017-10-31 19:12:11 +00:00
notinheap2.go
notinheap3.go cmd/compile: []T where T is go:notinheap does not need write barriers 2017-11-06 21:07:57 +00:00
notinheap.go cmd/compile/internal/gc: inline typedcl0 and typedcl1 2017-02-01 22:52:32 +00:00
nowritebarrier.go cmd/compile: improve coverage of nowritebarrierrec check 2017-10-29 19:36:44 +00:00
nul1.go
opt_branchlikely.go cmd/compile: insert scheduling checks on loop backedges 2017-01-09 21:01:29 +00:00
parentype.go
peano.go
phiopt.go
print.go cmd/compile: fix print/println when input is uint 2017-09-26 04:08:38 +00:00
print.out cmd/compile: fix print/println when input is uint 2017-09-26 04:08:38 +00:00
printbig.go
printbig.out
prove.go cmd/compile/internal/gc: improve comparison with constant strings 2017-04-07 15:40:25 +00:00
range.go cmd/compile: improve single blank variable handling in walkrange 2017-09-12 05:50:54 +00:00
README.md test: add README 2017-07-26 23:37:25 +00:00
recover1.go
recover2.go
recover3.go
recover4.go
recover5.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
recover.go
reflectmethod1.go
reflectmethod2.go
reflectmethod3.go
reflectmethod4.go
rename1.go cmd/compile: avoid duplicate cast error 2017-08-22 13:44:35 +00:00
rename.go
reorder2.go
reorder.go cmd/compile: Ensure left-to-right assignment 2017-02-11 21:46:21 +00:00
return.go
rotate0.go
rotate1.go
rotate2.go
rotate3.go
rotate.go
run.go test/run: use go tool compile + link instead of go run when possible 2017-10-31 13:21:05 +00:00
rune.go
runtime.go cmd/compile/internal/gc: separate builtin and real runtime packages 2017-03-01 01:06:32 +00:00
shift1.go cmd/compile: more error position tests for the typechecker 2017-04-24 12:37:49 +00:00
shift2.go
sieve.go
sigchld.go
sigchld.out
simassign.go
sinit_run.go
sinit.go
sizeof.go
slice3.go
slice3err.go
slicecap.go
sliceopt.go
solitaire.go
stack.go
strength.go
string_lit.go
stringrange.go
struct0.go
switch2.go
switch3.go
switch4.go
switch5.go cmd/compile: make duplicate expr cases readable 2017-05-19 18:11:51 +00:00
switch6.go cmd/compile: improve error for wrong type in switch 2017-02-02 17:36:43 +00:00
switch7.go cmd/compile: make duplicate expr cases readable 2017-05-19 18:11:51 +00:00
switch.go
tinyfin.go
torture.go
turing.go
typecheck.go
typecheckloop.go
typeswitch1.go
typeswitch2.go cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests 2017-02-10 01:22:30 +00:00
typeswitch3.go cmd/compile: add test for non interface type switch 2017-03-25 22:52:54 +00:00
typeswitch.go
uintptrescapes2.go
uintptrescapes.go
undef.go
utf.go
varerr.go
varinit.go
writebarrier.go cmd/compile: don't use statictmps for SSA-able composite literals 2017-05-11 18:28:40 +00:00
zerodivide.go

The test directory contains tests of the Go tool chain and runtime. It includes black box tests, regression tests, and error output tests. They are run as part of all.bash.

To run just these tests, execute:

go run run.go

Standard library tests should be written as regular Go tests in the appropriate package.

The tool chain and runtime also have regular Go tests in their packages. The main reasons to add a new test to this directory are:

  • it is most naturally expressed using the test runner; or
  • it is also applicable to gccgo and other Go tool chains.