Remapper can't handle class names used in string switches
We use https://github.com/johnrengelman/shadow to shadow all our dependencies, which is essential for avoiding version conflicts. Under the hood, the shadow plugin uses ASM to remap class names in class files, e.g., com.oracle.truffle.api.impl.Accessor
-> com.mycompany.thirdparty.truffle.api.impl.Accessor
.
We found that ASM's remapper can't handle the following code: https://github.com/oracle/graal/blob/master/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/Accessor.java#L631-L654
The reason is that javac compiles string switches to switches on precomputed string hash codes. While remapper correctly changes the string constants, it doesn't update the hash codes, effectively breaking the string switch.
Edited by Fred Curts