Browse Source

Painless: Upgrade ASM to 7.2 (#49263)

This upgrades Painless to use the latest ASM libraries providing support up 
to Java 14. Note the library is not published with the latest versions in an 
"all" package, so we pick up each lib independently that's required. There 
were some changes to the getType method that require descriptors to be 
used in place of internal class names.
Jack Conradson 5 years ago
parent
commit
3196ba557c

+ 5 - 1
modules/lang-painless/build.gradle

@@ -32,7 +32,11 @@ testClusters.integTest {
 
 dependencies {
   compile 'org.antlr:antlr4-runtime:4.5.3'
-  compile 'org.ow2.asm:asm-debug-all:5.1'
+  compile 'org.ow2.asm:asm-util:7.2'
+  compile 'org.ow2.asm:asm-tree:7.2'
+  compile 'org.ow2.asm:asm-commons:7.2'
+  compile 'org.ow2.asm:asm-analysis:7.2'
+  compile 'org.ow2.asm:asm:7.2'
   compile project('spi')
 }
 

+ 1 - 0
modules/lang-painless/licenses/asm-7.2.jar.sha1

@@ -0,0 +1 @@
+fa637eb67eb7628c915d73762b681ae7ff0b9731

+ 1 - 0
modules/lang-painless/licenses/asm-analysis-7.2.jar.sha1

@@ -0,0 +1 @@
+b6e6abe057f23630113f4167c34bda7086691258

+ 1 - 0
modules/lang-painless/licenses/asm-commons-7.2.jar.sha1

@@ -0,0 +1 @@
+ca2954e8d92a05bacc28ff465b25c70e0f512497

+ 0 - 1
modules/lang-painless/licenses/asm-debug-all-5.1.jar.sha1

@@ -1 +0,0 @@
-dde860d586960d55a87cd52c4fc1f5059c89cbc6

+ 1 - 0
modules/lang-painless/licenses/asm-tree-7.2.jar.sha1

@@ -0,0 +1 @@
+3a23cc36edaf8fc5a89cb100182758ccb5991487

+ 1 - 0
modules/lang-painless/licenses/asm-util-7.2.jar.sha1

@@ -0,0 +1 @@
+a3ae34e57fa8a4040e28247291d0cc3d6b8c7bcf

+ 3 - 3
modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java

@@ -196,7 +196,7 @@ public final class PainlessScriptEngine implements ScriptEngine {
         for (int count = 0; count < newFactory.getParameterTypes().length; ++count) {
             constructor.loadThis();
             constructor.loadArg(count);
-            constructor.putField(Type.getType(className), "$arg" + count, Type.getType(newFactory.getParameterTypes()[count]));
+            constructor.putField(Type.getType("L" + className + ";"), "$arg" + count, Type.getType(newFactory.getParameterTypes()[count]));
         }
 
         constructor.returnValue();
@@ -230,7 +230,7 @@ public final class PainlessScriptEngine implements ScriptEngine {
 
         for (int count = 0; count < newFactory.getParameterTypes().length; ++count) {
             adapter.loadThis();
-            adapter.getField(Type.getType(className), "$arg" + count, Type.getType(newFactory.getParameterTypes()[count]));
+            adapter.getField(Type.getType("L" + className + ";"), "$arg" + count, Type.getType(newFactory.getParameterTypes()[count]));
         }
 
         adapter.loadArgs();
@@ -243,7 +243,7 @@ public final class PainlessScriptEngine implements ScriptEngine {
 
         loader.defineFactory(className.replace('/', '.'), writer.toByteArray());
 
-        return Type.getType(className);
+        return Type.getType("L" + className + ";");
     }
 
     /**