-Xint: template or c++ interpreter?

David Holmes david.holmes at oracle.com
Mon Oct 28 18:10:30 PDT 2013


On 29/10/2013 4:17 AM, Francis ANDRE wrote:
> Bob
> Le 28/10/2013 15:18, Bob Vandette a écrit :
>> I don't think we'd want to change the version string to include this
>> type of implementation specific detail.
>> If this is just for testing, how about looking for symbols specific to
>> the interpreter implementation in the JVM?
> The purpose is to provide an evidence that the interpreter is the
> template based or the cpp based interpreter -- I am working to align the
> cpp interpreter on WXP/Cygwin/VS2010 and with the patches I will provide
> also the jtreg test reports for proving that the cpp interpreter is
> working -- but I need a way to identify the cpp interpreter as simple
> string somewhere in the jtreg report. I was thinking that a slight
> change to the -version option would be accepted. So how could be
> provided this information? Through an addition keyword?

You can set your own version string as part of the build process, so you 
could select something to identify a template interpreter build versus a 
cpp interpreter build. Simplest variable to hijack would be the 
MILESTONE setting. I set it to testing and now see:

java version "1.8.0-testing"
Java(TM) SE Runtime Environment (build 1.8.0-testing-b112)
Java HotSpot(TM) Server VM (build 25.0-b54, mixed mode)

but if you want to modify the Hotspot part that can be done too. Eg 
HOTSPOT_VM_DISTRO controls the "Java HotSpot(TM)" part above (for Oracle 
JDK build, an OpenJDK build has different info) so you could augment that.



> Francis
>> nm -C libjvm.so | grep TemplateTable::initialize
>> or
>> nm -C libjvm.so |  grep CppInterpreter::initialize
>> Bob.
>> On Oct 27, 2013, at 2:41 PM, Francis ANDRE
>> <francis.andre.kampbell at orange.fr> wrote:
>>> Hi Volker
>>> Le 27/10/2013 18:06, Volker Simonis a écrit :
>>>> Hi Francis,
>>>> as Bob pointed out, choosing the C++ vs. the Template Interpreter is
>>>> currently a compile time decision. And I think
>>>> it won't be easy to change that, because you will probably get name
>>>> clashes with the current source code.
>>> I have no problem with the decision of choosing the C++ vs the
>>> template interpreter at compile time. My initial question was related
>>> to the fact that the hotspot code is relatively complex to understand
>>> at large and I wanted to be sure of running either the cpp
>>> interpreter either the template interpreter with may be an additional
>>> internal parameter. So the define CC_INTERP makes the choice and
>>> that's ok.
>>>> Regards,
>>>> Volker
>>>> PS: by the way, your example is still compile time.
>>> Yes, it is compile time but that information is produced running java
>>> -version and would be useful as a tracker of which interpreter is
>>> used. I want to identify the interpreter used in the jdk jtreg tests
>>> to avoid uncertainty.
>>> Francis
>>>> On Sun, Oct 27, 2013 at 3:56 PM, Francis ANDRE
>>>> <francis.andre.kampbell at orange.fr> wrote:
>>>>> Bob
>>>>> I would like to distinguished at run time the kind of interpreter
>>>>> used.
>>>>> Would something like that be acceptable or is there another way to
>>>>> publish
>>>>> it? (may be the wording is bad, but that's an idea).
>>>>> const char* Abstract_VM_Version::vm_info_string() {
>>>>>    switch (Arguments::mode()) {
>>>>>      case Arguments::_int:
>>>>> #ifdef CC_INTERP
>>>>>        return UseSharedSpaces ? "code base interpreted mode,
>>>>> sharing" : "code
>>>>> base interpreted mode";
>>>>> #else
>>>>>        return UseSharedSpaces ? "template interpreted mode, sharing" :
>>>>> "template interpreted mode";
>>>>> #endif // CC_INTERP
>>>>>      case Arguments::_mixed:
>>>>>        return UseSharedSpaces ? "mixed mode, sharing"       :
>>>>> "mixed mode";
>>>>>      case Arguments::_comp:
>>>>>        return UseSharedSpaces ? "compiled mode, sharing"    :
>>>>> "compiled
>>>>> mode";
>>>>>    };
>>>>> Francis
>>>>> Le 26/10/2013 23:27, Bob Vandette a écrit :
>>>>>> Compiling Hotspot with CC_INTERP does exclude the template
>>>>>> interpreter.
>>>>>> You either build a template Interpreter or C++ Interpreter.
>>>>>> Bob.
>>>>>> On Oct 26, 2013, at 4:19 PM, Francis ANDRE
>>>>>> <francis.andre.kampbell at orange.fr> wrote:
>>>>>>> Hi
>>>>>>> The -Xint option specifies to the JVM to run only in interpreted
>>>>>>> mode,
>>>>>>> but since compiling the JVM with CC_INTERP do not exclude the
>>>>>>> template
>>>>>>> Interpreter, I am wondering if there is an option to specify that
>>>>>>> only the
>>>>>>> template Interpreter or only the C++ Interpreter be used?
>>>>>>> Francis

More information about the hotspot-dev mailing list