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

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java (-23 / +5 lines)
Lines 1110-1119 Link Here
1110
	super.invokeJavaLangClassDesiredAssertionStatus();
1110
	super.invokeJavaLangClassDesiredAssertionStatus();
1111
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeBinding.BOOLEAN);	
1111
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeBinding.BOOLEAN);	
1112
}
1112
}
1113
public void invokeJavaLangEnumname(TypeBinding typeBinding) {
1113
public void invokeJavaLangEnumvalueOf(ReferenceBinding binding) {
1114
	// invokevirtual: java.lang.Enum.name()String
1114
	// invokestatic: java.lang.Enum.valueOf(Class,String)
1115
	super.invokeJavaLangEnumname(typeBinding);
1115
	super.invokeJavaLangEnumvalueOf(binding);
1116
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeIds.T_JavaLangString, ConstantPool.JavaLangStringConstantPoolName);		
1116
	this.currentFrame.numberOfStackItems -= 2;
1117
	this.currentFrame.addStackItem(binding);
1117
}
1118
}
1118
public void invokeJavaLangEnumValues(TypeBinding enumBinding, ArrayBinding arrayBinding) {
1119
public void invokeJavaLangEnumValues(TypeBinding enumBinding, ArrayBinding arrayBinding) {
1119
	super.invokeJavaLangEnumValues(enumBinding, arrayBinding);
1120
	super.invokeJavaLangEnumValues(enumBinding, arrayBinding);
Lines 1125-1137 Link Here
1125
	this.currentFrame.initializeReceiver();
1126
	this.currentFrame.initializeReceiver();
1126
	this.currentFrame.numberOfStackItems--; // remove the top of stack
1127
	this.currentFrame.numberOfStackItems--; // remove the top of stack
1127
}
1128
}
1128
public void invokeJavaLangIllegalArgumentExceptionStringConstructor() {
1129
	// invokespecial: java.lang.IllegalArgumentException.<init>(String)V
1130
	super.invokeJavaLangIllegalArgumentExceptionStringConstructor();
1131
	this.currentFrame.numberOfStackItems--;
1132
	this.currentFrame.initializeReceiver();
1133
	this.currentFrame.numberOfStackItems--; // remove the top of stack
1134
}
1135
public void invokeJavaLangReflectConstructorNewInstance() {
1129
public void invokeJavaLangReflectConstructorNewInstance() {
1136
	super.invokeJavaLangReflectConstructorNewInstance();
1130
	super.invokeJavaLangReflectConstructorNewInstance();
1137
	this.currentFrame.numberOfStackItems--;
1131
	this.currentFrame.numberOfStackItems--;
Lines 1255-1265 Link Here
1255
	super.invokeStringConcatenationToString();
1249
	super.invokeStringConcatenationToString();
1256
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeIds.T_JavaLangString, ConstantPool.JavaLangStringConstantPoolName);		
1250
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeIds.T_JavaLangString, ConstantPool.JavaLangStringConstantPoolName);		
1257
}
1251
}
1258
public void invokeStringEquals() {
1259
	super.invokeStringEquals();
1260
	this.currentFrame.numberOfStackItems--; // remove argument
1261
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeBinding.BOOLEAN);		
1262
}
1263
public void invokeStringValueOf(int typeID) {
1252
public void invokeStringValueOf(int typeID) {
1264
	super.invokeStringValueOf(typeID);
1253
	super.invokeStringValueOf(typeID);
1265
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeIds.T_JavaLangString, ConstantPool.JavaLangStringConstantPoolName);		
1254
	this.currentFrame.stackItems[this.currentFrame.numberOfStackItems - 1] = new VerificationTypeInfo(TypeIds.T_JavaLangString, ConstantPool.JavaLangStringConstantPoolName);		
Lines 1562-1574 Link Here
1562
	verificationTypeInfo.offset = pc;
1551
	verificationTypeInfo.offset = pc;
1563
	this.currentFrame.addStackItem(verificationTypeInfo);
1552
	this.currentFrame.addStackItem(verificationTypeInfo);
1564
}
1553
}
1565
public void newJavaLangIllegalArgumentException() {
1566
	int pc = this.position;
1567
	super.newJavaLangIllegalArgumentException();
1568
	final VerificationTypeInfo verificationTypeInfo = new VerificationTypeInfo(TypeIds.T_JavaLangIllegalArgumentException, VerificationTypeInfo.ITEM_UNINITIALIZED, ConstantPool.JavaLangIllegalArgumentExceptionConstantPoolName);
1569
	verificationTypeInfo.offset = pc;
1570
	this.currentFrame.addStackItem(verificationTypeInfo);
1571
}
1572
public void newNoClassDefFoundError() {
1554
public void newNoClassDefFoundError() {
1573
	int pc = this.position;
1555
	int pc = this.position;
1574
	super.newNoClassDefFoundError();
1556
	super.newNoClassDefFoundError();
(-)compiler/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.java (-5 lines)
Lines 73-80 Link Here
73
	public static final char[] doubleDoubleSignature = "(D)Ljava/lang/Double;".toCharArray(); //$NON-NLS-1$
73
	public static final char[] doubleDoubleSignature = "(D)Ljava/lang/Double;".toCharArray(); //$NON-NLS-1$
74
	public static final char[] DOUBLEVALUE_DOUBLE_METHOD_NAME = "doubleValue".toCharArray(); //$NON-NLS-1$
74
	public static final char[] DOUBLEVALUE_DOUBLE_METHOD_NAME = "doubleValue".toCharArray(); //$NON-NLS-1$
75
	public static final char[] DOUBLEVALUE_DOUBLE_METHOD_SIGNATURE = "()D".toCharArray(); //$NON-NLS-1$
75
	public static final char[] DOUBLEVALUE_DOUBLE_METHOD_SIGNATURE = "()D".toCharArray(); //$NON-NLS-1$
76
	public static final char[] Equals = "equals".toCharArray(); //$NON-NLS-1$
77
	public static final char[] EqualsSignature = "(Ljava/lang/Object;)Z".toCharArray(); //$NON-NLS-1$
78
	public static final char[] Exit = "exit".toCharArray(); //$NON-NLS-1$
76
	public static final char[] Exit = "exit".toCharArray(); //$NON-NLS-1$
79
	public static final char[] ExitIntSignature = "(I)V".toCharArray(); //$NON-NLS-1$
77
	public static final char[] ExitIntSignature = "(I)V".toCharArray(); //$NON-NLS-1$
80
	public static final char[] FloatConstrSignature = "(F)V".toCharArray(); //$NON-NLS-1$
78
	public static final char[] FloatConstrSignature = "(F)V".toCharArray(); //$NON-NLS-1$
Lines 143-149 Link Here
143
	public static final char[] JavaLangErrorConstantPoolName = "java/lang/Error".toCharArray(); //$NON-NLS-1$
141
	public static final char[] JavaLangErrorConstantPoolName = "java/lang/Error".toCharArray(); //$NON-NLS-1$
144
	public static final char[] JavaLangExceptionConstantPoolName = "java/lang/Exception".toCharArray(); //$NON-NLS-1$
142
	public static final char[] JavaLangExceptionConstantPoolName = "java/lang/Exception".toCharArray(); //$NON-NLS-1$
145
	public static final char[] JavaLangFloatConstantPoolName = "java/lang/Float".toCharArray(); //$NON-NLS-1$
143
	public static final char[] JavaLangFloatConstantPoolName = "java/lang/Float".toCharArray(); //$NON-NLS-1$
146
	public static final char[] JavaLangIllegalArgumentExceptionConstantPoolName = "java/lang/IllegalArgumentException".toCharArray(); //$NON-NLS-1$
147
	public static final char[] JavaLangIntegerConstantPoolName = "java/lang/Integer".toCharArray(); //$NON-NLS-1$
144
	public static final char[] JavaLangIntegerConstantPoolName = "java/lang/Integer".toCharArray(); //$NON-NLS-1$
148
	public static final char[] JavaLangLongConstantPoolName = "java/lang/Long".toCharArray(); //$NON-NLS-1$
145
	public static final char[] JavaLangLongConstantPoolName = "java/lang/Long".toCharArray(); //$NON-NLS-1$
149
	public static final char[] JavaLangNoClassDefFoundErrorConstantPoolName = "java/lang/NoClassDefFoundError".toCharArray(); //$NON-NLS-1$
146
	public static final char[] JavaLangNoClassDefFoundErrorConstantPoolName = "java/lang/NoClassDefFoundError".toCharArray(); //$NON-NLS-1$
Lines 169-176 Link Here
169
	public static final char[] longLongSignature = "(J)Ljava/lang/Long;".toCharArray(); //$NON-NLS-1$
166
	public static final char[] longLongSignature = "(J)Ljava/lang/Long;".toCharArray(); //$NON-NLS-1$
170
	public static final char[] LONGVALUE_LONG_METHOD_NAME = "longValue".toCharArray(); //$NON-NLS-1$
167
	public static final char[] LONGVALUE_LONG_METHOD_NAME = "longValue".toCharArray(); //$NON-NLS-1$
171
	public static final char[] LONGVALUE_LONG_METHOD_SIGNATURE = "()J".toCharArray(); //$NON-NLS-1$
168
	public static final char[] LONGVALUE_LONG_METHOD_SIGNATURE = "()J".toCharArray(); //$NON-NLS-1$
172
	public static final char[] Name = "name".toCharArray(); //$NON-NLS-1$
173
	public static final char[] NameSignature = "()Ljava/lang/String;".toCharArray(); //$NON-NLS-1$
174
	public static final char[] NewInstance = "newInstance".toCharArray(); //$NON-NLS-1$
169
	public static final char[] NewInstance = "newInstance".toCharArray(); //$NON-NLS-1$
175
	public static final char[] NewInstanceSignature = "(Ljava/lang/Class;[I)Ljava/lang/Object;".toCharArray(); //$NON-NLS-1$
170
	public static final char[] NewInstanceSignature = "(Ljava/lang/Class;[I)Ljava/lang/Object;".toCharArray(); //$NON-NLS-1$
176
	public static final char[] Next = "next".toCharArray();//$NON-NLS-1$
171
	public static final char[] Next = "next".toCharArray();//$NON-NLS-1$
(-)compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java (-55 / +9 lines)
Lines 2328-2343 Link Here
2328
	this.return_();
2328
	this.return_();
2329
}
2329
}
2330
//static X valueOf(String name) {
2330
//static X valueOf(String name) {
2331
// return (X) Enum.valueOf(name, X.class);
2331
// return (X) Enum.valueOf(X.class, name);
2332
//}		
2332
//}		
2333
public void generateSyntheticBodyForEnumValueOf(SyntheticMethodBinding methodBinding) {
2333
public void generateSyntheticBodyForEnumValueOf(SyntheticMethodBinding methodBinding) {
2334
	initializeMaxLocals(methodBinding);
2334
	initializeMaxLocals(methodBinding);
2335
	this.ldc(methodBinding.declaringClass);
2335
	final ReferenceBinding declaringClass = methodBinding.declaringClass;
2336
	this.ldc(declaringClass);
2336
	this.aload_0();
2337
	this.aload_0();
2337
	this.invokeJavaLangEnumvalueOf();
2338
	this.invokeJavaLangEnumvalueOf(declaringClass);
2338
	this.checkcast(methodBinding.declaringClass);
2339
	this.checkcast(declaringClass);
2339
	this.areturn();
2340
	this.areturn();
2340
}	
2341
}
2341
//static X[] values() {
2342
//static X[] values() {
2342
// X[] values;
2343
// X[] values;
2343
// int length;
2344
// int length;
Lines 3904-3923 Link Here
3904
			ConstantPool.DesiredAssertionStatus,
3905
			ConstantPool.DesiredAssertionStatus,
3905
			ConstantPool.DesiredAssertionStatusSignature);
3906
			ConstantPool.DesiredAssertionStatusSignature);
3906
}
3907
}
3907
public void invokeJavaLangEnumname(TypeBinding typeBinding) {
3908
public void invokeJavaLangEnumvalueOf(ReferenceBinding binding) {
3908
	// invokevirtual: java.lang.Enum.name()String
3909
	// invokestatic: java.lang.Enum.valueOf(Class,String)
3909
	if (DEBUG) System.out.println(position + "\t\tinvokevirtual: java.lang.Enum.name()Ljava/lang/String;"); //$NON-NLS-1$
3910
	if (DEBUG) System.out.println(position + "\t\tinvokestatic: java.lang.Enum.valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;"); //$NON-NLS-1$
3910
	this.invoke(
3911
			Opcodes.OPC_invokevirtual,
3912
			0, // argCount
3913
			1, // return type size
3914
			typeBinding.constantPoolName(),
3915
			ConstantPool.Name,
3916
			ConstantPool.NameSignature);
3917
}
3918
public void invokeJavaLangEnumvalueOf() {
3919
	// invokevirtual: java.lang.Enum.valueOf(String,Class)
3920
	if (DEBUG) System.out.println(position + "\t\tinvokevirtual: java.lang.Enum.valueOf(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Enum;"); //$NON-NLS-1$
3921
	this.invoke(
3911
	this.invoke(
3922
			Opcodes.OPC_invokestatic,
3912
			Opcodes.OPC_invokestatic,
3923
			2, // argCount
3913
			2, // argCount
Lines 3942-3958 Link Here
3942
			ConstantPool.Init,
3932
			ConstantPool.Init,
3943
			ConstantPool.StringConstructorSignature);
3933
			ConstantPool.StringConstructorSignature);
3944
}
3934
}
3945
public void invokeJavaLangIllegalArgumentExceptionStringConstructor() {
3946
	// invokespecial: java.lang.IllegalArgumentException.<init>(String)V
3947
	if (DEBUG) System.out.println(position + "\t\tinvokespecial: java.lang.IllegalArgumentException.<init>(java.lang.String)V"); //$NON-NLS-1$
3948
	this.invoke(
3949
			Opcodes.OPC_invokespecial,
3950
			1, // argCount
3951
			0, // return type size
3952
			ConstantPool.JavaLangIllegalArgumentExceptionConstantPoolName,
3953
			ConstantPool.Init,
3954
			ConstantPool.StringConstructorSignature);
3955
}
3956
public void invokeJavaLangReflectConstructorNewInstance() {
3935
public void invokeJavaLangReflectConstructorNewInstance() {
3957
	// invokevirtual: java.lang.reflect.Constructor.newInstance([Ljava.lang.Object;)Ljava.lang.Object;
3936
	// invokevirtual: java.lang.reflect.Constructor.newInstance([Ljava.lang.Object;)Ljava.lang.Object;
3958
	this.invoke(
3937
	this.invoke(
Lines 4376-4392 Link Here
4376
			ConstantPool.ToString,
4355
			ConstantPool.ToString,
4377
			ConstantPool.ToStringSignature);
4356
			ConstantPool.ToStringSignature);
4378
}
4357
}
4379
public void invokeStringEquals() {
4380
	// invokevirtual: java.lang.String.equals(java.lang.Object)
4381
	if (DEBUG) System.out.println(position + "\t\tinvokevirtual: java.lang.String.equals(...)"); //$NON-NLS-1$
4382
	this.invoke(
4383
			Opcodes.OPC_invokevirtual,
4384
			1, // argCount
4385
			1, // return type size
4386
			ConstantPool.JavaLangStringConstantPoolName,
4387
			ConstantPool.Equals,
4388
			ConstantPool.EqualsSignature);
4389
}
4390
public void invokeStringIntern() {
4358
public void invokeStringIntern() {
4391
	// invokevirtual: java.lang.String.intern()
4359
	// invokevirtual: java.lang.String.intern()
4392
	if (DEBUG) System.out.println(position + "\t\tinvokevirtual: java.lang.String.intern()"); //$NON-NLS-1$
4360
	if (DEBUG) System.out.println(position + "\t\tinvokevirtual: java.lang.String.intern()"); //$NON-NLS-1$
Lines 5552-5571 Link Here
5552
	bCodeStream[classFileOffset++] = Opcodes.OPC_new;
5520
	bCodeStream[classFileOffset++] = Opcodes.OPC_new;
5553
	writeUnsignedShort(constantPool.literalIndexForType(ConstantPool.JavaLangErrorConstantPoolName));
5521
	writeUnsignedShort(constantPool.literalIndexForType(ConstantPool.JavaLangErrorConstantPoolName));
5554
}
5522
}
5555
public void newJavaLangIllegalArgumentException() {
5556
	// new: java.lang.IllegalArgumentException
5557
	if (DEBUG) System.out.println(position + "\t\tnew: java.lang.IllegalArgumentException"); //$NON-NLS-1$
5558
	countLabels = 0;
5559
	stackDepth++;
5560
	if (stackDepth > stackMax)
5561
		stackMax = stackDepth;
5562
	if (classFileOffset + 2 >= bCodeStream.length) {
5563
		resizeByteArray();
5564
	}
5565
	position++;
5566
	bCodeStream[classFileOffset++] = Opcodes.OPC_new;
5567
	writeUnsignedShort(constantPool.literalIndexForType(ConstantPool.JavaLangIllegalArgumentExceptionConstantPoolName));
5568
}
5569
public void newNoClassDefFoundError() {
5523
public void newNoClassDefFoundError() {
5570
	// new: java.lang.NoClassDefFoundError
5524
	// new: java.lang.NoClassDefFoundError
5571
	if (DEBUG) System.out.println(position + "\t\tnew: java.lang.NoClassDefFoundError"); //$NON-NLS-1$
5525
	if (DEBUG) System.out.println(position + "\t\tnew: java.lang.NoClassDefFoundError"); //$NON-NLS-1$

Return to bug 145746