From a08436c97370fa1df802728683ca2429af93b841 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 17 Feb 2018 17:17:56 +0100 Subject: prog: give special type generators access to target --- prog/encodingexec.go | 6 +++--- prog/target.go | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/prog/encodingexec.go b/prog/encodingexec.go index 2a41e4a53..d81873b33 100644 --- a/prog/encodingexec.go +++ b/prog/encodingexec.go @@ -108,7 +108,7 @@ func (p *Prog) SerializeForExec(buffer []byte) (int, error) { foreachArg(c, func(arg, _ Arg, _ *[]Arg) { if a, ok := arg.(*PointerArg); ok && a.Res != nil { foreachSubargOffset(a.Res, func(arg1 Arg, offset uint64) { - addr := p.Target.physicalAddr(arg) + offset + addr := p.Target.PhysicalAddr(arg) + offset if isUsed(arg1) || csumUses[arg1] { w.args[arg1] = argInfo{Addr: addr} } @@ -216,7 +216,7 @@ func (p *Prog) SerializeForExec(buffer []byte) (int, error) { return len(buffer) - len(w.buf), nil } -func (target *Target) physicalAddr(arg Arg) uint64 { +func (target *Target) PhysicalAddr(arg Arg) uint64 { a, ok := arg.(*PointerArg) if !ok { panic("physicalAddr: bad arg kind") @@ -279,7 +279,7 @@ func (w *execContext) writeArg(arg Arg) { w.write(a.OpAdd) } case *PointerArg: - w.writeConstArg(a.Size(), w.target.physicalAddr(arg), 0, 0, 0, false) + w.writeConstArg(a.Size(), w.target.PhysicalAddr(arg), 0, 0, 0, false) case *DataArg: data := a.Data() w.write(execArgData) diff --git a/prog/target.go b/prog/target.go index b08236c6d..eb238981e 100644 --- a/prog/target.go +++ b/prog/target.go @@ -162,6 +162,10 @@ type Gen struct { s *state } +func (g *Gen) Target() *Target { + return g.r.target +} + func (g *Gen) Rand() *rand.Rand { return g.r.Rand } -- cgit mrf-deployment