[
https://issues.apache.org/jira/browse/GROOVY-11630?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles reassigned GROOVY-11630:
------------------------------------
Assignee: Eric Milles
> Extraneous bytecode generated after calls to void DGM methods
> -------------------------------------------------------------
>
> Key: GROOVY-11630
> URL: https://issues.apache.org/jira/browse/GROOVY-11630
> Project: Groovy
> Issue Type: Bug
> Components: class generator, Compiler, Static compilation
> Affects Versions: 5.0.0-alpha-12
> Reporter: Oscar N
> Assignee: Eric Milles
> Priority: Minor
>
> I have the following code:
> {code:groovy}
> import groovy.transform.CompileStatic
> @CompileStatic
> final class DGMUsage {
> static void main(String[] args) {
> println "Groovy version: ${GroovySystem.version}"
> var list = (1..100).toList()
> list.shuffle()
> }
> }
> {code}
> When looking at the compiled output, null is pushed to the stack then
> immediately popped for DGMs that have a void return type:
> {code:java}
> // access flags 0x89
> public static varargs main([Ljava/lang/String;)V
> L0
> LINENUMBER 6 L0
> LDC LDGMUsage;.class
> NEW org/codehaus/groovy/runtime/GStringImpl
> DUP
> ICONST_1
> ANEWARRAY java/lang/Object
> DUP
> ICONST_0
> INVOKESTATIC groovy/lang/GroovySystem.getVersion ()Ljava/lang/String;
> AASTORE
> ICONST_2
> ANEWARRAY java/lang/String
> DUP
> ICONST_0
> LDC "Groovy version: "
> AASTORE
> DUP
> ICONST_1
> LDC ""
> AASTORE
> INVOKESPECIAL org/codehaus/groovy/runtime/GStringImpl.<init>
> ([Ljava/lang/Object;[Ljava/lang/String;)V
> INVOKESTATIC org/codehaus/groovy/runtime/DefaultGroovyMethods.println
> (Ljava/lang/Object;Ljava/lang/Object;)V
> ACONST_NULL
> POP
> L1
> LINENUMBER 8 L1
> NEW groovy/lang/IntRange
> DUP
> ICONST_1
> ICONST_1
> ICONST_1
> BIPUSH 100
> INVOKESPECIAL groovy/lang/IntRange.<init> (ZZII)V
> INVOKESTATIC org/codehaus/groovy/runtime/DefaultGroovyMethods.toList
> (Ljava/lang/Iterable;)Ljava/util/List;
> ASTORE 1
> L2
> LINENUMBER 9 L2
> ALOAD 1
> INVOKESTATIC org/codehaus/groovy/runtime/DefaultGroovyMethods.shuffle
> (Ljava/util/List;)V
> ACONST_NULL
> POP
> L3
> LINENUMBER 10 L3
> RETURN
> LOCALVARIABLE args [Ljava/lang/String; L0 L3 0
> LOCALVARIABLE list Ljava/util/List; L2 L3 1
> MAXSTACK = 8
> MAXLOCALS = 2
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)