[ 
https://issues.apache.org/jira/browse/GROOVY-11288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eric Milles updated GROOVY-11288:
---------------------------------
    Language: groovy

> Unnecessary bytecode generated after variable assignment
> --------------------------------------------------------
>
>                 Key: GROOVY-11288
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11288
>             Project: Groovy
>          Issue Type: Bug
>          Components: bytecode, Compiler
>    Affects Versions: 2.5.23, 3.0.20, 5.0.0-alpha-4, 4.0.17
>            Reporter: Oscar N
>            Priority: Minor
>
> 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)

Reply via email to