From 4bc1b2636aa1037948c1d2c3037ffe3b960f3ace Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 10 Aug 2012 14:37:14 +0400 Subject: [PATCH] StackValue.pop() --- .../org/jetbrains/jet/codegen/StackValue.java | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java index 726fbc6518a..4dd772af0c2 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java @@ -212,6 +212,13 @@ public abstract class StackValue { } } + protected static void pop(Type type, InstructionAdapter v) { + if (type.getSize() == 1) + v.pop(); + else + v.pop2(); + } + protected void coerce(Type toType, InstructionAdapter v) { coerce(this.type, toType, v); } @@ -220,10 +227,7 @@ public abstract class StackValue { if (toType.equals(fromType)) return; if (toType.getSort() == Type.VOID && fromType.getSort() != Type.VOID) { - if (fromType.getSize() == 1) - v.pop(); - else - v.pop2(); + pop(fromType, v); } else if (toType.getSort() != Type.VOID && fromType.getSort() == Type.VOID) { if (toType.getSort() == Type.OBJECT) { @@ -357,17 +361,7 @@ public abstract class StackValue { @Override public void put(Type type, InstructionAdapter v) { - if (type == Type.VOID_TYPE && this.type != Type.VOID_TYPE) { - if (this.type.getSize() == 2) { - v.pop2(); - } - else { - v.pop(); - } - } - else { - coerce(type, v); - } + coerce(type, v); } @Override @@ -627,10 +621,7 @@ public abstract class StackValue { method.invoke(v); Type returnType = asmMethod.getReturnType(); if (returnType != Type.VOID_TYPE) { - if (returnType.getSize() == 2) - v.pop2(); - else - v.pop(); + pop(returnType, v); } } else