[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [DotGNU]method calls and extra indirection

From: Gomi Kapoor
Subject: Re: [DotGNU]method calls and extra indirection
Date: Thu, 1 Apr 2004 16:23:13 +0100 (BST)

Hi Rhys, 
> The "call_extern" opcode hasn't been used since pnet
> 0.3.6 (released in May 
> 2002).  What version are you looking at?  In version
> 0.3.8, "call" and 
> "call_extern" were collapsed into a single opcode
> named "call" and the 
> instruction was streamlined to reduce its overhead.
I am using the current release 0.6.4
I read the pnet/engine/HACKING file and then tried to
look for the same in the code.

The second instruction, "call", is handled in a
similar manner. The CVMCoder_CallMethod function
(cvmc_call.c) outputs a CVM "call_extern" instruction
for the "Console.WriteLine" method. This CVM
instruction means "call an external method that we may
not have translated yet".
When execution reaches the "call_extern" instruction
(cvm_call.c), the engine notices that
"Console.WriteLine" has not yet been translated.  So
it calls out to "_ILConvertMethod" and creates the CVM
verion of that method.  And so on.

> I think I did this because of threading: there is no
> thread-safe way to 
> back-patch a "call_extern" to turn it into "call",
> without running the risk 
> that another thread will get a corrupted instruction
> during the modification.  
> I have since avoided back-patching as a solution.
OK, so can we say there is an always an indirection
overhead for every method call?

> There are a number of IDE's and graphical debuggers
> around (search on  Every pnet 
> developer uses a
> different one, so I suggest that 
> you try a few and see which one suits you best.  The
> file 
> "pnet/engine/HACKING" also contains some tips on
> debugging the engine.
Currently I am using "gvim" for the editor, "grep" for
searching the relavent portions of code and "gdb" for
the debugging. 

Gomi Kapoor

Yahoo! India Insurance Special: Be informed on the best policies, services, 
tools and more. 
Go to:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]