diff options
Diffstat (limited to 'src/pkg/runtime/os_windows.c')
| -rw-r--r-- | src/pkg/runtime/os_windows.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/pkg/runtime/os_windows.c b/src/pkg/runtime/os_windows.c index d867b0d50e..6c9d687b70 100644 --- a/src/pkg/runtime/os_windows.c +++ b/src/pkg/runtime/os_windows.c @@ -291,7 +291,14 @@ runtime·stdcall(void *fn, int32 count, ...) m->libcall.fn = fn; m->libcall.n = count; m->libcall.args = (uintptr*)&count + 1; + if(m->profilehz != 0) { + // leave pc/sp for cpu profiler + m->libcallpc = (uintptr)runtime·getcallerpc(&fn); + m->libcallsp = (uintptr)runtime·getcallersp(&fn); + m->libcallg = g; + } runtime·asmcgocall(runtime·asmstdcall, &m->libcall); + m->libcallsp = 0; return (void*)m->libcall.r1; } |
