aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2016-02-24 14:07:25 -0800
committerKeith Randall <khr@golang.org>2016-02-24 22:10:27 +0000
commit9c269e6a46fce4ee19e1603eaa9f5bb78dec78fd (patch)
treeee37df837155e99fdfdb1d3b6dd4a017894a0c44 /src
parenta9581e2e7abfa0dd7033ee75ef6a64ce0a89bee2 (diff)
downloadgo-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.go2
-rw-r--r--src/cmd/internal/obj/objfile.go10
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) {