diff --git a/compiler/preloader/instrumentation/src/org/jetbrains/jet/preloading/instrumentation/InterceptionInstrumenter.java b/compiler/preloader/instrumentation/src/org/jetbrains/jet/preloading/instrumentation/InterceptionInstrumenter.java index 3184f6015e0..656b9efe5d1 100644 --- a/compiler/preloader/instrumentation/src/org/jetbrains/jet/preloading/instrumentation/InterceptionInstrumenter.java +++ b/compiler/preloader/instrumentation/src/org/jetbrains/jet/preloading/instrumentation/InterceptionInstrumenter.java @@ -194,7 +194,7 @@ public class InterceptionInstrumenter { private byte[] instrument(byte[] classData, final List instrumenters) { final ClassReader cr = new ClassReader(classData); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_FRAMES); + ClassWriter cw = new ClassWriter(cr, 0); cr.accept(new ClassVisitor(ASM4, cw) { private final Map matchedMethods = new HashMap(); @@ -243,6 +243,12 @@ public class InterceptionInstrumenter { return ia; } + @Override + public void visitMaxs(int maxStack, int maxLocals) { + int sizes = Type.getArgumentsAndReturnSizes(desc); + super.visitMaxs(Math.max(maxStack, sizes + 1), maxLocals); + } + @Override public void visitCode() { for (MethodData methodData : enterData) {