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 (-16 / +50 lines)
Lines 768-774 Link Here
768
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(fieldBinding.type);
768
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(fieldBinding.type);
769
}
769
}
770
private VerificationTypeInfo getLocal(int resolvedPosition, StackMapFrame frame) {
770
private VerificationTypeInfo getLocal(int resolvedPosition, StackMapFrame frame) {
771
	final VerificationTypeInfo verificationTypeInfo = frame.locals[resolvedPosition];
771
	VerificationTypeInfo verificationTypeInfo = frame.locals[resolvedPosition];
772
772
	if (verificationTypeInfo == null) {
773
	if (verificationTypeInfo == null) {
773
		return null;
774
		return null;
774
	}
775
	}
Lines 1041-1047 Link Here
1041
				frame.putLocal(resolvedPosition, new VerificationTypeInfo(TypeBinding.INT));
1042
				frame.putLocal(resolvedPosition, new VerificationTypeInfo(TypeBinding.INT));
1042
				resolvedPosition++;
1043
				resolvedPosition++;
1043
			}
1044
			}
1044
			
1045
1045
			// take into account the synthetic parameters
1046
			// take into account the synthetic parameters
1046
			if (methodBinding.declaringClass.isNestedType()) {
1047
			if (methodBinding.declaringClass.isNestedType()) {
1047
				ReferenceBinding enclosingInstanceTypes[];
1048
				ReferenceBinding enclosingInstanceTypes[];
Lines 1053-1058 Link Here
1053
						resolvedPosition++;
1054
						resolvedPosition++;
1054
					}
1055
					}
1055
				}
1056
				}
1057
1058
				TypeBinding[] arguments;
1059
				if ((arguments = methodBinding.parameters) != null) {
1060
					for (int i = 0, max = arguments.length; i < max; i++) {
1061
						final TypeBinding typeBinding = arguments[i];
1062
						frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1063
						switch(typeBinding.id) {
1064
							case TypeIds.T_double :
1065
							case TypeIds.T_long :
1066
								resolvedPosition += 2;
1067
								break;
1068
							default:
1069
								resolvedPosition++;
1070
						}
1071
					}
1072
				}
1073
1056
				SyntheticArgumentBinding syntheticArguments[];
1074
				SyntheticArgumentBinding syntheticArguments[];
1057
				if ((syntheticArguments = methodBinding.declaringClass.syntheticOuterLocalVariables()) != null) {
1075
				if ((syntheticArguments = methodBinding.declaringClass.syntheticOuterLocalVariables()) != null) {
1058
					for (int i = 0, max = syntheticArguments.length; i < max; i++) {
1076
					for (int i = 0, max = syntheticArguments.length; i < max; i++) {
Lines 1068-1088 Link Here
1068
						}
1086
						}
1069
					}
1087
					}
1070
				}
1088
				}
1089
			} else {
1090
				TypeBinding[] arguments;
1091
				if ((arguments = methodBinding.parameters) != null) {
1092
					for (int i = 0, max = arguments.length; i < max; i++) {
1093
						final TypeBinding typeBinding = arguments[i];
1094
						frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1095
						switch(typeBinding.id) {
1096
							case TypeIds.T_double :
1097
							case TypeIds.T_long :
1098
								resolvedPosition += 2;
1099
								break;
1100
							default:
1101
								resolvedPosition++;
1102
						}
1103
					}
1104
				}
1071
			}
1105
			}
1072
		}
1106
		} else {
1073
1107
			TypeBinding[] arguments;
1074
		TypeBinding[] arguments;
1108
			if ((arguments = methodBinding.parameters) != null) {
1075
		if ((arguments = methodBinding.parameters) != null) {
1109
				for (int i = 0, max = arguments.length; i < max; i++) {
1076
			for (int i = 0, max = arguments.length; i < max; i++) {
1110
					final TypeBinding typeBinding = arguments[i];
1077
				final TypeBinding typeBinding = arguments[i];
1111
					frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1078
				frame.putLocal(resolvedPosition, new VerificationTypeInfo(typeBinding));
1112
					switch(typeBinding.id) {
1079
				switch(typeBinding.id) {
1113
						case TypeIds.T_double :
1080
					case TypeIds.T_double :
1114
						case TypeIds.T_long :
1081
					case TypeIds.T_long :
1115
							resolvedPosition += 2;
1082
						resolvedPosition += 2;
1116
							break;
1083
						break;
1117
						default:
1084
					default:
1118
							resolvedPosition++;
1085
						resolvedPosition++;
1119
					}
1086
				}
1120
				}
1087
			}
1121
			}
1088
		}
1122
		}

Return to bug 168665