[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: May nearly have simple statistical profiler working (need help).
From: |
Neil Jerram |
Subject: |
Re: May nearly have simple statistical profiler working (need help). |
Date: |
16 Jul 2001 19:35:49 +0100 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 |
>>>>> "Rob" == Rob Browning <address@hidden> writes:
Rob> Neil Jerram <address@hidden> writes:
>> Actually, having looked at your code, I see that this could be
>> the problem. `(make-stack #t)' will give you a stack from the
>> current code position right back up to the most recent
>> `(start-stack ...)' expression. For code executed from the
>> REPL, this means everything back up to the `(start-stack
>> 'repl-stack ...)' in scm-style-repl/-eval at line 2502 in
>> boot-9.scm.
>>
>> Apply frame traps, on the other hand, are active within the
>> dynamic scope of the `with-traps' expression in
>> error-catching-loop at line 2268. So, since
Rob> I don't know if it matters, but I only use
Rob> (trap-enable/disable 'apply-frame) where appropriate. I
Rob> don't fiddle with any other evaluator/debugger options (well
Rob> actually, I guess I do in my .guile file...)
>> and since error-catching-loop only calls its thunk inside
>> with-traps, there will be a lot of applications for which the
>> apply-frame trap will fire but which you'll never see in the
>> stack from (make-stack #t).
Rob> I'm not sure this is an issue. In my code the apply-frame
Rob> trap is only enabled whenever the profiler is active. I turn
Rob> it on in statprof-start, and turn it off in statprof-stop.
Rob> (Actually, I also turn it off during some critical sections
Rob> inside the handlers, but those should be balanced and
Rob> transparent.)
OK, but the firing of apply traps requires both `(trap-enable
'apply-frame)' and `(debug-enable 'traps)' [SCM_TRAPS_P in C]. And
`with-traps' is basically
(dynamic-wind
(debug-enable 'traps)
(thunk)
(debug-disable 'traps))
So, once you've done a `(statprof-start)', apply traps will fire for
any application inside the dynamic scope of the `with-traps' that I
mentioned before. And this scope is slightly wider than that of the
`(start-stack 'repl-stack (primitive-eval sourc))'. In ASCII art...
Guile's stack base (start-stack 'repl-stack ...) code position
/ | |
|-------- stack-id #f (A)---------|-- stack-id 'repl-stack (B)--|
|----- traps disabled ------|------- traps enabled -------------|
| | : |
| (with-traps ...) |
| | : |
|------------(1)------------|-(2)-|------------(3)--------------|
The profile signal handler can fire with the code position in any of
regions 1, 2 and 3; the trap handler can fire in regions 2 and 3.
`(make-stack #t ...)' will always give you either stack A or stack B,
but _never_ the two joined together. If you get a stack B --
i.e. region 3 -- you're OK, since everything in stack B is also
subject to apply traps. But if you get a stack A -- regions 1 and 2
-- some of the stack items that you count come from region 1, where
traps are not enabled.
>> PS. ISTR that Keisuke had some profiling code too; is your
>> code related to his?
Rob> Nope. AFAIK, I'm the only one working on a statistical
Rob> profiler right now. I started trying to make an exact
Rob> profiler, but I realized that that wouldn't work the way I
Rob> wanted for tail-recursive code. The way I was implementing
Rob> the profiler, it would have killed tail-recursions and
Rob> explode the stack. (Not a very non-intrusive profiler really
Rob> :>).
I'm afraid I'm missing something. In what way is the trap handler
part of your profiler non-exact?
Neil
- Re: Debugging plans, (continued)
- Re: Debugging plans, Thien-Thi Nguyen, 2001/07/01
- Re: Debugging plans, Rob Browning, 2001/07/06
- Re: Debugging plans, Neil Jerram, 2001/07/07
- May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/13
- Re: May nearly have simple statistical profiler working (need help)., Neil Jerram, 2001/07/14
- Re: May nearly have simple statistical profiler working (need help)., Neil Jerram, 2001/07/15
- Re: May nearly have simple statistical profiler working (need help)., Neil Jerram, 2001/07/15
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/16
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/16
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/16
- Re: May nearly have simple statistical profiler working (need help).,
Neil Jerram <=
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/16
- Re: May nearly have simple statistical profiler working (need help)., Neil Jerram, 2001/07/17
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/18
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/18
- Re: May nearly have simple statistical profiler working (need help)., Neil Jerram, 2001/07/18
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/18
- Re: May nearly have simple statistical profiler working (need help)., Neil Jerram, 2001/07/16
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/16
- Re: May nearly have simple statistical profiler working (need help)., Rob Browning, 2001/07/16
- Re: May nearly have simple statistical profiler working (need help)., Neil Jerram, 2001/07/16