I wanna achieve a function that mark value as a watch point, when the value changes, it triggers an event LUA_HOOKWATCH. My intention is to find at witch point and who stealthily changed the value of a specific address(TValue).
I redefine TValuefiled as "Value value_, int watch_:1, int tt_:31". So when TValue, the variant, who stores the value executes assignment operation, it notifies, if watch_ flag == 1;
I also redefine setobj "...; if (o1->watch_) luaD_hook(LUA_HOOKWATCH); o1->value_ = o2->value_; o1->tt_ = o2->tt_";
My issue is how to mark all Tvalues born with watch_ = 0(not to be watched by default); and how to locate the Tvalue I hope to watch so that I can mark its watch_ = 1.
More detail, what assignment macros such as setobj, setobj2s, should I redefine?