You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Oscar N (Jira)" <ji...@apache.org> on 2024/01/18 15:09:00 UTC
[jira] [Created] (GROOVY-11288) Unnecessary bytecode generated after variable assignment
Oscar N created GROOVY-11288:
--------------------------------
Summary: 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: 4.0.17, 5.0.0-alpha-4, 3.0.20, 2.5.23
Reporter: Oscar N
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)