!PRODUCT vs ASSERT?
mikael.gerdin at oracle.com
Tue Jul 18 12:19:46 UTC 2017
On 2017-07-18 11:35, Thomas Stüfe wrote:
> Hi all,
> a short and maybe stupid question, what is the precise difference between:
> #ifndef PRODUCT
> #ifdef ASSERT
> I assume:
> optimized: !PRODUCT && !ASSERT
> xxxdebug: !PRODUCT && ASSERT
> release: PRODUCT && !ASSERT
> is this true?
> Also, when guarding pieces of performance-costly sanity checks, which one
> should be used?
My thinking is that the performance of "optimized" should be close to
"release" checks should be kept out of the hottest paths.
> (I see both used sometimes. For example, MetaChunk::mangle() implementation
> is guarded by !PRODUCT but its call is guarded once by ASSERT, once by
> !PRODUCT, is that deliberate?)
I think it's a mix between judgment calls and misunderstandings :)
I don't consider metaspace allocations such a hot path so it's not
completely unreasonable I think.
> Thanks, Thomas
More information about the hotspot-dev