Russ Cox
f76f120324
cmd/ld: use 64-bit alignment for large data and bss objects
...
Check for specific, important misalignment in garbage collector.
Not a complete fix for issue 599 but an important workaround.
Update #599 .
R=golang-dev, iant, dvyukov
CC=golang-dev
https://golang.org/cl/6641049
2012-10-09 12:50:06 -04:00
Dmitriy Vyukov
3aae5a0e7e
cmd/fix: disable reflect test under race detector (very slow)
...
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6642045
2012-10-09 20:21:39 +04:00
Dmitriy Vyukov
6cab8aa4e4
cmd/go: fix handling of build tags for standard commands
...
Otherwise if I add '+build !race' to e.g. src/cmd/fix/reflect_test.go,
it does not work.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6642044
2012-10-09 19:54:14 +04:00
Andrew Gerrand
4fb89c9d6a
godoc: support Playground examples on App Engine
...
Updates setup-godoc-app.bash to produce a working godoc app
by substituting the go1.0.x go/... packages with those from tip.
R=gri
CC=golang-dev
https://golang.org/cl/6587080
2012-10-09 09:57:51 +11:00
David Symonds
f8b5838123
testing: change -test.benchtime to a flag.Duration.
...
Fixes #3902 .
R=golang-dev, minux.ma, rsc, r
CC=golang-dev
https://golang.org/cl/6611059
2012-10-09 08:57:29 +11:00
Dave Cheney
905e8dfa27
cmd/5g: avoid temporaries during gcmp(reg, constant)
...
Address several instances of unneeded temporaries when using gcmp.
func M(m map[int]bool) int {
return len(m)
}
--- prog list "M" ---
0000 (/home/dfc/src/map.go:3) TEXT M+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW m+0(FP),R0
0002 (/home/dfc/src/map.go:4) MOVW $0,R1
0003 (/home/dfc/src/map.go:4) CMP R1,R0,
0004 (/home/dfc/src/map.go:4) BEQ ,6(APC)
0005 (/home/dfc/src/map.go:4) MOVW 0(R0),R0
0006 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0007 (/home/dfc/src/map.go:4) RET ,
after:
--- prog list "M" ---
0000 (/home/dfc/src/map.go:3) TEXT M+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW m+0(FP),R0
0002 (/home/dfc/src/map.go:4) CMP $0,R0,
0003 (/home/dfc/src/map.go:4) BEQ ,5(APC)
0004 (/home/dfc/src/map.go:4) MOVW 0(R0),R0
0005 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0006 (/home/dfc/src/map.go:4) RET ,
func C(c chan int) int {
return cap(c)
}
--- prog list "C" ---
0000 (/home/dfc/src/map.go:3) TEXT C+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW c+0(FP),R0
0002 (/home/dfc/src/map.go:4) MOVW $0,R1
0003 (/home/dfc/src/map.go:4) CMP R1,R0,
0004 (/home/dfc/src/map.go:4) BEQ ,6(APC)
0005 (/home/dfc/src/map.go:4) MOVW 4(R0),R0
0006 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0007 (/home/dfc/src/map.go:4) RET ,
after:
--- prog list "C" ---
0000 (/home/dfc/src/map.go:3) TEXT C+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW c+0(FP),R0
0002 (/home/dfc/src/map.go:4) CMP $0,R0,
0003 (/home/dfc/src/map.go:4) BEQ ,5(APC)
0004 (/home/dfc/src/map.go:4) MOVW 4(R0),R0
0005 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0006 (/home/dfc/src/map.go:4) RET ,
R=rsc, minux.ma, remyoudompheng
CC=golang-dev
https://golang.org/cl/6618054
2012-10-08 09:51:04 +11:00
Russ Cox
5da37c0901
cmd/8a: add SSE2 instructions
...
R=ken
CC=golang-dev
https://golang.org/cl/6614063
2012-10-07 16:36:29 -04:00
Russ Cox
c1d06cef12
cmd/8l: add SSE2 instructions
...
R=ken
CC=golang-dev
https://golang.org/cl/6610065
2012-10-07 16:36:14 -04:00
Russ Cox
d749783f70
cmd/gc: skip over reported BOMs
...
This keeps the BOM runes from causing other errors.
R=golang-dev, remyoudompheng
CC=golang-dev
https://golang.org/cl/6625062
2012-10-07 16:35:45 -04:00
Shenghou Ma
65b782e951
cmd/ld, cmd/5l: support R_ARM_PC24 and R_ARM_JUMP24, fix R_ARM_CALL
...
1. R_ARM_CALL can also be used to call a PLT entry
2. add support for R_ARM_PC24 and R_ARM_JUMP24
3. refactor, remove D_PLT32 in favor of D_CALL
Fixes #4006 .
R=rsc, dave
CC=fullung, golang-dev
https://golang.org/cl/6622057
2012-10-08 04:20:17 +08:00
Rémy Oudompheng
caff439820
cmd/gc: more graceful handling of invalid fields in widstruct.
...
The protection against segfaults does not completely solve
crashes and breaks test/fixedbugs/bug365.go
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6615058
2012-10-07 21:46:10 +02:00
Russ Cox
54191126e4
cmd/gc: avoid crash in %N print
...
R=ken2
CC=golang-dev
https://golang.org/cl/6609052
2012-10-07 15:35:01 -04:00
Rémy Oudompheng
892fa3ae6c
cmd/gc: replace "typechecking loop" by nicer errors in some cases.
...
For issue 3757:
BEFORE: test/fixedbugs/bug463.go:12: typechecking loop involving a
test/fixedbugs/bug463.go:12 a
test/fixedbugs/bug463.go:12 <node DCLCONST>
AFTER: test/fixedbugs/bug463.go:12: constant definition loop
test/fixedbugs/bug463.go:12: a uses a
For issue 3937:
BEFORE: test/fixedbugs/bug464.go:12: typechecking loop involving foo
test/fixedbugs/bug464.go:12 <T>
test/fixedbugs/bug464.go:12 foo
test/fixedbugs/bug464.go:12 <node DCLFUNC>
AFTER: test/fixedbugs/bug464.go:12: foo is not a type
Fixes #3757 .
Fixes #3937 .
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6614058
2012-10-07 17:35:21 +02:00
Daniel Morsing
87c35d8df1
cmd/gc: Don't accept qualified names as literal keys
...
Fixes #4067 .
R=golang-dev, minux.ma, dave, rsc
CC=golang-dev
https://golang.org/cl/6622056
2012-10-07 16:47:53 +02:00
Shenghou Ma
9224b4c873
cmd/gc: fix output filename generation on Windows
...
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6610060
2012-10-07 14:14:46 +08:00
Akshat Kumar
51e8fe5b1b
cmd/gc: don't dereference a nil Type pointer in widstruct
...
The nil dereference in the next few lines doesn't seem
to cause a segmentation fault on Unix, but does seem
to halt the Go compiler.
The following is a test case:
>>>
package main
func mine(int b) int {
return b + 2
}
func main() {
mine()
c = mine()
}
<<<
Without this change only the following is caught:
typecheck.go:3: undefined: b
typecheck.go:4: undefined: b
with it, we catch all the errors:
typecheck.go:3: undefined: b
typecheck.go:4: undefined: b
typecheck.go:10: undefined: c
typecheck.go:10: cannot assign to c .
R=rsc, minux.ma
CC=golang-dev
https://golang.org/cl/6542060
2012-10-07 14:11:59 +08:00
Daniel Morsing
a45777fe99
cmd/gc: Don't export embedded builtins
...
Fixes #4124 .
R=golang-dev, dave, minux.ma, remyoudompheng, rsc
CC=golang-dev
https://golang.org/cl/6543057
2012-10-07 06:53:57 +02:00
Dave Cheney
01ddc8bd9a
cmd/5g: avoid temporary in slice bounds check
...
before
func addr(s[]int) *int {
return &s[2]
10c1c: e28d0008 add r0, sp, #8
10c20: e5901004 ldr r1, [r0, #4 ]
10c24: e3a02002 mov r2, #2
10c28: e1510002 cmp r1, r2
10c2c: 8a000000 bhi 10c34 <main.addr+0x34>
10c30: eb0035e6 bl 1e3d0 <runtime.panicindex>
10c34: e5900000 ldr r0, [r0]
10c38: e2800008 add r0, r0, #8
10c3c: e58d0014 str r0, [sp, #20 ]
10c40: e49df004 pop {pc} ; (ldr pc, [sp], #4 )
after
func addr(s[]int) *int {
return &s[2]
10c1c: e28d0008 add r0, sp, #8
10c20: e5901004 ldr r1, [r0, #4 ]
10c24: e3510002 cmp r1, #2
10c28: 8a000000 bhi 10c30 <main.addr+0x30>
10c2c: eb0035e6 bl 1e3cc <runtime.panicindex>
10c30: e5900000 ldr r0, [r0]
10c34: e2800008 add r0, r0, #8
10c38: e58d0014 str r0, [sp, #20 ]
10c3c: e49df004 pop {pc} ; (ldr pc, [sp], #4 )
Also, relax gcmp restriction that 2nd operand must be a register. A followup
CL will address the remaining TODO items.
R=rsc, remyoudompheng, minux.ma
CC=golang-dev
https://golang.org/cl/6620064
2012-10-07 11:37:14 +11:00
Rémy Oudompheng
0b2ca9e62f
cmd/gc: avoid clobbering the AST in cgen_callmeth.
...
It confused the detection of init loops when involving
method calls.
Fixes #3890 .
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6620067
2012-10-07 00:52:40 +02:00
Rémy Oudompheng
46fcfdaa7d
cmd/6g: fix out of registers when chaining integer divisions.
...
Fixes #4201 .
R=golang-dev, rsc
CC=golang-dev, remy
https://golang.org/cl/6622055
2012-10-07 00:30:29 +02:00
Rémy Oudompheng
94acfde22e
cmd/gc: make rnd() more 64-bit-friendly.
...
Fixes #4200 .
R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/6619057
2012-10-07 00:29:55 +02:00
Dave Cheney
bbccfddb84
cmd/5g: avoid temporary during constant asop
...
func add() int {
var a int
a += 10
a += 20
a += 30
a -= 10
a -= 20
a -= 30
return a
}
before
--- prog list "add" ---
0000 (/home/dfc/src/add.go:5) TEXT add+0(SB),$0-4
0001 (/home/dfc/src/add.go:6) MOVW $0,R2
0002 (/home/dfc/src/add.go:7) MOVW $10,R0
0003 (/home/dfc/src/add.go:7) ADD R0,R2,R1
0004 (/home/dfc/src/add.go:8) MOVW $20,R0
0005 (/home/dfc/src/add.go:8) ADD R0,R1
0006 (/home/dfc/src/add.go:9) MOVW $30,R0
0007 (/home/dfc/src/add.go:9) ADD R0,R1
0008 (/home/dfc/src/add.go:10) MOVW $10,R0
0009 (/home/dfc/src/add.go:10) SUB R0,R1
0010 (/home/dfc/src/add.go:11) MOVW $20,R0
0011 (/home/dfc/src/add.go:11) SUB R0,R1
0012 (/home/dfc/src/add.go:12) MOVW $30,R0
0013 (/home/dfc/src/add.go:12) SUB R0,R1,R2
0014 (/home/dfc/src/add.go:12) MOVW R2,R0
0015 (/home/dfc/src/add.go:13) MOVW R2,R1
0016 (/home/dfc/src/add.go:13) MOVW R2,.noname+0(FP)
0017 (/home/dfc/src/add.go:13) RET ,
after
--- prog list "add" ---
0000 (/home/dfc/src/add.go:5) TEXT add+0(SB),$0-4
0001 (/home/dfc/src/add.go:6) MOVW $0,R0
0002 (/home/dfc/src/add.go:7) ADD $10,R0
0003 (/home/dfc/src/add.go:8) ADD $20,R0
0004 (/home/dfc/src/add.go:9) ADD $30,R0
0005 (/home/dfc/src/add.go:10) SUB $10,R0
0006 (/home/dfc/src/add.go:11) SUB $20,R0
0007 (/home/dfc/src/add.go:12) SUB $30,R0,R2
0008 (/home/dfc/src/add.go:13) MOVW R2,R0
0009 (/home/dfc/src/add.go:13) MOVW R2,.noname+0(FP)
0010 (/home/dfc/src/add.go:13) RET ,
R=rsc, minux.ma, remyoudompheng
CC=golang-dev
https://golang.org/cl/6584056
2012-10-06 21:01:49 +10:00
Dmitriy Vyukov
4cc7bf326a
pprof: add goroutine blocking profiling
...
The profiler collects goroutine blocking information similar to Google Perf Tools.
You may see an example of the profile (converted to svg) attached to
http://code.google.com/p/go/issues/detail?id=3946
The public API changes are:
+pkg runtime, func BlockProfile([]BlockProfileRecord) (int, bool)
+pkg runtime, func SetBlockProfileRate(int)
+pkg runtime, method (*BlockProfileRecord) Stack() []uintptr
+pkg runtime, type BlockProfileRecord struct
+pkg runtime, type BlockProfileRecord struct, Count int64
+pkg runtime, type BlockProfileRecord struct, Cycles int64
+pkg runtime, type BlockProfileRecord struct, embedded StackRecord
R=rsc, dave, minux.ma, r
CC=gobot, golang-dev, r, remyoudompheng
https://golang.org/cl/6443115
2012-10-06 12:56:04 +04:00
Jan Ziak
16bea49ede
cmd/cc: map C int to int32 in Go defs
...
R=golang-dev, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/6621052
2012-10-06 13:56:12 +08:00
Dave Cheney
ed0c5dd11f
cmd/5g: avoid temporary during constant OINDEX
...
func addr(s[]int) *int {
return &s[2]
}
--- prog list "addr" ---
0000 (/home/dfc/src/addr.go:5) TEXT addr+0(SB),$0-16
0001 (/home/dfc/src/addr.go:6) MOVW $s+0(FP),R0
0002 (/home/dfc/src/addr.go:6) MOVW 4(R0),R1
0003 (/home/dfc/src/addr.go:6) MOVW $2,R2
0004 (/home/dfc/src/addr.go:6) CMP R2,R1,
0005 (/home/dfc/src/addr.go:6) BHI ,7(APC)
0006 (/home/dfc/src/addr.go:6) BL ,runtime.panicindex+0(SB)
0007 (/home/dfc/src/addr.go:6) MOVW 0(R0),R0
0008 (/home/dfc/src/addr.go:6) MOVW $8,R1
0009 (/home/dfc/src/addr.go:6) ADD R1,R0
0010 (/home/dfc/src/addr.go:6) MOVW R0,.noname+12(FP)
0011 (/home/dfc/src/addr.go:6) RET ,
becomes
--- prog list "addr" ---
0000 (/home/dfc/src/addr.go:5) TEXT addr+0(SB),$0-16
0001 (/home/dfc/src/addr.go:6) MOVW $s+0(FP),R0
0002 (/home/dfc/src/addr.go:6) MOVW 4(R0),R1
0003 (/home/dfc/src/addr.go:6) MOVW $2,R2
0004 (/home/dfc/src/addr.go:6) CMP R2,R1,
0005 (/home/dfc/src/addr.go:6) BHI ,7(APC)
0006 (/home/dfc/src/addr.go:6) BL ,runtime.panicindex+0(SB)
0007 (/home/dfc/src/addr.go:6) MOVW 0(R0),R0
0008 (/home/dfc/src/addr.go:6) ADD $8,R0
0009 (/home/dfc/src/addr.go:6) MOVW R0,.noname+12(FP)
0010 (/home/dfc/src/addr.go:6) RET ,
R=rsc, remyoudompheng, minux.ma
CC=golang-dev
https://golang.org/cl/6590056
2012-10-06 11:51:06 +10:00
Rémy Oudompheng
3a4e156ae1
cmd/5g: fix out of registers in nested calls, add compiler torture test.
...
R=golang-dev, dave, daniel.morsing, rsc
CC=golang-dev, remy
https://golang.org/cl/6586072
2012-10-05 23:30:49 +02:00
Andrew Gerrand
3fd5e0be9d
godoc: make examples editable and runnable in playground
...
R=dsymonds
CC=golang-dev
https://golang.org/cl/6523045
2012-10-04 16:53:05 +10:00
Shenghou Ma
7e2e4a732d
cmd/go: add support for -test.benchmem
...
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6587074
2012-10-04 13:20:18 +08:00
Rob Pike
d87d488953
cmd/api: add exception file
...
Fixes build.
R=golang-dev, adg, bradfitz, dsymonds, dave
CC=golang-dev
https://golang.org/cl/6586074
2012-10-04 11:35:17 +10:00
Rémy Oudompheng
2de064b63c
cmd/8g: do not take the address of string/slice for &s[i]
...
A similar change was made in 6g recently.
LEALs in cmd/go: 31440 before, 27867 after.
benchmark old ns/op new ns/op delta
BenchmarkBinaryTree17 7065794000 6723617000 -4.84%
BenchmarkFannkuch11 7767395000 7477945000 -3.73%
BenchmarkGobDecode 34708140 34857820 +0.43%
BenchmarkGobEncode 10998780 10960060 -0.35%
BenchmarkGzip 1603630000 1471052000 -8.27%
BenchmarkGunzip 242573900 240650400 -0.79%
BenchmarkJSONEncode 120842200 117966100 -2.38%
BenchmarkJSONDecode 247254900 249103100 +0.75%
BenchmarkMandelbrot200 29237330 29241790 +0.02%
BenchmarkParse 8111320 8096865 -0.18%
BenchmarkRevcomp 2595780000 2694153000 +3.79%
BenchmarkTemplate 276679600 264497000 -4.40%
benchmark old ns/op new ns/op delta
BenchmarkAppendFloatDecimal 429 416 -3.03%
BenchmarkAppendFloat 780 740 -5.13%
BenchmarkAppendFloatExp 746 700 -6.17%
BenchmarkAppendFloatNegExp 752 694 -7.71%
BenchmarkAppendFloatBig 1228 1108 -9.77%
BenchmarkAppendFloat32Integer 457 416 -8.97%
BenchmarkAppendFloat32ExactFraction 662 631 -4.68%
BenchmarkAppendFloat32Point 771 735 -4.67%
BenchmarkAppendFloat32Exp 722 672 -6.93%
BenchmarkAppendFloat32NegExp 724 659 -8.98%
BenchmarkAppendFloat64Fixed1 429 400 -6.76%
BenchmarkAppendFloat64Fixed2 463 442 -4.54%
Update #1914 .
R=golang-dev, daniel.morsing, rsc
CC=golang-dev
https://golang.org/cl/6574043
2012-10-02 08:19:27 +02:00
Dmitriy Vyukov
041fc8bf96
race: gc changes
...
This is the first part of a bigger change that adds data race detection feature:
https://golang.org/cl/6456044
This change makes gc compiler instrument memory accesses when supplied with -b flag.
R=rsc, nigeltao, lvd
CC=golang-dev
https://golang.org/cl/6497074
2012-10-02 10:05:46 +04:00
Dave Cheney
7b36acc4ac
cmd/5g: avoid temporary during constant binary op
...
This CL is an attempt to backport the abop code generation from 6g. This improves the generation of the range offset if the increment can be encoded directly via Operand2 shift encoding.
0023 (/home/dfc/src/range.go:7) BGE ,29(APC)
0024 (/home/dfc/src/range.go:7) MOVW 0(R3),R5
0025 (/home/dfc/src/range.go:7) MOVW $4,R1
0026 (/home/dfc/src/range.go:7) ADD R1,R3,R3
0027 (/home/dfc/src/range.go:8) ADD R5,R4,R4
0028 (/home/dfc/src/range.go:7) B ,17(APC)
becomes
0023 (/home/dfc/src/range.go:7) BGE ,28(APC)
0024 (/home/dfc/src/range.go:7) MOVW 0(R3),R0
0025 (/home/dfc/src/range.go:7) ADD $4,R3,R3
0026 (/home/dfc/src/range.go:8) ADD R0,R4,R4
0027 (/home/dfc/src/range.go:7) B ,17(APC)
Benchmarks are unimpressive
dfc@qnap:~/go/test/bench/go1$ ~/go/misc/benchcmp {old,new}.txt
benchmark old ns/op new ns/op delta
BenchmarkBinaryTree17 2147483647 2147483647 +0.93%
BenchmarkFannkuch11 2147483647 2147483647 -2.52%
BenchmarkGobDecode 196135200 195842000 -0.15%
BenchmarkGobEncode 78581650 76734450 -2.35%
BenchmarkGzip 2147483647 2147483647 -0.47%
BenchmarkGunzip 1087243000 1070254000 -1.56%
BenchmarkJSONEncode 1107558000 1146077000 +3.48%
BenchmarkJSONDecode 2147483647 2147483647 -0.07%
BenchmarkMandelbrot200 2147483647 2147483647 -0.77%
BenchmarkParse 74328550 71653400 -3.60%
BenchmarkRevcomp 111123900 109325950 -1.62%
BenchmarkTemplate 2147483647 2147483647 -0.82%
benchmark old MB/s new MB/s speedup
BenchmarkGobDecode 3.91 3.92 1.00x
BenchmarkGobEncode 9.77 10.00 1.02x
BenchmarkGzip 3.65 3.66 1.00x
BenchmarkGunzip 17.85 18.13 1.02x
BenchmarkJSONEncode 1.75 1.69 0.97x
BenchmarkJSONDecode 0.83 0.83 1.00x
BenchmarkParse 0.78 0.81 1.04x
BenchmarkRevcomp 22.87 23.25 1.02x
BenchmarkTemplate 0.84 0.85 1.01x
R=remyoudompheng, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/6564067
2012-10-02 08:12:39 +10:00
Robert Griesemer
5a03cd56a1
cmd/godoc: clearer comments in FormatSelections
...
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6561073
2012-10-01 14:17:25 -07:00
Akshat Kumar
48bd5c5010
cmd/go/build: Add magic data for Plan 9 binaries.
...
This change allows the Go build and install tools to
recognize Plan 9 i386 and amd64 binaries.
R=rsc, r, rminnich
CC=golang-dev
https://golang.org/cl/6575064
2012-10-01 15:04:52 -04:00
Luuk van Dijk
78ba449a3c
cmd/gc: Missing break in esc switch.
...
R=rsc
CC=golang-dev
https://golang.org/cl/6594053
2012-10-01 16:33:06 +02:00
Shenghou Ma
9a3bc51c81
test/fixedbugs/bug454.go: add a test for CL 6564052
...
Also mention that ignoring second blank identifier of range is required by the spec in the code.
Fixes #4173 .
R=daniel.morsing, remyoudompheng, r
CC=golang-dev
https://golang.org/cl/6594043
2012-09-29 23:23:56 +08:00
Paul Chang
7c8e26ee2f
cmd/godoc: fix minor bug in FormatSelections.
...
FormatSelections tries to call a nil function value if lw is nil
and the final entry in the selections array is non-nil. Luckily,
this doesn't actually happen in practice since godoc doesn't use
this combination (no line numbers, but with selections).
R=gri
CC=gobot, golang-dev
https://golang.org/cl/6488106
2012-09-28 14:19:43 -07:00
Rémy Oudompheng
617b7cf166
cmd/[568]g: header cleanup.
...
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6573059
2012-09-27 08:34:00 +02:00
Rob Pike
b46dd48dd3
cmd/api: delete redundant text from deletion message
...
R=bradfitz, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/6543064
2012-09-27 15:39:56 +10:00
Rémy Oudompheng
6feb61325a
cmd/6g, cmd/8g: fix two "out of fixed registers" cases.
...
In two cases, registers were allocated too early resulting
in exhausting of available registers when nesting these
operations.
The case of method calls was due to missing cases in igen,
which only makes calls but doesn't allocate a register for
the result.
The case of 8-bit multiplication was due to a wrong order
in register allocation when Ullman numbers were bigger on the
RHS.
Fixes #3907 .
Fixes #4156 .
R=rsc
CC=golang-dev, remy
https://golang.org/cl/6560054
2012-09-26 21:17:11 +02:00
Daniel Morsing
7936ab58f7
cmd/gc: Don't calculate second value in range if it is blank.
...
Low hanging fruit optimization. Will remove an expensive copy if the range variable is an array.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6564052
2012-09-26 21:10:29 +02:00
Shenghou Ma
e039c405c8
cmd/6a, cmd/6l: add support for AES-NI instrutions and PSHUFD
...
This CL adds support for the these 7 new instructions to 6a/6l in
preparation of the upcoming CL for AES-NI accelerated crypto/aes:
AESENC, AESENCLAST, AESDEC, AESDECLAST, AESIMC, AESKEYGENASSIST,
and PSHUFD.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5970055
2012-09-27 01:53:08 +08:00
Shenghou Ma
5490814c30
cmd/go, cmd/ld: fix libgcc order and add __image_base__ symbol for windows
...
Fixes #4063 .
R=alex.brainman, rsc
CC=golang-dev
https://golang.org/cl/6543066
2012-09-26 22:34:25 +08:00
Joel Sing
e80fccb441
cmd/go: assume that code in $GOROOT is up to date
...
Do not check compiler/linker timestamps for packages that are in the
$GOROOT. Avoids trying to rebuild non-writable standard packages when
timestamps have not been retained on the Go binaries.
Fixes #4106 .
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6533053
2012-09-27 00:00:50 +10:00
Shenghou Ma
f2fadfefaf
cmd/5c: fix dataflag annotation
...
file old_size new_size base@c1ce95068533
bin/go 14717392 6287824 5918236
this huge size difference is due to GC data for runtime.mheap
(NOPTR dataflag is not obeyed).
R=rsc, dave
CC=golang-dev
https://golang.org/cl/6547051
2012-09-25 14:42:44 +08:00
Russ Cox
5c4e2570c1
cmd/dist: new version for string for development branch
...
Remove VERSION, which was forcing version to 'devel'.
Old:
$ go version
go version devel
New:
$ go version
go version devel +0a3866d6cc6b Mon Sep 24 20:08:05 2012 -0400
The date and time (and time zone) is that of the most recent commit,
not the time of the build itself. With some effort we could normalize
the zone, but I don't think it's worth the effort (more C coding,
since Mercurial is unhelpful).
R=r, dsymonds
CC=golang-dev
https://golang.org/cl/6569049
2012-09-24 21:35:20 -04:00
Russ Cox
10ea6519e4
build: make int 64 bits on amd64
...
The assembly offsets were converted mechanically using
code.google.com/p/rsc/cmd/asmlint. The instruction
changes were done by hand.
Fixes #2188 .
R=iant, r, bradfitz, remyoudompheng
CC=golang-dev
https://golang.org/cl/6550058
2012-09-24 20:57:01 -04:00
Rémy Oudompheng
33cceb09e2
cmd/{5g,6g,8g,6c}: remove unused macro, use %E to print etype.
...
R=golang-dev, rsc, dave
CC=golang-dev
https://golang.org/cl/6569044
2012-09-24 23:44:00 +02:00
Rémy Oudompheng
f4e76d5e02
cmd/6g, cmd/8g: add OINDREG, ODOT, ODOTPTR cases to igen.
...
Apart from reducing the number of LEAL/LEAQ instructions by about
30%, it gives 8g easier registerization in several cases,
for example in strconv. Performance with 6g is not affected.
Before (386):
src/pkg/strconv/decimal.go:22 TEXT (*decimal).String+0(SB),$240-12
src/pkg/strconv/extfloat.go:540 TEXT (*extFloat).ShortestDecimal+0(SB),$584-20
After (386):
src/pkg/strconv/decimal.go:22 TEXT (*decimal).String+0(SB),$196-12
src/pkg/strconv/extfloat.go:540 TEXT (*extFloat).ShortestDecimal+0(SB),$420-20
Benchmarks with GOARCH=386 (on a Core 2).
benchmark old ns/op new ns/op delta
BenchmarkBinaryTree17 7110191000 7079644000 -0.43%
BenchmarkFannkuch11 7769274000 7766514000 -0.04%
BenchmarkGobDecode 33454820 34755400 +3.89%
BenchmarkGobEncode 11675710 11007050 -5.73%
BenchmarkGzip 2013519000 1593855000 -20.84%
BenchmarkGunzip 253368200 242667600 -4.22%
BenchmarkJSONEncode 152443900 120763400 -20.78%
BenchmarkJSONDecode 304112800 247461800 -18.63%
BenchmarkMandelbrot200 29245520 29240490 -0.02%
BenchmarkParse 8484105 8088660 -4.66%
BenchmarkRevcomp 2695688000 2841263000 +5.40%
BenchmarkTemplate 363759800 277271200 -23.78%
benchmark old ns/op new ns/op delta
BenchmarkAtof64Decimal 127 129 +1.57%
BenchmarkAtof64Float 166 164 -1.20%
BenchmarkAtof64FloatExp 308 300 -2.60%
BenchmarkAtof64Big 584 571 -2.23%
BenchmarkAppendFloatDecimal 440 430 -2.27%
BenchmarkAppendFloat 995 776 -22.01%
BenchmarkAppendFloatExp 897 746 -16.83%
BenchmarkAppendFloatNegExp 900 752 -16.44%
BenchmarkAppendFloatBig 1528 1228 -19.63%
BenchmarkAppendFloat32Integer 443 453 +2.26%
BenchmarkAppendFloat32ExactFraction 812 661 -18.60%
BenchmarkAppendFloat32Point 1002 773 -22.85%
BenchmarkAppendFloat32Exp 858 725 -15.50%
BenchmarkAppendFloat32NegExp 848 728 -14.15%
BenchmarkAppendFloat64Fixed1 447 431 -3.58%
BenchmarkAppendFloat64Fixed2 480 462 -3.75%
BenchmarkAppendFloat64Fixed3 461 457 -0.87%
BenchmarkAppendFloat64Fixed4 509 484 -4.91%
Update #1914 .
R=rsc, nigeltao
CC=golang-dev, remy
https://golang.org/cl/6494107
2012-09-24 23:07:44 +02:00
Russ Cox
54af752865
cmd/gc: fix escape analysis bug
...
Was not handling &x.y[0] and &x.y.z correctly where
y is an array or struct-valued field (not a pointer).
R=ken2
CC=golang-dev
https://golang.org/cl/6551059
2012-09-24 15:53:12 -04:00