Get rid of some genLazy

This commit is contained in:
Michael Bogdanov
2015-04-07 10:05:02 +03:00
parent f551e90d7c
commit ccfc613c31
3 changed files with 3 additions and 17 deletions
@@ -101,9 +101,6 @@ open class BranchedValue(val arg1: StackValue, val arg2: StackValue? = null, val
}
fun createInvertValue(argument: StackValue): StackValue {
if (argument.type != Type.BOOLEAN_TYPE) {
throw UnsupportedOperationException("operand of ! must be boolean")
}
return Invert(condJump(argument))
}
@@ -3051,11 +3051,11 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
}
private StackValue generateBooleanAnd(JetBinaryExpression expression) {
return StackValue.and(genLazy(expression.getLeft(), Type.BOOLEAN_TYPE), genLazy(expression.getRight(), Type.BOOLEAN_TYPE));
return StackValue.and(gen(expression.getLeft()), gen(expression.getRight()));
}
private StackValue generateBooleanOr(JetBinaryExpression expression) {
return StackValue.or(genLazy(expression.getLeft(), Type.BOOLEAN_TYPE), genLazy(expression.getRight(), Type.BOOLEAN_TYPE));
return StackValue.or(gen(expression.getLeft()), gen(expression.getRight()));
}
private StackValue generateEquals(JetExpression left, JetExpression right, IElementType opToken) {
@@ -28,17 +28,6 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.org.objectweb.asm.Type
public class Not : IntrinsicMethod() {
fun generateImpl(codegen: ExpressionCodegen, returnType: Type, element: PsiElement?, arguments: List<JetExpression>, receiver: StackValue): StackValue {
val stackValue: StackValue
if (arguments.size() == 1) {
stackValue = codegen.gen(arguments.get(0))
}
else {
stackValue = receiver
}
return StackValue.not(StackValue.coercion(stackValue, Type.BOOLEAN_TYPE))
}
override fun toCallable(method: CallableMethod): Callable {
return object : IntrinsicCallable(method) {
override fun invokeMethodWithArguments(resolvedCall: ResolvedCall<*>, receiver: StackValue, codegen: ExpressionCodegen): StackValue {
@@ -50,7 +39,7 @@ public class Not : IntrinsicMethod() {
else {
StackValue.receiver(resolvedCall, receiver, codegen, this)
}
return StackValue.not(StackValue.coercion(stackValue, Type.BOOLEAN_TYPE))
return StackValue.not(stackValue)
}
}
}