From 4ffa92c7c14b57cf7b9723ca1a1fddfda2f35940 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Fri, 20 May 2016 12:35:08 +0200 Subject: [PATCH] Remove the Definition instance passed around everywhere --- .../org/elasticsearch/painless/Analyzer.java | 6 +- .../painless/AnalyzerCaster.java | 27 ++- .../org/elasticsearch/painless/Compiler.java | 4 +- .../java/org/elasticsearch/painless/Def.java | 9 +- .../elasticsearch/painless/DefBootstrap.java | 6 +- .../elasticsearch/painless/Definition.java | 7 +- .../elasticsearch/painless/MethodWriter.java | 4 +- .../org/elasticsearch/painless/Variables.java | 4 +- .../org/elasticsearch/painless/Writer.java | 10 +- .../painless/node/AExpression.java | 15 +- .../elasticsearch/painless/node/ALink.java | 9 +- .../painless/node/AStatement.java | 5 +- .../elasticsearch/painless/node/EBinary.java | 168 +++++++++--------- .../elasticsearch/painless/node/EBool.java | 28 +-- .../elasticsearch/painless/node/EBoolean.java | 4 +- .../elasticsearch/painless/node/ECast.java | 7 +- .../elasticsearch/painless/node/EChain.java | 76 ++++---- .../elasticsearch/painless/node/EComp.java | 120 ++++++------- .../painless/node/EConditional.java | 24 +-- .../painless/node/EConstant.java | 4 +- .../elasticsearch/painless/node/EDecimal.java | 4 +- .../painless/node/EExplicit.java | 12 +- .../elasticsearch/painless/node/ENull.java | 4 +- .../elasticsearch/painless/node/ENumeric.java | 4 +- .../elasticsearch/painless/node/EUnary.java | 48 ++--- .../painless/node/LArrayLength.java | 8 +- .../elasticsearch/painless/node/LBrace.java | 20 +-- .../elasticsearch/painless/node/LCall.java | 16 +- .../elasticsearch/painless/node/LCast.java | 10 +- .../painless/node/LDefArray.java | 14 +- .../elasticsearch/painless/node/LDefCall.java | 14 +- .../painless/node/LDefField.java | 8 +- .../elasticsearch/painless/node/LField.java | 20 +-- .../painless/node/LListShortcut.java | 14 +- .../painless/node/LMapShortcut.java | 14 +- .../painless/node/LNewArray.java | 14 +- .../elasticsearch/painless/node/LNewObj.java | 14 +- .../painless/node/LShortcut.java | 8 +- .../elasticsearch/painless/node/LString.java | 8 +- .../painless/node/LVariable.java | 8 +- .../elasticsearch/painless/node/SBlock.java | 9 +- .../elasticsearch/painless/node/SBreak.java | 5 +- .../painless/node/SContinue.java | 5 +- .../painless/node/SDeclBlock.java | 9 +- .../painless/node/SDeclaration.java | 11 +- .../org/elasticsearch/painless/node/SDo.java | 14 +- .../painless/node/SExpression.java | 10 +- .../org/elasticsearch/painless/node/SFor.java | 26 +-- .../elasticsearch/painless/node/SIfElse.java | 18 +- .../elasticsearch/painless/node/SReturn.java | 10 +- .../elasticsearch/painless/node/SSource.java | 9 +- .../elasticsearch/painless/node/SThrow.java | 10 +- .../elasticsearch/painless/node/STrap.java | 9 +- .../org/elasticsearch/painless/node/STry.java | 13 +- .../elasticsearch/painless/node/SWhile.java | 14 +- 55 files changed, 472 insertions(+), 499 deletions(-) diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Analyzer.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Analyzer.java index f215e39ad01..2cd62b4c3d4 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Analyzer.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Analyzer.java @@ -26,10 +26,10 @@ import org.elasticsearch.painless.node.SSource; * Runs the analysis phase of compilation using the Painless AST. */ final class Analyzer { - static Variables analyze(final CompilerSettings settings, final Definition definition, + static Variables analyze(final CompilerSettings settings, final Reserved shortcut, final SSource root) { - final Variables variables = new Variables(settings, definition, shortcut); - root.analyze(settings, definition, variables); + final Variables variables = new Variables(settings, shortcut); + root.analyze(settings, variables); return variables; } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/AnalyzerCaster.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/AnalyzerCaster.java index bff486a60c5..2495d2edacd 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/AnalyzerCaster.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/AnalyzerCaster.java @@ -33,8 +33,7 @@ import java.lang.reflect.InvocationTargetException; */ public final class AnalyzerCaster { - public static Cast getLegalCast(final Definition definition, - final String location, final Type actual, final Type expected, final boolean explicit) { + public static Cast getLegalCast(final String location, final Type actual, final Type expected, final boolean explicit) { final Cast cast = new Cast(actual, expected, explicit); if (actual.equals(expected)) { @@ -115,7 +114,7 @@ public final class AnalyzerCaster { } } - public static Type promoteNumeric(final Definition definition, final Type from, final boolean decimal, final boolean primitive) { + public static Type promoteNumeric(final Type from, final boolean decimal, final boolean primitive) { final Sort sort = from.sort; if (sort == Sort.DEF) { @@ -136,8 +135,7 @@ public final class AnalyzerCaster { return null; } - public static Type promoteNumeric(final Definition definition, - final Type from0, final Type from1, final boolean decimal, final boolean primitive) { + public static Type promoteNumeric(final Type from0, final Type from1, final boolean decimal, final boolean primitive) { final Sort sort0 = from0.sort; final Sort sort1 = from1.sort; @@ -171,7 +169,7 @@ public final class AnalyzerCaster { return null; } - public static Type promoteAdd(final Definition definition, final Type from0, final Type from1) { + public static Type promoteAdd(final Type from0, final Type from1) { final Sort sort0 = from0.sort; final Sort sort1 = from1.sort; @@ -179,10 +177,10 @@ public final class AnalyzerCaster { return Definition.stringType; } - return promoteNumeric(definition, from0, from1, true, true); + return promoteNumeric(from0, from1, true, true); } - public static Type promoteXor(final Definition definition, final Type from0, final Type from1) { + public static Type promoteXor(final Type from0, final Type from1) { final Sort sort0 = from0.sort; final Sort sort1 = from1.sort; @@ -190,10 +188,10 @@ public final class AnalyzerCaster { return Definition.booleanType; } - return promoteNumeric(definition, from0, from1, false, true); + return promoteNumeric(from0, from1, false, true); } - public static Type promoteEquality(final Definition definition, final Type from0, final Type from1) { + public static Type promoteEquality(final Type from0, final Type from1) { final Sort sort0 = from0.sort; final Sort sort1 = from1.sort; @@ -208,13 +206,13 @@ public final class AnalyzerCaster { } if (sort0.numeric && sort1.numeric) { - return promoteNumeric(definition, from0, from1, true, primitive); + return promoteNumeric(from0, from1, true, primitive); } return Definition.objectType; } - public static Type promoteReference(final Definition definition, final Type from0, final Type from1) { + public static Type promoteReference(final Type from0, final Type from1) { final Sort sort0 = from0.sort; final Sort sort1 = from1.sort; @@ -228,15 +226,14 @@ public final class AnalyzerCaster { } if (sort0.numeric && sort1.numeric) { - return promoteNumeric(definition, from0, from1, true, true); + return promoteNumeric(from0, from1, true, true); } } return Definition.objectType; } - public static Type promoteConditional(final Definition definition, - final Type from0, final Type from1, final Object const0, final Object const1) { + public static Type promoteConditional(final Type from0, final Type from1, final Object const0, final Object const1) { if (from0.equals(from1)) { return from0; } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Compiler.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Compiler.java index c487dddba71..65d7c78555c 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Compiler.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Compiler.java @@ -113,9 +113,9 @@ final class Compiler { final Reserved reserved = new Reserved(); final SSource root = Walker.buildPainlessTree(source, reserved); - final Variables variables = Analyzer.analyze(settings, Definition.INSTANCE, reserved, root); + final Variables variables = Analyzer.analyze(settings, reserved, root); - return Writer.write(settings, Definition.INSTANCE, name, source, variables, root); + return Writer.write(settings, name, source, variables, root); } /** diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Def.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Def.java index de9e1c43bea..c4bebee7443 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Def.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Def.java @@ -135,11 +135,10 @@ public final class Def { * @param receiverClass Class of the object to invoke the method on. * @param name Name of the method. * @param type Callsite signature. Need not match exactly, except the number of parameters. - * @param definition Whitelist to check. * @return pointer to matching method to invoke. never returns null. * @throws IllegalArgumentException if no matching whitelisted method was found. */ - static MethodHandle lookupMethod(Class receiverClass, String name, MethodType type, Definition definition) { + static MethodHandle lookupMethod(Class receiverClass, String name, MethodType type) { // we don't consider receiver an argument/counting towards arity type = type.dropParameterTypes(0, 1); Definition.MethodKey key = new Definition.MethodKey(name, type.parameterCount()); @@ -193,11 +192,10 @@ public final class Def { *

* @param receiverClass Class of the object to retrieve the field from. * @param name Name of the field. - * @param definition Whitelist to check. * @return pointer to matching field. never returns null. * @throws IllegalArgumentException if no matching whitelisted field was found. */ - static MethodHandle lookupGetter(Class receiverClass, String name, Definition definition) { + static MethodHandle lookupGetter(Class receiverClass, String name) { // first try whitelist for (Class clazz = receiverClass; clazz != null; clazz = clazz.getSuperclass()) { RuntimeClass struct = Definition.getRuntimeClass(clazz); @@ -264,11 +262,10 @@ public final class Def { *

* @param receiverClass Class of the object to retrieve the field from. * @param name Name of the field. - * @param definition Whitelist to check. * @return pointer to matching field. never returns null. * @throws IllegalArgumentException if no matching whitelisted field was found. */ - static MethodHandle lookupSetter(Class receiverClass, String name, Definition definition) { + static MethodHandle lookupSetter(Class receiverClass, String name) { // first try whitelist for (Class clazz = receiverClass; clazz != null; clazz = clazz.getSuperclass()) { RuntimeClass struct = Definition.getRuntimeClass(clazz); 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 380f5455ab3..40b9cc6cbe8 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 @@ -94,11 +94,11 @@ public final class DefBootstrap { private static MethodHandle lookup(int flavor, Class clazz, String name, MethodType type) { switch(flavor) { case METHOD_CALL: - return Def.lookupMethod(clazz, name, type, Definition.INSTANCE); + return Def.lookupMethod(clazz, name, type); case LOAD: - return Def.lookupGetter(clazz, name, Definition.INSTANCE); + return Def.lookupGetter(clazz, name); case STORE: - return Def.lookupSetter(clazz, name, Definition.INSTANCE); + return Def.lookupSetter(clazz, name); case ARRAY_LOAD: return Def.lookupArrayLoad(clazz); case ARRAY_STORE: diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Definition.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Definition.java index 2557d41f6ae..0a81188e776 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Definition.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Definition.java @@ -40,11 +40,8 @@ public final class Definition { private static final String DEFINITION_FILE = "definition.txt"; - /** - * The default language API to be used with Painless. The second construction is used - * to finalize all the variables, so there is no mistake of modification afterwards. - */ - public static final Definition INSTANCE = new Definition(new Definition()); + // The second construction is used to finalize all the variables, so there is no mistake of modification afterwards. + private static final Definition INSTANCE = new Definition(new Definition()); /** Some native types as constants: */ public static final Type voidType = getType("void"); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/MethodWriter.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/MethodWriter.java index ce1bb531655..cddd1326c74 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/MethodWriter.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/MethodWriter.java @@ -200,9 +200,7 @@ public final class MethodWriter extends GeneratorAdapter { } } - public void writeBinaryInstruction(final Definition definition, - final String location, - final Type type, final Operation operation) { + public void writeBinaryInstruction(final String location, final Type type, final Operation operation) { final Sort sort = type.sort; if ((sort == Sort.FLOAT || sort == Sort.DOUBLE) && diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Variables.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Variables.java index 417eff84249..28a7416d800 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Variables.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Variables.java @@ -86,14 +86,12 @@ public final class Variables { } } - private final Definition definition; final Reserved reserved; private final Deque scopes = new ArrayDeque<>(); private final Deque variables = new ArrayDeque<>(); - public Variables(final CompilerSettings settings, final Definition definition, final Reserved reserved) { - this.definition = definition; + public Variables(final CompilerSettings settings, final Reserved reserved) { this.reserved = reserved; incrementScope(); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Writer.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Writer.java index 449361867b9..977a591b7af 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/Writer.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/Writer.java @@ -38,15 +38,14 @@ import static org.elasticsearch.painless.WriterConstants.MAP_TYPE; */ final class Writer { - static byte[] write(final CompilerSettings settings, final Definition definition, + static byte[] write(final CompilerSettings settings, String name, final String source, final Variables variables, final SSource root) { - final Writer writer = new Writer(settings, definition, name, source, variables, root); + final Writer writer = new Writer(settings, name, source, variables, root); return writer.getBytes(); } private final CompilerSettings settings; - private final Definition definition; private final String scriptName; private final String source; private final Variables variables; @@ -55,10 +54,9 @@ final class Writer { private final ClassWriter writer; private final MethodWriter adapter; - private Writer(final CompilerSettings settings, final Definition definition, + private Writer(final CompilerSettings settings, String name, final String source, final Variables variables, final SSource root) { this.settings = settings; - this.definition = definition; this.scriptName = name; this.source = source; this.variables = variables; @@ -177,7 +175,7 @@ final class Writer { adapter.visitVarInsn(Opcodes.ISTORE, loop.slot); } - root.write(settings, definition, adapter); + root.write(settings, adapter); adapter.endMethod(); } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AExpression.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AExpression.java index 528da4384c8..f741d62921f 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AExpression.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AExpression.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Definition.Cast; import org.elasticsearch.painless.Definition.Type; import org.elasticsearch.painless.AnalyzerCaster; @@ -101,27 +100,27 @@ public abstract class AExpression extends ANode { /** * Checks for errors and collects data for the writing phase. */ - abstract void analyze(final CompilerSettings settings, final Definition definition, final Variables variables); + abstract void analyze(final CompilerSettings settings, final Variables variables); /** * Writes ASM based on the data collected during the analysis phase. */ - abstract void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter); + abstract void write(final CompilerSettings settings, final MethodWriter adapter); /** * Inserts {@link ECast} nodes into the tree for implicit casts. Also replaces * nodes with the constant variable set to a non-null value with {@link EConstant}. * @return The new child node for the parent node calling this method. */ - AExpression cast(final CompilerSettings settings, final Definition definition, final Variables variables) { - final Cast cast = AnalyzerCaster.getLegalCast(definition, location, actual, expected, explicit); + AExpression cast(final CompilerSettings settings, final Variables variables) { + final Cast cast = AnalyzerCaster.getLegalCast(location, actual, expected, explicit); if (cast == null) { if (constant == null || this instanceof EConstant) { return this; } else { final EConstant econstant = new EConstant(line, location, constant); - econstant.analyze(settings, definition, variables); + econstant.analyze(settings, variables); if (!expected.equals(econstant.actual)) { throw new IllegalStateException(error("Illegal tree structure.")); @@ -142,7 +141,7 @@ public abstract class AExpression extends ANode { constant = AnalyzerCaster.constCast(location, constant, cast); final EConstant econstant = new EConstant(line, location, constant); - econstant.analyze(settings, definition, variables); + econstant.analyze(settings, variables); if (!expected.equals(econstant.actual)) { throw new IllegalStateException(error("Illegal tree structure.")); @@ -156,7 +155,7 @@ public abstract class AExpression extends ANode { return ecast; } else { final EConstant econstant = new EConstant(line, location, constant); - econstant.analyze(settings, definition, variables); + econstant.analyze(settings, variables); if (!actual.equals(econstant.actual)) { throw new IllegalStateException(error("Illegal tree structure.")); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ALink.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ALink.java index ffbfff112b3..8f8e226006e 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ALink.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ALink.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Definition.Type; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.MethodWriter; @@ -87,22 +86,22 @@ public abstract class ALink extends ANode { * def or a shortcut is used. Otherwise, returns itself. This will be * updated into the {@link EChain} node's list of links. */ - abstract ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables); + abstract ALink analyze(final CompilerSettings settings, final Variables variables); /** * Write values before a load/store occurs such as an array index. */ - abstract void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter); + abstract void write(final CompilerSettings settings, final MethodWriter adapter); /** * Write a load for the specific link type. */ - abstract void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter); + abstract void load(final CompilerSettings settings, final MethodWriter adapter); /** * Write a store for the specific link type. */ - abstract void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter); + abstract void store(final CompilerSettings settings, final MethodWriter adapter); /** * Used to copy link data from one to another during analysis in the case of replacement. diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AStatement.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AStatement.java index 569e8cfb03b..f80d5e7b4fd 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AStatement.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/AStatement.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.objectweb.asm.Label; import org.elasticsearch.painless.MethodWriter; @@ -116,10 +115,10 @@ public abstract class AStatement extends ANode { /** * Checks for errors and collects data for the writing phase. */ - abstract void analyze(final CompilerSettings settings, final Definition definition, final Variables variables); + abstract void analyze(final CompilerSettings settings, final Variables variables); /** * Writes ASM based on the data collected during the analysis phase. */ - abstract void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter); + abstract void write(final CompilerSettings settings, final MethodWriter adapter); } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBinary.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBinary.java index 92ccf60a200..38871d007f4 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBinary.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBinary.java @@ -48,39 +48,39 @@ public final class EBinary extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (operation == Operation.MUL) { - analyzeMul(settings, definition, variables); + analyzeMul(settings, variables); } else if (operation == Operation.DIV) { - analyzeDiv(settings, definition, variables); + analyzeDiv(settings, variables); } else if (operation == Operation.REM) { - analyzeRem(settings, definition, variables); + analyzeRem(settings, variables); } else if (operation == Operation.ADD) { - analyzeAdd(settings, definition, variables); + analyzeAdd(settings, variables); } else if (operation == Operation.SUB) { - analyzeSub(settings, definition, variables); + analyzeSub(settings, variables); } else if (operation == Operation.LSH) { - analyzeLSH(settings, definition, variables); + analyzeLSH(settings, variables); } else if (operation == Operation.RSH) { - analyzeRSH(settings, definition, variables); + analyzeRSH(settings, variables); } else if (operation == Operation.USH) { - analyzeUSH(settings, definition, variables); + analyzeUSH(settings, variables); } else if (operation == Operation.BWAND) { - analyzeBWAnd(settings, definition, variables); + analyzeBWAnd(settings, variables); } else if (operation == Operation.XOR) { - analyzeXor(settings, definition, variables); + analyzeXor(settings, variables); } else if (operation == Operation.BWOR) { - analyzeBWOr(settings, definition, variables); + analyzeBWOr(settings, variables); } else { throw new IllegalStateException(error("Illegal tree structure.")); } } - private void analyzeMul(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeMul(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply multiply [*] to types " + @@ -90,8 +90,8 @@ public final class EBinary extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -112,11 +112,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeDiv(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeDiv(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply divide [/] to types " + @@ -126,8 +126,8 @@ public final class EBinary extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -148,11 +148,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeRem(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeRem(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply remainder [%] to types " + @@ -162,8 +162,8 @@ public final class EBinary extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -184,11 +184,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeAdd(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeAdd(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteAdd(definition, left.actual, right.actual); + final Type promote = AnalyzerCaster.promoteAdd(left.actual, right.actual); if (promote == null) { throw new ClassCastException(error("Cannot apply add [+] to types " + @@ -214,8 +214,8 @@ public final class EBinary extends AExpression { right.expected = promote; } - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { if (sort == Sort.INT) { @@ -236,11 +236,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeSub(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeSub(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply subtract [-] to types " + @@ -250,8 +250,8 @@ public final class EBinary extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -272,11 +272,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeLSH(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeLSH(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, false, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, false, true); if (promote == null) { throw new ClassCastException(error("Cannot apply left shift [<<] to types " + @@ -287,8 +287,8 @@ public final class EBinary extends AExpression { right.expected = Definition.intType; right.explicit = true; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -305,11 +305,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeRSH(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeRSH(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, false, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, false, true); if (promote == null) { throw new ClassCastException(error("Cannot apply right shift [>>] to types " + @@ -320,8 +320,8 @@ public final class EBinary extends AExpression { right.expected = Definition.intType; right.explicit = true; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -338,11 +338,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeUSH(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeUSH(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, false, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, false, true); if (promote == null) { throw new ClassCastException(error("Cannot apply unsigned shift [>>>] to types " + @@ -353,8 +353,8 @@ public final class EBinary extends AExpression { right.expected = Definition.intType; right.explicit = true; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -371,11 +371,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeBWAnd(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeBWAnd(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, false, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, false, true); if (promote == null) { throw new ClassCastException(error("Cannot apply and [&] to types " + @@ -385,8 +385,8 @@ public final class EBinary extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -403,11 +403,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeXor(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeXor(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteXor(definition, left.actual, right.actual); + final Type promote = AnalyzerCaster.promoteXor(left.actual, right.actual); if (promote == null) { throw new ClassCastException(error("Cannot apply xor [^] to types " + @@ -417,8 +417,8 @@ public final class EBinary extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -437,11 +437,11 @@ public final class EBinary extends AExpression { actual = promote; } - private void analyzeBWOr(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeBWOr(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, false, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, false, true); if (promote == null) { throw new ClassCastException(error("Cannot apply or [|] to types " + @@ -451,8 +451,8 @@ public final class EBinary extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -470,19 +470,19 @@ public final class EBinary extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { if (actual.sort == Sort.STRING && operation == Operation.ADD) { if (!cat) { adapter.writeNewStrings(); } - left.write(settings, definition, adapter); + left.write(settings, adapter); if (!(left instanceof EBinary) || ((EBinary)left).operation != Operation.ADD || left.actual.sort != Sort.STRING) { adapter.writeAppendStrings(left.actual); } - right.write(settings, definition, adapter); + right.write(settings, adapter); if (!(right instanceof EBinary) || ((EBinary)right).operation != Operation.ADD || right.actual.sort != Sort.STRING) { adapter.writeAppendStrings(right.actual); @@ -492,10 +492,10 @@ public final class EBinary extends AExpression { adapter.writeToStrings(); } } else { - left.write(settings, definition, adapter); - right.write(settings, definition, adapter); + left.write(settings, adapter); + right.write(settings, adapter); - adapter.writeBinaryInstruction(definition, location, actual, operation); + adapter.writeBinaryInstruction(location, actual, operation); } adapter.writeBranch(tru, fals); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBool.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBool.java index 1cd2564b0e1..28072b9d9bd 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBool.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBool.java @@ -44,14 +44,14 @@ public final class EBool extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { left.expected = Definition.booleanType; - left.analyze(settings, definition, variables); - left = left.cast(settings, definition, variables); + left.analyze(settings, variables); + left = left.cast(settings, variables); right.expected = Definition.booleanType; - right.analyze(settings, definition, variables); - right = right.cast(settings, definition, variables); + right.analyze(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { if (operation == Operation.AND) { @@ -67,7 +67,7 @@ public final class EBool extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { if (tru != null || fals != null) { if (operation == Operation.AND) { final Label localfals = fals == null ? new Label() : fals; @@ -76,8 +76,8 @@ public final class EBool extends AExpression { right.tru = tru; right.fals = fals; - left.write(settings, definition, adapter); - right.write(settings, definition, adapter); + left.write(settings, adapter); + right.write(settings, adapter); if (fals == null) { adapter.mark(localfals); @@ -89,8 +89,8 @@ public final class EBool extends AExpression { right.tru = tru; right.fals = fals; - left.write(settings, definition, adapter); - right.write(settings, definition, adapter); + left.write(settings, adapter); + right.write(settings, adapter); if (tru == null) { adapter.mark(localtru); @@ -106,8 +106,8 @@ public final class EBool extends AExpression { left.fals = localfals; right.fals = localfals; - left.write(settings, definition, adapter); - right.write(settings, definition, adapter); + left.write(settings, adapter); + right.write(settings, adapter); adapter.push(true); adapter.goTo(end); @@ -122,8 +122,8 @@ public final class EBool extends AExpression { left.tru = localtru; right.fals = localfals; - left.write(settings, definition, adapter); - right.write(settings, definition, adapter); + left.write(settings, adapter); + right.write(settings, adapter); adapter.mark(localtru); adapter.push(true); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBoolean.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBoolean.java index 24f1ac899e8..979fbed03e3 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBoolean.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBoolean.java @@ -36,12 +36,12 @@ public final class EBoolean extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { actual = Definition.booleanType; } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalArgumentException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECast.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECast.java index d68c95c910a..c46957f78d9 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECast.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECast.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Definition.Cast; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.MethodWriter; @@ -46,13 +45,13 @@ final class ECast extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { throw new IllegalStateException(error("Illegal tree structure.")); } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { - child.write(settings, definition, adapter); + void write(final CompilerSettings settings, final MethodWriter adapter) { + child.write(settings, adapter); adapter.writeCast(cast); adapter.writeBranch(tru, fals); } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EChain.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EChain.java index a3c0c656fda..d992edd8505 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EChain.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EChain.java @@ -59,20 +59,20 @@ public final class EChain extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { - analyzeLinks(settings, definition, variables); + void analyze(final CompilerSettings settings, final Variables variables) { + analyzeLinks(settings, variables); analyzeIncrDecr(); if (operation != null) { - analyzeCompound(settings, definition, variables); + analyzeCompound(settings, variables); } else if (expression != null) { - analyzeWrite(settings, definition, variables); + analyzeWrite(settings, variables); } else { analyzeRead(); } } - private void analyzeLinks(final CompilerSettings settings, final Definition definition, final Variables variables) { + private void analyzeLinks(final CompilerSettings settings, final Variables variables) { ALink previous = null; int index = 0; @@ -92,7 +92,7 @@ public final class EChain extends AExpression { current.store = expression != null || pre || post; } - final ALink analyzed = current.analyze(settings, definition, variables); + final ALink analyzed = current.analyze(settings, variables); if (analyzed == null) { links.remove(index); @@ -153,33 +153,33 @@ public final class EChain extends AExpression { } } - private void analyzeCompound(final CompilerSettings settings, final Definition definition, final Variables variables) { + private void analyzeCompound(final CompilerSettings settings, final Variables variables) { final ALink last = links.get(links.size() - 1); - expression.analyze(settings, definition, variables); + expression.analyze(settings, variables); if (operation == Operation.MUL) { - promote = AnalyzerCaster.promoteNumeric(definition, last.after, expression.actual, true, true); + promote = AnalyzerCaster.promoteNumeric(last.after, expression.actual, true, true); } else if (operation == Operation.DIV) { - promote = AnalyzerCaster.promoteNumeric(definition, last.after, expression.actual, true, true); + promote = AnalyzerCaster.promoteNumeric(last.after, expression.actual, true, true); } else if (operation == Operation.REM) { - promote = AnalyzerCaster.promoteNumeric(definition, last.after, expression.actual, true, true); + promote = AnalyzerCaster.promoteNumeric(last.after, expression.actual, true, true); } else if (operation == Operation.ADD) { - promote = AnalyzerCaster.promoteAdd(definition, last.after, expression.actual); + promote = AnalyzerCaster.promoteAdd(last.after, expression.actual); } else if (operation == Operation.SUB) { - promote = AnalyzerCaster.promoteNumeric(definition, last.after, expression.actual, true, true); + promote = AnalyzerCaster.promoteNumeric(last.after, expression.actual, true, true); } else if (operation == Operation.LSH) { - promote = AnalyzerCaster.promoteNumeric(definition, last.after, false, true); + promote = AnalyzerCaster.promoteNumeric(last.after, false, true); } else if (operation == Operation.RSH) { - promote = AnalyzerCaster.promoteNumeric(definition, last.after, false, true); + promote = AnalyzerCaster.promoteNumeric(last.after, false, true); } else if (operation == Operation.USH) { - promote = AnalyzerCaster.promoteNumeric(definition, last.after, false, true); + promote = AnalyzerCaster.promoteNumeric(last.after, false, true); } else if (operation == Operation.BWAND) { - promote = AnalyzerCaster.promoteXor(definition, last.after, expression.actual); + promote = AnalyzerCaster.promoteXor(last.after, expression.actual); } else if (operation == Operation.XOR) { - promote = AnalyzerCaster.promoteXor(definition, last.after, expression.actual); + promote = AnalyzerCaster.promoteXor(last.after, expression.actual); } else if (operation == Operation.BWOR) { - promote = AnalyzerCaster.promoteXor(definition, last.after, expression.actual); + promote = AnalyzerCaster.promoteXor(last.after, expression.actual); } else { throw new IllegalStateException(error("Illegal tree structure.")); } @@ -205,30 +205,30 @@ public final class EChain extends AExpression { expression.expected = promote; } - expression = expression.cast(settings, definition, variables); + expression = expression.cast(settings, variables); - there = AnalyzerCaster.getLegalCast(definition, location, last.after, promote, false); - back = AnalyzerCaster.getLegalCast(definition, location, promote, last.after, true); + there = AnalyzerCaster.getLegalCast(location, last.after, promote, false); + back = AnalyzerCaster.getLegalCast(location, promote, last.after, true); this.statement = true; this.actual = read ? last.after : Definition.voidType; } - private void analyzeWrite(final CompilerSettings settings, final Definition definition, final Variables variables) { + private void analyzeWrite(final CompilerSettings settings, final Variables variables) { final ALink last = links.get(links.size() - 1); // If the store node is a DEF node, we remove the cast to DEF from the expression // and promote the real type to it: if (last instanceof IDefLink) { - expression.analyze(settings, definition, variables); + expression.analyze(settings, variables); last.after = expression.expected = expression.actual; } else { // otherwise we adapt the type of the expression to the store type expression.expected = last.after; - expression.analyze(settings, definition, variables); + expression.analyze(settings, variables); } - expression = expression.cast(settings, definition, variables); + expression = expression.cast(settings, variables); this.statement = true; this.actual = read ? last.after : Definition.voidType; @@ -248,7 +248,7 @@ public final class EChain extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings,final MethodWriter adapter) { if (cat) { adapter.writeNewStrings(); } @@ -256,15 +256,15 @@ public final class EChain extends AExpression { final ALink last = links.get(links.size() - 1); for (final ALink link : links) { - link.write(settings, definition, adapter); + link.write(settings, adapter); if (link == last && link.store) { if (cat) { adapter.writeDup(link.size, 1); - link.load(settings, definition, adapter); + link.load(settings, adapter); adapter.writeAppendStrings(link.after); - expression.write(settings, definition, adapter); + expression.write(settings, adapter); if (!(expression instanceof EBinary) || ((EBinary)expression).operation != Operation.ADD || expression.actual.sort != Sort.STRING) { @@ -278,18 +278,18 @@ public final class EChain extends AExpression { adapter.writeDup(link.after.sort.size, link.size); } - link.store(settings, definition, adapter); + link.store(settings, adapter); } else if (operation != null) { adapter.writeDup(link.size, 0); - link.load(settings, definition, adapter); + link.load(settings, adapter); if (link.load && post) { adapter.writeDup(link.after.sort.size, link.size); } adapter.writeCast(there); - expression.write(settings, definition, adapter); - adapter.writeBinaryInstruction(definition, location, promote, operation); + expression.write(settings, adapter); + adapter.writeBinaryInstruction(location, promote, operation); adapter.writeCast(back); @@ -297,18 +297,18 @@ public final class EChain extends AExpression { adapter.writeDup(link.after.sort.size, link.size); } - link.store(settings, definition, adapter); + link.store(settings, adapter); } else { - expression.write(settings, definition, adapter); + expression.write(settings, adapter); if (link.load) { adapter.writeDup(link.after.sort.size, link.size); } - link.store(settings, definition, adapter); + link.store(settings, adapter); } } else { - link.load(settings, definition, adapter); + link.load(settings, adapter); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EComp.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EComp.java index 82033124e1c..68c45f4870e 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EComp.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EComp.java @@ -54,33 +54,33 @@ public final class EComp extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (operation == Operation.EQ) { - analyzeEq(settings, definition, variables); + analyzeEq(settings, variables); } else if (operation == Operation.EQR) { - analyzeEqR(settings, definition, variables); + analyzeEqR(settings, variables); } else if (operation == Operation.NE) { - analyzeNE(settings, definition, variables); + analyzeNE(settings, variables); } else if (operation == Operation.NER) { - analyzeNER(settings, definition, variables); + analyzeNER(settings, variables); } else if (operation == Operation.GTE) { - analyzeGTE(settings, definition, variables); + analyzeGTE(settings, variables); } else if (operation == Operation.GT) { - analyzeGT(settings, definition, variables); + analyzeGT(settings, variables); } else if (operation == Operation.LTE) { - analyzeLTE(settings, definition, variables); + analyzeLTE(settings, variables); } else if (operation == Operation.LT) { - analyzeLT(settings, definition, variables); + analyzeLT(settings, variables); } else { throw new IllegalStateException(error("Illegal tree structure.")); } } - private void analyzeEq(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeEq(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteEquality(definition, left.actual, right.actual); + final Type promote = AnalyzerCaster.promoteEquality(left.actual, right.actual); if (promote == null) { throw new ClassCastException(error("Cannot apply equals [==] to types " + @@ -90,8 +90,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.isNull && right.isNull) { throw new IllegalArgumentException(error("Extraneous comparison of null constants.")); @@ -122,11 +122,11 @@ public final class EComp extends AExpression { actual = Definition.booleanType; } - private void analyzeEqR(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeEqR(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteReference(definition, left.actual, right.actual); + final Type promote = AnalyzerCaster.promoteReference(left.actual, right.actual); if (promote == null) { throw new ClassCastException(error("Cannot apply reference equals [===] to types " + @@ -136,8 +136,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.isNull && right.isNull) { throw new IllegalArgumentException(error("Extraneous comparison of null constants.")); @@ -164,11 +164,11 @@ public final class EComp extends AExpression { actual = Definition.booleanType; } - private void analyzeNE(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeNE(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteEquality(definition, left.actual, right.actual); + final Type promote = AnalyzerCaster.promoteEquality(left.actual, right.actual); if (promote == null) { throw new ClassCastException(error("Cannot apply not equals [!=] to types " + @@ -178,8 +178,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.isNull && right.isNull) { throw new IllegalArgumentException(error("Extraneous comparison of null constants.")); @@ -210,11 +210,11 @@ public final class EComp extends AExpression { actual = Definition.booleanType; } - private void analyzeNER(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeNER(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteReference(definition, left.actual, right.actual); + final Type promote = AnalyzerCaster.promoteReference(left.actual, right.actual); if (promote == null) { throw new ClassCastException(error("Cannot apply reference not equals [!==] to types " + @@ -224,8 +224,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.isNull && right.isNull) { throw new IllegalArgumentException(error("Extraneous comparison of null constants.")); @@ -252,11 +252,11 @@ public final class EComp extends AExpression { actual = Definition.booleanType; } - private void analyzeGTE(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeGTE(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply greater than or equals [>=] to types " + @@ -266,8 +266,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -288,11 +288,11 @@ public final class EComp extends AExpression { actual = Definition.booleanType; } - private void analyzeGT(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeGT(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply greater than [>] to types " + @@ -302,8 +302,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -324,11 +324,11 @@ public final class EComp extends AExpression { actual = Definition.booleanType; } - private void analyzeLTE(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeLTE(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply less than or equals [<=] to types " + @@ -338,8 +338,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -360,11 +360,11 @@ public final class EComp extends AExpression { actual = Definition.booleanType; } - private void analyzeLT(final CompilerSettings settings, final Definition definition, final Variables variables) { - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + private void analyzeLT(final CompilerSettings settings, final Variables variables) { + left.analyze(settings, variables); + right.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, left.actual, right.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(left.actual, right.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply less than [>=] to types " + @@ -374,8 +374,8 @@ public final class EComp extends AExpression { left.expected = promote; right.expected = promote; - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); if (left.constant != null && right.constant != null) { final Sort sort = promote.sort; @@ -397,15 +397,15 @@ public final class EComp extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { final boolean branch = tru != null || fals != null; final org.objectweb.asm.Type rtype = right.actual.type; final Sort rsort = right.actual.sort; - left.write(settings, definition, adapter); + left.write(settings, adapter); if (!right.isNull) { - right.write(settings, definition, adapter); + right.write(settings, adapter); } final Label jump = tru != null ? tru : fals != null ? fals : new Label(); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConditional.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConditional.java index c1b37dfeee0..e084974fb33 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConditional.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConditional.java @@ -46,10 +46,10 @@ public final class EConditional extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { condition.expected = Definition.booleanType; - condition.analyze(settings, definition, variables); - condition = condition.cast(settings, definition, variables); + condition.analyze(settings, variables); + condition = condition.cast(settings, variables); if (condition.constant != null) { throw new IllegalArgumentException(error("Extraneous conditional statement.")); @@ -61,23 +61,23 @@ public final class EConditional extends AExpression { right.explicit = explicit; actual = expected; - left.analyze(settings, definition, variables); - right.analyze(settings, definition, variables); + left.analyze(settings, variables); + right.analyze(settings, variables); if (expected == null) { - final Type promote = AnalyzerCaster.promoteConditional(definition, left.actual, right.actual, left.constant, right.constant); + final Type promote = AnalyzerCaster.promoteConditional(left.actual, right.actual, left.constant, right.constant); left.expected = promote; right.expected = promote; actual = promote; } - left = left.cast(settings, definition, variables); - right = right.cast(settings, definition, variables); + left = left.cast(settings, variables); + right = right.cast(settings, variables); } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { final Label localfals = new Label(); final Label end = new Label(); @@ -85,11 +85,11 @@ public final class EConditional extends AExpression { left.tru = right.tru = tru; left.fals = right.fals = fals; - condition.write(settings, definition, adapter); - left.write(settings, definition, adapter); + condition.write(settings, adapter); + left.write(settings, adapter); adapter.goTo(end); adapter.mark(localfals); - right.write(settings, definition, adapter); + right.write(settings, adapter); adapter.mark(end); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConstant.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConstant.java index cbf547a0417..e590ee41852 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConstant.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConstant.java @@ -38,7 +38,7 @@ final class EConstant extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (constant instanceof String) { actual = Definition.stringType; } else if (constant instanceof Double) { @@ -63,7 +63,7 @@ final class EConstant extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { final Sort sort = actual.sort; switch (sort) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EDecimal.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EDecimal.java index 820c3b3926e..3f1d3a3fc26 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EDecimal.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EDecimal.java @@ -38,7 +38,7 @@ public final class EDecimal extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (value.endsWith("f") || value.endsWith("F")) { try { constant = Float.parseFloat(value.substring(0, value.length() - 1)); @@ -57,7 +57,7 @@ public final class EDecimal extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalArgumentException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EExplicit.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EExplicit.java index 0ed6fccf35f..e0afd8f822a 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EExplicit.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EExplicit.java @@ -40,7 +40,7 @@ public final class EExplicit extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { try { actual = Definition.getType(this.type); } catch (final IllegalArgumentException exception) { @@ -49,19 +49,19 @@ public final class EExplicit extends AExpression { child.expected = actual; child.explicit = true; - child.analyze(settings, definition, variables); - child = child.cast(settings, definition, variables); + child.analyze(settings, variables); + child = child.cast(settings, variables); } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalArgumentException(error("Illegal tree structure.")); } - AExpression cast(final CompilerSettings settings, final Definition definition, final Variables variables) { + AExpression cast(final CompilerSettings settings, final Variables variables) { child.expected = expected; child.explicit = explicit; - return child.cast(settings, definition, variables); + return child.cast(settings, variables); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENull.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENull.java index 3e003fefe5c..3fcabccff17 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENull.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENull.java @@ -35,7 +35,7 @@ public final class ENull extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { isNull = true; if (expected != null) { @@ -50,7 +50,7 @@ public final class ENull extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { adapter.visitInsn(Opcodes.ACONST_NULL); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENumeric.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENumeric.java index e8cf202d91d..e68de5b4128 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENumeric.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ENumeric.java @@ -41,7 +41,7 @@ public final class ENumeric extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (value.endsWith("d") || value.endsWith("D")) { if (radix != 10) { throw new IllegalStateException(error("Invalid tree structure.")); @@ -96,7 +96,7 @@ public final class ENumeric extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalArgumentException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EUnary.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EUnary.java index 627eb85e968..8ab97dcbde6 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EUnary.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EUnary.java @@ -48,24 +48,24 @@ public final class EUnary extends AExpression { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (operation == Operation.NOT) { - analyzeNot(settings, definition, variables); + analyzeNot(settings, variables); } else if (operation == Operation.BWNOT) { - analyzeBWNot(settings, definition, variables); + analyzeBWNot(settings, variables); } else if (operation == Operation.ADD) { - analyzerAdd(settings, definition, variables); + analyzerAdd(settings, variables); } else if (operation == Operation.SUB) { - analyzerSub(settings, definition, variables); + analyzerSub(settings, variables); } else { throw new IllegalStateException(error("Illegal tree structure.")); } } - void analyzeNot(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyzeNot(final CompilerSettings settings, final Variables variables) { child.expected = Definition.booleanType; - child.analyze(settings, definition, variables); - child = child.cast(settings, definition, variables); + child.analyze(settings, variables); + child = child.cast(settings, variables); if (child.constant != null) { constant = !(boolean)child.constant; @@ -74,17 +74,17 @@ public final class EUnary extends AExpression { actual = Definition.booleanType; } - void analyzeBWNot(final CompilerSettings settings, final Definition definition, final Variables variables) { - child.analyze(settings, definition, variables); + void analyzeBWNot(final CompilerSettings settings, final Variables variables) { + child.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, child.actual, false, true); + final Type promote = AnalyzerCaster.promoteNumeric(child.actual, false, true); if (promote == null) { throw new ClassCastException(error("Cannot apply not [~] to type [" + child.actual.name + "].")); } child.expected = promote; - child = child.cast(settings, definition, variables); + child = child.cast(settings, variables); if (child.constant != null) { final Sort sort = promote.sort; @@ -101,17 +101,17 @@ public final class EUnary extends AExpression { actual = promote; } - void analyzerAdd(final CompilerSettings settings, final Definition definition, final Variables variables) { - child.analyze(settings, definition, variables); + void analyzerAdd(final CompilerSettings settings, final Variables variables) { + child.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, child.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(child.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply positive [+] to type [" + child.actual.name + "].")); } child.expected = promote; - child = child.cast(settings, definition, variables); + child = child.cast(settings, variables); if (child.constant != null) { final Sort sort = promote.sort; @@ -132,17 +132,17 @@ public final class EUnary extends AExpression { actual = promote; } - void analyzerSub(final CompilerSettings settings, final Definition definition, final Variables variables) { - child.analyze(settings, definition, variables); + void analyzerSub(final CompilerSettings settings, final Variables variables) { + child.analyze(settings, variables); - final Type promote = AnalyzerCaster.promoteNumeric(definition, child.actual, true, true); + final Type promote = AnalyzerCaster.promoteNumeric(child.actual, true, true); if (promote == null) { throw new ClassCastException(error("Cannot apply negative [-] to type [" + child.actual.name + "].")); } child.expected = promote; - child = child.cast(settings, definition, variables); + child = child.cast(settings, variables); if (child.constant != null) { final Sort sort = promote.sort; @@ -164,14 +164,14 @@ public final class EUnary extends AExpression { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { if (operation == Operation.NOT) { if (tru == null && fals == null) { final Label localfals = new Label(); final Label end = new Label(); child.fals = localfals; - child.write(settings, definition, adapter); + child.write(settings, adapter); adapter.push(false); adapter.goTo(end); @@ -181,13 +181,13 @@ public final class EUnary extends AExpression { } else { child.tru = fals; child.fals = tru; - child.write(settings, definition, adapter); + child.write(settings, adapter); } } else { final org.objectweb.asm.Type type = actual.type; final Sort sort = actual.sort; - child.write(settings, definition, adapter); + child.write(settings, adapter); if (operation == Operation.BWNOT) { if (sort == Sort.DEF) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LArrayLength.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LArrayLength.java index a8047047f93..c4026bb529e 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LArrayLength.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LArrayLength.java @@ -38,7 +38,7 @@ public final class LArrayLength extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if ("length".equals(value)) { if (!load) { throw new IllegalArgumentException(error("Must read array field [length].")); @@ -55,17 +55,17 @@ public final class LArrayLength extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { adapter.arrayLength(); } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalStateException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LBrace.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LBrace.java index 045c5d0e5fa..2a8da6e1892 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LBrace.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LBrace.java @@ -42,7 +42,7 @@ public final class LBrace extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if (before == null) { throw new IllegalStateException(error("Illegal tree structure.")); } @@ -51,35 +51,35 @@ public final class LBrace extends ALink { if (sort == Sort.ARRAY) { index.expected = Definition.intType; - index.analyze(settings, definition, variables); - index = index.cast(settings, definition, variables); + index.analyze(settings, variables); + index = index.cast(settings, variables); after = Definition.getType(before.struct, before.dimensions - 1); return this; } else if (sort == Sort.DEF) { - return new LDefArray(line, location, index).copy(this).analyze(settings, definition, variables); + return new LDefArray(line, location, index).copy(this).analyze(settings, variables); } else if (Map.class.isAssignableFrom(before.clazz)) { - return new LMapShortcut(line, location, index).copy(this).analyze(settings, definition, variables); + return new LMapShortcut(line, location, index).copy(this).analyze(settings, variables); } else if (List.class.isAssignableFrom(before.clazz)) { - return new LListShortcut(line, location, index).copy(this).analyze(settings, definition, variables); + return new LListShortcut(line, location, index).copy(this).analyze(settings, variables); } throw new IllegalArgumentException(error("Illegal array access on type [" + before.name + "].")); } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { - index.write(settings, definition, adapter); + void write(final CompilerSettings settings, final MethodWriter adapter) { + index.write(settings, adapter); } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { adapter.arrayLoad(after.type); } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { adapter.arrayStore(after.type); } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCall.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCall.java index bd76aa293cc..150c9097ddd 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCall.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCall.java @@ -46,7 +46,7 @@ public final class LCall extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if (before == null) { throw new IllegalStateException(error("Illegal tree structure.")); } else if (before.sort == Definition.Sort.ARRAY) { @@ -64,8 +64,8 @@ public final class LCall extends ALink { final AExpression expression = arguments.get(argument); expression.expected = method.arguments.get(argument); - expression.analyze(settings, definition, variables); - arguments.set(argument, expression.cast(settings, definition, variables)); + expression.analyze(settings, variables); + arguments.set(argument, expression.cast(settings, variables)); } statement = true; @@ -76,7 +76,7 @@ public final class LCall extends ALink { final ALink link = new LDefCall(line, location, name, arguments); link.copy(this); - return link.analyze(settings, definition, variables); + return link.analyze(settings, variables); } throw new IllegalArgumentException(error("Unknown call [" + name + "] with [" + arguments.size() + @@ -84,14 +84,14 @@ public final class LCall extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { for (final AExpression argument : arguments) { - argument.write(settings, definition, adapter); + argument.write(settings, adapter); } if (java.lang.reflect.Modifier.isStatic(method.reflect.getModifiers())) { @@ -108,7 +108,7 @@ public final class LCall extends ALink { } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalStateException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCast.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCast.java index 6d618eb4a26..f8a03085124 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCast.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LCast.java @@ -42,7 +42,7 @@ public final class LCast extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if (before == null) { throw new IllegalStateException(error("Illegal tree structure.")); } else if (store) { @@ -55,23 +55,23 @@ public final class LCast extends ALink { throw new IllegalArgumentException(error("Not a type [" + type + "].")); } - cast = AnalyzerCaster.getLegalCast(definition, location, before, after, true); + cast = AnalyzerCaster.getLegalCast(location, before, after, true); return cast != null ? this : null; } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { adapter.writeCast(cast); } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalStateException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefArray.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefArray.java index eae33809e70..842cc7c41bb 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefArray.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefArray.java @@ -42,10 +42,10 @@ final class LDefArray extends ALink implements IDefLink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { - index.analyze(settings, definition, variables); + ALink analyze(final CompilerSettings settings, final Variables variables) { + index.analyze(settings, variables); index.expected = index.actual; - index = index.cast(settings, definition, variables); + index = index.cast(settings, variables); after = Definition.defType; @@ -53,18 +53,18 @@ final class LDefArray extends ALink implements IDefLink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { - index.write(settings, definition, adapter); + void write(final CompilerSettings settings, final MethodWriter adapter) { + index.write(settings, adapter); } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { final String desc = Type.getMethodDescriptor(after.type, Definition.defType.type, index.actual.type); adapter.invokeDynamic("arrayLoad", desc, DEF_BOOTSTRAP_HANDLE, DefBootstrap.ARRAY_LOAD); } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { final String desc = Type.getMethodDescriptor(Definition.voidType.type, Definition.defType.type, index.actual.type, after.type); adapter.invokeDynamic("arrayStore", desc, DEF_BOOTSTRAP_HANDLE, DefBootstrap.ARRAY_STORE); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefCall.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefCall.java index 360f78eb4fd..e3b7c6c583d 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefCall.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefCall.java @@ -45,13 +45,13 @@ final class LDefCall extends ALink implements IDefLink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { for (int argument = 0; argument < arguments.size(); ++argument) { final AExpression expression = arguments.get(argument); - expression.analyze(settings, definition, variables); + expression.analyze(settings, variables); expression.expected = expression.actual; - arguments.set(argument, expression.cast(settings, definition, variables)); + arguments.set(argument, expression.cast(settings, variables)); } statement = true; @@ -61,12 +61,12 @@ final class LDefCall extends ALink implements IDefLink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { final StringBuilder signature = new StringBuilder(); signature.append('('); @@ -77,7 +77,7 @@ final class LDefCall extends ALink implements IDefLink { // it can avoid some unnecessary boxing etc. for (final AExpression argument : arguments) { signature.append(argument.actual.type.getDescriptor()); - argument.write(settings, definition, adapter); + argument.write(settings, adapter); } signature.append(')'); @@ -88,7 +88,7 @@ final class LDefCall extends ALink implements IDefLink { } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalStateException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefField.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefField.java index af20e152c70..f54bf316254 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefField.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LDefField.java @@ -43,25 +43,25 @@ final class LDefField extends ALink implements IDefLink { @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { after = Definition.defType; return this; } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { final String desc = Type.getMethodDescriptor(after.type, Definition.defType.type); adapter.invokeDynamic(value, desc, DEF_BOOTSTRAP_HANDLE, DefBootstrap.LOAD); } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { final String desc = Type.getMethodDescriptor(Definition.voidType.type, Definition.defType.type, after.type); adapter.invokeDynamic(value, desc, DEF_BOOTSTRAP_HANDLE, DefBootstrap.STORE); } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LField.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LField.java index 3ec456c69a4..3c0368666d0 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LField.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LField.java @@ -46,7 +46,7 @@ public final class LField extends ALink { } @Override - ALink analyze(CompilerSettings settings, Definition definition, Variables variables) { + ALink analyze(CompilerSettings settings, Variables variables) { if (before == null) { throw new IllegalStateException(error("Illegal tree structure.")); } @@ -54,9 +54,9 @@ public final class LField extends ALink { final Sort sort = before.sort; if (sort == Sort.ARRAY) { - return new LArrayLength(line, location, value).copy(this).analyze(settings, definition, variables); + return new LArrayLength(line, location, value).copy(this).analyze(settings, variables); } else if (sort == Sort.DEF) { - return new LDefField(line, location, value).copy(this).analyze(settings, definition, variables); + return new LDefField(line, location, value).copy(this).analyze(settings, variables); } final Struct struct = before.struct; @@ -80,17 +80,17 @@ public final class LField extends ALink { Character.toUpperCase(value.charAt(0)) + value.substring(1), 1)); if (shortcut) { - return new LShortcut(line, location, value).copy(this).analyze(settings, definition, variables); + return new LShortcut(line, location, value).copy(this).analyze(settings, variables); } else { final EConstant index = new EConstant(line, location, value); - index.analyze(settings, definition, variables); + index.analyze(settings, variables); if (Map.class.isAssignableFrom(before.clazz)) { - return new LMapShortcut(line, location, index).copy(this).analyze(settings, definition, variables); + return new LMapShortcut(line, location, index).copy(this).analyze(settings, variables); } if (List.class.isAssignableFrom(before.clazz)) { - return new LListShortcut(line, location, index).copy(this).analyze(settings, definition, variables); + return new LListShortcut(line, location, index).copy(this).analyze(settings, variables); } } } @@ -99,12 +99,12 @@ public final class LField extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isStatic(field.reflect.getModifiers())) { adapter.getStatic(field.owner.type, field.reflect.getName(), field.type.type); } else { @@ -113,7 +113,7 @@ public final class LField extends ALink { } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isStatic(field.reflect.getModifiers())) { adapter.putStatic(field.owner.type, field.reflect.getName(), field.type.type); } else { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LListShortcut.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LListShortcut.java index cc20fc6dec4..1ee0f8fa3ed 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LListShortcut.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LListShortcut.java @@ -42,7 +42,7 @@ final class LListShortcut extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { getter = before.struct.methods.get(new Definition.MethodKey("get", 1)); setter = before.struct.methods.get(new Definition.MethodKey("set", 2)); @@ -62,8 +62,8 @@ final class LListShortcut extends ALink { if ((load || store) && (!load || getter != null) && (!store || setter != null)) { index.expected = Definition.intType; - index.analyze(settings, definition, variables); - index = index.cast(settings, definition, variables); + index.analyze(settings, variables); + index = index.cast(settings, variables); after = setter != null ? setter.arguments.get(1) : getter.rtn; } else { @@ -74,12 +74,12 @@ final class LListShortcut extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { - index.write(settings, definition, adapter); + void write(final CompilerSettings settings, final MethodWriter adapter) { + index.write(settings, adapter); } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isInterface(getter.owner.clazz.getModifiers())) { adapter.invokeInterface(getter.owner.type, getter.method); } else { @@ -92,7 +92,7 @@ final class LListShortcut extends ALink { } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isInterface(setter.owner.clazz.getModifiers())) { adapter.invokeInterface(setter.owner.type, setter.method); } else { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LMapShortcut.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LMapShortcut.java index 4efbd4bdf0f..f06cb46152b 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LMapShortcut.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LMapShortcut.java @@ -42,7 +42,7 @@ final class LMapShortcut extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { getter = before.struct.methods.get(new Definition.MethodKey("get", 1)); setter = before.struct.methods.get(new Definition.MethodKey("put", 2)); @@ -61,8 +61,8 @@ final class LMapShortcut extends ALink { if ((load || store) && (!load || getter != null) && (!store || setter != null)) { index.expected = setter != null ? setter.arguments.get(0) : getter.arguments.get(0); - index.analyze(settings, definition, variables); - index = index.cast(settings, definition, variables); + index.analyze(settings, variables); + index = index.cast(settings, variables); after = setter != null ? setter.arguments.get(1) : getter.rtn; } else { @@ -73,12 +73,12 @@ final class LMapShortcut extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { - index.write(settings, definition, adapter); + void write(final CompilerSettings settings, final MethodWriter adapter) { + index.write(settings, adapter); } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isInterface(getter.owner.clazz.getModifiers())) { adapter.invokeInterface(getter.owner.type, getter.method); } else { @@ -91,7 +91,7 @@ final class LMapShortcut extends ALink { } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isInterface(setter.owner.clazz.getModifiers())) { adapter.invokeInterface(setter.owner.type, setter.method); } else { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewArray.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewArray.java index 36e4b83c117..9d3e5d307fe 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewArray.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewArray.java @@ -43,7 +43,7 @@ public final class LNewArray extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if (before != null) { throw new IllegalStateException(error("Illegal tree structure.")); } else if (store) { @@ -64,8 +64,8 @@ public final class LNewArray extends ALink { final AExpression expression = arguments.get(argument); expression.expected = Definition.intType; - expression.analyze(settings, definition, variables); - arguments.set(argument, expression.cast(settings, definition, variables)); + expression.analyze(settings, variables); + arguments.set(argument, expression.cast(settings, variables)); } after = Definition.getType(type.struct, arguments.size()); @@ -74,14 +74,14 @@ public final class LNewArray extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { for (final AExpression argument : arguments) { - argument.write(settings, definition, adapter); + argument.write(settings, adapter); } if (arguments.size() > 1) { @@ -92,7 +92,7 @@ public final class LNewArray extends ALink { } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalStateException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewObj.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewObj.java index 784935e2aee..a47ced1e096 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewObj.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LNewObj.java @@ -47,7 +47,7 @@ public final class LNewObj extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if (before != null) { throw new IllegalStateException(error("Illegal tree structure")); } else if (store) { @@ -78,8 +78,8 @@ public final class LNewObj extends ALink { final AExpression expression = arguments.get(argument); expression.expected = types[argument]; - expression.analyze(settings, definition, variables); - arguments.set(argument, expression.cast(settings, definition, variables)); + expression.analyze(settings, variables); + arguments.set(argument, expression.cast(settings, variables)); } statement = true; @@ -92,12 +92,12 @@ public final class LNewObj extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { adapter.newInstance(after.type); if (load) { @@ -105,14 +105,14 @@ public final class LNewObj extends ALink { } for (final AExpression argument : arguments) { - argument.write(settings, definition, adapter); + argument.write(settings, adapter); } adapter.invokeConstructor(constructor.owner.type, constructor.method); } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalStateException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LShortcut.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LShortcut.java index c65077e6e28..79feef8813b 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LShortcut.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LShortcut.java @@ -44,7 +44,7 @@ final class LShortcut extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { final Struct struct = before.struct; getter = struct.methods.get(new Definition.MethodKey("get" + Character.toUpperCase(value.charAt(0)) + value.substring(1), 0)); @@ -74,12 +74,12 @@ final class LShortcut extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isInterface(getter.owner.clazz.getModifiers())) { adapter.invokeInterface(getter.owner.type, getter.method); } else { @@ -92,7 +92,7 @@ final class LShortcut extends ALink { } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { if (java.lang.reflect.Modifier.isInterface(setter.owner.clazz.getModifiers())) { adapter.invokeInterface(setter.owner.type, setter.method); } else { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LString.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LString.java index 91f379cce76..5fe7c22a457 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LString.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LString.java @@ -36,7 +36,7 @@ public final class LString extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if (before != null) { throw new IllegalStateException("Illegal tree structure."); } else if (store) { @@ -51,17 +51,17 @@ public final class LString extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { adapter.push(string); } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { throw new IllegalStateException(error("Illegal tree structure.")); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LVariable.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LVariable.java index 2c6ded3b4ec..6d4254f76ba 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LVariable.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/LVariable.java @@ -43,7 +43,7 @@ public final class LVariable extends ALink { } @Override - ALink analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + ALink analyze(final CompilerSettings settings, final Variables variables) { if (before != null) { throw new IllegalStateException(error("Illegal tree structure.")); } @@ -74,17 +74,17 @@ public final class LVariable extends ALink { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { // Do nothing. } @Override - void load(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void load(final CompilerSettings settings, final MethodWriter adapter) { adapter.visitVarInsn(after.type.getOpcode(Opcodes.ILOAD), slot); } @Override - void store(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void store(final CompilerSettings settings, final MethodWriter adapter) { adapter.visitVarInsn(after.type.getOpcode(Opcodes.ISTORE), slot); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBlock.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBlock.java index 802d5b6c415..7b9aed850b6 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBlock.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBlock.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.MethodWriter; @@ -41,7 +40,7 @@ public final class SBlock extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { final AStatement last = statements.get(statements.size() - 1); for (final AStatement statement : statements) { @@ -53,7 +52,7 @@ public final class SBlock extends AStatement { statement.lastSource = lastSource && statement == last; statement.lastLoop = (beginLoop || lastLoop) && statement == last; - statement.analyze(settings, definition, variables); + statement.analyze(settings, variables); methodEscape = statement.methodEscape; loopEscape = statement.loopEscape; @@ -65,11 +64,11 @@ public final class SBlock extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { for (final AStatement statement : statements) { statement.continu = continu; statement.brake = brake; - statement.write(settings, definition, adapter); + statement.write(settings, adapter); } } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBreak.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBreak.java index 3998b1a9ff2..08f8e811b05 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBreak.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SBreak.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.MethodWriter; @@ -34,7 +33,7 @@ public final class SBreak extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (!inLoop) { throw new IllegalArgumentException(error("Break statement outside of a loop.")); } @@ -46,7 +45,7 @@ public final class SBreak extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); adapter.goTo(brake); } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SContinue.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SContinue.java index 2c4e33b6326..35317e8de8a 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SContinue.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SContinue.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.MethodWriter; @@ -34,7 +33,7 @@ public final class SContinue extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { if (!inLoop) { throw new IllegalArgumentException(error("Continue statement outside of a loop.")); } @@ -49,7 +48,7 @@ public final class SContinue extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); adapter.goTo(continu); } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclBlock.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclBlock.java index 5494ef9c32a..ee878146364 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclBlock.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclBlock.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.MethodWriter; @@ -41,18 +40,18 @@ public final class SDeclBlock extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { for (final SDeclaration declaration : declarations) { - declaration.analyze(settings, definition, variables); + declaration.analyze(settings, variables); } statementCount = declarations.size(); } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { for (final SDeclaration declaration : declarations) { - declaration.write(settings, definition, adapter); + declaration.write(settings, adapter); } } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclaration.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclaration.java index 189ddc95936..adf24509f6c 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclaration.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDeclaration.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Definition.Sort; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.Variables.Variable; @@ -47,18 +46,18 @@ public final class SDeclaration extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { variable = variables.addVariable(location, type, name, false, false); if (expression != null) { expression.expected = variable.type; - expression.analyze(settings, definition, variables); - expression = expression.cast(settings, definition, variables); + expression.analyze(settings, variables); + expression = expression.cast(settings, variables); } } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); final org.objectweb.asm.Type type = variable.type.type; final Sort sort = variable.type.sort; @@ -66,7 +65,7 @@ public final class SDeclaration extends AStatement { final boolean initialize = expression == null; if (!initialize) { - expression.write(settings, definition, adapter); + expression.write(settings, adapter); } switch (sort) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDo.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDo.java index 99f8b634d49..ade9f9ba221 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDo.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SDo.java @@ -41,21 +41,21 @@ public final class SDo extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { variables.incrementScope(); block.beginLoop = true; block.inLoop = true; - block.analyze(settings, definition, variables); + block.analyze(settings, variables); if (block.loopEscape && !block.anyContinue) { throw new IllegalArgumentException(error("Extraneous do while loop.")); } condition.expected = Definition.booleanType; - condition.analyze(settings, definition, variables); - condition = condition.cast(settings, definition, variables); + condition.analyze(settings, variables); + condition = condition.cast(settings, variables); if (condition.constant != null) { final boolean continuous = (boolean)condition.constant; @@ -80,7 +80,7 @@ public final class SDo extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); final Label start = new Label(); final Label begin = new Label(); @@ -90,12 +90,12 @@ public final class SDo extends AStatement { block.continu = begin; block.brake = end; - block.write(settings, definition, adapter); + block.write(settings, adapter); adapter.mark(begin); condition.fals = end; - condition.write(settings, definition, adapter); + condition.write(settings, adapter); adapter.writeLoopCounter(loopCounterSlot, Math.max(1, block.statementCount)); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SExpression.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SExpression.java index 2ed0d10b930..1f107548dff 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SExpression.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SExpression.java @@ -39,9 +39,9 @@ public final class SExpression extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { expression.read = lastSource; - expression.analyze(settings, definition, variables); + expression.analyze(settings, variables); if (!lastSource && !expression.statement) { throw new IllegalArgumentException(error("Not a statement.")); @@ -50,7 +50,7 @@ public final class SExpression extends AStatement { final boolean rtn = lastSource && expression.actual.sort != Sort.VOID; expression.expected = rtn ? Definition.objectType : expression.actual; - expression = expression.cast(settings, definition, variables); + expression = expression.cast(settings, variables); methodEscape = rtn; loopEscape = rtn; @@ -59,9 +59,9 @@ public final class SExpression extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); - expression.write(settings, definition, adapter); + expression.write(settings, adapter); if (methodEscape) { adapter.returnValue(); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SFor.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SFor.java index ef97fbac06b..ae59382039d 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SFor.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SFor.java @@ -46,19 +46,19 @@ public final class SFor extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { variables.incrementScope(); boolean continuous = false; if (initializer != null) { if (initializer instanceof SDeclBlock) { - ((SDeclBlock)initializer).analyze(settings, definition, variables); + ((SDeclBlock)initializer).analyze(settings, variables); } else if (initializer instanceof AExpression) { final AExpression initializer = (AExpression)this.initializer; initializer.read = false; - initializer.analyze(settings, definition, variables); + initializer.analyze(settings, variables); if (!initializer.statement) { throw new IllegalArgumentException(initializer.error("Not a statement.")); @@ -71,8 +71,8 @@ public final class SFor extends AStatement { if (condition != null) { condition.expected = Definition.booleanType; - condition.analyze(settings, definition, variables); - condition = condition.cast(settings, definition, variables); + condition.analyze(settings, variables); + condition = condition.cast(settings, variables); if (condition.constant != null) { continuous = (boolean)condition.constant; @@ -91,7 +91,7 @@ public final class SFor extends AStatement { if (afterthought != null) { afterthought.read = false; - afterthought.analyze(settings, definition, variables); + afterthought.analyze(settings, variables); if (!afterthought.statement) { throw new IllegalArgumentException(afterthought.error("Not a statement.")); @@ -104,7 +104,7 @@ public final class SFor extends AStatement { block.beginLoop = true; block.inLoop = true; - block.analyze(settings, definition, variables); + block.analyze(settings, variables); if (block.loopEscape && !block.anyContinue) { throw new IllegalArgumentException(error("Extraneous for loop.")); @@ -128,18 +128,18 @@ public final class SFor extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); final Label start = new Label(); final Label begin = afterthought == null ? start : new Label(); final Label end = new Label(); if (initializer instanceof SDeclBlock) { - ((SDeclBlock)initializer).write(settings, definition, adapter); + ((SDeclBlock)initializer).write(settings, adapter); } else if (initializer instanceof AExpression) { AExpression initializer = (AExpression)this.initializer; - initializer.write(settings, definition, adapter); + initializer.write(settings, adapter); adapter.writePop(initializer.expected.sort.size); } @@ -147,7 +147,7 @@ public final class SFor extends AStatement { if (condition != null) { condition.fals = end; - condition.write(settings, definition, adapter); + condition.write(settings, adapter); } boolean allEscape = false; @@ -162,14 +162,14 @@ public final class SFor extends AStatement { } adapter.writeLoopCounter(loopCounterSlot, statementCount); - block.write(settings, definition, adapter); + block.write(settings, adapter); } else { adapter.writeLoopCounter(loopCounterSlot, 1); } if (afterthought != null) { adapter.mark(begin); - afterthought.write(settings, definition, adapter); + afterthought.write(settings, adapter); } if (afterthought != null || !allEscape) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SIfElse.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SIfElse.java index 34f4a80645c..40c20a1cb87 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SIfElse.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SIfElse.java @@ -44,10 +44,10 @@ public final class SIfElse extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { condition.expected = Definition.booleanType; - condition.analyze(settings, definition, variables); - condition = condition.cast(settings, definition, variables); + condition.analyze(settings, variables); + condition = condition.cast(settings, variables); if (condition.constant != null) { throw new IllegalArgumentException(error("Extraneous if statement.")); @@ -58,7 +58,7 @@ public final class SIfElse extends AStatement { ifblock.lastLoop = lastLoop; variables.incrementScope(); - ifblock.analyze(settings, definition, variables); + ifblock.analyze(settings, variables); variables.decrementScope(); anyContinue = ifblock.anyContinue; @@ -71,7 +71,7 @@ public final class SIfElse extends AStatement { elseblock.lastLoop = lastLoop; variables.incrementScope(); - elseblock.analyze(settings, definition, variables); + elseblock.analyze(settings, variables); variables.decrementScope(); methodEscape = ifblock.methodEscape && elseblock.methodEscape; @@ -84,17 +84,17 @@ public final class SIfElse extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); final Label end = new Label(); final Label fals = elseblock != null ? new Label() : end; condition.fals = fals; - condition.write(settings, definition, adapter); + condition.write(settings, adapter); ifblock.continu = continu; ifblock.brake = brake; - ifblock.write(settings, definition, adapter); + ifblock.write(settings, adapter); if (elseblock != null) { if (!ifblock.allEscape) { @@ -105,7 +105,7 @@ public final class SIfElse extends AStatement { elseblock.continu = continu; elseblock.brake = brake; - elseblock.write(settings, definition, adapter); + elseblock.write(settings, adapter); } adapter.mark(end); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SReturn.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SReturn.java index 4442e5b9ee4..4caf57f463b 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SReturn.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SReturn.java @@ -38,10 +38,10 @@ public final class SReturn extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { expression.expected = Definition.objectType; - expression.analyze(settings, definition, variables); - expression = expression.cast(settings, definition, variables); + expression.analyze(settings, variables); + expression = expression.cast(settings, variables); methodEscape = true; loopEscape = true; @@ -51,9 +51,9 @@ public final class SReturn extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); - expression.write(settings, definition, adapter); + expression.write(settings, adapter); adapter.returnValue(); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SSource.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SSource.java index e5a80802ce8..e77ce8330a6 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SSource.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SSource.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.objectweb.asm.Opcodes; import org.elasticsearch.painless.MethodWriter; @@ -42,7 +41,7 @@ public final class SSource extends AStatement { } @Override - public void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + public void analyze(final CompilerSettings settings, final Variables variables) { variables.incrementScope(); final AStatement last = statements.get(statements.size() - 1); @@ -53,7 +52,7 @@ public final class SSource extends AStatement { } statement.lastSource = statement == last; - statement.analyze(settings, definition, variables); + statement.analyze(settings, variables); methodEscape = statement.methodEscape; allEscape = statement.allEscape; @@ -63,9 +62,9 @@ public final class SSource extends AStatement { } @Override - public void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + public void write(final CompilerSettings settings, final MethodWriter adapter) { for (final AStatement statement : statements) { - statement.write(settings, definition, adapter); + statement.write(settings, adapter); } if (!methodEscape) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SThrow.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SThrow.java index 99fb5c6a973..8a2909d0a3b 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SThrow.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SThrow.java @@ -38,10 +38,10 @@ public final class SThrow extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { expression.expected = Definition.exceptionType; - expression.analyze(settings, definition, variables); - expression = expression.cast(settings, definition, variables); + expression.analyze(settings, variables); + expression = expression.cast(settings, variables); methodEscape = true; loopEscape = true; @@ -50,9 +50,9 @@ public final class SThrow extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); - expression.write(settings, definition, adapter); + expression.write(settings, adapter); adapter.throwException(); } } diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STrap.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STrap.java index acb50a2b962..a1ee15a050f 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STrap.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STrap.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.elasticsearch.painless.Variables.Variable; import org.objectweb.asm.Label; @@ -51,7 +50,7 @@ public final class STrap extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { variable = variables.addVariable(location, type, name, true, false); if (!Exception.class.isAssignableFrom(variable.type.clazz)) { @@ -63,7 +62,7 @@ public final class STrap extends AStatement { block.inLoop = inLoop; block.lastLoop = lastLoop; - block.analyze(settings, definition, variables); + block.analyze(settings, variables); methodEscape = block.methodEscape; loopEscape = block.loopEscape; @@ -75,7 +74,7 @@ public final class STrap extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); final Label jump = new Label(); @@ -85,7 +84,7 @@ public final class STrap extends AStatement { if (block != null) { block.continu = continu; block.brake = brake; - block.write(settings, definition, adapter); + block.write(settings, adapter); } adapter.visitTryCatchBlock(begin, end, jump, variable.type.type.getInternalName()); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STry.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STry.java index 0329826b02a..70a5b2164da 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STry.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/STry.java @@ -20,7 +20,6 @@ package org.elasticsearch.painless.node; import org.elasticsearch.painless.CompilerSettings; -import org.elasticsearch.painless.Definition; import org.elasticsearch.painless.Variables; import org.objectweb.asm.Label; import org.elasticsearch.painless.MethodWriter; @@ -44,13 +43,13 @@ public final class STry extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { block.lastSource = lastSource; block.inLoop = inLoop; block.lastLoop = lastLoop; variables.incrementScope(); - block.analyze(settings, definition, variables); + block.analyze(settings, variables); variables.decrementScope(); methodEscape = block.methodEscape; @@ -67,7 +66,7 @@ public final class STry extends AStatement { trap.lastLoop = lastLoop; variables.incrementScope(); - trap.analyze(settings, definition, variables); + trap.analyze(settings, variables); variables.decrementScope(); methodEscape &= trap.methodEscape; @@ -83,7 +82,7 @@ public final class STry extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); final Label begin = new Label(); final Label end = new Label(); @@ -93,7 +92,7 @@ public final class STry extends AStatement { block.continu = continu; block.brake = brake; - block.write(settings, definition, adapter); + block.write(settings, adapter); if (!block.allEscape) { adapter.goTo(exception); @@ -105,7 +104,7 @@ public final class STry extends AStatement { trap.begin = begin; trap.end = end; trap.exception = traps.size() > 1 ? exception : null; - trap.write(settings, definition, adapter); + trap.write(settings, adapter); } if (!block.allEscape || traps.size() > 1) { diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SWhile.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SWhile.java index 83afe469320..a6d88fdcced 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SWhile.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/SWhile.java @@ -41,12 +41,12 @@ public final class SWhile extends AStatement { } @Override - void analyze(final CompilerSettings settings, final Definition definition, final Variables variables) { + void analyze(final CompilerSettings settings, final Variables variables) { variables.incrementScope(); condition.expected = Definition.booleanType; - condition.analyze(settings, definition, variables); - condition = condition.cast(settings, definition, variables); + condition.analyze(settings, variables); + condition = condition.cast(settings, variables); boolean continuous = false; @@ -68,7 +68,7 @@ public final class SWhile extends AStatement { block.beginLoop = true; block.inLoop = true; - block.analyze(settings, definition, variables); + block.analyze(settings, variables); if (block.loopEscape && !block.anyContinue) { throw new IllegalArgumentException(error("Extranous while loop.")); @@ -92,7 +92,7 @@ public final class SWhile extends AStatement { } @Override - void write(final CompilerSettings settings, final Definition definition, final MethodWriter adapter) { + void write(final CompilerSettings settings, final MethodWriter adapter) { writeDebugInfo(adapter); final Label begin = new Label(); final Label end = new Label(); @@ -100,14 +100,14 @@ public final class SWhile extends AStatement { adapter.mark(begin); condition.fals = end; - condition.write(settings, definition, adapter); + condition.write(settings, adapter); if (block != null) { adapter.writeLoopCounter(loopCounterSlot, Math.max(1, block.statementCount)); block.continu = begin; block.brake = end; - block.write(settings, definition, adapter); + block.write(settings, adapter); } else { adapter.writeLoopCounter(loopCounterSlot, 1); }