fastdebug vs optimized?

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Wed Jan 31 14:22:47 UTC 2018


The idea of optimized was to have the performance of product but the 
printing and diagnostic options of debug.  We used to use it for 
debugging when we had a lot of race conditions in the vm (a long time 
ago now there are none J)   We were sensitive to the size of the 
libjvm.so but since then and since logging, many of the printing 
functions have been exposed and diagnostic() flags were introduced.

https://bugs.openjdk.java.net/browse/JDK-8183287

It's time to remove it and clean up the assert vs. debug macros, but 
currently unassigned.

Thanks,
Coleen

On 1/31/18 8:52 AM, Thomas Stüfe wrote:
> Hi all,
>
> Sorry for asking the same question again, but I still struggle to
> understand the difference between fastdebug and optimized builds. Not the
> technical details, that is clear (I hope):
>
> optimized: optimized build with !ASSERT !PRODUCT
> fastdebug: optimized build with ASSERT !PRODUCT
>
> but what the point is for having two builds with such similarities. What is
> the optimized build used for?
>
> When should I guard verification code with ASSERT, when with !PRODUCT? As
> for the latter, it feels weird to use guarantee and then having to guard it
> explicitly with !PRODUCT, but that is what I would have to do to get
> assertions in optimized build while still suppressing them in release
> builds, yes?
>
> I always assumed that the optimized build is supposed to be faster than
> fastdebug, so, expensive verifications should be better left to ASSERT? But
> then, I see quite some coding contradicting this expectation. The coding
> itself is no real guideline either, I see both ASSERT and !PRODUCT used
> without recognizing a clear pattern.
>
> So, still confused. Can someone enlighten me please :)
>
> Thanks & Regards, Thomas



More information about the hotspot-dev mailing list