[code-reflection] RFR: Bytecode round 9 [v20]

Paul Sandoz psandoz at openjdk.org
Fri Aug 2 20:14:42 UTC 2024


On Fri, 2 Aug 2024 16:04:13 GMT, Adam Sotona <asotona at openjdk.org> wrote:

>> Bytecode round 9 contains following improvements:
>> - `String` (and non-`String`) concats are lifted to `CoreOp.ConcatOp`
>> - `LocalsTypeMapper` is fixed to use instruction index as a key (instead of the instruction identity)
>> - `LocalsTypeMapper` newly calculates types of uninitialized stack map frame entries and provides that info to `BytecodeLift`
>> - `BytecodeLift` is fixed to handle deep stacks correctly while branching + tests added
>> - Oboslete `BytecodeGenerator::conversion` method is replaced by direct call of `CodeBuilder::conversion`
>> - LocalTypeMapper performs iterative correction of int stack map frame entries to support byte, boolean, short and char types
>> 
>> `TestSmallCorpus` is not experiencing any first-lift exceptions after the above changes, however we cannot yet say that all the lifted models are correct.
>> 
>> Please review.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional commit since the last revision:
> 
>   SlotSSA modified to avoid adding block parameters to catch blocks

src/java.base/share/classes/java/lang/reflect/code/bytecode/SlotSSA.java line 303:

> 301:      * @param joinPoints the join points to clean.
> 302:      */
> 303:     public static void removeCatchBlocksFromJoinPoints(Body body, Map<Block, Set<Integer>> joinPoints) {

An alternative is to remove them from the dominance frontier map?

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

PR Review Comment: https://git.openjdk.org/babylon/pull/192#discussion_r1702278398


More information about the babylon-dev mailing list