- 20 Nov, 2018 3 commits
-
-
Markus authored
ValueOf() panics if x is not one of the expected types. Change-Id: I1105e46bd09a5ab13c162b77c1c50cc45bce27a2 GitHub-Last-Rev: 34a88ce8206954d94f0a884ab7f6494116c54a2d GitHub-Pull-Request: golang/go#28846 Reviewed-on: https://go-review.googlesource.com/c/150138Reviewed-by: Richard Musiol <neelance@gmail.com>
-
Vladimir Kovpak authored
This commit performs replace double quote to backquote, so now all examples looks consistent. Change-Id: I8cf760ce1bdeff9619a88e531161b9516385241b GitHub-Last-Rev: e3e636cebbf41528b8a73f9a3fe5afa10876f964 GitHub-Pull-Request: golang/go#28879 Reviewed-on: https://go-review.googlesource.com/c/150397Reviewed-by: Rob Pike <r@golang.org> Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Tobias Klauser authored
Fixes #27619 Change-Id: If18df696c0778efe894a4a249d4964db1b02e5d6 Reviewed-on: https://go-review.googlesource.com/c/150159Reviewed-by: Yuval Pavel Zholkover <paulzhol@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 19 Nov, 2018 8 commits
-
-
Santhosh Kumar Tekuri authored
Change-Id: I7a1046f5e0aedbbdd1106a616de410fe4e0cb7d8 Reviewed-on: https://go-review.googlesource.com/c/92295 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Vladimir Kovpak authored
This commit adds examples for Match, Find, FindAllSubmatch, FindSubmatch and Match functions. Change-Id: I2bdf8c3cee6e89d618109397378c1fc91aaf1dfb GitHub-Last-Rev: 33f34b7adca2911a4fff9638c93e846fb0021465 GitHub-Pull-Request: golang/go#28837 Reviewed-on: https://go-review.googlesource.com/c/150020 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Xia Bin authored
Change-Id: I70afd2f7b6783926174c4e66565b711cffeb97c5 Reviewed-on: https://go-review.googlesource.com/c/150141 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Michael Ellis authored
Per https://semver.org/#spec-item-10, build metadata may include a series of dot separated identifiers. Fixes #28647 Change-Id: I98655c62584a822953df71fba32b4a2cafe7a04b Reviewed-on: https://go-review.googlesource.com/c/148835Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Alan Donovan authored
cmd/vet, now simplified to a single function call is now authoritative, not a copy of vet-lite. The update-xtools.sh script now uses the imports of cmd/vet as the roots for vendoring. Change-Id: I4faef3fcf3db10b3a3930726e8d0720a3c8395da Reviewed-on: https://go-review.googlesource.com/c/150297 Run-TryBot: Alan Donovan <adonovan@google.com> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
-
Alan Donovan authored
- restore and rework cmd/vet/doc.go, which was clobbered during the vet-lite switch. - document go vet -vettool=prog flag and how to run an alternative checker. - make 'go vet -help' show how to list vet tool's flags. Example: $ go vet -help usage: go vet [-n] [-x] [-vettool prog] [build flags] [vet flags] [packages] Run 'go help vet' for details. Run 'go tool vet help' for the vet tool's flags. $ go vet -vettool=~/bin/myvet -help usage: go vet [-n] [-x] [-vettool prog] [build flags] [vet flags] [packages] Run 'go help vet' for details. Run '~/bin/myvet help' for the vet tool's flags. Updates #28840 Change-Id: Ieb79dfe29e1df074f865bc9a9d47b44199675d7d Reviewed-on: https://go-review.googlesource.com/c/147018Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Daniel Martí authored
Mainly to pull the fix for the regression in #28792. Change-Id: If71ae783fd9a9e3935186b49fdf501ba098235a2 Reviewed-on: https://go-review.googlesource.com/c/150161 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
-
Josh Bleecher Snyder authored
This change does a bulk rename of several identifiers in the compiler. See #27167 and https://docs.google.com/document/d/19_ExiylD9MRfeAjKIfEsMU1_RGhuxB9sA0b5Zv7byVI/ for context and for discussion of these particular renames. Commands run to generate this change: gorename -from '"cmd/compile/internal/gc".OPROC' -to OGO gorename -from '"cmd/compile/internal/gc".OCOM' -to OBITNOT gorename -from '"cmd/compile/internal/gc".OMINUS' -to ONEG gorename -from '"cmd/compile/internal/gc".OIND' -to ODEREF gorename -from '"cmd/compile/internal/gc".OARRAYBYTESTR' -to OBYTES2STR gorename -from '"cmd/compile/internal/gc".OARRAYBYTESTRTMP' -to OBYTES2STRTMP gorename -from '"cmd/compile/internal/gc".OARRAYRUNESTR' -to ORUNES2STR gorename -from '"cmd/compile/internal/gc".OSTRARRAYBYTE' -to OSTR2BYTES gorename -from '"cmd/compile/internal/gc".OSTRARRAYBYTETMP' -to OSTR2BYTESTMP gorename -from '"cmd/compile/internal/gc".OSTRARRAYRUNE' -to OSTR2RUNES gorename -from '"cmd/compile/internal/gc".Etop' -to ctxStmt gorename -from '"cmd/compile/internal/gc".Erv' -to ctxExpr gorename -from '"cmd/compile/internal/gc".Ecall' -to ctxCallee gorename -from '"cmd/compile/internal/gc".Efnstruct' -to ctxMultiOK gorename -from '"cmd/compile/internal/gc".Easgn' -to ctxAssign gorename -from '"cmd/compile/internal/gc".Ecomplit' -to ctxCompLit Not altered: parameters and local variables (mostly in typecheck.go) named top, which should probably now be called ctx (and which should probably have a named type). Also not altered: Field called Top in gc.Func. gorename -from '"cmd/compile/internal/gc".Node.Isddd' -to IsDDD gorename -from '"cmd/compile/internal/gc".Node.SetIsddd' -to SetIsDDD gorename -from '"cmd/compile/internal/gc".nodeIsddd' -to nodeIsDDD gorename -from '"cmd/compile/internal/types".Field.Isddd' -to IsDDD gorename -from '"cmd/compile/internal/types".Field.SetIsddd' -to SetIsDDD gorename -from '"cmd/compile/internal/types".fieldIsddd' -to fieldIsDDD Not altered: function gc.hasddd, params and local variables called isddd Also not altered: fmt.go prints nodes using "isddd(%v)". cd cmd/compile/internal/gc; go generate I then manually found impacted comments using exact string match and fixed them up by hand. The comment changes were trivial. Passes toolstash-check. Fixes #27167. If this experiment is deemed a success, we will open a new tracking issue for renames to do at the end of the 1.13 cycles. Change-Id: I2dc541533d2ab0d06cb3d31d65df205ecfb151e8 Reviewed-on: https://go-review.googlesource.com/c/150140 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
- 18 Nov, 2018 2 commits
-
-
Ian Lance Taylor authored
Fixes #28834 Change-Id: I95d6874e62d36974415f43843881a4ae85b3c7ce Reviewed-on: https://go-review.googlesource.com/c/149964 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Alan Donovan <adonovan@google.com> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Tobias Klauser authored
CL 146020 changed the behavior of RemoveAll("") on unix systems using the *at functions to return syscall.EINVAL instead of nil. Adjust the *at implementation to retain this behavior as is the case on the *noat systems. Additionally, also make sure RemoveAll("") on systems not using the "at functions (e.g. nacl and js/wasm) follow the same behavior (which wasn't the case previously). Fixes #28830 Change-Id: I8383c1423fefe871d18ff49134a1d23077ec6867 Reviewed-on: https://go-review.googlesource.com/c/150158 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: roger peppe <rogpeppe@gmail.com>
-
- 17 Nov, 2018 3 commits
-
-
sevki authored
Procedure names should reflect what they do; function names should reflect what they return. Functions are used in expressions, often in things like if's, so they need to read appropriately. if CheckHMAC(a, b, key) is unhelpful because we can't deduce whether CheckHMAC returns true on error or non-error; instead if ValidHMAC(a, b, key) makes the point clear and makes a future mistake in using the routine less likely. https://www.lysator.liu.se/c/pikestyle.html Change-Id: I7c4b1981c90c8d7475ddd8ec18dee3db2e0f42df GitHub-Last-Rev: 32199a418b5e5507259fa4b6715da8a9c185f90a GitHub-Pull-Request: golang/go#28823 Reviewed-on: https://go-review.googlesource.com/c/149857Reviewed-by: Filippo Valsorda <filippo@golang.org>
-
Elias Naur authored
CL 138675 added a call to runtime.save_g which uses thread local storage to store g. On iOS however, that storage was not initialized yet. Move the call to below _cgo_init where it is set up. Change-Id: I14538d3e7d56ff35a6fa02c47bca306d24c38010 Reviewed-on: https://go-review.googlesource.com/c/150157 Run-TryBot: Elias Naur <elias.naur@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Alan Donovan authored
Also, document process for updating vendored x/tools. Change-Id: I826744603ae0752e508a6db7334a2bf9adaf1289 Reviewed-on: https://go-review.googlesource.com/c/149963 Run-TryBot: Alan Donovan <adonovan@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 16 Nov, 2018 20 commits
-
-
Ian Lance Taylor authored
Fixes #28772 Change-Id: I9446d95fb73fbcbb1cd9a4d2156ebc91bc9e91cb Reviewed-on: https://go-review.googlesource.com/c/149858 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Austin Clements authored
Currently, both asm and compile have a -symabis flag, but in asm it's a boolean flag that means to generate a symbol ABIs file and in the compiler its a string flag giving the path of the symbol ABIs file to consume. I'm worried about this false symmetry biting us in the future, so rename asm's flag to -gensymabis. Updates #27539. Change-Id: I8b9c18a852d2838099718f8989813f19d82e7434 Reviewed-on: https://go-review.googlesource.com/c/149818 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Now that the build system has been updated to install x/tools in $GOPATH (CL 149658), depend on it being there and don't ignore failures to build the tool. Update to CL 149097. Change-Id: I72fde347217533697068b6a6773696cc2b83e9ed Reviewed-on: https://go-review.googlesource.com/c/150017 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
-
Alan Donovan authored
Change-Id: I787592a5d92ff9329ecdfcf879e491af66c8b749 Reviewed-on: https://go-review.googlesource.com/c/149962 Run-TryBot: Alan Donovan <adonovan@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alan Donovan authored
- Adds 'go vet -json' and 'go vet -c=1' flags - Removes the pkgfact analyzer, included by mistake. Change-Id: Id3f1879af479efc567ea0508a1de7a37db5bee89 Reviewed-on: https://go-review.googlesource.com/c/149961 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
marwan-at-work authored
Go get in mod-enabled packages lets you do go get "pkg@<hash>" or "pkg@<branch>". Go internally will switch the hash or branch into a pseudo version. Go mod download should do the same. The bug lay in the fact that the disk cache was not being written when Go converted the hash/branch into a pseudo version. Fixes #27947 Change-Id: I94c29a5c95f69ab18a9cd7a2ecade128047c5e36 GitHub-Last-Rev: 668634b3e70206c6eadabae5969fca1b03093b0d GitHub-Pull-Request: golang/go#28042 Reviewed-on: https://go-review.googlesource.com/c/140257Reviewed-by: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alan Donovan authored
This field, which matches the IDs used by go list, will enable all vet drivers to produce JSON output in a consistent format (a map from package ID to analysis name to result). Change-Id: Icac703b944de55df42c996dc2f672005014ad57a Reviewed-on: https://go-review.googlesource.com/c/149960Reviewed-by: Russ Cox <rsc@golang.org>
-
Russ Cox authored
The standard build assumes the variable is unset. Make it so, like we do for GOFLAGS, GOBIN, and so on. Change-Id: I4ad5695f8021b08bd1a35dd99112970a813d247c Reviewed-on: https://go-review.googlesource.com/c/149959 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alan Donovan authored
The reason the 386 trybot was happy but 'GOARCH=386 go test cmd/vet' was not is that CgoEnabled defaults to false in a cross build; I have no idea why. Now we ask the go command for the effective value so that the test works in both cases. Also, remove stale comment. Fixes #28829 Change-Id: I1210af34da6986f47924059de5c1f08b2824ace9 Reviewed-on: https://go-review.googlesource.com/c/149958 Run-TryBot: Alan Donovan <adonovan@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Russ Cox authored
This text changed in CL 139099 to add "explicit" in front of "conversion". But now "explicit conversion or assignment" reads like it might mean "explicit [conversion or assignment]" when what is meant is "[explicit conversion] or assignment". To make clear that explicit does not apply to assignment, use "assignment or explicit conversion". Change-Id: I8ff7a5b3ecd9f562793502fa6808242f22264f28 Reviewed-on: https://go-review.googlesource.com/c/149340Reviewed-by: Robert Griesemer <gri@golang.org>
-
Russ Cox authored
In general we don't assume that the go command knows the specific version of the compiler being used, including which experiments the compiler was built with. Let the compiler tell us, instead of importing cmd/internal/objabi from cmd/go. Replacement for CL 128735. Change-Id: Iaa07f46e19764d0fb14a1c89979bea7bb7139b9c Reviewed-on: https://go-review.googlesource.com/c/149338Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Russ Cox authored
A bug in the old code was indirectly causing a confusing print, but CL 131635 fixed the print instead of the surrounding code. Fix the surrounding code, restore the old print, and test that the error is actually reported (it was being ignored in a direct go get but displaying in go build). Change-Id: I03c21380fce481060c443b0cc820f3617497fdd9 Reviewed-on: https://go-review.googlesource.com/c/149317Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Robert Griesemer authored
The compiler's Format test verifies that the correct format strings for the given arguments are used in the compiler sources. The format strings are fairly specialized which is why we cannot use go vet; and the mapping is based on a hard-wired map. In the past, if that map got out of sync with the compiler sources, it was necessary to manually update the map. This change introduces an update mechanism which simply requires the test to be run with the -u flag. (Formerly, the -u flag was used to automatically rewrite format strings; now we use -r for that.) Change-Id: I9259566a6120a13cf34b143875975ada62697890 Reviewed-on: https://go-review.googlesource.com/c/149460 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Daniel Theophanes authored
Show two larger application examples. One example that could be used in a CLI, the other in a long running service. These demonstarates different strategies for handling DB.Ping errors in context. Fixes #23738 Change-Id: Id01213caf1f47917239a7506b01d30e37db74d31 Reviewed-on: https://go-review.googlesource.com/c/101216Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Leigh McCulloch authored
The package doc for the testing package doesn't have a simple example demonstrating how to write a test with an expectation. The doc has simple examples for benchmarks, examples, and skipping, and it would be useful for people new to writing tests in Go. Also moved the skip example further down because it references tests and benchmarks but benchmarks haven't been discussed in detail until the next section. Skip is also a less used feature and it seems misplaced to sit so high up in the package documentation. As an example, Skip is used 570 times the Go code repository which is significantly less than Error and Fatal that are used 23,303 times. Also changed 'sample' to 'simple' in other places in the package documentation to keep the language used consistent when describing the small examples. Fixes #27839 Change-Id: Ie01a3751986ee61adf2a2f2eda59cc182342baa7 GitHub-Last-Rev: 7357bfdcd29ed1dc1719c9436b5d5420020610ee GitHub-Pull-Request: golang/go#27840 Reviewed-on: https://go-review.googlesource.com/c/137175 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
-
mbj36 authored
Fixes #28244 Change-Id: I3ca36fd513f5543af0c8af254d267254c7d5e803 GitHub-Last-Rev: 83b16fac4e221a249ed036c034367d6f680ae578 GitHub-Pull-Request: golang/go#28302 Reviewed-on: https://go-review.googlesource.com/c/143480Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Alan Donovan authored
Select linux/arm64 for the asm test. Disable the cgo test for now. Will fix properly in a follow-up. Filed Issue 28829 to track it. Updates #28829 Change-Id: Ic05f619700b06e91c43f8c150b089b8e77d92c85 Reviewed-on: https://go-review.googlesource.com/c/149937 Run-TryBot: Alan Donovan <adonovan@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Vladimir Kovpak authored
On reflect documentation page only this function doesn't have description, this commit add simple description. Change-Id: Idcda89ddd1f6fdd1938c4030e89ebdc186255ce6 GitHub-Last-Rev: 1553b834bb4f7a49efc7ff81763a255bc51bbf17 GitHub-Pull-Request: golang/go#28818 Reviewed-on: https://go-review.googlesource.com/c/149721Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Tobias Klauser authored
Change-Id: I4e7328bb89f504dbca3948b8565d22c44d41db3d Reviewed-on: https://go-review.googlesource.com/c/149917 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
Change-Id: I9c881943685177ce14841da53ccaed301c4955dd Reviewed-on: https://go-review.googlesource.com/c/149859Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
-
- 15 Nov, 2018 4 commits
-
-
yuuji.yaginuma authored
CL 129682 removed go mod fix but unfortunately we hadn't updated the source code hence running go mod -fix would suggest go mod fix which is a nonexistent command. This change fixes that to instead suggest go mod tidy Change-Id: Ie0d7c90805034e9fe6df24afaa15340c44d4f426 GitHub-Last-Rev: 5ae1340954c5f6b8535f837755a7bd79ebc7109d GitHub-Pull-Request: golang/go#28402 Reviewed-on: https://go-review.googlesource.com/c/144838Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alan Donovan authored
This change deletes the legacy implementation of vet, replacing it with a short main.go that merely selects the desired analyzers and calls into the "unitchecker" implementation vendored from golang.org/x/tools/go/analysis. Unlike the full vet checker (x/tools/go/analysis/cmd/vet), the 'lite' unitchecker cannot also be run standalone (as 'go tool vet' or cmd/vet); it must be invoked by 'go vet'. This design was chosen to avoid vendoring many additional dependencies into GOROOT, in particular go/packages. If go/packages should someday become part of the standard library, there will be considerable opportunity for simplification. This change also patches the vendored analysisflag package (by adding patch.go) so that it fully supports the build system's -V flag protocol. Also: - remove stale internal/unitchecker/ tree (belonged in https://go-review.googlesource.com/c/149778). - move vet legacy flags (-all, -v, -source, -tags) into analysisflags as all drivers will need them, not just unitchecker. I will upstream this change. A sampling of tests from the cmd/vet testsuite have been preserved as a smoke test, to ensure that each analyzer is being run, and for convenience when evaluating changes. Comprehensive tests for each analyzer live upstream in x/tools. The tests have been heavily reduced and reorganized so that they conform to the structure required by 'go vet'. Change-Id: I84b38caeef733e65deb95234b3b87b5f61046def Reviewed-on: https://go-review.googlesource.com/c/149609Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
The old whole-page reclaimer was the only thing that used the busy span lists. Remove them so nothing uses them any more. Change-Id: I4007dd2be08b9ef41bfdb0c387215c73c392cc4c Reviewed-on: https://go-review.googlesource.com/c/138960 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com>
-
Austin Clements authored
When we attempt to allocate an N page span (either for a large allocation or when an mcentral runs dry), we first try to sweep spans to release N pages. Currently, this can be extremely expensive: sweeping a span to emptiness is the hardest thing to ask for and the sweeper generally doesn't know where to even look for potentially fruitful results. Since this is on the critical path of many allocations, this is unfortunate. This CL changes how we reclaim empty spans. Instead of trying lots of spans and hoping for the best, it uses the newly introduced span marks to efficiently find empty spans. The span marks (and in-use bits) are in a dense bitmap, so these spans can be found with an efficient sequential memory scan. This approach can scan for unmarked spans at about 300 GB/ms and can free unmarked spans at about 32 MB/ms. We could probably significantly improve the rate at which is can free unmarked spans, but that's a separate issue. Like the current reclaimer, this is still linear in the number of spans that are swept, but the constant factor is now so vanishingly small that it doesn't matter. The benchmark in #18155 demonstrates both significant page reclaiming delays, and object reclaiming delays. With "-retain-count=20000000 -preallocate=true -loop-count=3", the benchmark demonstrates several page reclaiming delays on the order of 40ms. After this change, the page reclaims are insignificant. The longest sweeps are still ~150ms, but are object reclaiming delays. We'll address those in the next several CLs. Updates #18155. Fixes #21378 by completely replacing the logic that had that bug. Change-Id: Iad80eec11d7fc262d02c8f0761ac6998425c4064 Reviewed-on: https://go-review.googlesource.com/c/138959 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-