{"shas":[["47af8e221b5602fe90ea3cf0951c9e35d1036b28","05e8181be3150e47da8fe2e1f18d381c75496ff4@google.com","sync: replace Mutex benchmarks\nFor both contended and uncontended case:\n - support arbitrary number of cpus (not just 2)\n - dynamic load balancing (improves stability)\n - periodic execution of Gosched() to work around non-preemptiviness\nFor uncontended case eliminates possible false-sharing.\nFor contended case includes additional variation with some\namount of local work between mutex operations.\n\nR=r, rsc\nCC=golang-dev\nhttp://codereview.appspot.com/4634093\n\nCommitter: Russ Cox <rsc@golang.org>","Dmitriy Vyukov"],["5993c16f86c45f73a5c9f05980dd21612714e91b","4dc7c9ec434ed06502767136789763ec11d2c4b7@golang.org","Add the beginnings of the template execution code.  Lots still to do,\nincluding evaluation up the data tree (in this code all fields must be\nin dot itself), plus more control structure, but the basics are in place.\n\nR=rsc, r\nCC=golang-dev\nhttp://codereview.appspot.com/4665041","Rob Pike"],["c69d754c62b590afbaef4dff1e8018e99c9e3246","05e8181be3150e47da8fe2e1f18d381c75496ff4@google.com","sync: add fast path to Once\nThe implementation does not grab the lock,\nif Once is already initalized.\nBenchmark results on HP Z600 (2 x Xeon E5620, 8 HT cores, 2.40GHz)\nare as follows:\nbenchmark                                        old ns/op    new ns/op    delta\nsync_test.BenchmarkOnce                             187.00        14.00  -92.51%\nsync_test.BenchmarkOnce-2                           909.00        21.40  -97.65%\nsync_test.BenchmarkOnce-4                          3684.00        20.90  -99.43%\nsync_test.BenchmarkOnce-8                          5987.00        23.00  -99.62%\nsync_test.BenchmarkOnce-16                         5051.00        21.60  -99.57%\n\nR=bradfitz, rsc\nCC=golang-dev\nhttp://codereview.appspot.com/4641066\n\nCommitter: Russ Cox <rsc@golang.org>","Dmitriy Vyukov"],["e5e2c483494f5ce3945e6d70a000485564236ba2","05e8181be3150e47da8fe2e1f18d381c75496ff4@google.com","runtime: add Semacquire/Semrelease benchmarks\n\nR=rsc\nCC=golang-dev\nhttp://codereview.appspot.com/4625065\n\nCommitter: Russ Cox <rsc@golang.org>","Dmitriy Vyukov"],["3949b523fc6e90021b864c2a184e111d8c4e4c37","6302cdde46bd93e42672ac2cf4e8f85a4086c9b1@gmail.com","runtime/cgo: check for errors from pthread_create\n\nR=rsc, iant, dvyukov\nCC=golang-dev\nhttp://codereview.appspot.com/4643057\n\nCommitter: Russ Cox <rsc@golang.org>","Albert Strasheim"],["0532052bb0428b6505f419ba489a5b79ff302a62","ae9783c0b0efc69cd85ab025ddd17aa44cdc4aa5@golang.org","fmt: rename errno and error to err for doc consistency\n\nThe public godoc looked confused. I imagine these were\nwritten before current conventions were established.\n\nR=golang-dev, rsc\nCC=golang-dev\nhttp://codereview.appspot.com/4662060","Brad Fitzpatrick"],["b5d28a408b1b00ea6971219e189b8c3fb2b83e07","05e8181be3150e47da8fe2e1f18d381c75496ff4@google.com","runtime: replace Semacquire/Semrelease implementation\n1. The implementation uses distributed hash table of waitlists instead of a centralized one.\n  It significantly improves scalability for uncontended semaphores.\n2. The implementation provides wait-free fast-path for signalers.\n3. The implementation uses less locks (1 lock/unlock instead of 5 for Semacquire).\n4. runtime·ready() call is moved out of critical section.\n5. Semacquire() does not call semwake().\nBenchmark results on HP Z600 (2 x Xeon E5620, 8 HT cores, 2.40GHz)\nare as follows:\nbenchmark                                        old ns/op    new ns/op    delta\nruntime_test.BenchmarkSemaUncontended                58.20        36.30  -37.63%\nruntime_test.BenchmarkSemaUncontended-2             199.00        18.30  -90.80%\nruntime_test.BenchmarkSemaUncontended-4             327.00         9.20  -97.19%\nruntime_test.BenchmarkSemaUncontended-8             491.00         5.32  -98.92%\nruntime_test.BenchmarkSemaUncontended-16            946.00         4.18  -99.56%\n\nruntime_test.BenchmarkSemaSyntNonblock               59.00        36.80  -37.63%\nruntime_test.BenchmarkSemaSyntNonblock-2            167.00       138.00  -17.37%\nruntime_test.BenchmarkSemaSyntNonblock-4            333.00       129.00  -61.26%\nruntime_test.BenchmarkSemaSyntNonblock-8            464.00       130.00  -71.98%\nruntime_test.BenchmarkSemaSyntNonblock-16          1015.00       136.00  -86.60%\n\nruntime_test.BenchmarkSemaSyntBlock                  58.80        36.70  -37.59%\nruntime_test.BenchmarkSemaSyntBlock-2               294.00       149.00  -49.32%\nruntime_test.BenchmarkSemaSyntBlock-4               333.00       177.00  -46.85%\nruntime_test.BenchmarkSemaSyntBlock-8               471.00       221.00  -53.08%\nruntime_test.BenchmarkSemaSyntBlock-16              990.00       227.00  -77.07%\n\nruntime_test.BenchmarkSemaWorkNonblock              829.00       832.00   +0.36%\nruntime_test.BenchmarkSemaWorkNonblock-2            425.00       419.00   -1.41%\nruntime_test.BenchmarkSemaWorkNonblock-4            308.00       220.00  -28.57%\nruntime_test.BenchmarkSemaWorkNonblock-8            394.00       147.00  -62.69%\nruntime_test.BenchmarkSemaWorkNonblock-16          1510.00       149.00  -90.13%\n\nruntime_test.BenchmarkSemaWorkBlock                 828.00       813.00   -1.81%\nruntime_test.BenchmarkSemaWorkBlock-2               428.00       436.00   +1.87%\nruntime_test.BenchmarkSemaWorkBlock-4               232.00       219.00   -5.60%\nruntime_test.BenchmarkSemaWorkBlock-8               392.00       251.00  -35.97%\nruntime_test.BenchmarkSemaWorkBlock-16             1524.00       298.00  -80.45%\n\nsync_test.BenchmarkMutexUncontended                  24.10        24.00   -0.41%\nsync_test.BenchmarkMutexUncontended-2                12.00        12.00   +0.00%\nsync_test.BenchmarkMutexUncontended-4                 6.25         6.17   -1.28%\nsync_test.BenchmarkMutexUncontended-8                 3.43         3.34   -2.62%\nsync_test.BenchmarkMutexUncontended-16                2.34         2.32   -0.85%\n\nsync_test.BenchmarkMutex                             24.70        24.70   +0.00%\nsync_test.BenchmarkMutex-2                          208.00        99.50  -52.16%\nsync_test.BenchmarkMutex-4                         2744.00       256.00  -90.67%\nsync_test.BenchmarkMutex-8                         5137.00       556.00  -89.18%\nsync_test.BenchmarkMutex-16                        5368.00      1284.00  -76.08%\n\nsync_test.BenchmarkMutexSlack                        24.70        25.00   +1.21%\nsync_test.BenchmarkMutexSlack-2                    1094.00       186.00  -83.00%\nsync_test.BenchmarkMutexSlack-4                    3430.00       402.00  -88.28%\nsync_test.BenchmarkMutexSlack-8                    5051.00      1066.00  -78.90%\nsync_test.BenchmarkMutexSlack-16                   6806.00      1363.00  -79.97%\n\nsync_test.BenchmarkMutexWork                        793.00       792.00   -0.13%\nsync_test.BenchmarkMutexWork-2                      398.00       398.00   +0.00%\nsync_test.BenchmarkMutexWork-4                     1441.00       308.00  -78.63%\nsync_test.BenchmarkMutexWork-8                     8532.00       847.00  -90.07%\nsync_test.BenchmarkMutexWork-16                    8225.00      2760.00  -66.44%\n\nsync_test.BenchmarkMutexWorkSlack                   793.00       793.00   +0.00%\nsync_test.BenchmarkMutexWorkSlack-2                 418.00       414.00   -0.96%\nsync_test.BenchmarkMutexWorkSlack-4                4481.00       480.00  -89.29%\nsync_test.BenchmarkMutexWorkSlack-8                6317.00      1598.00  -74.70%\nsync_test.BenchmarkMutexWorkSlack-16               9111.00      3038.00  -66.66%\n\nR=rsc\nCC=golang-dev\nhttp://codereview.appspot.com/4631059\n\nCommitter: Russ Cox <rsc@golang.org>","Dmitriy Vyukov"],["9c0176125b6473b2b33dcf7e4e7e91aa8e83d33a","5ad239cb8a44f659eaaee0aa1ea5b94947abe557@golang.org","cc: broken return is an error, not a warning\n\nR=ken2\nCC=golang-dev\nhttp://codereview.appspot.com/4626081","Russ Cox"],["e43b0980db6d8f04704b04be2cd2ad0b6e5e14fd","beac5f8171fcde5e2ec734cc5d25d03e7362e8de@niemeyer.net","ld: fix ELF strip by removing overlap of sections\n\nThe gosymtab and gopclntab sections were pointing to the proper\ndata, but that data was already owned by the rodata section.\nSome ELF references explicitly prohibit multiple sections from\nowning the same data, and strip behaves accordingly.\n\nThe data for these sections was moved to after rodata, and the\ngosymtab and gopclntab sections now own their respective ranges.\n\nThis change makes strip happy both with and without -s being\nprovided at link time.  Note that it won't remove these sections\nbecause they are still allocated, and that's by design since\nthey are necessary at runtime for generating proper backtraces\nand similar introspection operations.\n\nUnlike the previous behavior, -s will now maintain zero-sized\ngosymtab and gopclntab sections.  This makes the implementation\nslightly cleaner.\n\nFixes issue 1242.\n\nNOTE: Tested on Linux amd64/386/arm only.\n\nR=ality, rsc\nCC=golang-dev\nhttp://codereview.appspot.com/4639077","Gustavo Niemeyer"]],"ref":"refs/heads/master","size":9,"head":"e43b0980db6d8f04704b04be2cd2ad0b6e5e14fd","push_id":35209759}