42
42
* Internal build utility used to rewrite eclipse runtime classes.
43
43
*
44
44
* @author Phillip Webb
45
- * @author Andy Wilkinson
46
45
*/
47
46
public final class EclipseRewriter {
48
47
@@ -76,7 +75,7 @@ public void rewrite(String file) throws IOException {
76
75
private void rewrite (FileSystem zip ) throws IOException {
77
76
rewrite (zip , "org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.class" ,
78
77
DefaultCodeFormatterManipulator ::new );
79
- rewrite (zip , "org/eclipse/osgi/util/NLS.class" , NlsManipulator ::new );
78
+ rewrite (zip , "org/eclipse/osgi/util/NLS$1 .class" , NlsManipulator ::new );
80
79
}
81
80
82
81
private void rewrite (FileSystem zip , String name , Function <ClassWriter , ClassVisitor > manipulator )
@@ -101,7 +100,7 @@ public static void main(String[] args) throws Exception {
101
100
private static class DefaultCodeFormatterManipulator extends ClassVisitor {
102
101
103
102
DefaultCodeFormatterManipulator (ClassVisitor visitor ) {
104
- super (Opcodes .ASM7 , visitor );
103
+ super (Opcodes .ASM5 , visitor );
105
104
}
106
105
107
106
@ Override
@@ -130,7 +129,7 @@ public MethodVisitor visitMethod(int access, String name, String desc, String si
130
129
private static class DefaultCodeFormatterMethodManipulator extends MethodVisitor {
131
130
132
131
DefaultCodeFormatterMethodManipulator (MethodVisitor mv ) {
133
- super (Opcodes .ASM7 , mv );
132
+ super (Opcodes .ASM5 , mv );
134
133
}
135
134
136
135
@ Override
@@ -150,12 +149,12 @@ public void visitMethodInsn(int opcode, String owner, String name, String desc,
150
149
private static class NlsManipulator extends ClassVisitor {
151
150
152
151
NlsManipulator (ClassVisitor visitor ) {
153
- super (Opcodes .ASM7 , visitor );
152
+ super (Opcodes .ASM5 , visitor );
154
153
}
155
154
156
155
@ Override
157
156
public MethodVisitor visitMethod (int access , String name , String desc , String signature , String [] exceptions ) {
158
- if ("<clinit> " .equals (name )) {
157
+ if ("run " .equals (name ) && desc . contains ( "Boolean" )) {
159
158
return new NslMethodManipulator (super .visitMethod (access , name , desc , signature , exceptions ));
160
159
}
161
160
return super .visitMethod (access , name , desc , signature , exceptions );
@@ -172,26 +171,17 @@ private static class NslMethodManipulator extends MethodVisitor {
172
171
private final MethodVisitor methodVisitor ;
173
172
174
173
NslMethodManipulator (MethodVisitor mv ) {
175
- super (Opcodes .ASM7 , null );
174
+ super (Opcodes .ASM5 , null );
176
175
this .methodVisitor = mv ;
177
176
}
178
177
179
178
@ Override
180
179
public void visitEnd () {
181
180
MethodVisitor mv = this .methodVisitor ;
182
181
mv .visitCode ();
183
- mv .visitInsn (Opcodes .ICONST_0 );
184
- mv .visitTypeInsn (Opcodes .ANEWARRAY , "java/lang/Object" );
185
- mv .visitFieldInsn (Opcodes .PUTSTATIC , "org/eclipse/osgi/util/NLS" , "EMPTY_ARGS" , "[Ljava/lang/Object;" );
186
182
mv .visitFieldInsn (Opcodes .GETSTATIC , "java/lang/Boolean" , "TRUE" , "Ljava/lang/Boolean;" );
187
- mv .visitMethodInsn (Opcodes .INVOKEVIRTUAL , "java/lang/Boolean" , "booleanValue" , "()Z" , false );
188
- mv .visitFieldInsn (Opcodes .PUTSTATIC , "org/eclipse/osgi/util/NLS" , "ignoreWarnings" , "Z" );
189
- mv .visitTypeInsn (Opcodes .NEW , "java/lang/Object" );
190
- mv .visitInsn (Opcodes .DUP );
191
- mv .visitMethodInsn (Opcodes .INVOKESPECIAL , "java/lang/Object" , "<init>" , "()V" , false );
192
- mv .visitFieldInsn (Opcodes .PUTSTATIC , "org/eclipse/osgi/util/NLS" , "ASSIGNED" , "Ljava/lang/Object;" );
193
- mv .visitInsn (Opcodes .RETURN );
194
- mv .visitMaxs (2 , 0 );
183
+ mv .visitInsn (Opcodes .ARETURN );
184
+ mv .visitMaxs (1 , 1 );
195
185
mv .visitEnd ();
196
186
}
197
187
0 commit comments