You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2024/11/12 11:40:00 UTC
[jira] [Closed] (GROOVY-11288) Unnecessary bytecode generated after variable assignment
[ https://issues.apache.org/jira/browse/GROOVY-11288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-11288.
------------------------------
> Unnecessary bytecode generated after variable assignment
> --------------------------------------------------------
>
> Key: GROOVY-11288
> URL: https://issues.apache.org/jira/browse/GROOVY-11288
> Project: Groovy
> Issue Type: Bug
> Components: class generator, Compiler
> Reporter: Oscar N
> Assignee: Eric Milles
> Priority: Minor
> Fix For: 5.0.0-alpha-11
>
>
> I have the following code:
> {code:groovy}
> package org.example
> import groovy.transform.CompileStatic
> @CompileStatic
> final class Main {
> static void main(String[] args) {
> int three = 3
> String str = 'foo'
> }
> }
> {code}
> When looking at the compiled output, the variable is loaded and immediately popped after storing:
> {code:java}
> // access flags 0x89
> public static varargs main([Ljava/lang/String;)V
> L0
> LINENUMBER 8 L0
> ICONST_3
> ISTORE 1
> L1
> ILOAD 1
> POP
> L2
> LINENUMBER 9 L2
> LDC "foo"
> ASTORE 2
> L3
> ALOAD 2
> POP
> L4
> LINENUMBER 10 L4
> RETURN
> LOCALVARIABLE args [Ljava/lang/String; L0 L4 0
> LOCALVARIABLE three I L1 L4 1
> LOCALVARIABLE str Ljava/lang/String; L3 L4 2
> MAXSTACK = 1
> MAXLOCALS = 3
> {code}
> This issue also occurs in dynamic compilation mode.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)