From 8d3c411298e81695f1be712ccb0bd785592f348b Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Wed, 15 Jun 2016 19:48:38 +0200 Subject: [PATCH] Remove unneeded type adaption and add error message on violation --- .../main/java/org/elasticsearch/painless/DefBootstrap.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/DefBootstrap.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/DefBootstrap.java index c40fc6a3234..7f79334b1e2 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/DefBootstrap.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/DefBootstrap.java @@ -99,6 +99,9 @@ public final class DefBootstrap { PIC(Lookup lookup, String name, MethodType type, int flavor, Object[] args) { super(type); + if (type.parameterType(0) != Object.class) { + throw new BootstrapMethodError("The receiver type (1st arg) of invokedynamic descriptor must be Object."); + } this.lookup = lookup; this.name = name; this.flavor = flavor; @@ -178,8 +181,6 @@ public final class DefBootstrap { final MethodHandle target = lookup(flavor, name, receiver, callArgs).asType(type); MethodHandle test = CHECK_CLASS.bindTo(receiver); - test = test.asType(test.type().changeParameterType(0, type.parameterType(0))); - MethodHandle guard = MethodHandles.guardWithTest(test, target, getTarget()); depth++;