From: Shashank G. <sha...@gm...> - 2012-11-14 15:18:46
|
Thanks for the reply On Wed, Nov 14, 2012 at 8:25 PM, Eliot Moss <mo...@cs...> wrote: > On 11/14/2012 8:11 AM, Shashank Gupta wrote: > >> Hi, >> >> I am working on JIKES RVM and was trying to understand the flow of >> control in case of a simple java >> program( lets say testfile.java). >> >> I am trying to understand the exact point where flow from JIKES RVM >> passes to the machine >> instructions of "testfile.java". >> By experimenting with the source code, I could see that the flow goes >> from MainThread.java to >> Reflection.java . Using BaseLine Compiler, it compiles the bytecode of >> program into machine code and >> stores the machine code in an array. >> However, I could not understand what happens after >> "Magic.invokeMethodReturning..**" is called. The >> corresponding method in Magic.java is not reached. The comment say that >> "call site should have been >> hijacked by magic in compiler". >> How does this happen and which part of the source code does this take >> place? >> >> Basically, I want to print each of the machine-level instructions of >> "testfile.java" which are >> executed, hence I was trying to get access to the machine code array as >> it was being executed. Is >> there any other easier way to do that ? >> > > Do you really need to print it as it is *executed*, or will > a dump of the code array do? The latter you can request with > appropriate flags to the compilation system. > > I want only those instructions which are actually executed. For example it there is an 'if' condition, then only machine codes corresponding to the branch executed should be shown. > Anyway, as to magics, the Magic class really just describes the > interface. For any given magic, wherever there is a call of it > the compiler emits special code to perform the indicated action. > If you poke around each compiler you can find where that happens. > In any case, I am pretty sure that invokeMethodReturning will do > the actual invocation. > > The approach of using magic methods is one of the cool things > about Jikes RVM that allows most of the system to be written > in Java, but the "hijacking" is admittedly mysterious until > you see it explained! > > Regards -- Eliot Moss > -- Shashank Gupta 4th Year, B.Tech Department of Computer Science and Engineering Indian Institute of Technology Delhi |