On Thu, 20 Mar 2025 20:59:34 GMT, David Holmes <dhol...@openjdk.org> wrote:

>> The file to setup special arguments to native JTReg Hotspot tests is 
>> needlessly complicated. With some generalisation, we can make it much 
>> simpler.
>
> make/test/JtregNativeHotspot.gmk line 121:
> 
>> 119:     -I$(VM_TESTBASE_DIR)/nsk/stress/jni \
>> 120:     -I$(VM_TESTBASE_DIR)/vm/mlvm/share \
>> 121:     -I$(VM_TESTBASE_DIR)/vm/share \
> 
> Including these directories for every native test seems a little risky. Are 
> we sure there are no header files with the same name? Can we not still add 
> these only if the test needs them e.g. if it has vmTestBase in its name for 
> the nsk tests?

I don't know if it is "risky". Compare this with how all hotspot files are 
compiled, with all these include directories:

build/macosx-aarch64/hotspot/variant-server/gensrc
build/macosx-aarch64/hotspot/variant-server/gensrc/adfiles
build/macosx-aarch64/support/modules_include/java.base
build/macosx-aarch64/support/modules_include/java.base/darwin
open/src/hotspot/cpu/aarch64
open/src/hotspot/os_cpu/bsd_aarch64
open/src/hotspot/os/bsd
open/src/hotspot/os/posix
open/src/hotspot/os/posix/include
open/src/hotspot/share
open/src/hotspot/share/include
open/src/java.base/share/native/include
open/src/java.base/share/native/libjimage
open/src/java.base/unix/native/include


Are we sure that there are no header files of the same name here? We can check, 
and there are none. Can we be sure that no one will add a conflicting header? 
Well, yes, since then the product would not compile as expected. 

Going back to the test files. This is the complete list of all header files 
present in these directories:

test/hotspot/jtreg/vmTestbase/nsk/share/aod/aod.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jni/ExceptionCheckingJniEnv.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jni/jni_tools.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jvmti/agent_common/agent_common.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jvmti/aod/jvmti_aod.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jvmti/Injector.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jvmti/jvmti_FollowRefObjects.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jvmti/jvmti_tools.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/jvmti/JVMTITools.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/native/native_thread.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/native/nsk_list.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/native/nsk_mutex.hpp
test/hotspot/jtreg/vmTestbase/nsk/share/native/nsk_tools.hpp
test/hotspot/jtreg/vmTestbase/nsk/stress/jni/jnihelper.hpp
test/hotspot/jtreg/vmTestbase/vm/mlvm/share/mlvmJvmtiUtils.hpp
test/lib/jdk/test/lib/jvmti/jvmti_common.hpp
test/lib/jdk/test/lib/jvmti/jvmti_thread.hpp


As you can see, there are no conflicts.

Most of the names are very specific and include some part of their specific 
"package" in the name. It seems highly unlikely to me that someone would add 
another header file with the same name as any of these. 

And, also, if someone were to do that after this PR, the tests would fail to 
compile as expected, so it can't really happen by mistake.

(I do note the weird fact that there is both a `jvmti_tools.hpp` and a 
`JVMTITools.hpp` in `test/hotspot/jtreg/vmTestbase/nsk/share/jvmti`. Seems 
confused to me.)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24130#discussion_r2006562840

Reply via email to