Rob Shearman wrote:
Hi Rob,
Looks like I was using an old revision of the code, since I hadn't seen
the Spincount code. I will add it.
I have been
optimizing it and adding more feature to make it stabler,
so spin lock support for MP builds was on my list. Thanks for your
patch... I'll take a look at it.
It would be good if someone could implement the stack backtrace
capture functions as we could then remove critsec debugging hacks from
all over the wine tree.
Ah, so that's what was using the hacks. If they are removed, then the
code would be much easier to share.
By the way, I've made some serious performance improvements to the code,
by adding a static buffer which is used to hold up to 64 debug sections.
The rest are then allocated by using the heap. This has a two fold
advantage:
1) The first CS (used by the Heap Manager on ROS, probably on WINE too),
one for RtlInitializeHeapManager and the other for RtlAllocateHeap now
also have a valid Debug Section, because they use the static one.
2) Because the kernel-call is removed, it offers significant improvments
on ROS, on WINE too, since there is less code that must run (a tiny
loop versus a whole heap allocation).
I'm thinking about sending a patch to WineDevel... since it's only two
functions to be added and the brute heap calls to be replaced by the
function names, I think it would be easy to integrate.
Best regards,
Alex Ionescu