FastCallable's certainly the right spot if anything will come close.  My main 
concern is that it'll probably leave a lot of stuff out...

In 2.0 this is actually easier.  You could modify the DLR in MetaAction.cs to 
wrap every single dynamic operation - whether that be addition, calling 
something, getting a member, etc...  There's a method called GetMetaObjectRule 
and it has:

            Expression body = rewriter.VisitNode(AddReturn(binding.Expression, 
retType));

You could modify this to be something like:

        Expression tmp = Expression.Variable(body.Type);
        body = Expression.Scope(
                        Expression.Call(
                                Expression.Comma(
                                        
Expression.Call(typeof(MyType).GetMethod("Enter")),     // MyType is some 
public type somewhere...
                                        Expression.Assign(tmp, body),
                                        
Expression.Call(typeof(MyType).GetMethod("Exit")),
                                        tmp
                                )
                        ),
                        tmp
                )
        );

And you'd get information on every call - warning, this code was compiled with 
Outlook.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Orestis Markou
Sent: Friday, August 15, 2008 2:25 AM
To: users@lists.ironpython.com
Subject: [IronPython] Patched, profiling IronPython executable?

Hi,

following all the discussion about profiling etc, I was poking around in
IP1.1.2 source code, trying to find out if there is a 'bottleneck' of
sorts, that all function calls are threaded through. My thinking was
that it would be then possible to surround this with profiling
information, logging time taken etc. and compile a profiling ipy.exe.

 From my venture, I think that ICallable is what I should be looking
for. I see that it has many implementors, but I guess FastCallable (in
all its generated glory) should capture a lot of the cases, right?

Am I even on the right track here?

Orestis Markou
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to