Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 032E5200BD1 for ; Mon, 28 Nov 2016 08:30:26 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 01C28160B0D; Mon, 28 Nov 2016 07:30:26 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 2A277160B06 for ; Mon, 28 Nov 2016 08:30:25 +0100 (CET) Received: (qmail 37121 invoked by uid 500); 28 Nov 2016 07:30:24 -0000 Mailing-List: contact commits-help@spark.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list commits@spark.apache.org Received: (qmail 37112 invoked by uid 99); 28 Nov 2016 07:30:24 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Nov 2016 07:30:24 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 36E92E9411; Mon, 28 Nov 2016 07:30:24 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: rxin@apache.org To: commits@spark.apache.org Message-Id: <1e159a888586448890f347a21fc41eae@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: spark git commit: [SPARK-18585][SQL] Use `ev.isNull = "false"` if possible for Janino to have a chance to optimize. Date: Mon, 28 Nov 2016 07:30:24 +0000 (UTC) archived-at: Mon, 28 Nov 2016 07:30:26 -0000 Repository: spark Updated Branches: refs/heads/master fc2c13bdf -> 87141622e [SPARK-18585][SQL] Use `ev.isNull = "false"` if possible for Janino to have a chance to optimize. ## What changes were proposed in this pull request? Janino can optimize `true ? a : b` into `a` or `false ? a : b` into `b`, or if/else with literal condition, so we should use literal as `ev.isNull` if possible. ## How was this patch tested? Existing tests. Author: Takuya UESHIN Closes #16008 from ueshin/issues/SPARK-18585. Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/87141622 Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/87141622 Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/87141622 Branch: refs/heads/master Commit: 87141622ee6b11ac177f68f58d0dc5f8b9a9f948 Parents: fc2c13b Author: Takuya UESHIN Authored: Sun Nov 27 23:30:18 2016 -0800 Committer: Reynold Xin Committed: Sun Nov 27 23:30:18 2016 -0800 ---------------------------------------------------------------------- .../sql/catalyst/expressions/complexTypeCreator.scala | 11 ++++------- .../spark/sql/catalyst/expressions/nullExpressions.scala | 6 ++---- 2 files changed, 6 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/spark/blob/87141622/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala ---------------------------------------------------------------------- diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala index c9f3664..599fb63 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala @@ -61,7 +61,6 @@ case class CreateArray(children: Seq[Expression]) extends Expression { ctx.addMutableState("Object[]", values, s"this.$values = null;") ev.copy(code = s""" - final boolean ${ev.isNull} = false; this.$values = new Object[${children.size}];""" + ctx.splitExpressions( ctx.INPUT_ROW, @@ -78,7 +77,7 @@ case class CreateArray(children: Seq[Expression]) extends Expression { s""" final ArrayData ${ev.value} = new $arrayClass($values); this.$values = null; - """) + """, isNull = "false") } override def prettyName: String = "array" @@ -144,7 +143,6 @@ case class CreateMap(children: Seq[Expression]) extends Expression { val keyData = s"new $arrayClass($keyArray)" val valueData = s"new $arrayClass($valueArray)" ev.copy(code = s""" - final boolean ${ev.isNull} = false; $keyArray = new Object[${keys.size}]; $valueArray = new Object[${values.size}];""" + ctx.splitExpressions( @@ -177,7 +175,7 @@ case class CreateMap(children: Seq[Expression]) extends Expression { final MapData ${ev.value} = new $mapClass($keyData, $valueData); this.$keyArray = null; this.$valueArray = null; - """) + """, isNull = "false") } override def prettyName: String = "map" @@ -301,7 +299,6 @@ case class CreateNamedStruct(children: Seq[Expression]) extends CreateNamedStruc ctx.addMutableState("Object[]", values, s"this.$values = null;") ev.copy(code = s""" - boolean ${ev.isNull} = false; $values = new Object[${valExprs.size}];""" + ctx.splitExpressions( ctx.INPUT_ROW, @@ -317,7 +314,7 @@ case class CreateNamedStruct(children: Seq[Expression]) extends CreateNamedStruc s""" final InternalRow ${ev.value} = new $rowClass($values); this.$values = null; - """) + """, isNull = "false") } override def prettyName: String = "named_struct" @@ -333,7 +330,7 @@ case class CreateNamedStruct(children: Seq[Expression]) extends CreateNamedStruc case class CreateNamedStructUnsafe(children: Seq[Expression]) extends CreateNamedStructLike { override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = { val eval = GenerateUnsafeProjection.createCode(ctx, valExprs) - ExprCode(code = eval.code, isNull = eval.isNull, value = eval.value) + ExprCode(code = eval.code, isNull = "false", value = eval.value) } override def prettyName: String = "named_struct_unsafe" http://git-wip-us.apache.org/repos/asf/spark/blob/87141622/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullExpressions.scala ---------------------------------------------------------------------- diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullExpressions.scala index 8b2e8f3..d24a502 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullExpressions.scala @@ -206,9 +206,8 @@ case class IsNaN(child: Expression) extends UnaryExpression case DoubleType | FloatType => ev.copy(code = s""" ${eval.code} - boolean ${ev.isNull} = false; ${ctx.javaType(dataType)} ${ev.value} = ${ctx.defaultValue(dataType)}; - ${ev.value} = !${eval.isNull} && Double.isNaN(${eval.value});""") + ${ev.value} = !${eval.isNull} && Double.isNaN(${eval.value});""", isNull = "false") } } } @@ -383,7 +382,6 @@ case class AtLeastNNonNulls(n: Int, children: Seq[Expression]) extends Predicate ev.copy(code = s""" int $nonnull = 0; $code - boolean ${ev.isNull} = false; - boolean ${ev.value} = $nonnull >= $n;""") + boolean ${ev.value} = $nonnull >= $n;""", isNull = "false") } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org For additional commands, e-mail: commits-help@spark.apache.org