[code-reflection] RFR: Concat Transform Optimizations [v6]
    Paul Sandoz 
    psandoz at openjdk.org
       
    Fri Jun 28 20:17:32 UTC 2024
    
    
  
On Fri, 28 Jun 2024 19:49:41 GMT, Ian Graves <igraves at openjdk.org> wrote:
>> Updates to the transformation on Concats to StringBuilder that reduce redundant "new" StringBuilders while respecting correctness.
>
> Ian Graves has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Updates and revisions
src/java.base/share/classes/java/lang/reflect/code/analysis/StringConcatTransformer.java line 112:
> 110:         else {
> 111:             appendType = JavaType.J_L_OBJECT;
> 112:         }
I think you can simplify as its hard to follow the logic when the type is string. We can now collapse the append methods into one (the two methods were used in a prior version).
e.g.,
private static Op append(Block.Builder block, Value builder, Value arg) {
   TypeElement type = arg.type();
   if (type.equals(JavaType.BYTE) || type.equals(JavaType.SHORT)) {
       // Widen
       arg = block.op(CoreOp.conv(JavaType.INT, arg));
       type = JavaType.INT;
    } else if (!type.equals(JavaType.J_L_STRING)) {
        type = JavaType.J_L_OBJECT;
    }
    MethodRef appendMethod = MethodRef.method(J_L_STRING_BUILDER, "append", J_L_STRING_BUILDER, type);
    return CoreOp.invoke(appendMethod, builder, arg)
}
-------------
PR Review Comment: https://git.openjdk.org/babylon/pull/149#discussion_r1659273281
    
    
More information about the babylon-dev
mailing list