### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java,v retrieving revision 1.7.4.2 diff -u -r1.7.4.2 StackMapFrameCodeStream.java --- compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java 23 Aug 2006 15:34:15 -0000 1.7.4.2 +++ compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java 8 Jan 2007 16:54:01 -0000 @@ -1055,7 +1055,7 @@ frame.putLocal(resolvedPosition, new VerificationTypeInfo(TypeBinding.INT)); resolvedPosition++; } - + // take into account the synthetic parameters if (methodBinding.declaringClass.isNestedType()) { ReferenceBinding enclosingInstanceTypes[]; @@ -1067,6 +1067,23 @@ resolvedPosition++; } } + + TypeBinding[] arguments; + if ((arguments = methodBinding.parameters) != null) { + for (int i = 0, max = arguments.length; i < max; i++) { + final TypeBinding typeBinding = arguments[i]; + frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding)); + switch(typeBinding.id) { + case TypeIds.T_double : + case TypeIds.T_long : + resolvedPosition += 2; + break; + default: + resolvedPosition++; + } + } + } + SyntheticArgumentBinding syntheticArguments[]; if ((syntheticArguments = methodBinding.declaringClass.syntheticOuterLocalVariables()) != null) { for (int i = 0, max = syntheticArguments.length; i < max; i++) { @@ -1082,21 +1099,37 @@ } } } + } else { + TypeBinding[] arguments; + if ((arguments = methodBinding.parameters) != null) { + for (int i = 0, max = arguments.length; i < max; i++) { + final TypeBinding typeBinding = arguments[i]; + frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding)); + switch(typeBinding.id) { + case TypeIds.T_double : + case TypeIds.T_long : + resolvedPosition += 2; + break; + default: + resolvedPosition++; + } + } + } } - } - - TypeBinding[] arguments; - if ((arguments = methodBinding.parameters) != null) { - for (int i = 0, max = arguments.length; i < max; i++) { - final TypeBinding typeBinding = arguments[i]; - frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding)); - switch(typeBinding.id) { - case TypeIds.T_double : - case TypeIds.T_long : - resolvedPosition += 2; - break; - default: - resolvedPosition++; + } else { + TypeBinding[] arguments; + if ((arguments = methodBinding.parameters) != null) { + for (int i = 0, max = arguments.length; i < max; i++) { + final TypeBinding typeBinding = arguments[i]; + frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding)); + switch(typeBinding.id) { + case TypeIds.T_double : + case TypeIds.T_long : + resolvedPosition += 2; + break; + default: + resolvedPosition++; + } } } }