Request for Comments: Backport of JDK-8166317: InterpreterCodeSize should be computed

Zhengyu Gu zgu at redhat.com
Mon Sep 17 15:07:02 UTC 2018



On 09/17/2018 11:01 AM, Leslie Zhai wrote:
> Hi Zhengyu,
> 
> Could you please generate webrev for me?  Thank you very much!

http://cr.openjdk.java.net/~zgu/8166317_8u/webev.00/

-Zhengyu


> 
> 
> 在 2018年09月17日 15:38, David Holmes 写道:
>> Hi Leslie,
>>
>> Patches must be submitted using OpenJDK infrastructure for legal 
>> purposes. Please get someone to host your patch on 
>> cr.openjdk.java.net, or else (if it is small) inline it in your email.
>>
>> Thanks,
>> David
>>
>> On 17/09/2018 5:26 PM, Leslie Zhai wrote:
>>> Hi all,
>>>
>>> I would like to backport the fix for:
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8166317
>>>
>>> To OpenJDK 8 updates dev:
>>>
>>> http://hg.openjdk.java.net/jdk8u/jdk8u-dev
>>>
>>> The fix is mostly the same as the version that was committed in 10 
>>> except that there are:
>>>
>>> * no _code_end or _data_end private members in the 
>>> hotspot/src/share/vm/code/codeBlob.hpp
>>>
>>> * no get_code_heap(...) function in the 
>>> hotspot/src/share/vm/code/codeCache.cpp
>>>
>>> in OpenJDK 8, so I just:
>>>
>>> * use _data_offset private member to update code_end() and data_end() 
>>> in the adjust_size
>>>
>>> * use _heap private member to call deallocate_tail(...) function
>>>
>>> * leave the opportunity for MIPS if need to override 
>>> `g1_barrier_stubs_init`
>>>
>>> Here is the patch:
>>>
>>> https://raw.githubusercontent.com/xiangzhai/jdk8u-dev/master/JDK-8166317-Backport.patch 
>>>
>>>
>>> Please review it and give me some comments, thanks a lot!
>>>
>>> ----- 8< -------- 8< -------- 8< -------- 8< -------- 8< -------- 8< ---
>>>
>>> $ jtreg -vmoptions:"-XX:+UnlockDiagnosticVMOptions 
>>> -XX:+PrintInterpreter" 
>>> -dir:/home/loongson/zhaixiang/jdk8-mips/jdk/test -verbose:all 
>>> -exclude:/home/loongson/zhaixiang/jdk8-mips/jdk/test/ProblemList.txt 
>>> -conc:2 -Xmx512m -a -ignore:quiet -timeoutFactor:5 -agentvm 
>>> -testjdk:/home/loongson/zhaixiang/jdk8-mips/build/linux-mips64-normal-server-release/images/j2sdk-image 
>>> com/sun/jdi/AccessSpecifierTest.java
>>>
>>> * Applied the patch, theres no more waste in the CodeCache after 
>>> interpreter generation and the output of -XX:+PrintInterpreter looks 
>>> as follows for jdk8u-dev on mips64el:
>>>
>>> Agent[0].stdout: 
>>> ----------------------------------------------------------------------
>>> Agent[0].stdout: Interpreter
>>> Agent[0].stdout:
>>> Agent[0].stdout: code size        =    163K bytes
>>> Agent[0].stdout: total space      =    163K bytes
>>> Agent[0].stdout: wasted space     =      0K bytes
>>> Agent[0].stdout:
>>> Agent[0].stdout: # of codelets    =    263
>>> Agent[0].stdout: avg codelet size =    636 bytes
>>>
>>> ...
>>>
>>> AccessSpecifierTest: passed
>>>
>>> * Dropped the patch, the used/wasted ratio for the interpreter part 
>>> of the code cache (which can be dumped with -XX:+PrintInterpreter) 
>>> looks as follows for jdk8u-dev on mips64el:
>>>
>>> Agent[0].stdout: 
>>> ----------------------------------------------------------------------
>>> Agent[0].stdout: Interpreter
>>> Agent[0].stdout:
>>> Agent[0].stdout: code size        =    163K bytes
>>> Agent[0].stdout: total space      =    499K bytes
>>> Agent[0].stdout: wasted space     =    336K bytes
>>> Agent[0].stdout:
>>> Agent[0].stdout: # of codelets    =    263
>>> Agent[0].stdout: avg codelet size =    636 bytes
>>>
>>> ...
>>>
>>> STDOUT:
>>> #
>>> # A fatal error has been detected by the Java Runtime Environment:
>>> #
>>> #  Internal Error (interpreter.hpp:109), pid=23725, 
>>> tid=0x000000fff2f9b1f0
>>> #  guarantee(codelet_size > 0 && (size_t)codelet_size > 2*K) failed: 
>>> not enough space for interpreter generation
>>>
>>>
>>> Thanks,
>>>
>>> Leslie Zhai
>>>
>>>
> 


More information about the jdk8u-dev mailing list