Changes in the sematics of CompileCommand compileonly/inline after Compiler Control change 8137167

Volker Simonis volker.simonis at gmail.com
Wed Oct 28 15:48:59 UTC 2015


Hi,

I'm currently writing a regression test and noticed a subtle
difference in the semantics of the CompileCommand options
'compileonly' and 'inline'.

Before JEP 165 (i.e. Compiler Control change 8137167) the following directives:

-XX:CompileCommand=compileonly,XXX.xxx
-XX:CompileCommand=inline,YYY.yyy

resulted in XXX.xxx being compiled, but YYY.yyy would not have been
inlined into XXX.xxx

Adding one additional compileonly directive like:

-XX:CompileCommand=compileonly,YYY.yyy

had the effect of inlining  YYY.yyy into XXX.xxx, but only YYY.yyy was
inlined, not other functions which were called from YYY.yyy.

After JEP 165 (i.e. Compiler Control change 8137167) the following directives:

-XX:CompileCommand=compileonly,XXX.xxx
-XX:CompileCommand=inline,YYY.yyy

result in XXX.xxx being compiled and YYY.yyy being deeply inlined
(i.e. together with all the functions it calls) into XXX.xxx.


I don't want to question this semantic change. The new behavior is
actually nice and more intuitive in my opinion.

However I asked myself if all the fine tuned JTreg tests which use
CompileCommand directives to create very special situations still work
as expected? Has anybody checked this? And are there any other known
semantic differences after change 8137167 (excpet the behavior of
'quite' which was already discussed in the review thread)?

Thank you and best regards,
Volker


More information about the hotspot-dev mailing list