diff options
| author | Keith Randall <khr@golang.org> | 2016-02-24 14:07:25 -0800 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2016-02-24 22:10:27 +0000 |
| commit | 9c269e6a46fce4ee19e1603eaa9f5bb78dec78fd (patch) | |
| tree | ee37df837155e99fdfdb1d3b6dd4a017894a0c44 /src | |
| parent | a9581e2e7abfa0dd7033ee75ef6a64ce0a89bee2 (diff) | |
| download | go-9c269e6a46fce4ee19e1603eaa9f5bb78dec78fd.tar.xz | |
cmd/compile: don't free the Prog list if we look at it after flush
Only tests do this, provide them a hook to disable freeing
after flush.
Change-Id: I810c6c51414a93f476a18ba07b807e16092bf8cf
Reviewed-on: https://go-review.googlesource.com/19907
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/asm/internal/asm/endtoend_test.go | 2 | ||||
| -rw-r--r-- | src/cmd/internal/obj/objfile.go | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/cmd/asm/internal/asm/endtoend_test.go b/src/cmd/asm/internal/asm/endtoend_test.go index 4bc7e2fb74..4a3e0ee265 100644 --- a/src/cmd/asm/internal/asm/endtoend_test.go +++ b/src/cmd/asm/internal/asm/endtoend_test.go @@ -179,7 +179,7 @@ Diff: t.Errorf(format, args...) ok = false } - obj.Flushplist(ctxt) + obj.FlushplistNoFree(ctxt) for p := top; p != nil; p = p.Link { if p.As == obj.ATEXT { diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go index 2d5c82376b..6757067dd6 100644 --- a/src/cmd/internal/obj/objfile.go +++ b/src/cmd/internal/obj/objfile.go @@ -116,6 +116,12 @@ func Writeobjdirect(ctxt *Link, b *Biobuf) { } func Flushplist(ctxt *Link) { + flushplist(ctxt, true) +} +func FlushplistNoFree(ctxt *Link) { + flushplist(ctxt, false) +} +func flushplist(ctxt *Link, freeProgs bool) { var flag int var s *LSym var p *Prog @@ -318,7 +324,9 @@ func Flushplist(ctxt *Link) { ctxt.Plist = nil ctxt.Plast = nil ctxt.Curp = nil - ctxt.freeProgs() + if freeProgs { + ctxt.freeProgs() + } } func Writeobjfile(ctxt *Link, b *Biobuf) { |
