View | Details | Raw Unified | Return to bug 168665 | Differences between
and this patch

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java (-15 / +48 lines)
Lines 1055-1061 Link Here
1055
				frame.putLocal(resolvedPosition, new VerificationTypeInfo(TypeBinding.INT));
1055
				frame.putLocal(resolvedPosition, new VerificationTypeInfo(TypeBinding.INT));
1056
				resolvedPosition++;
1056
				resolvedPosition++;
1057
			}
1057
			}
1058
			
1058
1059
			// take into account the synthetic parameters
1059
			// take into account the synthetic parameters
1060
			if (methodBinding.declaringClass.isNestedType()) {
1060
			if (methodBinding.declaringClass.isNestedType()) {
1061
				ReferenceBinding enclosingInstanceTypes[];
1061
				ReferenceBinding enclosingInstanceTypes[];
Lines 1067-1072 Link Here
1067
						resolvedPosition++;
1067
						resolvedPosition++;
1068
					}
1068
					}
1069
				}
1069
				}
1070
1071
				TypeBinding[] arguments;
1072
				if ((arguments = methodBinding.parameters) != null) {
1073
					for (int i = 0, max = arguments.length; i < max; i++) {
1074
						final TypeBinding typeBinding = arguments[i];
1075
						frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1076
						switch(typeBinding.id) {
1077
							case TypeIds.T_double :
1078
							case TypeIds.T_long :
1079
								resolvedPosition += 2;
1080
								break;
1081
							default:
1082
								resolvedPosition++;
1083
						}
1084
					}
1085
				}
1086
1070
				SyntheticArgumentBinding syntheticArguments[];
1087
				SyntheticArgumentBinding syntheticArguments[];
1071
				if ((syntheticArguments = methodBinding.declaringClass.syntheticOuterLocalVariables()) != null) {
1088
				if ((syntheticArguments = methodBinding.declaringClass.syntheticOuterLocalVariables()) != null) {
1072
					for (int i = 0, max = syntheticArguments.length; i < max; i++) {
1089
					for (int i = 0, max = syntheticArguments.length; i < max; i++) {
Lines 1082-1102 Link Here
1082
						}
1099
						}
1083
					}
1100
					}
1084
				}
1101
				}
1102
			} else {
1103
				TypeBinding[] arguments;
1104
				if ((arguments = methodBinding.parameters) != null) {
1105
					for (int i = 0, max = arguments.length; i < max; i++) {
1106
						final TypeBinding typeBinding = arguments[i];
1107
						frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1108
						switch(typeBinding.id) {
1109
							case TypeIds.T_double :
1110
							case TypeIds.T_long :
1111
								resolvedPosition += 2;
1112
								break;
1113
							default:
1114
								resolvedPosition++;
1115
						}
1116
					}
1117
				}
1085
			}
1118
			}
1086
		}
1119
		} else {
1087
1120
			TypeBinding[] arguments;
1088
		TypeBinding[] arguments;
1121
			if ((arguments = methodBinding.parameters) != null) {
1089
		if ((arguments = methodBinding.parameters) != null) {
1122
				for (int i = 0, max = arguments.length; i < max; i++) {
1090
			for (int i = 0, max = arguments.length; i < max; i++) {
1123
					final TypeBinding typeBinding = arguments[i];
1091
				final TypeBinding typeBinding = arguments[i];
1124
					frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1092
				frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1125
					switch(typeBinding.id) {
1093
				switch(typeBinding.id) {
1126
						case TypeIds.T_double :
1094
					case TypeIds.T_double :
1127
						case TypeIds.T_long :
1095
					case TypeIds.T_long :
1128
							resolvedPosition += 2;
1096
						resolvedPosition += 2;
1129
							break;
1097
						break;
1130
						default:
1098
					default:
1131
							resolvedPosition++;
1099
						resolvedPosition++;
1132
					}
1100
				}
1133
				}
1101
			}
1134
			}
1102
		}
1135
		}

Return to bug 168665