InlineCacheBuffer + GuaranteedSafepointInterval
Vitaly Davidovich
vitalyd at gmail.com
Fri Jun 5 15:17:21 UTC 2015
Any words of wisdom? Thanks
sent from my phone
On Jun 3, 2015 12:02 PM, "Vitaly Davidovich" <vitalyd at gmail.com> wrote:
> Hi,
>
> Could someone please explain the idea behind GuaranteedSafepointInterval
> induced safepoints being gated on InlineCacheBuffer::is_empty() returning
> false? This code in safepoint.cpp:
>
> bool SafepointSynchronize::is_cleanup_needed() { <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/runtime/safepoint.cpp#l479> // Need a safepoint if some inline cache buffers is non-empty <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/runtime/safepoint.cpp#l480> if (!InlineCacheBuffer::is_empty()) return true; <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/runtime/safepoint.cpp#l481> return false; <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/runtime/safepoint.cpp#l482>}
>
>
> Looking at icBuffer.cpp:
>
> void InlineCacheBuffer::update_inline_caches() { <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l146> if (buffer()->number_of_stubs() > 1) { <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l147> if (TraceICBuffer) { <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l148> tty->print_cr("[updating inline caches with %d stubs]", buffer()->number_of_stubs()); <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l149> } <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l150> buffer()->remove_all(); <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l151> init_next_stub(); <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l152> } <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l153> release_pending_icholders(); <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l154>} <http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/1aef080fd28d/src/share/vm/code/icBuffer.cpp#l155>What exactly triggers IC holders to be eligible for deletion?
>
>
> The reason behind this question is I'd like to eliminate "unnecessary" safepoints that I'm seeing, but would like to understand implications of this with respect to compiler infrastructure (C2, specifically). I have a fairly large code cache reserved, and the # of compiled methods isn't too big, so space there shouldn't be an issue.
>
>
> Why is GuaranteedSafepointInterval based safepoint actually gated on this particular check? If I turn off background safepoints (i.e. GuaranteedSafepointInterval=0) or set them very far apart, am I risking stability problems, at least in terms of compiler?
>
>
> Thanks
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20150605/7b4546b3/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list