Skip to content

Instantly share code, notes, and snippets.

View quasilyte's full-sized avatar
🕵️

quasilyte quasilyte

🕵️
View GitHub Profile
@quasilyte
quasilyte / results.txt
Created December 8, 2021 08:58
bytes.Buffer grow benchmarks comparison
name old time/op new time/op delta
BufferWrite/len1_x1-8 95.2ns ± 3% 94.7ns ± 2% ~ (p=0.256 n=10+10)
BufferWrite/len1_x4-8 128ns ± 2% 127ns ± 2% ~ (p=0.197 n=10+10)
BufferWrite/len1_x8-8 173ns ± 1% 172ns ± 1% -0.52% (p=0.030 n=10+10)
BufferWrite/len1_x16-8 269ns ± 1% 261ns ± 1% -2.94% (p=0.000 n=10+9)
BufferWrite/len8_x1-8 97.8ns ± 1% 95.7ns ± 2% -2.22% (p=0.000 n=10+10)
BufferWrite/len8_x4-8 128ns ± 1% 129ns ± 2% ~ (p=0.725 n=10+10)
BufferWrite/len8_x8-8 172ns ± 2% 173ns ± 2% ~ (p=0.225 n=10+10)
BufferWrite/len8_x16-8 424ns ± 1% 429ns ± 1% +1.32% (p=0.000 n=9+10)
BufferWrite/len16_x1-8 97.6ns ± 2% 96.2ns ± 2% -1.39% (p=0.029 n=10+10)
package gorules
import "github.com/quasilyte/go-ruleguard/dsl/fluent"
func useMathBits(m fluent.Matcher) {
m.Match(`$X >> $N | $X << (8 - $N)`,
`$X << $N | $X >> (8 - $N)`,
`$X >> (8 - $N) | $X << $N`,
`$X << (8 - $N) | $X >> $N`,
`$X >> $N | $X << (16 - $N)`,
Parser test cases:
// Empty pattern.
{``, `{}`},
// Anchors.
{`^`, `^`},
{`^^`, `{^ ^}`},
{`$`, `$`},
{`$$`, `{$ $}`},
"".getID1 STEXT size=169 args=0x10 locals=0x88
0x0000 00000 (arrcopy.go:10) TEXT "".getID1(SB), ABIInternal, $136-16
0x0000 00000 (arrcopy.go:10) MOVQ (TLS), CX
0x0009 00009 (arrcopy.go:10) LEAQ -8(SP), AX
0x000e 00014 (arrcopy.go:10) CMPQ AX, 16(CX)
0x0012 00018 (arrcopy.go:10) JLS 159
0x0018 00024 (arrcopy.go:10) SUBQ $136, SP
0x001f 00031 (arrcopy.go:10) MOVQ BP, 128(SP)
0x0027 00039 (arrcopy.go:10) LEAQ 128(SP), BP
0x002f 00047 (arrcopy.go:10) FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
var stdlib = map[string]string{
"adler32": "hash/adler32",
"aes": "crypto/aes",
"ascii85": "encoding/ascii85",
"asn1": "encoding/asn1",
"ast": "go/ast",
"atomic": "sync/atomic",
"base32": "encoding/base32",
"base64": "encoding/base64",
"big": "math/big",
wikia-app/extensions/3rdparty/LyricWiki/Special_SendToAFriend.body.php:306: preg_match("/Subject: [^\n]*\n--[0-9a-z\.]*\/pedlfaster.pedlr.com--/si", $msg)
wikia-app/extensions/3rdparty/LyricWiki/Special_SendToAFriend.body.php:307: preg_match("/\b(t|that6036)@lyricwiki.org/si", $msg)
wikia-app/extensions/3rdparty/LyricWiki/Special_SendToAFriend.body.php:310: preg_match("/To: [a-zA-Z]+[0-9]+@lyricwiki.org/i", $msg)
wikia-app/extensions/3rdparty/LyricWiki/Special_SendToAFriend.body.php:312: preg_match("/To:\s*([^\n]*@lyricwiki.org)/si", $msg)
wikia-app/extensions/3rdparty/LyricWiki/nusoap.php:4465: preg_match('#^http://www.w3.org/[0-9]{4}/XMLSchema$#',$value)
wikia-app/maintenance/wikia/updateCentralInterwiki.inc:95: preg_match( '/(wowwiki.com|wikia.com|falloutvault.com)/', $url )
composer/src/Composer/Repository/Vcs/GitDriver.php:200: preg_match('#(^git://|\.git/?$|git(?:olite)?@|//git\.|//github.com/)#i', $url)
composer/src/Composer/Repository/Vcs/HgDriver.php:209: preg_match('#(^(?:https?|ssh)://(?:[^@]+@)?bi
./cloud.google.com/go/logging/logging.go:527:6: equalFold: consider replacing with strings.EqualFold(name, sl)
./github.com/99designs/gqlgen/codegen/object.go:413:22: equalFold: consider replacing with strings.EqualFold(word, word)
./github.com/99designs/gqlgen/graphql/bool.go:22:10: equalFold: consider replacing with strings.EqualFold("true", v)
./github.com/Azure/azure-sdk-for-go/storage/util_test.go:58:6: equalFold: consider replacing with strings.EqualFold(filepath.Ext(path), ".yaml")
./github.com/Azure/azure-storage-blob-go/azblob/parsing_urls.go:103:6: equalFold: consider replacing with strings.EqualFold(k, key)
./github.com/Azure/golua/pkg/pattern/classes.go:45:5: equalFold: consider replacing with strings.EqualFold(i.val, i.val)
./github.com/Azure/golua/pkg/pattern/classes.go:82:5: equalFold: consider replacing with strings.EqualFold(item.val, item.val)
./github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/certs/certs.go:102:7: equalFold: consider replacing with strings.EqualFold(ipAddressType, "PUBLI

Project manifest

This document exists to make it clear what fits gocritic project and what is not.
In a sense, this manifest describes project philosophy.

This document may change over time.
Contributors and maintainers are encouraged to discuss it and propose changes.

What gocritic is

quasilyte src $ gogrep -x '$x & ^$y' ./...
bytes/bytes.go:294:8: wasSpace & ^isSpace
cmd/internal/src/pos.go:407:14: uint(x) & ^uint(xlogueMax<<xlogueShift)
cmd/internal/src/pos.go:415:14: uint(x) & ^uint(isStmtMax<<isStmtShift)
crypto/elliptic/p256.go:1058:11: pIsNoninfiniteMask & ^nIsInfinityMask
crypto/elliptic/p256.go:1139:10: pIsNoninfiniteMask & ^nIsInfinityMask
crypto/tls/conn.go:818:20: payloadBytes & ^(blockSize - 1)
hash/crc32/crc32_ppc64le.go:42:14: len(p) & ^vecAlignMask
hash/crc32/crc32_ppc64le.go:79:14: len(p) & ^vecAlignMask
hash/crc32/crc32_s390x.go:50:14: len(p) & ^vxAlignMask
diff --git a/src/cmd/compile/internal/amd64/ssa.go b/src/cmd/compile/internal/amd64/ssa.go
index 307cdc5e83..dc1ab4161a 100644
--- a/src/cmd/compile/internal/amd64/ssa.go
+++ b/src/cmd/compile/internal/amd64/ssa.go
@@ -149,6 +149,17 @@ func duff(size int64) (int64, int64) {
func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
switch v.Op {
+ case ssa.OpAMD64FMASD:
+ p := s.Prog(v.Op.Asm())