Commit 12c286c1 authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

cmd/compile: minor writebarrier cleanup

This CL mainly moves some work to the switch on w.Op,
to make a follow-up change simpler and clearer.

Updates #19838

Change-Id: I86f3181c380dd60960afcc24224f655276b8956c
Reviewed-on: https://go-review.googlesource.com/42010
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
parent fc08a19c
......@@ -64,7 +64,7 @@ func dse(f *Func) {
continue
}
if last != nil {
b.Fatalf("two final stores - simultaneous live stores %s %s", last, v)
b.Fatalf("two final stores - simultaneous live stores %s %s", last.LongString(), v.LongString())
}
last = v
}
......
......@@ -172,15 +172,12 @@ func writebarrier(f *Func) {
memThen := mem
memElse := mem
for _, w := range stores {
var val *Value
ptr := w.Args[0]
var typ interface{}
if w.Op != OpStoreWB {
typ = &ExternSymbol{Sym: w.Aux.(Type).Symbol()}
}
pos = w.Pos
pos := w.Pos
var fn *obj.LSym
var typ *ExternSymbol
var val *Value
switch w.Op {
case OpStoreWB:
fn = writebarrierptr
......@@ -188,8 +185,10 @@ func writebarrier(f *Func) {
case OpMoveWB:
fn = typedmemmove
val = w.Args[1]
typ = &ExternSymbol{Sym: w.Aux.(Type).Symbol()}
case OpZeroWB:
fn = typedmemclr
typ = &ExternSymbol{Sym: w.Aux.(Type).Symbol()}
}
// then block: emit write barrier call
......@@ -255,7 +254,7 @@ func writebarrier(f *Func) {
// wbcall emits write barrier runtime call in b, returns memory.
// if valIsVolatile, it moves val into temp space before making the call.
func wbcall(pos src.XPos, b *Block, fn *obj.LSym, typ interface{}, ptr, val, mem, sp, sb *Value, valIsVolatile bool) *Value {
func wbcall(pos src.XPos, b *Block, fn *obj.LSym, typ *ExternSymbol, ptr, val, mem, sp, sb *Value, valIsVolatile bool) *Value {
config := b.Func.Config
var tmp GCNode
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment