{"push_id":1120044807,"size":318,"distinct_size":300,"ref":"refs/heads/master","head":"3b50adbc4f1a9d775f0434166ad71220e8a4b8ce","before":"80e9a7f0797c73b27471eb4b371baa1c7ccb427b","commits":[{"sha":"830ce3f1ed2771a94ed768816304ce2dd1017da0","author":{"email":"5ad239cb8a44f659eaaee0aa1ea5b94947abe557@golang.org","name":"Russ Cox"},"message":"[dev.garbage] dev.garbage: create new dev.garbage branch\n\nThis is for a GC experiment that may or may not go anywhere.\n\nChange-Id: I46a4535cc768ce8bbe33c72961f1fa87658493f7\nReviewed-on: https://go-review.googlesource.com/18534\nReviewed-by: Rick Hudson <rlh@golang.org>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/830ce3f1ed2771a94ed768816304ce2dd1017da0"},{"sha":"29257f5effa30a8a0cc2d79df8ff25593a861b2b","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"Merge remote-tracking branch 'origin/master' into toc\n\nChange-Id: Iba5d3ce5955b5e95c3c40b4408727e28ade67c61","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/29257f5effa30a8a0cc2d79df8ff25593a861b2b"},{"sha":"132d7ae99e2996349515a41832194a0d5c15725f","author":{"email":"7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com","name":"Austin Clements"},"message":"[dev.garbage] Merge branch 'master' into dev.garbage\n\nChange-Id: I8327de2ac5eeb56d7f0371776a0d9131e3204f12","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/132d7ae99e2996349515a41832194a0d5c15725f"},{"sha":"c67f09ac5cf3c5a6af67d0e302a1985ade44be1f","author":{"email":"7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com","name":"Austin Clements"},"message":"[dev.garbage] Merge branch 'master' into dev.garbage\n\nChange-Id: Iede021da8fdb7ac87f1e0c495b7401e50a5b0a83","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/c67f09ac5cf3c5a6af67d0e302a1985ade44be1f"},{"sha":"22972d2207424edc481b7c127788f573a726dfe7","author":{"email":"7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com","name":"Austin Clements"},"message":"[dev.garbage] Merge remote-tracking branch 'origin/master' into dev.garbage\n\nChange-Id: Icb6811a9eb08fbde297d256db9f135a4e85e7cd4","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/22972d2207424edc481b7c127788f573a726dfe7"},{"sha":"6d6e16001bb04d4bf60c6d14d1f64684a043ef6c","author":{"email":"7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com","name":"Austin Clements"},"message":"[dev.garbage] Merge branch 'master' into dev.garbage\n\nChange-Id: I47ac4112befc07d3674d7a88827227199edd93b4","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/6d6e16001bb04d4bf60c6d14d1f64684a043ef6c"},{"sha":"2ac8bdc52ae1ea0418df465de3f1ef36f49e2274","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: bitmap allocation data structs\n\nThe bitmap allocation data structure prototypes. Before\nthis is released these underlying data structures need\nto be more performant but the signatures of helper\nfunctions utilizing these structures will remain stable.\n\nChange-Id: I5ace12f2fb512a7038a52bbde2bfb7e98783bcbe\nReviewed-on: https://go-review.googlesource.com/19221\nReviewed-by: Austin Clements <austin@google.com>\nRun-TryBot: Austin Clements <austin@google.com>\nTryBot-Result: Gobot Gobot <gobot@golang.org>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/2ac8bdc52ae1ea0418df465de3f1ef36f49e2274"},{"sha":"aed861038f876643a67c2297b384b6be140c46c1","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: add stackfreelist\n\nThe freelist for normal objects and the freelist\nfor stacks share the same mspan field for holding\nthe list head but are operated on by different code\nsequences. This overloading complicates the use of bit\nvectors for allocation of normal objects. This change\nrefactors the use of the stackfreelist out from the\nuse of freelist.\n\nChange-Id: I5b155b5b8a1fcd8e24c12ee1eb0800ad9b6b4fa0\nReviewed-on: https://go-review.googlesource.com/19315\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/aed861038f876643a67c2297b384b6be140c46c1"},{"sha":"e1c4e9a754833e169a41ea98a49c3712513879ab","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: refactor next free object\n\nIn preparation for changing how the next free object is chosen\nrefactor and consolidate code into a single function.\n\nChange-Id: I6836cd88ed7cbf0b2df87abd7c1c3b9fabc1cbd8\nReviewed-on: https://go-review.googlesource.com/19317\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/e1c4e9a754833e169a41ea98a49c3712513879ab"},{"sha":"dc65a82eff0a3af5a26f6c6d31c53bdac9b31168","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: mark/allocation helper functions\n\nThe gcmarkBits is a bit vector used by the GC to mark\nreachable objects. Once a GC cycle is complete the gcmarkBits\nswap places with the allocBits. allocBits is then used directly\nby malloc to locate free objects, thus avoiding the\nconstruction of a linked free list. This CL introduces a set\nof helper functions for manipulating gcmarkBits and allocBits\nthat will be used by later CLs to realize the actual\nalgorithm. Minimal attempts have been made to optimize these\nhelper routines.\n\nChange-Id: I55ad6240ca32cd456e8ed4973c6970b3b882dd34\nReviewed-on: https://go-review.googlesource.com/19420\nReviewed-by: Austin Clements <austin@google.com>\nRun-TryBot: Rick Hudson <rlh@golang.org>\nTryBot-Result: Gobot Gobot <gobot@golang.org>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/dc65a82eff0a3af5a26f6c6d31c53bdac9b31168"},{"sha":"3479b065d43f2990ac12e7b00ddff6f63a876ca9","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: allocate directly from GC mark bits\n\nInstead of building a freelist from the mark bits generated\nby the GC this CL allocates directly from the mark bits.\n\nThe approach moves the mark bits from the pointer/no pointer\nheap structures into their own per span data structures. The\nmark/allocation vectors consist of a single mark bit per\nobject. Two vectors are maintained, one for allocation and\none for the GC's mark phase. During the GC cycle's sweep\nphase the interpretation of the vectors is swapped. The\nmark vector becomes the allocation vector and the old\nallocation vector is cleared and becomes the mark vector that\nthe next GC cycle will use.\n\nMarked entries in the allocation vector indicate that the\nobject is not free. Each allocation vector maintains a boundary\nbetween areas of the span already allocated from and areas\nnot yet allocated from. As objects are allocated this boundary\nis moved until it reaches the end of the span. At this point\nfurther allocations will be done from another span.\n\nSince we no longer sweep a span inspecting each freed object\nthe responsibility for maintaining pointer/scalar bits in\nthe heapBitMap containing is now the responsibility of the\nthe routines doing the actual allocation.\n\nThis CL is functionally complete and ready for performance\ntuning.\n\nChange-Id: I336e0fc21eef1066e0b68c7067cc71b9f3d50e04\nReviewed-on: https://go-review.googlesource.com/19470\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/3479b065d43f2990ac12e7b00ddff6f63a876ca9"},{"sha":"e4ac2d4acc8cb44df2107e3fa1067755feaaa005","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: replace ref with allocCount\n\nThis is a renaming of the field ref to the\nmore appropriate allocCount. The field\nholds the number of objects in the span\nthat are currently allocated. Some throws\nstrings were adjusted to more accurately\nconvey the meaning of allocCount.\n\nChange-Id: I10daf44e3e9cc24a10912638c7de3c1984ef8efe\nReviewed-on: https://go-review.googlesource.com/19518\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/e4ac2d4acc8cb44df2107e3fa1067755feaaa005"},{"sha":"44fe90d0b393c961e3fb1b4c37e93ce268da46bc","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: logic that uses count trailing zero (ctz)\n\nMost (all?) processors that Go supports supply a hardware\ninstruction that takes a byte and returns the number\nof zeros trailing the first 1 encountered, or 8\nif no ones are found. This is the index within the\nbyte of the first 1 encountered. CTZ should improve the\nperformance of the nextFreeIndex function.\n\nSince nextFreeIndex wants the next unmarked (0) bit\na bit-wise complement is needed before calling ctz.\nFurthermore unmarked bits associated with previously\nallocated objects need to be ignored. Instead of writing\na 1 as we allocate the code masks all bits less than the\nfreeindex after loading the byte.\n\nWhile this CL does not actual execute a CTZ instruction\nit supplies a ctz function with the appropiate signature\nalong with the logic to execute it.\n\nChange-Id: I5c55ce0ed48ca22c21c4dd9f969b0819b4eadaa7\nReviewed-on: https://go-review.googlesource.com/20169\nReviewed-by: Keith Randall <khr@golang.org>\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/44fe90d0b393c961e3fb1b4c37e93ce268da46bc"},{"sha":"4093481523b1e064e998d5d586276db45f4d11a7","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: add bit and cache ctz64 (count trailing zero)\n\nAdd to each span a 64 bit cache (allocCache) of the allocBits\nat freeindex. allocCache is shifted such that the lowest bit\ncorresponds to the bit freeindex. allocBits uses a 0 to\nindicate an object is free, on the other hand allocCache\nuses a 1 to indicate an object is free. This facilitates\nctz64 (count trailing zero) which counts the number of 0s\ntrailing the least significant 1. This is also the index of\nthe least significant 1.\n\nEach span maintains a freeindex indicating the boundary\nbetween allocated objects and unallocated objects. allocCache\nis shifted as freeindex is incremented such that the low bit\nin allocCache corresponds to the bit a freeindex in the\nallocBits array.\n\nCurrently ctz64 is written in Go using a for loop so it is\nnot very efficient. Use of the hardware instruction will\nfollow. With this in mind comparisons of the garbage\nbenchmark are as follows.\n\n1.6 release        2.8 seconds\ndev:garbage branch 3.1 seconds.\n\nProfiling shows the go implementation of ctz64 takes up\n1% of the total time.\n\nChange-Id: If084ed9c3b1eda9f3c6ab2e794625cb870b8167f\nReviewed-on: https://go-review.googlesource.com/20200\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/4093481523b1e064e998d5d586276db45f4d11a7"},{"sha":"8dda1c4c08adf8b2107dec1c0d70d24443269ccd","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: remove heapBitsSweepSpan\n\nPrior to this CL the sweep phase was responsible for locating\nall objects that were about to be freed and calling a function\nto process the object. This was done by the function\nheapBitsSweepSpan. Part of processing included calls to\ntracefree and msanfree as well as counting how many objects\nwere freed.\n\nThe calls to tracefree and msanfree have been moved into the\ngcmalloc routine and called when the object is about to be\nreallocated. The counting of free objects has been optimized\nusing an array based popcnt algorithm and if all the objects\nin a span are free then span is freed.\n\nSimilarly the code to locate the next free object has been\noptimized to use an array based ctz (count trailing zero).\nVarious hot paths in the allocation logic have been optimized.\n\nAt this point the garbage benchmark is within 3% of the 1.6\nrelease.\n\nChange-Id: I00643c442e2ada1685c010c3447e4ea8537d2dfa\nReviewed-on: https://go-review.googlesource.com/20201\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/8dda1c4c08adf8b2107dec1c0d70d24443269ccd"},{"sha":"f8d0d4fd59b6cb6f875eac7753f036b10a28f995","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: cleanup and optimize span.base()\n\nPrior to this CL the base of a span was calculated in various\nplaces using shifts or calls to base(). This CL now\nalways calls base() which has been optimized to calculate the\nbase of the span when the span is initialized and store that\nvalue in the span structure.\n\nChange-Id: I661f2bfa21e3748a249cdf049ef9062db6e78100\nReviewed-on: https://go-review.googlesource.com/20703\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/f8d0d4fd59b6cb6f875eac7753f036b10a28f995"},{"sha":"1354b32cd70f2702381764fd595dd2faa996840c","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] runtime: add gc work buffer tryGet and put fast paths\n\nThe complexity of the GC work buffers put and tryGet\nprevented them from being inlined. This CL simplifies\nthe fast path thus enabling inlining. If the fast\npath does not succeed the previous put and tryGet\nfunctions are called.\n\nChange-Id: I6da6495d0dadf42bd0377c110b502274cc01acf5\nReviewed-on: https://go-review.googlesource.com/20704\nReviewed-by: Austin Clements <austin@google.com>","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/1354b32cd70f2702381764fd595dd2faa996840c"},{"sha":"23aeb34df172b17b7bfaa85fb59ca64bef9073bb","author":{"email":"838bd060584c511f21c75c69ea04b7b120d86af0@golang.org","name":"Rick Hudson"},"message":"[dev.garbage] Merge remote-tracking branch 'origin/master' into HEAD\n\nChange-Id: I282fd9ce9db435dfd35e882a9502ab1abc185297","distinct":false,"url":"https://api.github.com/repos/minicalion/go/commits/23aeb34df172b17b7bfaa85fb59ca64bef9073bb"},{"sha":"22db3c5a62b01dba6122230aa71d35c48107c70c","author":{"email":"b29c70e1bf471e0c867df39d9c2e36381dacc9ad@gmail.com","name":"Aliaksandr Valialkin"},"message":"cmd/vet: improve checking unkeyed fields in composite literals\n\n- Simplified the code.\n\n- Removed types for slice aliases from composite literals' whitelist, since they\nare properly handled by vet.\n\nFixes #15408\nUpdates #9171\nUpdates #11041\n\nChange-Id: Ia1806c9eb3f327c09d2e28da4ffdb233b5a159b0\nReviewed-on: https://go-review.googlesource.com/22318\nRun-TryBot: Rob Pike <r@golang.org>\nTryBot-Result: Gobot Gobot <gobot@golang.org>\nReviewed-by: Rob Pike <r@golang.org>","distinct":true,"url":"https://api.github.com/repos/minicalion/go/commits/22db3c5a62b01dba6122230aa71d35c48107c70c"},{"sha":"9faf5cdf9d1f9050a03ae3d420768c846e54646d","author":{"email":"b28162d9d9e943d35d5dc83594b590c0020ea12a@gmail.com","name":"Dan Peterson"},"message":"net: change type of dnsConfig.timeout from int to time.Duration\n\nInstead of keeping the desired number of seconds and converting to\ntime.Duration for every query, convert to time.Duration when\nbuilding the config.\n\nUpdates #15473\n\nChange-Id: Ib24c050b593b3109011e359f4ed837a3fb45dc65\nReviewed-on: https://go-review.googlesource.com/22548\nReviewed-by: Brad Fitzpatrick <bradfitz@golang.org>","distinct":true,"url":"https://api.github.com/repos/minicalion/go/commits/9faf5cdf9d1f9050a03ae3d420768c846e54646d"}]}