- 14 Feb, 2014 16 commits
-
-
Russ Cox authored
When the liveness code doesn't know a function doesn't return (but the generated code understands that), the liveness analysis invents a control flow edge that is not really there, which can cause variables to seem spuriously live. This is particularly bad when the variables are uninitialized. TBR=iant CC=golang-codereviews https://golang.org/cl/63720043
-
Dmitriy Vyukov authored
Currently it periodically fails with the following message. The immediate cause is the wrong base register when obtaining g in sys_windows_amd64/386.s. But there are several secondary problems as well. runtime: unknown pc 0x0 after stack split panic: invalid memory address or nil pointer dereference fatal error: panic during malloc [signal 0xc0000005 code=0x0 addr=0x60 pc=0x42267a] runtime stack: runtime.panic(0x7914c0, 0xc862af) c:/src/perfer/work/windows-amd64-a15f344a9efa/go/src/pkg/runtime/panic.c:217 +0x2c runtime: unexpected return pc for runtime.externalthreadhandler called from 0x0 R=rsc, alex.brainman CC=golang-codereviews https://golang.org/cl/63310043
-
Russ Cox authored
The registerization code needs the function to end in a RET, even if that RET is actually unreachable. The liveness code needs to avoid such unreachable RETs. It had a special case for final RET after JMP, but no case for final RET after UNDEF. Instead of expanding the special cases, let fixjmp - which already knows what is and is not reachable definitively - mark the unreachable RET so that the liveness code can identify it. TBR=iant CC=golang-codereviews https://golang.org/cl/63680043
-
Russ Cox authored
A normal RET is treated as using the return values, but a tail jump RET does not - it is jumping to the function that is going to fill in the return values. If a tail jump RET is recorded as using the return values, since nothing initializes them they will be marked as live on entry to the function, which is clearly wrong. Found and tested by the new code in plive.c that looks for variables that are incorrectly live on entry. That code is disabled for now because there are other cases remaining to be fixed. But once it is enabled, test/live1.go becomes a real test of this CL. TBR=iant CC=golang-codereviews https://golang.org/cl/63570045
-
Russ Cox authored
Any initialization of a variable by a block copy or block zeroing or by multiple assignments (componentwise copying or zeroing of a multiword variable) needs to emit a VARDEF. These cases were not. Fixes #7205. TBR=iant CC=golang-codereviews https://golang.org/cl/63650044
-
Russ Cox authored
The test added in CL 63630043 fails on 5g and 8g because they were not emitting the VARDEF instruction when clearing a fat value by clearing the components. 6g had the call in the right place. Hooray tests. TBR=iant CC=golang-codereviews https://golang.org/cl/63660043
-
Mikio Hara authored
This CL enables the current tree to work with FreeBSD 10-STABLE on ARM EABI platforms, though there are still a few test fails. Also updates documentation. LGTM=iant R=iant, dave CC=golang-codereviews https://golang.org/cl/61060044
-
Mikio Hara authored
TestDNSThreadLimit creates tons of DNS queries and it occasionally causes an unintentional traffic jam and/or crash of some virtual machine software, especially its builtin networking stuff. We can run TestDNSThreadLimit with -dnsflood flag instead. LGTM=dave, rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/63600043
-
Russ Cox authored
The "fat" referred to being used for multiword values only. We're going to use it for non-fat values sometimes too. No change other than the renaming. TBR=iant CC=golang-codereviews https://golang.org/cl/63650043
-
Russ Cox authored
Was spuriously marking results live on entry to function. TBR=iant CC=golang-codereviews https://golang.org/cl/63640043
-
Shenghou Ma authored
Old: prog.go:9: invalid operation: this[i] (index of type int) New: prog.go:9: invalid operation: this[i] (type int does not support indexing) LGTM=r R=golang-codereviews, r CC=golang-codereviews https://golang.org/cl/52540043
-
Russ Cox authored
Before, an unnamed return value turned into an ONAME node n with n->sym named ~anon%d, and n->orig == n. A blank-named return value turned into an ONAME node n with n->sym named ~anon%d but n->orig == the original blank n. Code generation and printing uses n->orig, so that this node formatted as _. But some code does not use n->orig. In particular the liveness code does not know about the n->orig convention and so mishandles blank identifiers. It is possible to fix but seemed better to avoid the confusion entirely. Now the first kind of node is named ~r%d and the second ~b%d; both have n->orig == n, so that it doesn't matter whether code uses n or n->orig. After this change the ->orig field is only used for other kinds of expressions, not for ONAME nodes. This requires distinguishing ~b from ~r names in a few places that care. It fixes a liveness analysis bug without actually changing the liveness code. TBR=ken2 CC=golang-codereviews https://golang.org/cl/63630043
-
Russ Cox authored
Make the loop nesting depth of &x depend on where x is declared, not on where the &x appears. The latter is only a conservative estimate of the former. Being more careful can avoid some variables escaping, and it is easier to reason about. It would have avoided issue 7313, although that was still a bug worth fixing. Not much effect in the tree: one variable in the whole tree is saved from a heap allocation (something in x509 parsing). LGTM=daniel.morsing R=daniel.morsing CC=golang-codereviews https://golang.org/cl/62380043
-
Markus Zimmermann authored
The methods MoveAfter and MoveBefore of the container/list package did silently corrupt the interal structure of the list if a mark element is used which is not an element of the list. LGTM=gri R=golang-codereviews, gobot, gri CC=golang-codereviews https://golang.org/cl/60980043
-
Robert Griesemer authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/63620043
-
Nick Craig-Wood authored
Tweak the ARM assembler to improve its performance. * Use TEQ instead of CMP which preserves the carry flag. This means we can avoid saving and restoring CPSR which is very slow. * Use conditional instructions to read the value of the carry flag. * Use 3 argument ARM instructions to save instructions * Improve scheduling for MOVW instructions (LDR) * Use RSB constant to save an instruction in bitLen Results of -test.bench 'VV|VW|VU|WW|Bit' -test.benchtime 3s on Samsung Exynos5 Chromebook. There are a few small regressions in the benchmarks which I believe to be noise, perhaps due to different cacheline alignment. The changes to bitLen are apparently no faster, however less instructions means less I-cache usage which is a win. I suspect it will be a win on older ARM processors. benchmark old ns/op new ns/op delta BenchmarkAddVV_1 48 14 -70.84% BenchmarkAddVV_2 87 17 -80.25% BenchmarkAddVV_3 126 20 -83.97% BenchmarkAddVV_4 165 23 -86.00% BenchmarkAddVV_5 204 26 -87.21% BenchmarkAddVV_1e1 399 41 -89.72% BenchmarkAddVV_1e2 3921 315 -91.97% BenchmarkAddVV_1e3 39085 2972 -92.40% BenchmarkAddVV_1e4 390330 29623 -92.41% BenchmarkAddVV_1e5 3935366 343431 -91.27% BenchmarkAddVW_1 20 10 -49.04% BenchmarkAddVW_2 60 14 -76.53% BenchmarkAddVW_3 99 16 -83.38% BenchmarkAddVW_4 140 18 -86.50% BenchmarkAddVW_5 179 21 -88.04% BenchmarkAddVW_1e1 376 33 -91.20% BenchmarkAddVW_1e2 3933 256 -93.49% BenchmarkAddVW_1e3 39630 2378 -94.00% BenchmarkAddVW_1e4 396218 23623 -94.04% BenchmarkAddVW_1e5 3972901 238403 -94.00% BenchmarkAddMulVVW_1 11 11 -4.27% BenchmarkAddMulVVW_2 15 15 +0.00% BenchmarkAddMulVVW_3 18 19 +4.37% BenchmarkAddMulVVW_4 21 21 +4.29% BenchmarkAddMulVVW_5 24 24 -0.82% BenchmarkAddMulVVW_1e1 40 39 -2.70% BenchmarkAddMulVVW_1e2 329 326 -0.91% BenchmarkAddMulVVW_1e3 3200 3098 -3.19% BenchmarkAddMulVVW_1e4 38457 40013 +4.05% BenchmarkAddMulVVW_1e5 461880 428580 -7.21% BenchmarkBitLen0 5 5 -0.19% BenchmarkBitLen1 5 5 +0.00% BenchmarkBitLen2 5 5 -0.56% BenchmarkBitLen3 5 5 +0.38% BenchmarkBitLen4 5 5 +0.19% BenchmarkBitLen5 5 5 +0.56% BenchmarkBitLen8 5 5 -0.19% BenchmarkBitLen9 5 5 -0.56% BenchmarkBitLen16 5 5 -0.19% BenchmarkBitLen17 5 5 -0.37% BenchmarkBitLen31 5 5 -1.30% BenchmarkBitset 72 70 -2.49% BenchmarkBitsetNeg 1584 396 -75.00% BenchmarkBitsetOrig 1990 1980 -0.50% BenchmarkBitsetNegOrig 4031 2877 -28.63% benchmark old MB/s new MB/s speedup BenchmarkAddVV_1 657.71 2251.28 3.42x BenchmarkAddVV_2 730.65 3700.37 5.06x BenchmarkAddVV_3 757.29 4754.30 6.28x BenchmarkAddVV_4 772.95 5541.58 7.17x BenchmarkAddVV_5 781.30 6125.59 7.84x BenchmarkAddVV_1e1 800.33 7814.14 9.76x BenchmarkAddVV_1e2 815.98 10129.62 12.41x BenchmarkAddVV_1e3 818.73 10767.07 13.15x BenchmarkAddVV_1e4 819.82 10802.12 13.18x BenchmarkAddVV_1e5 813.14 9317.73 11.46x BenchmarkAddVW_1 1539.56 3006.13 1.95x BenchmarkAddVW_2 1057.66 4502.20 4.26x BenchmarkAddVW_3 960.67 5797.65 6.04x BenchmarkAddVW_4 913.19 6776.86 7.42x BenchmarkAddVW_5 891.72 7467.82 8.37x BenchmarkAddVW_1e1 850.12 9681.85 11.39x BenchmarkAddVW_1e2 813.48 12494.27 15.36x BenchmarkAddVW_1e3 807.45 13451.80 16.66x BenchmarkAddVW_1e4 807.64 13545.64 16.77x BenchmarkAddVW_1e5 805.46 13422.64 16.66x BenchmarkAddMulVVW_1 2727.29 2847.66 1.04x BenchmarkAddMulVVW_2 4162.30 4158.69 1.00x BenchmarkAddMulVVW_3 5236.91 5015.98 0.96x BenchmarkAddMulVVW_4 6090.27 5837.52 0.96x BenchmarkAddMulVVW_5 6549.86 6598.60 1.01x BenchmarkAddMulVVW_1e1 7850.72 8068.00 1.03x BenchmarkAddMulVVW_1e2 9724.38 9794.40 1.01x BenchmarkAddMulVVW_1e3 9997.18 10328.58 1.03x BenchmarkAddMulVVW_1e4 8320.88 7997.39 0.96x BenchmarkAddMulVVW_1e5 6928.20 7466.50 1.08x LGTM=gri R=golang-codereviews, dave, gri CC=golang-codereviews https://golang.org/cl/61290043
-
- 13 Feb, 2014 24 commits
-
-
David Symonds authored
4 KB is a bit too small in some situations (e.g. panic during a template execution), and ends up with an unhelpfully-truncated trace. 64 KB should be much more likely to capture the useful information. There's not a garbage generation issue, since this code should only be triggered when there's something seriously wrong with the program. LGTM=bradfitz R=bradfitz CC=golang-codereviews https://golang.org/cl/63520043
-
Shenghou Ma authored
Fixes #6850. LGTM=agl R=golang-codereviews, agl CC=golang-codereviews https://golang.org/cl/60500046
-
Shenghou Ma authored
for example, we now rewrite *_Ctype_int to *C.int. Fixes #6781. LGTM=iant R=golang-codereviews, rsc, iant CC=golang-codereviews https://golang.org/cl/36860043
-
Russ Cox authored
Missed this suggestion in CL 57680046. LGTM=iant R=iant CC=golang-codereviews https://golang.org/cl/63390043
-
David du Colombier authored
In file included from src/lib9/utf/utfecpy.c:17:0: src/lib9/utf/utfdef.h:28:0: error: "nil" redefined [-Werror] In file included from src/lib9/utf/utfrrune.c:17:0: src/lib9/utf/utfdef.h:28:0: error: "nil" redefined [-Werror] LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/63410043
-
David du Colombier authored
This change depends on CL 57170052. LGTM=rsc R=rsc, bradfitz CC=golang-codereviews https://golang.org/cl/60840049
-
David du Colombier authored
warning: src/lib9/fmt/dorfmt.c:64 unreachable code RETURN warning: src/lib9/fmt/fltfmt.c:184 set and not used: p warning: src/lib9/utf/utflen.c:35 unreachable code RETURN warning: src/lib9/utf/utfrrune.c:45 unreachable code RETURN warning: src/lib9/utf/utfrune.c:44 unreachable code RETURN LGTM=rsc R=rsc, iant, gobot CC=golang-codereviews https://golang.org/cl/57170052
-
Daniel Morsing authored
Logically, the init statement is in the enclosing scopes loopdepth, not inside the for loop. Fixes #7313. LGTM=rsc R=golang-codereviews, gobot, rsc CC=golang-codereviews https://golang.org/cl/62430043
-
Carlos Castillo authored
go/build is changed to list the .m files in a package, and match them for build constraints, adding them to a new field: Package.MFiles. The go tool is changed to support building .m files and linking in the results during CGO and SWIG builds. This means packages that create a C interface to calls Objective-C code from go are now go-gettable without producing and distributing .syso files. This change is analogous to the one in Go 1.2 made to support C++ built code. This change doesn't support .mm files (Objective C++). Also added support for these MFiles to go list's -json mode. Fixes #6536. LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://golang.org/cl/60590044
-
Kyle Isom authored
This change adds support for parsing and serialisation of PKCS #10, certificate signature requests. LGTM=agl R=golang-codereviews, agl CC=agl, golang-codereviews, nick https://golang.org/cl/49830048
-
Michael T. Jones authored
TextMarshaller and TextUnmarshaller to ease transport of unlimited precision rational numbers. Fixes #7287. Consists of encode and decode functions and two test functions, one using JSON and one using XML. Each verifies round trips for integers (rationals with denominator == 1) and for fractional vaues. LGTM=gri R=gri, cookieo9, bradfitz, mtj CC=golang-codereviews https://golang.org/cl/61180043
-
Dmitriy Vyukov authored
c:\src\go\pkg\obj\windows_amd64\libgc.a(lex.o): In function `catcher': c:/src/go/src/cmd/gc/lex.c:181: undefined reference to `noted' LGTM=0intro R=0intro CC=golang-codereviews https://golang.org/cl/63270043
-
Russ Cox authored
This cleans up the code significantly, and it avoids any possible problems with madvise zeroing out some but not all of the data. Fixes #6400. LGTM=dave R=dvyukov, dave CC=golang-codereviews https://golang.org/cl/57680046
-
Dmitriy Vyukov authored
The issue was that one of the MSpan_Sweep callers was doing sweep with preemption enabled. Additional checks are added. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/62990043
-
David du Colombier authored
LGTM=rsc R=rsc, jas, gobot CC=ality, golang-codereviews https://golang.org/cl/51650051
-
Nicolas Owens authored
TestLookupHost expects that no duplicate addresses are returned. when cs is consulted for a name, e.g net!localhost!1, it will possibly return multiple available paths, e.g. via il and tcp. this confuses the tests. LGTM=aram R=jas, 0intro, aram CC=golang-codereviews https://golang.org/cl/58120045
-
Alexander Larsson authored
This adds support for archives with the SCHILY.xattr field in the pax header. This is what gnu tar and star generate. Fixes #7154. LGTM=dsymonds R=golang-codereviews, gobot, dsymonds CC=golang-codereviews https://golang.org/cl/54570043
-
Shenghou Ma authored
While we're at it, fix a wrong for statement in cmd/8g. LGTM=rsc R=rsc, golang-codereviews CC=golang-codereviews https://golang.org/cl/62700044
-
David du Colombier authored
warning: src/cmd/gc/popt.c:700 format mismatch d VLONG, arg 4 warning: src/cmd/gc/popt.c:700 format mismatch d VLONG, arg 5 LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/62910043
-
Russ Cox authored
TBR=dvyukov CC=golang-codereviews https://golang.org/cl/62960043
-
Russ Cox authored
This seems to be what causes the 'chunk mismatch' errors. I don't know why the server tells us there's nothing to upload, but at the least we can warn that it did, so that the user will try again. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/62840043
-
Andrew Gerrand authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/62890043
-
Andrew Gerrand authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/62880043
-
Andrew Gerrand authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/62870043
-