From d6bc5a8782bc9693632c6b751055bcb5031f2d1a Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 8 Feb 2013 16:18:40 +0400 Subject: [PATCH] Added util methods. --- .../jetbrains/jet/codegen/ExpressionCodegen.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index c76f148b6be..bd92b652431 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -552,7 +552,7 @@ public class ExpressionCodegen extends JetVisitor implem final VariableDescriptor parameterDescriptor = bindingContext.get(BindingContext.VALUE_PARAMETER, loopParameter); @SuppressWarnings("ConstantConditions") final Type asmTypeForParameter = asmType(parameterDescriptor.getType()); loopParameterVar = myFrameMap.enter(parameterDescriptor, asmTypeForParameter); - afterLoopLeaveVariableTasks.add(new Runnable() { + runAfterLoop(new Runnable() { @Override public void run() { myFrameMap.leave(parameterDescriptor); @@ -570,7 +570,7 @@ public class ExpressionCodegen extends JetVisitor implem // E tmp = tmp.next() final Type asmElementType = asmType(elementType); loopParameterVar = myFrameMap.enterTemp(asmElementType); - afterLoopLeaveVariableTasks.add(new Runnable() { + runAfterLoop(new Runnable() { @Override public void run() { myFrameMap.leaveTemp(asmElementType); @@ -601,7 +601,7 @@ public class ExpressionCodegen extends JetVisitor implem @SuppressWarnings("ConstantConditions") final Type componentAsmType = asmType(componentDescriptor.getReturnType()); final int componentVarIndex = myFrameMap.enter(componentDescriptor, componentAsmType); - afterBodyLeaveVariableTasks.add(new Runnable() { + runAfterBody(new Runnable() { @Override public void run() { myFrameMap.leave(componentDescriptor); @@ -629,6 +629,14 @@ public class ExpressionCodegen extends JetVisitor implem gen(forExpression.getBody(), Type.VOID_TYPE); } + protected void runAfterBody(Runnable runnable) { + afterBodyLeaveVariableTasks.add(runnable); + } + + protected void runAfterLoop(Runnable runnable) { + afterLoopLeaveVariableTasks.add(runnable); + } + public void afterBody() { v.mark(bodyEnd); // e goes out of scope