From a1a3dfac412a11917655ecef70e42d7e9c52c538 Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Mon, 4 Jun 2012 17:42:27 +0400 Subject: [PATCH] Change invokespecial to invokevirtual for bridge methods --- .../backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java index 9ec30f5243e..4a98cd43bdc 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java @@ -218,7 +218,7 @@ public class ClosureCodegen extends ObjectOrClosureCodegen { if(bridge.getAsmMethod().getDescriptor().equals(delegate.getDescriptor())) return; - final MethodVisitor mv = cv.newMethod(fun, ACC_PUBLIC, "invoke", bridge.getAsmMethod().getDescriptor(), null, new String[0]); + final MethodVisitor mv = cv.newMethod(fun, ACC_PUBLIC | ACC_BRIDGE | ACC_VOLATILE, "invoke", bridge.getAsmMethod().getDescriptor(), null, new String[0]); if (state.getClassBuilderMode() == ClassBuilderMode.STUBS) { StubCodegen.generateStubCode(mv); } @@ -244,7 +244,7 @@ public class ClosureCodegen extends ObjectOrClosureCodegen { count++; } - iv.invokespecial(className, "invoke", delegate.getDescriptor()); + iv.invokevirtual(className, "invoke", delegate.getDescriptor()); StackValue.onStack(delegate.getReturnType()).put(JetTypeMapper.TYPE_OBJECT, iv); iv.areturn(JetTypeMapper.TYPE_OBJECT);