- 17 Oct, 2017 11 commits
-
-
griesemer authored
When an opening "{" of a block is missing and after advancing we find a closing "}", it's likely better to assume the end of the block. Fixed and removed TODO. Change-Id: I20c9b4ecca798933a7cd4cbf21185bd4ca04f5f7 Reviewed-on: https://go-review.googlesource.com/71291Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
griesemer authored
Change-Id: I2c2571b33603f0fd0ba5a79400da7b845d246b8c Reviewed-on: https://go-review.googlesource.com/71290Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Ben Shi authored
Current suffix check is based on instruction, which is not very accurate. For example, "MOVW.S R1, R2" is valid, but "MOVW.S $0xaaaaaaaa, R1" and "MOVW.P CPSR, R9" are not. This patch fixes the above kinds of issues by checking suffix based on []optab. And also more test cases are added. fixes #20509 Change-Id: Ibad91be72c78eefa719412a83b4d44370d2202a8 Reviewed-on: https://go-review.googlesource.com/70910 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
David du Colombier authored
CL 46037 and CL 46038 implemented termination of locked OS threads when the goroutine exits. However, this behavior leads to crashes of Go programs using runtime.LockOSThread on Plan 9. This is notably the case of the os/exec and net packages. This change disables termination of locked OS threads on Plan 9. Updates #22227. Change-Id: If9fa241bff1c0b68e7e9e321e06e5203b3923212 Reviewed-on: https://go-review.googlesource.com/71230Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
David du Colombier authored
CL 46033 added a "template thread" mechanism to allow creation of thread with a known-good state from a thread of unknown state. However, we are experiencing issues on Plan 9 with programs using the os/exec and net package. These package are relying on runtime.LockOSThread. Updates #22227. Change-Id: I85b71580a41df9fe8b24bd8623c064b6773288b0 Reviewed-on: https://go-review.googlesource.com/70231 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Wei Xiao authored
Optimize arm64 CALLFN wrapper with LDP/STP instructions. This provides a significant speedup for big argument copy. Benchmark results for reflect: name old time/op new time/op delta Call-8 79.0ns ± 4% 73.6ns ± 4% -6.78% (p=0.000 n=10+10) CallArgCopy/size=128-8 80.5ns ± 0% 60.3ns ± 0% -25.06% (p=0.000 n=10+9) CallArgCopy/size=256-8 119ns ± 2% 67ns ± 1% -43.59% (p=0.000 n=8+10) CallArgCopy/size=1024-8 524ns ± 1% 99ns ± 1% -81.03% (p=0.000 n=10+10) CallArgCopy/size=4096-8 837ns ± 0% 231ns ± 1% -72.42% (p=0.000 n=9+9) CallArgCopy/size=65536-8 13.6µs ± 6% 3.1µs ± 1% -77.38% (p=0.000 n=10+10) PtrTo-8 12.9ns ± 0% 13.1ns ± 3% +1.86% (p=0.000 n=10+10) FieldByName1-8 28.7ns ± 2% 28.6ns ± 2% ~ (p=0.408 n=9+10) FieldByName2-8 928ns ± 4% 946ns ± 8% ~ (p=0.326 n=9+10) FieldByName3-8 5.35µs ± 5% 5.32µs ± 5% ~ (p=0.755 n=10+10) InterfaceBig-8 2.57ns ± 0% 2.57ns ± 0% ~ (all equal) InterfaceSmall-8 2.57ns ± 0% 2.57ns ± 0% ~ (all equal) New-8 9.09ns ± 1% 8.83ns ± 1% -2.81% (p=0.000 n=10+9) name old alloc/op new alloc/op delta Call-8 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta Call-8 0.00 0.00 ~ (all equal) name old speed new speed delta CallArgCopy/size=128-8 1.59GB/s ± 0% 2.12GB/s ± 1% +33.46% (p=0.000 n=10+9) CallArgCopy/size=256-8 2.14GB/s ± 2% 3.81GB/s ± 1% +78.02% (p=0.000 n=8+10) CallArgCopy/size=1024-8 1.95GB/s ± 1% 10.30GB/s ± 0% +427.99% (p=0.000 n=10+9) CallArgCopy/size=4096-8 4.89GB/s ± 0% 17.69GB/s ± 1% +261.87% (p=0.000 n=9+9) CallArgCopy/size=65536-8 4.84GB/s ± 6% 21.36GB/s ± 1% +341.67% (p=0.000 n=10+10) Change-Id: I775d88b30c43cb2eda1d0612ac15e6d283e70beb Reviewed-on: https://go-review.googlesource.com/70570Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
Unify the 386 entry point code as much as possible. The main function could not be unified because on Windows 386 it is called _main. Putting main in asm_386.s caused multiple definition errors when using the external linker. Add the _lib entry point to various operating systems. A future CL will enable c-archive/c-shared mode for those targets. Fix _rt0_386_windows_lib_go--it was passing arguments as though it were amd64. Change-Id: Ic73f1c95cdbcbea87f633f4a29bbc218a5db4f58 Reviewed-on: https://go-review.googlesource.com/70530 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Ian Lance Taylor authored
Also fix 64-bit DWARF to read a 64-bit abbrev offset in the compilation unit. Change-Id: Idc22e59ffb354d58e9973b62fdbd342acf695859 Reviewed-on: https://go-review.googlesource.com/71171Reviewed-by: Austin Clements <austin@google.com>
-
griesemer authored
- checking for the correct closing token leads to slightly better behavior for some randomly bogus programs - removed `switch` in favor of an `if` statement Follow-up on https://go-review.googlesource.com/c/go/+/71250. Change-Id: I47f6c47b43baf790907f55ed97a947661687a9db Reviewed-on: https://go-review.googlesource.com/71252Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Tim Cooper authored
Adds the two range control actions "break" and "continue". They act the same as the Go keywords break and continue, but are simplified in that only the innermost range statement can be broken out of or continued. Fixes #20531 Change-Id: I4412b3bbfd4dadb0ab74ae718e308c1ac7a0a1e9 Reviewed-on: https://go-review.googlesource.com/66410Reviewed-by: Rob Pike <r@golang.org>
-
griesemer authored
Fine-tune skipping of tokens after missing closing parentheses in lists. Fixes #22164. Change-Id: I575d86e21048cd40340a2c08399e8b0deec337cf Reviewed-on: https://go-review.googlesource.com/71250 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
- 16 Oct, 2017 18 commits
-
-
Jay Conrod authored
Previously, cover printed directives (//go: comments) near the top of the file unless they were in doc comments. However, directives frequently apply to specific definitions, and they are not written in doc comments to prevent godoc from printing them. Moving all directives to the top of the file affected semantics of tests. With this change, directives are kept together with the following top-level declarations. Only directives that occur after all top-level declarations are moved. Fixes #22022 Change-Id: Ic5c61c4d3969996e4ed5abccba0989163789254c Reviewed-on: https://go-review.googlesource.com/69630 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
-
Filippo Valsorda authored
name old time/op new time/op delta ModSqrt224_3Mod4-4 153µs ± 2% 154µs ± 1% ~ (p=0.548 n=5+5) ModSqrt5430_3Mod4-4 776ms ± 2% 791ms ± 2% ~ (p=0.222 n=5+5) Fixes #22265 Change-Id: If233542716e04341990a45a1c2b7118da6d233f7 Reviewed-on: https://go-review.googlesource.com/70832 Run-TryBot: Filippo Valsorda <hi@filippo.io> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Alessandro Arzilli authored
Use TEXT pseudo-instruction to adjust SP instead of a SUB instruction so that the assembler knows how to fill in the pcsp table and the frame description entry correctly. Updates #21569 Change-Id: I436c840b2af99bbb3042ecd38a7d7c1ab4d7372a Reviewed-on: https://go-review.googlesource.com/70937 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
The code was commented out by https://golang.org/cl/13234050 in 2013. Let's just remove it. Change-Id: I46ae1f07386719e991458e782d236214c40bdce1 Reviewed-on: https://go-review.googlesource.com/70770 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Daniel Martí authored
Use them to replace if/else chains with at least three comparisons, where the code becomes clearly simpler. Passes toolstash -cmp on std cmd. Change-Id: Ic98aa3905944ddcab5aef5f9d9ba376853263d94 Reviewed-on: https://go-review.googlesource.com/70934 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Cherry Zhang authored
The write barrier insertion has moved to the SSA backend's writebarrier pass. There is still needwritebarrier function left in the frontend. This function is used in two places: - fncall, which is called in ascompatet, which is called in walking OAS2FUNC. For OAS2FUNC, in order pass we've already created temporaries, and there is no write barrier for the assignments of these temporaries. - updateHasCall, which updates the HasCall flag of a node. the HasCall flag is then used in - fncall, mentioned above. - ascompatet. As mentioned above, this is an assignment to a temporary, no write barrier. - reorder1, which is always called with a list produced by ascompatte, which is a list of assignments to stack, which have no write barrier. - vmatch1, which is called in oaslit with r.Op as OSTRUCTLIT, OARRAYLIT, OSLICELIT, or OMAPLIT. There is no write barrier in those literals. Therefore, the needwritebarrier function is unnecessary. This CL removes it. Passes "toolstash -cmp" on std cmd. Updates #17583. Change-Id: I4b87ba8363d6583e4282a9e607a9ec8ce3ab124a Reviewed-on: https://go-review.googlesource.com/43640 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Cherry Zhang authored
On ARM, STREX does not permit the same register used as both the source and the destination. Reject the bad instruction. The assembler also accepted special cases STREX R0, (R1) as STREX R0, (R1), R0 STREX (R1), R0 as STREX R0, (R1), R0 both are illegal. Remove this special case as well. For STREXD, check that the destination is not source, and not source+1. Also check that the source register is even numbered, as required by the architecture's manual. Fixes #22268. Change-Id: I6bfde86ae692d8f1d35bd0bd7aac0f8a11ce8e22 Reviewed-on: https://go-review.googlesource.com/71190 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Matthew Dempsky authored
In golang.org/cl/61130, I removed the need for setting Xoffset on OXCASE Nodes, but missed this assignment. Passes toolstash-check. Change-Id: I90ab05add14981b89ee18e73e1cdf2f13e9f9934 Reviewed-on: https://go-review.googlesource.com/66934 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
-
Tom Bergan authored
If the client sends a request with a custom Host header and receives a relative redirect in response, the second request should use the same Host header as the first request. However, if the response is an abolute redirect, the Host header should not be preserved. See further discussion on the issue tracker. Fixes #22233 Change-Id: I8796e2fbc1c89b3445e651f739d5d0c82e727c14 Reviewed-on: https://go-review.googlesource.com/70792Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
griesemer authored
Instead of repeating the same list parsing pattern for parenthesized of braced comma or semicolon-separated lists, introduce a single list parsing function that can be parametrized and which takes a closure to parse list elements. This ensures the same error handling and recovery logic is used across all lists and simplifies the code. No semantic change. Change-Id: Ia738d354d6c2e0c3d84a5f1c7269a6eb95685edc Reviewed-on: https://go-review.googlesource.com/70492Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
griesemer authored
No semantic change. Move functionality not related to argument out of the argument parsing function, and thus match parameter parsing. Also, use a better function name. Change-Id: Ic550875251d64e6fe1ebf91c11d33a9e4aec9fdd Reviewed-on: https://go-review.googlesource.com/70491Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
griesemer authored
These changes affect the parser only when the internal trace constant is set. - factored our printing code used for tracing - streamlined advance function and added trace output The parser's trace output now more clearly prints what tokens are skipped and which is the next token in case of an error. Example trace: 4: . . . . . . . . . . call ( 4: . . . . . . . . . . . expr ( 4: . . . . . . . . . . . . unaryExpr ( 4: . . . . . . . . . . . . . pexpr ( 4: . . . . . . . . . . . . . . operand name ( 4: . . . . . . . . . . . . . . ) 4: . . . . . . . . . . . . . . call ( 4: . . . . . . . . . . . . . . ) 4: . . . . . . . . . . . . . ) 4: . . . . . . . . . . . . ) 4: . . . . . . . . . . . ) 4: . . . . . . . . . . . syntax error: expecting comma or ) 4: . . . . . . . . . . . skip ; 6: . . . . . . . . . . . skip name 6: . . . . . . . . . . . skip := 6: . . . . . . . . . . . skip literal 6: . . . . . . . . . . . skip ; 7: . . . . . . . . . . . skip } 7: . . . . . . . . . . . skip ; 9: . . . . . . . . . . . skip func 9: . . . . . . . . . . . skip name 9: . . . . . . . . . . . skip ( 9: . . . . . . . . . . . next ) 9: . . . . . . . . . . ) For #22164. Change-Id: I4a233696b1f989ee3287472172afaf92cf424565 Reviewed-on: https://go-review.googlesource.com/70490Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Ian Lance Taylor authored
STREX does not permit using the same register for the value to store and the place where the result is returned. Also the code was wrong anyhow if the first store failed. Fixes #22248 Change-Id: I96013497410058514ffcb771c76c86faa1ec559b Reviewed-on: https://go-review.googlesource.com/70911 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Kunpei Sakai authored
Change-Id: I50389752dcbf5d058ce11256a414be7955cdb77f Reviewed-on: https://go-review.googlesource.com/71070 Run-TryBot: Tom Bergan <tombergan@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tom Bergan <tombergan@google.com>
-
soluchok authored
Check to ensure that Status is set when parsing a proxied HTTPS response that a CONNECT proxy-authorization. Fixes #21701 Change-Id: Id91700b83425420101e0b0d46e12aaf5d20fd3a3 Reviewed-on: https://go-review.googlesource.com/59990 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Tom Bergan <tombergan@google.com>
-
Michael Hudson-Doyle authored
This is much easier than replacing SSUB so split it out from my other CL. Change-Id: If01e4005da5355895404456320a2156bde4ec09a Reviewed-on: https://go-review.googlesource.com/71050 Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Michael Hudson-Doyle authored
This is https://go-review.googlesource.com/42025 but with some more fixes -- hidden symbols implicitly passed "Type == 0 || Type == SXREF" checks. (This sort of thing is part of why I wanted to make this change) Change-Id: I2273ee98570fd7f2dd8a799c692a2083c014235e Reviewed-on: https://go-review.googlesource.com/42330 Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Javier Segura authored
Change-Id: Ibf3179d0903eb443c89b6d886802c36f8d199898 Reviewed-on: https://go-review.googlesource.com/70933Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 15 Oct, 2017 3 commits
-
-
Daniel Martí authored
Reduce the scope of some. Also remove vars that were simply the index or the value in a range statement. While at it, remove a var that was exactly the length of a slice. Also replaced 'bad' with a more clear 'errored' of type bool, and renamed a single-char name with a comment to a name that is self-explanatory. And removed a few unnecessary Index calls within loops. Passes toolstash -cmp on std cmd. Change-Id: I26eee5f04e8f7e5418e43e25dca34f89cca5c80a Reviewed-on: https://go-review.googlesource.com/70930 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Rob Pike authored
The complainant is confused by the ambiguity of 'next' in the phrase 'next operand'. It seems clear enough to me that things are always read left to right when formatting, but to calm the waters we add a clarifying parenthetical. Fixes #22275 Change-Id: I82418c1e987db736f4bee0faa53fe715c9cde8f5 Reviewed-on: https://go-review.googlesource.com/71010Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
-
Andreas Auernhammer authored
ANSI X9.62 specifies that Unmarshal should fail if the a given coordinate is not smaller than the prime of the elliptic curve. This change makes Unmarshal ANSI X9.62 compliant and explicitly documents that the Marshal/Unmarshal only supports uncompressed points. Fixes #20482 Change-Id: I161a73da8279cae505c9ba0b3022021709fe8145 Reviewed-on: https://go-review.googlesource.com/44312Reviewed-by: Adam Langley <agl@golang.org> Reviewed-by: Filippo Valsorda <hi@filippo.io> Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 14 Oct, 2017 3 commits
-
-
Jed Denlea authored
The indexed bitmap of a frame is encoded into a GIF by first LZW compression, and then packaged by a simple block mechanism. Each block of up-to-256 bytes starts with one byte, which indicates the size of the block (0x01-0xff). The sequence of blocks is terminated by a 0x00. While the format supports it, there is no good reason why any particular image should be anything but a sequence of 255-byte blocks with one last block less than 255-bytes. The old blockWriter implementation would not buffer between Write()s, meaning if the lzw Writer needs to flush more than one chunk of data via a Write, multiple short blocks might exist in the middle of a stream. Separate but related, the old implementation also forces lzw.NewWriter to allocate a bufio.Writer because the blockWriter is not an io.ByteWriter itself. But, even though it doesn't effectively buffer data between Writes, it does make extra copies of sub-blocks during the course of writing them to the GIF's writer. Now, the blockWriter shall continue to use the encoder's [256]byte buf, but use it to effectively buffer a series of WriteByte calls from the lzw Writer. Once a WriteByte fills the buffer, the staged block is Write()n to the underlying GIF writer. After the lzw Writer is Closed, the blockWriter should also be closed, which will flush any remaining block along with the block terminator. BenchmarkEncode indicates slight improvements: name old time/op new time/op delta Encode-8 7.71ms ± 0% 7.38ms ± 0% -4.27% (p=0.008 n=5+5) name old speed new speed delta Encode-8 159MB/s ± 0% 167MB/s ± 0% +4.46% (p=0.008 n=5+5) name old alloc/op new alloc/op delta Encode-8 84.1kB ± 0% 80.0kB ± 0% -4.94% (p=0.008 n=5+5) name old allocs/op new allocs/op delta Encode-8 9.00 ± 0% 7.00 ± 0% -22.22% (p=0.008 n=5+5) Change-Id: I9eb9367d41d7c3d4d7f0adc9b720fc24fb50006a Reviewed-on: https://go-review.googlesource.com/68351Reviewed-by: Nigel Tao <nigeltao@golang.org>
-
Matthew Dempsky authored
After we detect errors, the AST is in a precarious state and more likely to trip useless ICE failures. Instead let the user fix any existing errors and see if the ICE persists. This makes Fatalf more consistent with how panics are handled by hidePanic. While here, also fix detection for release versions: release version strings begin with "go" ("go1.8", "go1.9.1", etc), not "release". Fixes #22252. Change-Id: I1c400af62fb49dd979b96e1bf0fb295a81c8b336 Reviewed-on: https://go-review.googlesource.com/70850 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Cherry Zhang authored
The caller's PC is always available in the frame. We can just load it when needed, no need to spill. Change-Id: I9c0a525903e574bb4eec9fe53cbeb8c64321166a Reviewed-on: https://go-review.googlesource.com/70710 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
-
- 13 Oct, 2017 5 commits
-
-
Peter Wu authored
Consolidate the signature and hash fields (SignatureAndHashAlgorithm in TLS 1.2) into a single uint16 (SignatureScheme in TLS 1.3 draft 21). This makes it easier to add RSASSA-PSS for TLS 1.2 in the future. Fields were named like "signatureAlgorithm" rather than "signatureScheme" since that name is also used throughout the 1.3 draft. The only new public symbol is ECDSAWithSHA1, other than that this is an internal change with no new functionality. Change-Id: Iba63d262ab1af895420583ac9e302d9705a7e0f0 Reviewed-on: https://go-review.googlesource.com/62210Reviewed-by: Adam Langley <agl@golang.org>
-
David Crawshaw authored
Fixes #22250 Change-Id: I0e39d10ff6f0785cd22b0105de2d839e569db4b7 Reviewed-on: https://go-review.googlesource.com/70810 Run-TryBot: David Crawshaw <crawshaw@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Austin Clements authored
Currently only a single P can run a fractional mark worker at a time. This doesn't let us spread out the load, so it gets concentrated on whatever unlucky P picks up the token to run a fractional worker. This can significantly delay goroutines on that P. This commit changes this scheduling rule so each P separately schedules fractional workers. This can significantly reduce the load on any individual P and allows workers to self-preempt earlier. It does have the downside that it's possible for all Ps to be in fractional workers simultaneously (an effect STW). Updates #21698. Change-Id: Ia1e300c422043fa62bb4e3dd23c6232d81e4419c Reviewed-on: https://go-review.googlesource.com/68574 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Austin Clements authored
Currently fractional workers run until preempted by the scheduler, which means they typically run for 20ms. During this time, all other goroutines on that P are blocked, which can introduce significant latency variance. This modifies fractional workers to self-preempt shortly after achieving the fractional utilization goal. In practice this means they preempt much sooner, and the scale of their preemption is on the order of how often the user goroutine block (so, if the application is compute-bound, the fractional workers will also run for long times, but if the application blocks frequently, the fractional workers will also preempt quickly). Fixes #21698. Updates #18534. Change-Id: I03a5ab195dae93154a46c32083c4bb52415d2017 Reviewed-on: https://go-review.googlesource.com/68573 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Austin Clements authored
We haven't used non-zero gcForcePreemptNS for ages. Remove it and declutter the code. Change-Id: Id5cc62f526d21ca394d2b6ca17d34a72959535da Reviewed-on: https://go-review.googlesource.com/68572 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-