Current Zero interpreter has the optimization for JVMTI support. It recognizes 
that JVMTI is disabled most of the time, and that JVMTI checks in the 
interpreter code slows it down considerably. (I measured it myself for this 
patch, it gives about 20% hit in build times).

Current optimization works as follows. At build time, an XSLT transform is 
performed on `bytecodeInterpreter.cpp`, yielding 
`bytecodeInterpreterWithChecks.cpp`. In that new compilation unit, `VM_JVMTI` 
macro is defined, and a new entry point -- `BytecodeInterpreter::withChecks` -- 
is defined. Then, both compilation units are compiled. In one of them, `JVMTI` 
hooks are stripped out. In another, they persist. Then, callers have to choose 
which entry point to use.

I believe this can be rewritten to use C++ templates instead of XLST and 
defines dance. This also allows to clean up JVMTI checks a bit.

Additional testing:
 - [x] Linux x86_64 Zero fastdebug build with `-jvmti`
 - [x] Linux x86_64 Zero fastdebug/release build times are not regressing

-------------

Commit messages:
 - Revert one dubious change
 - 8255822: Zero: improve build-time JVMTI handling

Changes: https://git.openjdk.java.net/jdk/pull/1061/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1061&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8255822
  Stats: 155 lines in 6 files changed: 3 ins; 118 del; 34 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1061.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1061/head:pull/1061

PR: https://git.openjdk.java.net/jdk/pull/1061

Reply via email to