[
https://issues.apache.org/jira/browse/GROOVY-11843?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles resolved GROOVY-11843.
----------------------------------
Fix Version/s: 6.0.0-alpha-1
Resolution: Fixed
https://github.com/apache/groovy/commit/9faaa88535d5f867bd4ae76bd4cffaa065819d74
{code}
run()Ljava/lang/Object;
00000 LTestScripttestMapConstructorOptimization4; . : : NEW C
00001 LTestScripttestMapConstructorOptimization4; . : LC; : DUP
00002 LTestScripttestMapConstructorOptimization4; . : LC; LC; :
INVOKESPECIAL C.<init> ()V
00003 LTestScripttestMapConstructorOptimization4; . : LC; : ASTORE 1
00004 LTestScripttestMapConstructorOptimization4; LC; : : ALOAD 1
00005 LTestScripttestMapConstructorOptimization4; LC; : LC; : ICONST_1
00006 LTestScripttestMapConstructorOptimization4; LC; : LC; I :
INVOKEVIRTUAL C.setI (I)V
00007 LTestScripttestMapConstructorOptimization4; LC; : : ALOAD 1
00008 LTestScripttestMapConstructorOptimization4; LC; : LC; : ICONST_2
00009 LTestScripttestMapConstructorOptimization4; LC; : LC; I :
INVOKEVIRTUAL C.setJ (I)V
00010 LTestScripttestMapConstructorOptimization4; LC; : : ALOAD 1
00011 LTestScripttestMapConstructorOptimization4; LC; : LC; : ICONST_3
00012 LTestScripttestMapConstructorOptimization4; LC; : LC; I :
INVOKEVIRTUAL C.setK (I)V
00013 LTestScripttestMapConstructorOptimization4; LC; : : ALOAD 1
00014 LTestScripttestMapConstructorOptimization4; LC; : LC; : ARETURN
{code}
> SC: map-style constructor call optimization
> -------------------------------------------
>
> Key: GROOVY-11843
> URL: https://issues.apache.org/jira/browse/GROOVY-11843
> Project: Groovy
> Issue Type: Bug
> Components: class generator, Static compilation
> Reporter: Eric Milles
> Assignee: Eric Milles
> Priority: Major
> Fix For: 6.0.0-alpha-1
>
>
> Consider the following:
> {code:groovy}
> @CompileStatic test() {
> new Pogo(a:1, b:2, c:3)
> }
> {code}
> When "a", "b" and "c" map to "setA(int)", "setB(int)" and "setC(int)"
> respectively there are spurious {{ACONST_NULL}} and {{POP}} instructions
> generated after each setter invocation.
> {code}
> run()Ljava/lang/Object;
> 00000 LTestScripttestMapConstructorOptimization4; . . . . : : NEW C
> 00001 LTestScripttestMapConstructorOptimization4; . . . . : LC; : DUP
> 00002 LTestScripttestMapConstructorOptimization4; . . . . : LC; LC; :
> INVOKESPECIAL C.<init> ()V
> 00003 LTestScripttestMapConstructorOptimization4; . . . . : LC; :
> ASTORE 1
> 00004 LTestScripttestMapConstructorOptimization4; LC; . . . : : ICONST_1
> 00005 LTestScripttestMapConstructorOptimization4; LC; . . . : I : DUP
> 00006 LTestScripttestMapConstructorOptimization4; LC; . . . : I I :
> ISTORE 2
> 00007 LTestScripttestMapConstructorOptimization4; LC; I . . : I : ALOAD
> 1
> 00008 LTestScripttestMapConstructorOptimization4; LC; I . . : I LC; :
> ILOAD 2
> 00009 LTestScripttestMapConstructorOptimization4; LC; I . . : I LC; I :
> INVOKEVIRTUAL C.setI (I)V
> 00010 LTestScripttestMapConstructorOptimization4; LC; I . . : I :
> ACONST_NULL
> 00011 LTestScripttestMapConstructorOptimization4; LC; I . . : I Lnull; :
> POP
> 00012 LTestScripttestMapConstructorOptimization4; LC; I . . : I : POP
> 00013 LTestScripttestMapConstructorOptimization4; LC; I . . : : ICONST_2
> 00014 LTestScripttestMapConstructorOptimization4; LC; I . . : I : DUP
> 00015 LTestScripttestMapConstructorOptimization4; LC; I . . : I I :
> ISTORE 3
> 00016 LTestScripttestMapConstructorOptimization4; LC; I I . : I : ALOAD
> 1
> 00017 LTestScripttestMapConstructorOptimization4; LC; I I . : I LC; :
> ILOAD 3
> 00018 LTestScripttestMapConstructorOptimization4; LC; I I . : I LC; I :
> INVOKEVIRTUAL C.setJ (I)V
> 00019 LTestScripttestMapConstructorOptimization4; LC; I I . : I :
> ACONST_NULL
> 00020 LTestScripttestMapConstructorOptimization4; LC; I I . : I Lnull; :
> POP
> 00021 LTestScripttestMapConstructorOptimization4; LC; I I . : I : POP
> 00022 LTestScripttestMapConstructorOptimization4; LC; I I . : : ICONST_3
> 00023 LTestScripttestMapConstructorOptimization4; LC; I I . : I : DUP
> 00024 LTestScripttestMapConstructorOptimization4; LC; I I . : I I :
> ISTORE 4
> 00025 LTestScripttestMapConstructorOptimization4; LC; I I I : I : ALOAD
> 1
> 00026 LTestScripttestMapConstructorOptimization4; LC; I I I : I LC; :
> ILOAD 4
> 00027 LTestScripttestMapConstructorOptimization4; LC; I I I : I LC; I :
> INVOKEVIRTUAL C.setK (I)V
> 00028 LTestScripttestMapConstructorOptimization4; LC; I I I : I :
> ACONST_NULL
> 00029 LTestScripttestMapConstructorOptimization4; LC; I I I : I Lnull; :
> POP
> 00030 LTestScripttestMapConstructorOptimization4; LC; I I I : I : POP
> 00031 LTestScripttestMapConstructorOptimization4; LC; I I I : : ALOAD 1
> 00032 LTestScripttestMapConstructorOptimization4; LC; I I I : LC; :
> ARETURN
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)