[ https://issues.apache.org/jira/browse/GROOVY-8831?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Sun updated GROOVY-8831: ------------------------------- Description: The reason why we add {{String}} instance methods is to improve performance to some extent and reduce the size of class file: {code:java} @groovy.transform.CompileStatic def y() { "abc${'123'}def".toUpperCase() } {code} *Original:* {code:java} NEW org/codehaus/groovy/runtime/GStringImpl DUP ICONST_1 ANEWARRAY java/lang/Object DUP ICONST_0 LDC "123" AASTORE ICONST_2 ANEWARRAY java/lang/String DUP ICONST_0 LDC "abc" AASTORE DUP ICONST_1 LDC "def" AASTORE INVOKESPECIAL org/codehaus/groovy/runtime/GStringImpl.<init> ([Ljava/lang/Object;[Ljava/lang/String;)V INVOKESTATIC org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString (Ljava/lang/Object;)Ljava/lang/String; CHECKCAST java/lang/String INVOKEVIRTUAL java/lang/String.toUpperCase ()Ljava/lang/String; ARETURN {code} *After change:* {code:java} NEW org/codehaus/groovy/runtime/GStringImpl DUP ICONST_1 ANEWARRAY java/lang/Object DUP ICONST_0 LDC "123" AASTORE ICONST_2 ANEWARRAY java/lang/String DUP ICONST_0 LDC "abc" AASTORE DUP ICONST_1 LDC "def" AASTORE INVOKESPECIAL org/codehaus/groovy/runtime/GStringImpl.<init> ([Ljava/lang/Object;[Ljava/lang/String;)V INVOKEVIRTUAL groovy/lang/GString.toUpperCase ()Ljava/lang/String; ARETURN {code} > Add instance methods from `String` to `GString` > ------------------------------------------------ > > Key: GROOVY-8831 > URL: https://issues.apache.org/jira/browse/GROOVY-8831 > Project: Groovy > Issue Type: Improvement > Reporter: Daniel Sun > Assignee: Daniel Sun > Priority: Major > Fix For: 3.0.0-alpha-4 > > > The reason why we add {{String}} instance methods is to improve performance > to some extent and reduce the size of class file: > {code:java} > @groovy.transform.CompileStatic > def y() { > "abc${'123'}def".toUpperCase() > } > {code} > *Original:* > {code:java} > NEW org/codehaus/groovy/runtime/GStringImpl > DUP > ICONST_1 > ANEWARRAY java/lang/Object > DUP > ICONST_0 > LDC "123" > AASTORE > ICONST_2 > ANEWARRAY java/lang/String > DUP > ICONST_0 > LDC "abc" > AASTORE > DUP > ICONST_1 > LDC "def" > AASTORE > INVOKESPECIAL org/codehaus/groovy/runtime/GStringImpl.<init> > ([Ljava/lang/Object;[Ljava/lang/String;)V > INVOKESTATIC > org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.castToString > (Ljava/lang/Object;)Ljava/lang/String; > CHECKCAST java/lang/String > INVOKEVIRTUAL java/lang/String.toUpperCase ()Ljava/lang/String; > ARETURN > {code} > *After change:* > {code:java} > NEW org/codehaus/groovy/runtime/GStringImpl > DUP > ICONST_1 > ANEWARRAY java/lang/Object > DUP > ICONST_0 > LDC "123" > AASTORE > ICONST_2 > ANEWARRAY java/lang/String > DUP > ICONST_0 > LDC "abc" > AASTORE > DUP > ICONST_1 > LDC "def" > AASTORE > INVOKESPECIAL org/codehaus/groovy/runtime/GStringImpl.<init> > ([Ljava/lang/Object;[Ljava/lang/String;)V > INVOKEVIRTUAL groovy/lang/GString.toUpperCase ()Ljava/lang/String; > ARETURN > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)