From 8b1f28225e0d080f243a4643690579d140f71e93 Mon Sep 17 00:00:00 2001 From: lyyyuna Date: Sun, 8 Aug 2021 16:16:10 +0800 Subject: [PATCH] watch: add numstmts --- pkg/cover/agentwatch.tpl | 20 +++++++++++--------- pkg/cover/internal/tool/cover.go | 3 ++- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/pkg/cover/agentwatch.tpl b/pkg/cover/agentwatch.tpl index 69191c8..485e27d 100644 --- a/pkg/cover/agentwatch.tpl +++ b/pkg/cover/agentwatch.tpl @@ -80,8 +80,8 @@ func init() { cov := fmt.Sprintf("%s:%d.%d,%d.%d %d %d", block.name, block.pos[3*i+0], uint16(block.pos[3*i+2]), block.pos[3*i+1], uint16(block.pos[3*i+2] >> 16), - 1, - 0) + block.stmts, + 1) err = ws.WriteMessage(websocket.TextMessage, []byte(cov)) if err != nil { @@ -128,13 +128,14 @@ func getRegisterInfo() (*processInfo, error) { // type blockInfo struct { - name string - pos []uint32 - i int + name string + pos []uint32 + i int + stmts int } // UploadCoverChangeEvent_{{.Random}} is non-blocking -func UploadCoverChangeEvent_{{.Random}}(name string, pos []uint32, i int) { +func UploadCoverChangeEvent_{{.Random}}(name string, pos []uint32, i int, stmts uint16) { if watchEnabled == false { return @@ -143,9 +144,10 @@ func UploadCoverChangeEvent_{{.Random}}(name string, pos []uint32, i int) { // make sure send is non-blocking select { case watchChannel <- &blockInfo{ - name: name, - pos: pos, - i: i, + name: name, + pos: pos, + i: i, + stmts: int(stmts), }: default: } diff --git a/pkg/cover/internal/tool/cover.go b/pkg/cover/internal/tool/cover.go index fb2a93a..53a186a 100644 --- a/pkg/cover/internal/tool/cover.go +++ b/pkg/cover/internal/tool/cover.go @@ -419,7 +419,8 @@ func atomicCounterStmt(f *File, counter string) string { // watchCounterStmt returns the expression: __count[23]++;UploadCoverChangeEvent(blockname, pos[:], index) func watchCounterStmt(f *File, counter string) string { - return fmt.Sprintf("%s++; UploadCoverChangeEvent_%v(%s.BlockName, %s.Pos[:], %v)", counter, f.random, f.varVar, f.varVar, len(f.blocks)) + index := len(f.blocks) + return fmt.Sprintf("%s++; UploadCoverChangeEvent_%v(%s.BlockName, %s.Pos[:], %v, %s.NumStmt[%v])", counter, f.random, f.varVar, f.varVar, index, f.varVar, index) } // QINIU