RFR: 8253402: Convert vmSymbols::SID to enum class [v4]
Ioi Lam
iklam at openjdk.java.net
Sun Oct 11 22:54:21 UTC 2020
> Convert `vmSymbols::SID` to an `enum class` to provide better type safety.
>
> - The original enum type `vmSymbols::SID` cannot be forward-declared. I moved it out of the `vmSymbols` class and
> renamed, so now it can be forward-declared as `enum class vmSymbolID : int;`, without including the large vmSymbols.hpp
> file.
> - This also breaks the mutual dependency between the `vmSymbols` and `vmIntrinsics` classes. Now the declaration of
> `vmIntrinsics` can be moved from vmSymbols.hpp to vmIntrinsics.hpp, where it naturally belongs.
> - Type-safe enumeration (contributed by Kim Barrett)
> for (vmSymbolID index : vmSymbolsIterator()) {
> vm_symbol_index[as_int(index)] = index;
> }
> - I moved `vmSymbols::_symbols[]` to `Symbol::_vm_symbols[]`, and made it accessible via `Symbol::vm_symbol_at()`. This
> way, header files (e.g. fieldInfo.hpp) that need to convert from `vmSymbolID` to `Symbol*` don't need to include the
> large vmSymbols.hpp file.
> - I changed the `VM_SYMBOL_ENUM_NAME` macro so that the users don't need to explicitly add the `vmSymbolID::` scope.
> - I removed many unnecessary casts between `int` and `vmSymbolID`.
> - The remaining casts are done via `vmSymbol::as_int()` and `vmSymbols::as_SID()` with range checks.
>
> -----
> If this is successful, I will do the same for `vmIntrinsics::ID`.
Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
added missing #include <limits> from enumIterator.hpp
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/276/files
- new: https://git.openjdk.java.net/jdk/pull/276/files/9deb6811..9ddca08f
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=276&range=03
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=276&range=02-03
Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/276.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/276/head:pull/276
PR: https://git.openjdk.java.net/jdk/pull/276
More information about the hotspot-dev
mailing list