RFR: 8330540: Rename the enum type CompileCommand to CompileCommandEnum
Ioi Lam
iklam at openjdk.org
Wed Apr 17 21:35:22 UTC 2024
`CompileCommand` is used both as a enum type ([compilerOracle.hpp](https://github.com/openjdk/jdk/blob/064628471b83616b4463baa78618d1b7a66d0c7c/src/hotspot/share/compiler/compilerOracle.hpp#L104)), and a global variable ([compiler_globals.hpp](https://github.com/openjdk/jdk/blob/064628471b83616b4463baa78618d1b7a66d0c7c/src/hotspot/share/compiler/compiler_globals.hpp#L304)).
This makes very awkward to the enum type -- we are forced to use `enum CompileCommand` in the source code whenever a type is needed:
This simple c++ file illustrates the problem:
enum class CompileCommand { a, b, c };
void foo(CompileCommand x) {}
char* CompileCommand; // can no longer use "CompileCommand" as a type
void good(enum CompileCommand x) {}
void bad(CompileCommand x) {}
$ g++ -c ~/enum.cpp
/home/iklam/enum.cpp:5:6: error: variable or field ?bad? declared void
5 | void bad(CompileCommand x) {}
The fix is to rename the enum type to `CompileCommandEnum`.
This also makes it possible to forward-declare `CompileCommandEnum` (see vmEnum.hpp) without including compilerOracle.hpp. This improves HotSpot build time by reducing the number of .o files that include compilerOracle.hpp from 456 to 16.
-------------
Commit messages:
- 8330540: Rename the enum type CompileCommand to CompileCommandEnum
Changes: https://git.openjdk.org/jdk/pull/18829/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18829&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8330540
Stats: 138 lines in 19 files changed: 11 ins; 4 del; 123 mod
Patch: https://git.openjdk.org/jdk/pull/18829.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/18829/head:pull/18829
PR: https://git.openjdk.org/jdk/pull/18829
More information about the graal-dev
mailing list