diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineCodegen.java index 8c0ed273756..bd43f267ed7 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineCodegen.java @@ -272,7 +272,8 @@ public class InlineCodegen implements ParentCodegenAware, Inliner { boolean shouldPut = false == (stackValue != null && stackValue instanceof StackValue.Local); if (shouldPut) { //we could recapture field of anonymous objects cause they couldn't change - if (codegen.getContext().getContextDescriptor() instanceof AnonymousFunctionDescriptor) { + boolean isInlineClosure = codegen.getContext().isInlineClosure(); + if (isInlineClosure && codegen.getContext().getContextDescriptor() instanceof AnonymousFunctionDescriptor) { Type internalName = asmTypeForAnonymousClass(bindingContext, (FunctionDescriptor) codegen.getContext().getContextDescriptor()); String owner = null; diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java b/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java index 890680bd5a9..b4cd2cec0ad 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java @@ -100,6 +100,10 @@ public class MethodContext extends CodegenContext { this.isInlineClosure = isInlineClosure; } + public boolean isInlineClosure() { + return isInlineClosure; + } + public StackValue isSpecialStackValue(StackValue stackValue) { if (isInlineClosure && stackValue instanceof StackValue.Composed) { StackValue prefix = ((StackValue.Composed) stackValue).prefix;