On Fri, Oct 5, 2012 at 7:27 AM, Joerg-Cyril.Hoehle@t-systems.com wrote:
I found your message very unclear.
The patch adds support for OpenMP programs like this:
And then you start talking about vcomp_fork without telling us where it comes from and what it should do.
Good point - it's unfair to expect people to run Visual C and look at its .cod / .asm listing files as my message suggests. I'll document the vcomp execution model better in my next draft.
So I'll guess from the names.
- vcomp_for_static/sections_init sound like startup code initialisation of BSS and DATA segments.
No, those are called at the start of a new parallel section by every participating thread. They set up thread-local stuff.
- fork sounds like running code with thread-local copies to BSS and DATA I guess vcomp eats up one register or parameter to keep a pointer to the thread-local storage.
It means 'Run this helper function on all cores, and pass it these parameters, which are all pointers to local variables'.
p_vcomp_fork(0, 1, _test_vcomp_fork_worker1, &ncalls);
Your code does not explain what the first parameter is.
It's a boolean saying whether to actually run in parallel, or just in the current thread.
I believe that va_list etc. is not going to lead you anywhere.
I'm going to give Maarten's suggestion a shot. If it works, the only assembly left will be a nearly verbatim copy of code in oleaut32/typelib.c
Does this help?
Yes, your questions are very helpful. I'll run the next draft by both you and Maarten if you don't mind. - Dan