|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
Where is the entry point of java callsHello,
My question is where is the entry point of java calls in hotspot. If I have a simple application as follow: public class HelloWorld{ public static void main(String[] args){ hello2(); } public static void hello2(){ System.out.println("hello 2."); } } If I observe at javaCalls:call_helper(), I can only see method HelloWorld.main(), I cannot see method HelloWorld.hello2(). Why? and How can I find the entry point of method HelloWorld.hello2()? Thanks a lot! Colin |
|
|
Re: Where is the entry point of java callsHi, guys.
Could anyone help me ? Or do I need express my question more clearly? I really need help for this question. Thanks a lot! Colin
|
|
|
Re: Where is the entry point of java callsColin,
We don't use javaCalls for calls from one java method to another. I believe you are writing an interpreter (or modifying the C++ interpreter)? So you want to look at the code you generated - which will invoke java methods directly. See the bytecodes for invoke_virtual/special/ interface. hope this helps, Karen On Mar 4, 2009, at 12:53 PM, Colin(Du Li) wrote: > > Hi, guys. > Could anyone help me ? Or do I need express my question more clearly? > I really need help for this question. > Thanks a lot! > > Colin > > Colin(Du Li) wrote: >> >> Hello, >> My question is where is the entry point of java calls in hotspot. >> If I have a simple application as follow: >> >> public class HelloWorld{ >> public static void main(String[] args){ >> hello2(); >> } >> public static void hello2(){ >> System.out.println("hello 2."); >> } >> } >> >> If I observe at javaCalls:call_helper(), I can only see method >> HelloWorld.main(), I cannot see method HelloWorld.hello2(). Why? >> and How >> can I find the entry point of method HelloWorld.hello2()? >> >> Thanks a lot! >> >> Colin >> >> > > -- > View this message in context: http://www.nabble.com/Where-is-the-entry-point-of-java-calls-tp22298233p22335492.html > Sent from the OpenJDK Hotspot Virtual Machine mailing list archive > at Nabble.com. > |
|
|
Re: Where is the entry point of java callsHi, Karen,
Thanks for your prompt reply! What I wanna do is to trap all the java method call, and pick out the native calls (JNI). I still have two questions. 1. How can I read the generated bytecodes. When I use Vi to open a .class file, it's not very readable. 2. Does every method call for another java method can be trapped at invoke_virtual/special/static in bytecodeInterpreter.cpp? Thanks again. Colin.
|
|
|
Re: Where is the entry point of java callsColin,
Let's start with reading the bytecodes. You have a .class file. Run javap -c Main > Main.jasm to get the bytecodes from Main.class - now you can view the translated generated bytecodes using your favorite editor (read, not modify) In the sample I looked at, in which there was a private native Class myNative(args) in the bytecodes for the caller, there was the instruction: invokespecial #83; // Method myNative:(...signature for args) #83 refers to the constant pool entry #83 See java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html Look in section 4.1 for details on the class file format. 2. Method invocation should use one of: invokevirtual/special/static/ interface so find that bytecode in your generated code. You can put a breakpoint in the interpreter you are debugging - for when it checks for a native method call. good luck, Karen On Mar 4, 2009, at 1:36 PM, Colin(Du Li) wrote: > > Hi, Karen, > > Thanks for your prompt reply! > What I wanna do is to trap all the java method call, and pick out > the native > calls (JNI). I still have two questions. > 1. How can I read the generated bytecodes. When I use Vi to open > a .class > file, it's not very readable. > 2. Does every method call for another java method can be trapped at > invoke_virtual/special/static in bytecodeInterpreter.cpp? > > Thanks again. > > Colin. > > Karen Kinnear wrote: >> >> Colin, >> >> We don't use javaCalls for calls from one java method to another. >> I believe you are writing an interpreter (or modifying the C++ >> interpreter)? >> So you want to look at the code you generated - which will invoke >> java methods directly. See the bytecodes for invoke_virtual/special/ >> interface. >> >> hope this helps, >> Karen >> >> On Mar 4, 2009, at 12:53 PM, Colin(Du Li) wrote: >> >>> >>> Hi, guys. >>> Could anyone help me ? Or do I need express my question more >>> clearly? >>> I really need help for this question. >>> Thanks a lot! >>> >>> Colin >>> >>> Colin(Du Li) wrote: >>>> >>>> Hello, >>>> My question is where is the entry point of java calls in hotspot. >>>> If I have a simple application as follow: >>>> >>>> public class HelloWorld{ >>>> public static void main(String[] args){ >>>> hello2(); >>>> } >>>> public static void hello2(){ >>>> System.out.println("hello 2."); >>>> } >>>> } >>>> >>>> If I observe at javaCalls:call_helper(), I can only see method >>>> HelloWorld.main(), I cannot see method HelloWorld.hello2(). Why? >>>> and How >>>> can I find the entry point of method HelloWorld.hello2()? >>>> >>>> Thanks a lot! >>>> >>>> Colin >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/Where-is-the-entry-point-of-java-calls-tp22298233p22335492.html >>> Sent from the OpenJDK Hotspot Virtual Machine mailing list archive >>> at Nabble.com. >>> >> >> >> > > -- > View this message in context: http://www.nabble.com/Where-is-the-entry-point-of-java-calls-tp22298233p22336385.html > Sent from the OpenJDK Hotspot Virtual Machine mailing list archive > at Nabble.com. > |
|
|
Re: Where is the entry point of java callsHi, Karen,
Thanks a lot! It really helps! Colin.
|
| Free embeddable forum powered by Nabble | Forum Help |