diff --git a/.idea/libraries/asm4.xml b/.idea/libraries/asm4.xml
new file mode 100644
index 000000000000..c6676c49b88e
--- /dev/null
+++ b/.idea/libraries/asm4.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/scripts/libLicenses.gant b/build/scripts/libLicenses.gant
index e2b5afc23595..d03bc5586bc6 100644
--- a/build/scripts/libLicenses.gant
+++ b/build/scripts/libLicenses.gant
@@ -153,6 +153,7 @@ binding.setVariable("generateLicensesTable", {String filePath, Set usedM
libraryLicense(name: "Alloy L&F", libraryName: "alloy.jar", version: "1.4.4", license: "link (company license)", url: "http://www.incors.com/lookandfeel/", licenseUrl: "http://lookandfeel.incors.com/display_licence.php?back=purchase.php&selMenu=Purchase")
libraryLicense(name: "Ant", version: "1.7", license: "Apache 2.0", url: "http://ant.apache.org/", licenseUrl: "http://ant.apache.org/license.html")
libraryLicense(name: "ASM Bytecode Manipulation Framework", libraryName: "asm", version: "3.3", license: "BSD", url: "http://asm.objectweb.org/", licenseUrl: "http://asm.objectweb.org/license.html")
+libraryLicense(name: "ASM Bytecode Manipulation Framework", libraryName: "asm4", version: "4.0", license: "BSD", url: "http://asm.objectweb.org/", licenseUrl: "http://asm.objectweb.org/license.html")
libraryLicense(name: "Axis", libraryName: "axis-1.4", version: "1.4", license: "Apache 2.0", url: "http://ws.apache.org/axis/", licenseUrl: "http://svn.jetbrains.org/idea/Trunk/bundled/WebServices/resources/lib/axis-1.4.0/axis.LICENSE")
libraryLicense(name: "CGLib", libraryName: "CGLIB", version: "2.2.2", license: "Apache", url: "http://cglib.sourceforge.net/", licenseUrl: "http://www.apache.org/foundation/licence-FAQ.html")
libraryLicense(name: "classworlds", libraryName: "classworlds-1.1.jar", version: "1.1", license: "codehaus", url: "http://classworlds.codehaus.org/", licenseUrl: "http://classworlds.codehaus.org/license.html")
diff --git a/java/compiler/forms-compiler/forms-compiler.iml b/java/compiler/forms-compiler/forms-compiler.iml
index 39ba1446f119..1a851bf7859f 100644
--- a/java/compiler/forms-compiler/forms-compiler.iml
+++ b/java/compiler/forms-compiler/forms-compiler.iml
@@ -10,7 +10,7 @@
-
+
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java
index b838594d8f6f..473bb38d6f5f 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java
@@ -19,11 +19,10 @@ import com.intellij.compiler.instrumentation.InstrumentationClassFinder;
import com.intellij.uiDesigner.UIFormXmlConstants;
import com.intellij.uiDesigner.lw.*;
import com.intellij.uiDesigner.shared.BorderType;
-import org.objectweb.asm.*;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.commons.EmptyVisitor;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.*;
+import org.jetbrains.asm4.Label;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import javax.swing.*;
import javax.swing.border.Border;
@@ -229,7 +228,7 @@ public class AsmCodeGenerator {
return Type.getType("L" + className.replace('.', '/') + ";");
}
- class FormClassVisitor extends ClassAdapter {
+ class FormClassVisitor extends ClassVisitor {
private String myClassName;
private String mySuperName;
private final Map myFieldDescMap = new HashMap();
@@ -239,7 +238,7 @@ public class AsmCodeGenerator {
private final boolean myExplicitSetupCall;
public FormClassVisitor(final ClassVisitor cv, final boolean explicitSetupCall) {
- super(cv);
+ super(Opcodes.ASM4, cv);
myExplicitSetupCall = explicitSetupCall;
}
@@ -893,7 +892,7 @@ public class AsmCodeGenerator {
}
}
- private class FormConstructorVisitor extends MethodAdapter {
+ private class FormConstructorVisitor extends MethodVisitor {
private final String myClassName;
private final String mySuperName;
private boolean callsSelfConstructor = false;
@@ -901,7 +900,7 @@ public class AsmCodeGenerator {
private boolean mySuperCalled = false;
public FormConstructorVisitor(final MethodVisitor mv, final String className, final String superName) {
- super(mv);
+ super(Opcodes.ASM4, mv);
myClassName = className;
mySuperName = superName;
}
@@ -954,11 +953,11 @@ public class AsmCodeGenerator {
}
}
- private static class FirstPassClassVisitor extends ClassAdapter {
+ private static class FirstPassClassVisitor extends ClassVisitor {
private boolean myExplicitSetupCall = false;
public FirstPassClassVisitor() {
- super(new EmptyVisitor());
+ super(Opcodes.ASM4, new ClassVisitor(Opcodes.ASM4){});
}
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
@@ -972,9 +971,9 @@ public class AsmCodeGenerator {
return myExplicitSetupCall;
}
- private class FirstPassConstructorVisitor extends MethodAdapter {
+ private class FirstPassConstructorVisitor extends MethodVisitor {
public FirstPassConstructorVisitor() {
- super(new EmptyVisitor());
+ super(Opcodes.ASM4, new MethodVisitor(Opcodes.ASM4){});
}
public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) {
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java
index 8db3a8b89eca..86b6e42c09b2 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java
@@ -17,9 +17,9 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.UIFormXmlConstants;
import com.intellij.uiDesigner.lw.LwComponent;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java
index 542587fb862b..8443020bfc37 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java
@@ -16,9 +16,9 @@
package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.ColorDescriptor;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java
index d4cc81d36772..7a0fd4f9ec86 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java
@@ -15,9 +15,9 @@
*/
package com.intellij.uiDesigner.compiler;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
-import org.objectweb.asm.Type;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java
index e1900b4cc490..720d4c01582b 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java
@@ -16,8 +16,8 @@
package com.intellij.uiDesigner.compiler;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.Type;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
/**
* @author yole
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java
index f5e117610a7e..34a41d89eb22 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java
@@ -18,11 +18,11 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwContainer;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
-import java.awt.FlowLayout;
+import java.awt.*;
/**
* @author yole
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java
index 2df623db060d..f15a8d4c314f 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java
@@ -19,9 +19,9 @@ import com.intellij.compiler.instrumentation.InstrumentationClassFinder;
import com.intellij.uiDesigner.lw.FontDescriptor;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwIntrospectedProperty;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java
index 4eb9b2324952..a30061f0c784 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java
@@ -16,17 +16,17 @@
package com.intellij.uiDesigner.compiler;
+import com.intellij.uiDesigner.core.GridConstraints;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwContainer;
-import com.intellij.uiDesigner.core.GridConstraints;
-import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.CellConstraints;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import com.jgoodies.forms.layout.FormLayout;
+import org.jetbrains.asm4.Opcodes;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
-import java.awt.Insets;
+import java.awt.*;
/**
* @author yole
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java
index ad01a3713f93..711d2c44726e 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java
@@ -18,9 +18,9 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.core.Spacer;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwContainer;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import javax.swing.*;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java
index 1f6d3d0c7d33..954f166bb42e 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java
@@ -15,13 +15,13 @@
*/
package com.intellij.uiDesigner.compiler;
-import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.uiDesigner.core.GridLayoutManager;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwContainer;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
/**
* @author yole
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java
index da722ddc9e4f..c435704a0144 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java
@@ -15,10 +15,10 @@
*/
package com.intellij.uiDesigner.compiler;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
-import org.objectweb.asm.Type;
import com.intellij.uiDesigner.lw.IconDescriptor;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import javax.swing.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java
index 3ecabe8118fe..fb516ca430b3 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java
@@ -15,9 +15,9 @@
*/
package com.intellij.uiDesigner.compiler;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java
index a89141c27d4c..f5d2594c3b99 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java
@@ -17,10 +17,10 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwContainer;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.Type;
+import org.jetbrains.asm4.Opcodes;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java
index c8b7583a8877..93ed130f6fbb 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java
@@ -16,9 +16,9 @@
package com.intellij.uiDesigner.compiler;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
/**
* @author yole
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java
index 1f423a704df3..b3c1aeb94d87 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java
@@ -18,7 +18,7 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.compiler.instrumentation.InstrumentationClassFinder;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwIntrospectedProperty;
-import org.objectweb.asm.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
import java.io.IOException;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java
index be71f100ea27..fb86b0833ddf 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java
@@ -15,9 +15,9 @@
*/
package com.intellij.uiDesigner.compiler;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
-import org.objectweb.asm.Type;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import java.awt.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java
index 5608c7a53ec3..68725007cf43 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java
@@ -17,9 +17,9 @@
package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.LwComponent;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import javax.swing.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java
index c1456e668b91..5836b6ca29d7 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java
@@ -18,9 +18,9 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwContainer;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
/**
* Layout code generator shared between BorderLayout and CardLayout.
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java
index f0e19a64b696..28533f4776b4 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java
@@ -17,9 +17,9 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwSplitPane;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import javax.swing.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java
index 992774e52551..4438fd0c4f76 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java
@@ -20,12 +20,12 @@ import com.intellij.uiDesigner.core.SupportCode;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwIntrospectedProperty;
import com.intellij.uiDesigner.lw.StringDescriptor;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Label;
+import org.jetbrains.asm4.MethodVisitor;
+import org.jetbrains.asm4.Opcodes;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import javax.swing.*;
import java.io.IOException;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java
index 59be36dca5fe..ee867bf21a56 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java
@@ -17,9 +17,9 @@ package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.LwComponent;
import com.intellij.uiDesigner.lw.LwTabbedPane;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.Type;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
import javax.swing.*;
diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java
index 239cec71eba7..b90a778cbed9 100644
--- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java
+++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java
@@ -17,8 +17,8 @@
package com.intellij.uiDesigner.compiler;
import com.intellij.uiDesigner.lw.LwComponent;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import org.jetbrains.asm4.commons.GeneratorAdapter;
+import org.jetbrains.asm4.commons.Method;
/**
* @author yole
diff --git a/java/compiler/impl/compiler-impl.iml b/java/compiler/impl/compiler-impl.iml
index d9d39953f177..57d6c410b0b2 100644
--- a/java/compiler/impl/compiler-impl.iml
+++ b/java/compiler/impl/compiler-impl.iml
@@ -15,7 +15,7 @@
-
+
diff --git a/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java b/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java
index 23078ac750b3..d43279eed9c6 100644
--- a/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java
+++ b/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java
@@ -291,7 +291,7 @@ public class CompileServerManager implements ApplicationComponent{
if (openProjects.length > 0) {
final List futures = new ArrayList();
for (final Project project : openProjects) {
- if (project.isDefault()) {
+ if (project.isDefault() || project.isDisposed()) {
continue;
}
final CompilerWorkspaceConfiguration config = CompilerWorkspaceConfiguration.getInstance(project);
diff --git a/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java b/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java
index af32fffb67bb..61d1e05e6663 100644
--- a/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java
+++ b/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java
@@ -27,7 +27,7 @@ import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiManager;
import com.intellij.psi.util.ClassUtil;
import org.jetbrains.annotations.NonNls;
-import org.objectweb.asm.ClassWriter;
+import org.jetbrains.asm4.ClassWriter;
/**
* @author yole
diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java b/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java
index 5b77864f6e1a..ce38e67262f3 100644
--- a/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java
+++ b/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java
@@ -108,8 +108,7 @@ public class BuildPropertiesImpl extends BuildProperties {
Path javac2 = new Path(PROPERTY_JAVAC2_CLASSPATH_ID);
javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "javac2.jar")));
javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "jdom.jar")));
- javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "asm.jar")));
- javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "asm-commons.jar")));
+ javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "asm4-all.jar")));
javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "jgoodies-forms.jar")));
add(javac2);
//noinspection HardCodedStringLiteral
diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java
index 6ada45f6853f..213f5736c2ab 100644
--- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java
+++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java
@@ -64,8 +64,8 @@ import gnu.trove.THashMap;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.ClassWriter;
import java.io.File;
import java.io.IOException;
diff --git a/java/compiler/instrumentation-util/instrumentation-util.iml b/java/compiler/instrumentation-util/instrumentation-util.iml
index 1b09002e2fff..60d62d325d23 100644
--- a/java/compiler/instrumentation-util/instrumentation-util.iml
+++ b/java/compiler/instrumentation-util/instrumentation-util.iml
@@ -7,7 +7,7 @@
-
+
diff --git a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java
index de009b37c9bf..78898be2bb23 100644
--- a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java
+++ b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java
@@ -1,9 +1,9 @@
package com.intellij.compiler.instrumentation;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.commons.EmptyVisitor;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.ClassVisitor;
+import org.jetbrains.asm4.MethodVisitor;
+import org.jetbrains.asm4.Opcodes;
import sun.misc.Resource;
import java.io.*;
@@ -331,13 +331,17 @@ public class InstrumentationClassFinder {
}
}
- private static class V extends EmptyVisitor {
+ private static class V extends ClassVisitor {
public String mySuperclassName = null;
public String[] myInterfaces = null;
public String myName = null;
public int myModifiers;
private final List myMethods = new ArrayList();
+ private V() {
+ super(Opcodes.ASM4);
+ }
+
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
if ((access & Opcodes.ACC_PUBLIC) > 0) {
myMethods.add(new PseudoMethod(access, name, desc));
diff --git a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java
index ffdf058a2fbf..b2f93c5e4603 100644
--- a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java
+++ b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java
@@ -1,6 +1,6 @@
package com.intellij.compiler.instrumentation;
-import org.objectweb.asm.ClassWriter;
+import org.jetbrains.asm4.ClassWriter;
/**
* @author Eugene Zhuravlev
diff --git a/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java b/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java
index 02abbc67e238..45dd56aa60b1 100644
--- a/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java
+++ b/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java
@@ -15,7 +15,7 @@
*/
package com.intellij.compiler.notNullVerification;
-import org.objectweb.asm.*;
+import org.jetbrains.asm4.*;
import java.util.ArrayList;
@@ -23,7 +23,7 @@ import java.util.ArrayList;
* @author ven
* @noinspection HardCodedStringLiteral
*/
-public class NotNullVerifyingInstrumenter extends ClassAdapter implements Opcodes {
+public class NotNullVerifyingInstrumenter extends ClassVisitor implements Opcodes {
private boolean myIsModification = false;
private String myClassName;
public static final String NOT_NULL = "org/jetbrains/annotations/NotNull";
@@ -33,7 +33,7 @@ public class NotNullVerifyingInstrumenter extends ClassAdapter implements Opcode
private static final String CONSTRUCTOR_NAME = "";
public NotNullVerifyingInstrumenter(final ClassVisitor classVisitor) {
- super(classVisitor);
+ super(Opcodes.ASM4, classVisitor);
}
public boolean isModification() {
@@ -63,7 +63,7 @@ public class NotNullVerifyingInstrumenter extends ClassAdapter implements Opcode
desc,
signature,
exceptions);
- return new MethodAdapter(v) {
+ return new MethodVisitor(Opcodes.ASM4, v) {
private final ArrayList myNotNullParams = new ArrayList();
private int mySyntheticCount = 0;
diff --git a/java/compiler/javac2/javac2.iml b/java/compiler/javac2/javac2.iml
index a8680af11500..bdf5f5d4cd98 100644
--- a/java/compiler/javac2/javac2.iml
+++ b/java/compiler/javac2/javac2.iml
@@ -10,7 +10,7 @@
-
+
diff --git a/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java b/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java
index eb423ae59820..7497c5b5a327 100644
--- a/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java
+++ b/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java
@@ -22,10 +22,10 @@ import com.intellij.uiDesigner.compiler.*;
import com.intellij.uiDesigner.lw.CompiledClassPropertiesProvider;
import com.intellij.uiDesigner.lw.LwRootContainer;
import org.apache.tools.ant.Project;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.commons.EmptyVisitor;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.ClassVisitor;
+import org.jetbrains.asm4.ClassWriter;
+import org.jetbrains.asm4.Opcodes;
import java.io.*;
import java.net.MalformedURLException;
@@ -53,7 +53,7 @@ public class InstrumentationUtil {
public static int getClassFileVersion(ClassReader reader) {
final int[] classfileVersion = new int[1];
- reader.accept(new EmptyVisitor() {
+ reader.accept(new ClassVisitor(Opcodes.ASM4) {
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
classfileVersion[0] = version;
}
diff --git a/java/compiler/javac2/src/com/intellij/ant/Javac2.java b/java/compiler/javac2/src/com/intellij/ant/Javac2.java
index 5c3035534b44..a56640e0e1ad 100644
--- a/java/compiler/javac2/src/com/intellij/ant/Javac2.java
+++ b/java/compiler/javac2/src/com/intellij/ant/Javac2.java
@@ -25,10 +25,10 @@ import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Javac;
import org.apache.tools.ant.types.Path;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.commons.EmptyVisitor;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.ClassVisitor;
+import org.jetbrains.asm4.ClassWriter;
+import org.jetbrains.asm4.Opcodes;
import java.io.*;
import java.net.MalformedURLException;
@@ -440,7 +440,7 @@ public class Javac2 extends Javac {
private static int getClassFileVersion(ClassReader reader) {
final int[] classfileVersion = new int[1];
- reader.accept(new EmptyVisitor() {
+ reader.accept(new ClassVisitor(Opcodes.ASM4) {
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
classfileVersion[0] = version;
}
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java
index 68783d708616..e732b5591b1f 100644
--- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java
+++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java
@@ -770,6 +770,7 @@ public abstract class DebugProcessImpl implements DebugProcess {
finally {
myVirtualMachineProxy = null;
myPositionManager = null;
+ myReturnValueWatcher = null;
myState.set(STATE_DETACHED);
try {
myDebugProcessDispatcher.getMulticaster().processDetached(this, closedByUser);
diff --git a/java/java-psi-impl/java-psi-impl.iml b/java/java-psi-impl/java-psi-impl.iml
index ccd2d51410f9..0bceb7e7613e 100644
--- a/java/java-psi-impl/java-psi-impl.iml
+++ b/java/java-psi-impl/java-psi-impl.iml
@@ -11,7 +11,7 @@
-
+
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java
index d7164e97d879..d2e031a64e9c 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java
@@ -24,7 +24,7 @@ import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl;
import com.intellij.psi.stubs.PsiFileStub;
import com.intellij.util.cls.ClsFormatException;
import org.jetbrains.annotations.Nullable;
-import org.objectweb.asm.ClassReader;
+import org.jetbrains.asm4.ClassReader;
import java.io.IOException;
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java
index 89abfdff1b75..936269905957 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java
@@ -20,7 +20,7 @@
package com.intellij.psi.impl.compiled;
import org.jetbrains.annotations.Nullable;
-import org.objectweb.asm.ClassReader;
+import org.jetbrains.asm4.ClassReader;
public interface InnerClassSourceStrategy {
@Nullable
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java
index 2d86e1b3b576..8ba604ac0ba6 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java
@@ -38,8 +38,7 @@ import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.objectweb.asm.*;
-import org.objectweb.asm.commons.EmptyVisitor;
+import org.jetbrains.asm4.*;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
@@ -48,7 +47,7 @@ import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
-public class StubBuildingVisitor implements ClassVisitor {
+public class StubBuildingVisitor extends ClassVisitor {
private static final Pattern REGEX_PATTERN = Pattern.compile("(?<=[^\\$])\\${1}(?=[^\\$])");
public static final String DOUBLE_POSITIVE_INF = "1.0 / 0.0";
@@ -71,6 +70,7 @@ public class StubBuildingVisitor implements ClassVisitor {
private JavaLexer myLexer;
public StubBuildingVisitor(final T classSource, InnerClassSourceStrategy innersStrategy, final StubElement parent, final int access) {
+ super(Opcodes.ASM4);
mySource = classSource;
myInnersStrategy = innersStrategy;
myParent = parent;
@@ -316,7 +316,7 @@ public class StubBuildingVisitor implements ClassVisitor {
final byte flags = PsiFieldStubImpl.packFlags((access & Opcodes.ACC_ENUM) != 0, (access & Opcodes.ACC_DEPRECATED) != 0, false);
PsiFieldStub stub = new PsiFieldStubImpl(myResult, name, fieldType(desc, signature), constToString(value), flags);
final PsiModifierListStub modList = new PsiModifierListStubImpl(stub, packFieldFlags(access));
- return new AnnotationCollectingVisitor(stub, modList);
+ return new AnnotationCollectingVisitor(modList);
}
@NotNull
@@ -493,13 +493,14 @@ public class StubBuildingVisitor implements ClassVisitor {
public void visitEnd() {
}
- private static class AnnotationTextCollector implements AnnotationVisitor {
+ private static class AnnotationTextCollector extends AnnotationVisitor {
private final StringBuilder myBuilder = new StringBuilder();
private final AnnotationResultCallback myCallback;
private boolean hasParams = false;
private final String myDesc;
public AnnotationTextCollector(@Nullable String desc, AnnotationResultCallback callback) {
+ super(Opcodes.ASM4);
myCallback = callback;
myDesc = desc;
@@ -567,25 +568,14 @@ public class StubBuildingVisitor implements ClassVisitor {
}
}
- private static class AnnotationCollectingVisitor extends EmptyVisitor {
- private final StubElement myOwner;
+ private static class AnnotationCollectingVisitor extends FieldVisitor {
private final PsiModifierListStub myModList;
- private AnnotationCollectingVisitor(final StubElement owner, final PsiModifierListStub modList) {
- myOwner = owner;
+ private AnnotationCollectingVisitor(final PsiModifierListStub modList) {
+ super(Opcodes.ASM4);
myModList = modList;
}
- @Override
- public AnnotationVisitor visitAnnotationDefault() {
- return new AnnotationTextCollector(null, new AnnotationResultCallback() {
- @Override
- public void callback(final String text) {
- ((PsiMethodStubImpl)myOwner).setDefaultValueText(text);
- }
- });
- }
-
@Override
public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) {
return new AnnotationTextCollector(desc, new AnnotationResultCallback() {
@@ -595,20 +585,11 @@ public class StubBuildingVisitor implements ClassVisitor {
}
});
}
-
- @Override
- @Nullable
- public AnnotationVisitor visitParameterAnnotation(final int parameter, final String desc, final boolean visible) {
- return new AnnotationTextCollector(desc, new AnnotationResultCallback() {
- @Override
- public void callback(final String text) {
- new PsiAnnotationStubImpl(((PsiMethodStub)myOwner).findParameter(parameter).getModList(), text);
- }
- });
- }
}
- private static class AnnotationParamCollectingVisitor extends AnnotationCollectingVisitor {
+ private static class AnnotationParamCollectingVisitor extends MethodVisitor {
+ private final PsiMethodStub myOwner;
+ private final PsiModifierListStub myModList;
private final int myIgnoreCount;
private final int myParamIgnoreCount;
private final int myParamCount;
@@ -622,13 +603,35 @@ public class StubBuildingVisitor implements ClassVisitor {
int paramIgnoreCount,
int paramCount,
PsiParameterStubImpl[] paramStubs) {
- super(owner, modList);
+ super(Opcodes.ASM4);
+ myOwner = owner;
+ myModList = modList;
myIgnoreCount = ignoreCount;
myParamIgnoreCount = paramIgnoreCount;
myParamCount = paramCount;
myParamStubs = paramStubs;
}
+ @Override
+ public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) {
+ return new AnnotationTextCollector(desc, new AnnotationResultCallback() {
+ @Override
+ public void callback(final String text) {
+ new PsiAnnotationStubImpl(myModList, text);
+ }
+ });
+ }
+
+ @Override
+ public AnnotationVisitor visitAnnotationDefault() {
+ return new AnnotationTextCollector(null, new AnnotationResultCallback() {
+ @Override
+ public void callback(final String text) {
+ ((PsiMethodStubImpl)myOwner).setDefaultValueText(text);
+ }
+ });
+ }
+
@Override
public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) {
if (index >= myIgnoreCount) {
@@ -652,7 +655,15 @@ public class StubBuildingVisitor implements ClassVisitor {
@Override
@Nullable
public AnnotationVisitor visitParameterAnnotation(final int parameter, String desc, boolean visible) {
- return (parameter < myParamIgnoreCount) ? null : super.visitParameterAnnotation(parameter - myParamIgnoreCount, desc, visible);
+ if (parameter < myParamIgnoreCount) {
+ return null;
+ }
+ return new AnnotationTextCollector(desc, new AnnotationResultCallback() {
+ @Override
+ public void callback(final String text) {
+ new PsiAnnotationStubImpl(myOwner.findParameter(parameter - myParamIgnoreCount).getModList(), text);
+ }
+ });
}
}
diff --git a/java/java-tests/java-tests.iml b/java/java-tests/java-tests.iml
index 38e0eb6d4c3d..a60c94412b23 100644
--- a/java/java-tests/java-tests.iml
+++ b/java/java-tests/java-tests.iml
@@ -16,7 +16,7 @@
-
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4.log b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4.log
new file mode 100644
index 000000000000..1271cf07c7f9
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4.log
@@ -0,0 +1,6 @@
+Cleaning output files:
+out/production/nonIncremental4/A.class
+End of files
+Compiling files:
+src/A.java
+End of files
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/.name b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/.name
new file mode 100644
index 000000000000..9058bc55024a
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/.name
@@ -0,0 +1 @@
+nonIncremental4
\ No newline at end of file
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/compiler.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/compiler.xml
new file mode 100644
index 000000000000..a1b41c52c724
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/compiler.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/copyright/profiles_settings.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/copyright/profiles_settings.xml
new file mode 100644
index 000000000000..3572571ad83c
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/encodings.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/encodings.xml
new file mode 100644
index 000000000000..e206d70d8595
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/encodings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/misc.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/misc.xml
new file mode 100644
index 000000000000..492d8ee45ce4
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/misc.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ IDEA jdk
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/modules.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/modules.xml
new file mode 100644
index 000000000000..5b72606625e5
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/scopes/scope_settings.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/scopes/scope_settings.xml
new file mode 100644
index 000000000000..922003b8433b
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/uiDesigner.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/uiDesigner.xml
new file mode 100644
index 000000000000..3b0002030884
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/uiDesigner.xml
@@ -0,0 +1,125 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/vcs.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/vcs.xml
new file mode 100644
index 000000000000..def6a6a18457
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/workspace.xml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/workspace.xml
new file mode 100644
index 000000000000..5c69be76afd6
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/.idea/workspace.xml
@@ -0,0 +1,399 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ localhost
+ 5050
+
+
+
+
+
+ 1333201752849
+ 1333201752849
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/A.java.new b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/A.java.new
new file mode 100644
index 000000000000..73dca289a964
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/A.java.new
@@ -0,0 +1,10 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: db
+ * Date: 31.03.12
+ * Time: 17:50
+ * To change this template use File | Settings | File Templates.
+ */
+public class A {
+ public final static int X = 0;
+}
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/nonIncremental4.iml b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/nonIncremental4.iml
new file mode 100644
index 000000000000..d5c074327501
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/nonIncremental4.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/A.java b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/A.java
new file mode 100644
index 000000000000..5b61bd62314f
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/A.java
@@ -0,0 +1,14 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: db
+ * Date: 31.03.12
+ * Time: 17:50
+ * To change this template use File | Settings | File Templates.
+ */
+public class A {
+ public final static int X;
+
+ static {
+ X = 100;
+ }
+}
diff --git a/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/C.java b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/C.java
new file mode 100644
index 000000000000..cf7ba0e1a6aa
--- /dev/null
+++ b/java/java-tests/testData/compileServer/incremental/fieldProperties/nonIncremental4/src/C.java
@@ -0,0 +1,9 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: db
+ * Date: 31.03.12
+ * Time: 17:51
+ * To change this template use File | Settings | File Templates.
+ */
+public class C {
+}
diff --git a/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java b/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java
index 8e94a2079f27..d28bcadafe7d 100644
--- a/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java
+++ b/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java
@@ -8,8 +8,8 @@ import com.intellij.testFramework.UsefulTestCase;
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
import com.intellij.testFramework.fixtures.JavaTestFixtureFactory;
import com.intellij.testFramework.fixtures.TestFixtureBuilder;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.ClassWriter;
import java.io.File;
import java.io.IOException;
diff --git a/jps/jps-builders/jps-builders.iml b/jps/jps-builders/jps-builders.iml
index e27c35289a56..7c9b8ec9b946 100644
--- a/jps/jps-builders/jps-builders.iml
+++ b/jps/jps-builders/jps-builders.iml
@@ -13,7 +13,7 @@
-
+
diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java
index 93613fbd9a0c..77274856a212 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java
@@ -135,12 +135,11 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
}
}
else {
- MODULES_LOOP: for (final Module module : moduleChunk.getModules()) {
- for (ClasspathItem dependency : module.getClasspath(classpathKind)) {
- if (dependency instanceof Module && dirtyModules.contains((Module)dependency)) {
- dirtyModules.addAll(moduleChunk.getModules());
- break MODULES_LOOP;
- }
+ for (final Module module : moduleChunk.getModules()) {
+ final Set deps = getDependentModulesRecursively(module, classpathKind);
+ if (Utils.intersects(deps, modules)) {
+ dirtyModules.addAll(moduleChunk.getModules());
+ break;
}
}
}
@@ -148,7 +147,11 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
for (Module module : dirtyModules) {
markDirtyFiles(module, myTsStorage, true, isCompilingTests()? DirtyMarkScope.TESTS : DirtyMarkScope.BOTH, null);
- if (isMake()) {
+ }
+
+ if (isMake()) {
+ // mark as non-incremental only the module that triggered non-incremental change
+ for (Module module : modules) {
if (!isCompilingTests()) {
myNonIncrementalModules.add(new Pair(module, DirtyMarkScope.PRODUCTION));
}
@@ -157,6 +160,30 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
}
}
+ private static Set getDependentModulesRecursively(final Module module, final ClasspathKind kind) {
+ final Set result = new HashSet();
+
+ new Object() {
+ final Set processed = new HashSet();
+
+ void traverse(Module module, ClasspathKind kind, Collection result, boolean exportedOnly) {
+ if (processed.add(module)) {
+ for (ClasspathItem item : module.getClasspath(kind, exportedOnly)) {
+ if (item instanceof ModuleSourceEntry) {
+ result.add(((ModuleSourceEntry)item).getModule());
+ }
+ else if (item instanceof Module) {
+ traverse((Module)item, kind, result, true);
+ }
+ }
+ }
+ }
+
+ }.traverse(module, kind, result, false);
+
+ return result;
+ }
+
boolean shouldDifferentiate(ModuleChunk chunk, boolean forTests) {
if (!isMake()) {
// the check makes sense only in make mode
@@ -306,7 +333,7 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
}
public boolean hasRemovedSources() {
- final Set removed = Paths.CHUNK_REMOVED_SOURCES_KEY.get(this);
+ final Set removed = Utils.CHUNK_REMOVED_SOURCES_KEY.get(this);
return removed != null && !removed.isEmpty();
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java
index 5d493a8dca64..bc58855d41d5 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java
@@ -361,7 +361,7 @@ public class IncProjectBuilder {
throw new ProjectBuildException(e);
}
finally {
- Paths.CHUNK_REMOVED_SOURCES_KEY.set(context, null);
+ Utils.CHUNK_REMOVED_SOURCES_KEY.set(context, null);
if (doneSomething && GENERATE_CLASSPATH_INDEX) {
final boolean forTests = context.isCompilingTests();
final Future> future = SharedThreadPool.INSTANCE.submit(new Runnable() {
@@ -409,7 +409,8 @@ public class IncProjectBuilder {
final File[] files = file.listFiles();
if (files != null) {
for (File child : files) {
- writeIndex(writer, child, path + "/" + child.getName());
+ final String _path = path.isEmpty()? child.getName() : path + "/" + child.getName();
+ writeIndex(writer, child, _path);
}
}
}
@@ -472,11 +473,11 @@ public class IncProjectBuilder {
}
}
if (!allChunkRemovedSources.isEmpty()) {
- final Set currentData = Paths.CHUNK_REMOVED_SOURCES_KEY.get(context);
+ final Set currentData = Utils.CHUNK_REMOVED_SOURCES_KEY.get(context);
if (currentData != null) {
allChunkRemovedSources.addAll(currentData);
}
- Paths.CHUNK_REMOVED_SOURCES_KEY.set(context, allChunkRemovedSources);
+ Utils.CHUNK_REMOVED_SOURCES_KEY.set(context, allChunkRemovedSources);
for (Module module : chunk.getModules()) {
myProjectDescriptor.fsState.clearDeletedPaths(module, context.isCompilingTests());
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/ModuleLevelBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/ModuleLevelBuilder.java
index 8dc73bcea557..af87df25a8bb 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/incremental/ModuleLevelBuilder.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/ModuleLevelBuilder.java
@@ -198,7 +198,7 @@ public abstract class ModuleLevelBuilder extends Builder {
}
private static Set getRemovedPaths(CompileContext context) {
- final Set removed = Paths.CHUNK_REMOVED_SOURCES_KEY.get(context);
+ final Set removed = Utils.CHUNK_REMOVED_SOURCES_KEY.get(context);
return removed != null? removed : Collections.emptySet();
}
@@ -227,15 +227,8 @@ public abstract class ModuleLevelBuilder extends Builder {
moduleOfFileWithDependencies = ProjectPaths.getModulesWithDependentsRecursively(moduleOfFile, true);
myCache.put(moduleOfFile, moduleOfFileWithDependencies);
}
- return intersects(moduleOfFileWithDependencies, myChunkModules);
+ return Utils.intersects(moduleOfFileWithDependencies, myChunkModules);
}
- private static boolean intersects(Set set1, Set set2) {
- if (set1.size() < set2.size()) {
- return new HashSet(set1).removeAll(set2);
- }
- return new HashSet(set2).removeAll(set1);
- }
}
-
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/Paths.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/Utils.java
similarity index 66%
rename from jps/jps-builders/src/org/jetbrains/jps/incremental/Paths.java
rename to jps/jps-builders/src/org/jetbrains/jps/incremental/Utils.java
index 847266cdf832..3e56b3cf7a5a 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/incremental/Paths.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/Utils.java
@@ -2,11 +2,13 @@ package org.jetbrains.jps.incremental;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.io.FileUtil;
+import org.jetbrains.jps.Module;
import org.jetbrains.jps.Project;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
@@ -14,29 +16,24 @@ import java.util.Set;
* @author Eugene Zhuravlev
* Date: 10/20/11
*/
-public class Paths {
- private static final Paths ourInstance = new Paths();
+public class Utils {
public static final Key> CHUNK_REMOVED_SOURCES_KEY = Key.create("_chunk_removed_sources_");
- private volatile File mySystemRoot = new File(System.getProperty("user.home", ".jps-server"));
+ private static volatile File ourSystemRoot = new File(System.getProperty("user.home", ".jps-server"));
- private Paths() {
- }
-
- public static Paths getInstance() {
- return ourInstance;
+ private Utils() {
}
public static File getSystemRoot() {
- return getInstance().mySystemRoot;
+ return ourSystemRoot;
}
- public void setSystemRoot(File systemRoot) {
- mySystemRoot = systemRoot;
+ public static void setSystemRoot(File systemRoot) {
+ ourSystemRoot = systemRoot;
}
public static File getDataStorageRoot(Project project) {
final String name = project.getProjectName().toLowerCase(Locale.US);
- return new File(getInstance().mySystemRoot, name + "_" + Integer.toHexString(project.getLocationHash()));
+ return new File(ourSystemRoot, name + "_" + Integer.toHexString(project.getLocationHash()));
}
public static URI toURI(String localPath) {
@@ -62,4 +59,11 @@ public class Paths {
public static File convertToFile(final URI uri) {
return new File(toURI(uri.getPath(), false));
}
+
+ public static boolean intersects(Set set1, Set set2) {
+ if (set1.size() < set2.size()) {
+ return new HashSet(set1).removeAll(set2);
+ }
+ return new HashSet(set2).removeAll(set1);
+ }
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java
index 50ca6fd3f611..860cc905ae64 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java
@@ -10,13 +10,20 @@ import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.uiDesigner.compiler.*;
+import com.intellij.uiDesigner.compiler.AlienFormFileException;
+import com.intellij.uiDesigner.compiler.AsmCodeGenerator;
+import com.intellij.uiDesigner.compiler.FormErrorInfo;
+import com.intellij.uiDesigner.compiler.NestedFormLoader;
import com.intellij.uiDesigner.core.GridConstraints;
import com.intellij.uiDesigner.lw.CompiledClassPropertiesProvider;
import com.intellij.uiDesigner.lw.LwRootContainer;
import com.intellij.util.SystemProperties;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.ClassVisitor;
+import org.jetbrains.asm4.ClassWriter;
+import org.jetbrains.asm4.Opcodes;
import org.jetbrains.ether.dependencyView.Callbacks;
import org.jetbrains.ether.dependencyView.Mappings;
import org.jetbrains.jps.*;
@@ -29,10 +36,6 @@ import org.jetbrains.jps.incremental.messages.ProgressMessage;
import org.jetbrains.jps.incremental.storage.BuildDataManager;
import org.jetbrains.jps.incremental.storage.SourceToFormMapping;
import org.jetbrains.jps.javac.*;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.commons.EmptyVisitor;
import javax.tools.*;
import java.io.*;
@@ -456,7 +459,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
}
final BaseOSProcessHandler processHandler = JavacServerBootstrap.launchJavacServer(
- javaHome, heapSize, port, Paths.getSystemRoot(), getCompilationVMOptions(context)
+ javaHome, heapSize, port, Utils.getSystemRoot(), getCompilationVMOptions(context)
);
final JavacServerClient client = new JavacServerClient();
try {
@@ -718,7 +721,8 @@ public class JavaBuilder extends ModuleLevelBuilder {
for (File formFile : formsToInstrument) {
final LwRootContainer rootContainer;
try {
- rootContainer = Utils.getRootContainer(formFile.toURI().toURL(), new CompiledClassPropertiesProvider(finder.getLoader()));
+ rootContainer = com.intellij.uiDesigner.compiler.Utils
+ .getRootContainer(formFile.toURI().toURL(), new CompiledClassPropertiesProvider(finder.getLoader()));
}
catch (AlienFormFileException e) {
// ignore non-IDEA forms
@@ -821,7 +825,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
private static int getClassFileVersion(ClassReader reader) {
final Ref result = new Ref(0);
- reader.accept(new EmptyVisitor() {
+ reader.accept(new ClassVisitor(Opcodes.ASM4) {
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
result.set(version);
}
@@ -894,7 +898,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
kind = BuildMessage.Kind.INFO;
}
final JavaFileObject source = diagnostic.getSource();
- final File sourceFile = source != null ? Paths.convertToFile(source.toUri()) : null;
+ final File sourceFile = source != null ? Utils.convertToFile(source.toUri()) : null;
final String srcPath = sourceFile != null ? FileUtil.toSystemIndependentName(sourceFile.getPath()) : null;
myContext.processMessage(
new CompilerMessage(BUILDER_NAME, kind, diagnostic.getMessage(Locale.US), srcPath, diagnostic.getStartPosition(),
@@ -955,7 +959,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
}
private LwRootContainer loadForm(String formFileName, InputStream resourceStream) throws Exception {
- final LwRootContainer container = Utils.getRootContainer(resourceStream, null);
+ final LwRootContainer container = com.intellij.uiDesigner.compiler.Utils.getRootContainer(resourceStream, null);
myCache.put(formFileName, container);
return container;
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java
index 73e238f9bdd7..0715a336d814 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java
@@ -3,7 +3,7 @@ package org.jetbrains.jps.javac;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.jps.incremental.Paths;
+import org.jetbrains.jps.incremental.Utils;
import javax.tools.*;
import java.io.File;
@@ -131,7 +131,7 @@ class JavacFileManager extends ForwardingJavaFileManager 1 && sourceFile != null) {
// multiple outputs case
- final File outputDir = findOutputDir(Paths.convertToFile(sourceFile.toUri()));
+ final File outputDir = findOutputDir(Utils.convertToFile(sourceFile.toUri()));
if (outputDir != null) {
return outputDir;
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/OutputFileObject.java b/jps/jps-builders/src/org/jetbrains/jps/javac/OutputFileObject.java
index 63af623e3ab3..e399548a4dcf 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/javac/OutputFileObject.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/javac/OutputFileObject.java
@@ -2,10 +2,9 @@ package org.jetbrains.jps.javac;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.jps.incremental.Paths;
+import org.jetbrains.jps.incremental.Utils;
-import javax.tools.JavaFileObject;
-import javax.tools.SimpleJavaFileObject;
+import javax.tools.*;
import java.io.*;
import java.net.URI;
import java.util.Arrays;
@@ -32,7 +31,7 @@ public final class OutputFileObject extends SimpleJavaFileObject {
}
public OutputFileObject(@Nullable JavacFileManager.Context context, @Nullable File outputRoot, String relativePath, @NotNull File file, @NotNull Kind kind, @Nullable String className, @Nullable final URI srcUri, @Nullable Content content) {
- super(Paths.toURI(file.getPath()), kind);
+ super(Utils.toURI(file.getPath()), kind);
myContext = context;
mySourceUri = srcUri;
myContent = content;
@@ -40,7 +39,7 @@ public final class OutputFileObject extends SimpleJavaFileObject {
myRelativePath = relativePath;
myFile = file;
myClassName = className;
- mySourceFile = srcUri != null? Paths.convertToFile(srcUri) : null;
+ mySourceFile = srcUri != null? Utils.convertToFile(srcUri) : null;
}
@Nullable
diff --git a/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java b/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java
index 63c600a02d41..1279c09b17b2 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java
@@ -28,14 +28,12 @@ import net.n3.nanoxml.IXMLBuilder;
import org.codehaus.groovy.GroovyException;
import org.jboss.netty.util.Version;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.asm4.ClassVisitor;
+import org.jetbrains.asm4.ClassWriter;
import org.jetbrains.jps.MacroExpander;
import org.jetbrains.jps.javac.JavacServer;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.commons.EmptyVisitor;
-import javax.tools.JavaCompiler;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
+import javax.tools.*;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedHashSet;
@@ -95,7 +93,7 @@ public class ClasspathBootstrap {
cp.add(getResourcePath(Message.class)); // protobuf
cp.add(getResourcePath(Version.class)); // netty
cp.add(getResourcePath(ClassWriter.class)); // asm
- cp.add(getResourcePath(EmptyVisitor.class)); // asm-commons
+ cp.add(getResourcePath(ClassVisitor.class)); // asm-commons
cp.add(getResourcePath(MacroExpander.class)); // jps-model
cp.add(getResourcePath(AlienFormFileException.class)); // forms-compiler
cp.add(getResourcePath(GroovyException.class)); // groovy
diff --git a/jps/jps-builders/src/org/jetbrains/jps/server/Server.java b/jps/jps-builders/src/org/jetbrains/jps/server/Server.java
index 42c1141bcda3..9cc51413450f 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/server/Server.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/server/Server.java
@@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.api.AsyncTaskExecutor;
import org.jetbrains.jps.api.GlobalOptions;
import org.jetbrains.jps.api.JpsRemoteProto;
-import org.jetbrains.jps.incremental.Paths;
+import org.jetbrains.jps.incremental.Utils;
import java.io.File;
import java.net.InetSocketAddress;
@@ -50,7 +50,7 @@ public class Server {
private final ServerMessageHandler myMessageHandler;
public Server(File systemDir) {
- Paths.getInstance().setSystemRoot(systemDir);
+ Utils.setSystemRoot(systemDir);
final ExecutorService threadPool = Executors.newCachedThreadPool();
myScheduler = ConcurrencyUtil.newSingleScheduledThreadExecutor("Client activity checker", Thread.MIN_PRIORITY);
myBuildsExecutor = Executors.newFixedThreadPool(MAX_SIMULTANEOUS_BUILD_SESSIONS);
diff --git a/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java b/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java
index cff5e3eda9f3..ec993e99812b 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java
@@ -137,7 +137,7 @@ class ServerState {
final FSState fsState = new FSState(false);
ProjectTimestamps timestamps = null;
BuildDataManager dataManager = null;
- final File dataStorageRoot = Paths.getDataStorageRoot(project);
+ final File dataStorageRoot = Utils.getDataStorageRoot(project);
try {
timestamps = new ProjectTimestamps(dataStorageRoot);
dataManager = new BuildDataManager(dataStorageRoot, myKeepTempCachesInMemory);
diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java
index 8af0a272f344..8ba5807be69d 100644
--- a/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java
+++ b/jps/jps-builders/testSrc/org/jetbrains/ether/FieldPropertyTest.java
@@ -83,4 +83,11 @@ public class FieldPropertyTest extends IncrementalTestCase {
public void testNonIncremental2() throws Exception {
doTest();
}
+ //public void testNonIncremental3() throws Exception {
+ // doTest();
+ // }
+
+ public void testNonIncremental4() throws Exception {
+ doTest();
+ }
}
diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java b/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java
index 405ab57fe607..5a813006c481 100644
--- a/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java
+++ b/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java
@@ -71,7 +71,7 @@ public abstract class IncrementalTestCase extends TestCase {
FileUtil.copyDir(new File(getBaseDir()), new File(getWorkDir()));
- Paths.getInstance().setSystemRoot(new File(workDir));
+ Utils.setSystemRoot(new File(workDir));
}
@Override
@@ -201,7 +201,7 @@ public abstract class IncrementalTestCase extends TestCase {
IdeaProjectLoader.loadFromPath(project, projectPath, "");
- final File dataStorageRoot = Paths.getDataStorageRoot(project);
+ final File dataStorageRoot = Utils.getDataStorageRoot(project);
final TestJavaBuilderLogger javaBuilderLogger = new TestJavaBuilderLogger(FileUtil.toSystemIndependentName(getWorkDir() + File.separator));
final ProjectDescriptor projectDescriptor =
new ProjectDescriptor(project, new FSState(true), new ProjectTimestamps(dataStorageRoot),
diff --git a/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTestCase.java b/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTestCase.java
index 081ed67ee76f..6b52d0e63036 100644
--- a/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTestCase.java
+++ b/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTestCase.java
@@ -54,7 +54,7 @@ public abstract class ArtifactBuilderTestCase extends UsefulTestCase {
myProject = new Project();
myProject.setProjectName(getProjectName());
final File serverRoot = FileUtil.createTempDirectory("compile-server", null);
- Paths.getInstance().setSystemRoot(serverRoot);
+ Utils.setSystemRoot(serverRoot);
myArtifactBuilderLogger = new TestArtifactBuilderLogger();
}
@@ -153,7 +153,7 @@ public abstract class ArtifactBuilderTestCase extends UsefulTestCase {
private ProjectDescriptor createProjectDescriptor() {
try {
- final File dataStorageRoot = Paths.getDataStorageRoot(myProject);
+ final File dataStorageRoot = Utils.getDataStorageRoot(myProject);
ProjectTimestamps timestamps = new ProjectTimestamps(dataStorageRoot);
BuildDataManager dataManager = new BuildDataManager(dataStorageRoot, true);
return new ProjectDescriptor(myProject, new FSState(true), timestamps, dataManager, new BuildLoggingManager(myArtifactBuilderLogger,
diff --git a/jps/jps.iml b/jps/jps.iml
index c08dac3c1a16..0865ffbd929e 100644
--- a/jps/jps.iml
+++ b/jps/jps.iml
@@ -20,7 +20,7 @@
-
+
diff --git a/jps/model/jps-model.iml b/jps/model/jps-model.iml
index f09e08520e8b..76df8c5b0b59 100644
--- a/jps/model/jps-model.iml
+++ b/jps/model/jps-model.iml
@@ -9,7 +9,7 @@
-
+
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java b/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java
index c4d7b133f4ed..8b3bbee2a4dc 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java
@@ -1,6 +1,6 @@
package org.jetbrains.ether.dependencyView;
-import org.objectweb.asm.ClassReader;
+import org.jetbrains.asm4.ClassReader;
import java.util.Collection;
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java
index 9b591460b155..2eaedf77c615 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/ClassRepr.java
@@ -134,6 +134,11 @@ public class ClassRepr extends Proto {
public int base() {
return d;
}
+
+ @Override
+ public boolean hadValue() {
+ return false;
+ }
};
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java b/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java
index 8d898122d8d1..91d6bf4c2f14 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java
@@ -1,10 +1,9 @@
package org.jetbrains.ether.dependencyView;
import com.intellij.openapi.util.Pair;
-import org.objectweb.asm.*;
-import org.objectweb.asm.commons.EmptyVisitor;
-import org.objectweb.asm.signature.SignatureReader;
-import org.objectweb.asm.signature.SignatureVisitor;
+import org.jetbrains.asm4.*;
+import org.jetbrains.asm4.signature.SignatureReader;
+import org.jetbrains.asm4.signature.SignatureVisitor;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
@@ -37,8 +36,12 @@ class ClassfileAnalyzer {
}
}
- private class ClassCrawler extends EmptyVisitor {
- private class AnnotationRetentionPolicyCrawler implements AnnotationVisitor {
+ private class ClassCrawler extends ClassVisitor {
+ private class AnnotationRetentionPolicyCrawler extends AnnotationVisitor {
+ private AnnotationRetentionPolicyCrawler() {
+ super(Opcodes.ASM4);
+ }
+
public void visit(String name, Object value) {
}
@@ -58,7 +61,11 @@ class ClassfileAnalyzer {
}
}
- private class AnnotationTargetCrawler implements AnnotationVisitor {
+ private class AnnotationTargetCrawler extends AnnotationVisitor {
+ private AnnotationTargetCrawler() {
+ super(Opcodes.ASM4);
+ }
+
public void visit(String name, Object value) {
}
@@ -78,13 +85,14 @@ class ClassfileAnalyzer {
}
}
- private class AnnotationCrawler implements AnnotationVisitor {
+ private class AnnotationCrawler extends AnnotationVisitor {
private final TypeRepr.ClassType type;
private final ElementType target;
private final Set usedArguments = new HashSet();
private AnnotationCrawler(final TypeRepr.ClassType type, final ElementType target) {
+ super(Opcodes.ASM4);
this.type = type;
this.target = target;
annotationTargets.put(type, target);
@@ -182,7 +190,7 @@ class ClassfileAnalyzer {
if (sig != null) new SignatureReader(sig).accept(signatureCrawler);
}
- private final SignatureVisitor signatureCrawler = new SignatureVisitor() {
+ private final SignatureVisitor signatureCrawler = new SignatureVisitor(Opcodes.ASM4) {
public void visitFormalTypeParameter(String name) {
return;
}
@@ -284,6 +292,7 @@ class ClassfileAnalyzer {
new TransientMultiMaplet(elementTypeSetConstructor);
public ClassCrawler(final DependencyContext.S fn) {
+ super(Opcodes.ASM4);
fileName = fn;
}
@@ -369,7 +378,7 @@ class ClassfileAnalyzer {
fields.add(new FieldRepr(context, access, context.get(n), context.get(desc), context.get(signature), value));
}
- return new EmptyVisitor() {
+ return new FieldVisitor(Opcodes.ASM4) {
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
return new AnnotationCrawler((TypeRepr.ClassType)TypeRepr.getType(context, context.get(desc)), ElementType.FIELD);
@@ -387,7 +396,7 @@ class ClassfileAnalyzer {
processSignature(signature);
- return new EmptyVisitor() {
+ return new MethodVisitor(Opcodes.ASM4) {
@Override
public void visitEnd() {
if ((access & Opcodes.ACC_SYNTHETIC) == 0 || (access & Opcodes.ACC_BRIDGE) > 0) {
@@ -403,7 +412,7 @@ class ClassfileAnalyzer {
@Override
public AnnotationVisitor visitAnnotationDefault() {
- return new EmptyVisitor() {
+ return new AnnotationVisitor(Opcodes.ASM4) {
public void visit(String name, Object value) {
defaultValue.set(value);
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java b/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java
index 7b10a1f34cbe..003afdf31e0f 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/Difference.java
@@ -112,4 +112,6 @@ abstract class Difference {
public abstract int removedModifiers();
public abstract boolean packageLocalOn();
+
+ public abstract boolean hadValue ();
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java
index 6af8cfc58e9d..704c08443492 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java
@@ -4,8 +4,8 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.Nullable;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.Opcodes;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.Opcodes;
import java.io.File;
import java.io.IOException;
@@ -1432,7 +1432,7 @@ public class Mappings {
debug("Field: ", it.name);
if ((field.access & Opcodes.ACC_PRIVATE) == 0 && (field.access & mask) == mask) {
- if ((d.base() & Difference.ACCESS) > 0 || (d.base() & Difference.VALUE) > 0) {
+ if ((d.base() & Difference.ACCESS) > 0 || ((d.base() & Difference.VALUE) > 0 && d.hadValue())) {
debug("Inline field changed it's access or value => a switch to non-incremental mode requested");
if (!incrementalDecision(it.name, field, affectedFiles, filter)) {
debug("End of Differentiate, returning false");
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java
index f4e325fa5ecf..46e4d2cc6ba3 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java
@@ -1,8 +1,8 @@
package org.jetbrains.ether.dependencyView;
import com.intellij.util.io.DataExternalizer;
+import org.jetbrains.asm4.Type;
import org.jetbrains.ether.RW;
-import org.objectweb.asm.Type;
import java.io.DataInput;
import java.io.DataOutput;
@@ -80,6 +80,11 @@ class MethodRepr extends ProtoMember {
public boolean packageLocalOn() {
return diff.packageLocalOn();
}
+
+ @Override
+ public boolean hadValue() {
+ return ((MethodRepr)past).hasValue();
+ }
};
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java b/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java
index 99508de315e0..fd2badf35b42 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/Proto.java
@@ -90,6 +90,11 @@ class Proto implements RW.Savable {
((access & Opcodes.ACC_PRIVATE) == 0 && (access & Opcodes.ACC_PROTECTED) == 0 && (access & Opcodes.ACC_PUBLIC) == 0);
}
+
+ @Override
+ public boolean hadValue() {
+ return false;
+ }
};
}
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java b/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java
index 4a301c335108..103c5d14a16f 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java
@@ -1,9 +1,10 @@
package org.jetbrains.ether.dependencyView;
-import org.jetbrains.ether.RW;
-import org.objectweb.asm.Type;
+import org.jetbrains.asm4.Type;
-import java.io.*;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
/**
* Created by IntelliJ IDEA.
@@ -170,6 +171,11 @@ abstract class ProtoMember extends Proto {
public boolean packageLocalOn() {
return diff.packageLocalOn();
}
+
+ @Override
+ public boolean hadValue() {
+ return ((ProtoMember)past).hasValue();
+ }
};
}
}
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java
index eb3857668df3..2b317e13ce4a 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java
@@ -2,13 +2,14 @@ package org.jetbrains.ether.dependencyView;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.io.DataExternalizer;
+import org.jetbrains.asm4.Type;
import org.jetbrains.ether.RW;
-import org.objectweb.asm.Type;
-import java.io.*;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
-import java.util.LinkedList;
/**
* Created by IntelliJ IDEA.
diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java
index 316ee502c9a8..d6c33ee78483 100644
--- a/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java
+++ b/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java
@@ -1,8 +1,8 @@
package org.jetbrains.ether.dependencyView;
import com.intellij.util.io.DataExternalizer;
+import org.jetbrains.asm4.Type;
import org.jetbrains.ether.RW;
-import org.objectweb.asm.Type;
import java.io.DataInput;
import java.io.DataOutput;
diff --git a/jps/src/org/jetbrains/ether/dependencyView/AntListener.java b/jps/src/org/jetbrains/ether/dependencyView/AntListener.java
index ee921a7d86eb..7c8a7f0d8ffa 100644
--- a/jps/src/org/jetbrains/ether/dependencyView/AntListener.java
+++ b/jps/src/org/jetbrains/ether/dependencyView/AntListener.java
@@ -2,7 +2,7 @@ package org.jetbrains.ether.dependencyView;
import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildListener;
-import org.objectweb.asm.ClassReader;
+import org.jetbrains.asm4.ClassReader;
import java.io.File;
import java.io.FileInputStream;
diff --git a/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java b/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java
index d7163000ea5d..bb2a8a8918cf 100644
--- a/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java
+++ b/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java
@@ -6,14 +6,12 @@ import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.DefaultFileManager;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
+import org.jetbrains.asm4.ClassReader;
import org.jetbrains.ether.dependencyView.Callbacks;
import org.jetbrains.jps.PathUtil;
-import org.objectweb.asm.ClassReader;
import javax.lang.model.SourceVersion;
-import javax.tools.FileObject;
-import javax.tools.ForwardingJavaFileObject;
-import javax.tools.JavaFileObject;
+import javax.tools.*;
import java.io.*;
import java.lang.reflect.Field;
import java.net.URL;
diff --git a/lib/asm4-all.jar b/lib/asm4-all.jar
new file mode 100644
index 000000000000..773234c97a51
Binary files /dev/null and b/lib/asm4-all.jar differ
diff --git a/lib/required_for_dist.txt b/lib/required_for_dist.txt
index 885c232bdd48..a4e372026865 100644
--- a/lib/required_for_dist.txt
+++ b/lib/required_for_dist.txt
@@ -1,5 +1,6 @@
asm-commons.jar
asm.jar
+asm4-all.jar
automaton.jar
cli-10.jar
cglib-2.2.2.jar
diff --git a/plugins/IntelliLang/IntelliLang-java.iml b/plugins/IntelliLang/IntelliLang-java.iml
index 998ca93c3ae5..5d4b43c8d504 100644
--- a/plugins/IntelliLang/IntelliLang-java.iml
+++ b/plugins/IntelliLang/IntelliLang-java.iml
@@ -11,7 +11,7 @@
-
+
diff --git a/plugins/IntelliLang/IntelliLang-xml.iml b/plugins/IntelliLang/IntelliLang-xml.iml
index 608a5e9f2e97..4b8c7036d24d 100644
--- a/plugins/IntelliLang/IntelliLang-xml.iml
+++ b/plugins/IntelliLang/IntelliLang-xml.iml
@@ -10,7 +10,7 @@
-
+
diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java
index 6b6190780f80..bd8f724a1b63 100644
--- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java
+++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java
@@ -34,14 +34,17 @@ import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.psi.*;
+import com.intellij.psi.JavaPsiFacade;
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiFile;
+import com.intellij.psi.PsiJavaFile;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.PsiSearchHelper;
import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassWriter;
+import org.jetbrains.asm4.ClassReader;
+import org.jetbrains.asm4.ClassWriter;
import java.io.DataInput;
import java.io.FileOutputStream;
diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java
index 2b16ab87bb63..53d9a6ae4d0f 100644
--- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java
+++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java
@@ -15,8 +15,16 @@
*/
package org.intellij.plugins.intelliLang.pattern.compiler;
-import org.objectweb.asm.ClassVisitor;
+import org.jetbrains.asm4.ClassVisitor;
+import org.jetbrains.asm4.Opcodes;
-public interface Instrumenter extends ClassVisitor {
- boolean instrumented();
+public abstract class Instrumenter extends ClassVisitor {
+ protected Instrumenter() {
+ super(Opcodes.ASM4);
+ }
+ protected Instrumenter(ClassVisitor visitor) {
+ super(Opcodes.ASM4, visitor);
+ }
+
+ public abstract boolean instrumented();
}
diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java
index 39d4b6d59e9f..cc5e1ad9753d 100644
--- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java
+++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java
@@ -17,14 +17,14 @@ package org.intellij.plugins.intelliLang.pattern.compiler.impl;
import org.intellij.plugins.intelliLang.Configuration;
import org.jetbrains.annotations.NonNls;
-import org.objectweb.asm.*;
+import org.jetbrains.asm4.*;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-class InstrumentationAdapter extends MethodAdapter implements Opcodes {
+class InstrumentationAdapter extends MethodVisitor implements Opcodes {
@NonNls
private static final String RETURN_VALUE_NAME = "$returnvalue$";
@@ -46,7 +46,7 @@ class InstrumentationAdapter extends MethodAdapter implements Opcodes {
Type returnType,
int access,
String name) {
- super(methodvisitor);
+ super(Opcodes.ASM4, methodvisitor);
myInstrumenter = instrumenter;
myArgTypes = argTypes;
myReturnType = returnType;
@@ -208,11 +208,12 @@ class InstrumentationAdapter extends MethodAdapter implements Opcodes {
mv.visitInsn(Opcodes.ATHROW);
}
- private static class MyAnnotationVisitor implements AnnotationVisitor {
+ private static class MyAnnotationVisitor extends AnnotationVisitor {
private final AnnotationVisitor av;
private final PatternValue myPatternValue;
public MyAnnotationVisitor(AnnotationVisitor annotationvisitor, PatternValue v) {
+ super(Opcodes.ASM4);
av = annotationvisitor;
myPatternValue = v;
}
diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java
index 293f29f1d0ec..2d602471b30d 100644
--- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java
+++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java
@@ -32,7 +32,7 @@ import org.intellij.plugins.intelliLang.pattern.compiler.AnnotationBasedInstrume
import org.intellij.plugins.intelliLang.pattern.compiler.Instrumenter;
import org.intellij.plugins.intelliLang.util.AnnotationUtilEx;
import org.jetbrains.annotations.NotNull;
-import org.objectweb.asm.ClassWriter;
+import org.jetbrains.asm4.ClassWriter;
import java.util.HashMap;
import java.util.Map;
diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java
index 04f86978fcef..12ee27843a4e 100644
--- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java
+++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java
@@ -19,14 +19,14 @@ import org.intellij.plugins.intelliLang.Configuration;
import org.intellij.plugins.intelliLang.pattern.compiler.InstrumentationException;
import org.intellij.plugins.intelliLang.pattern.compiler.Instrumenter;
import org.jetbrains.annotations.NonNls;
-import org.objectweb.asm.*;
+import org.jetbrains.asm4.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.regex.Pattern;
-public class PatternValidationInstrumenter extends ClassAdapter implements Instrumenter, Opcodes {
+public class PatternValidationInstrumenter extends Instrumenter implements Opcodes {
@NonNls static final String PATTERN_CACHE_NAME = "$_PATTERN_CACHE_$";
@NonNls static final String ASSERTIONS_DISABLED_NAME = "$assertionsDisabled";
@NonNls static final String JAVA_LANG_STRING = "Ljava/lang/String;";
@@ -167,7 +167,7 @@ public class PatternValidationInstrumenter extends ClassAdapter implements Instr
if ((access & ACC_STATIC) != 0 && name.equals("")) {
myHasStaticInitializer = true;
- return new MethodAdapter(methodvisitor) {
+ return new MethodVisitor(Opcodes.ASM4, methodvisitor) {
public void visitCode() {
super.visitCode();
patchStaticInitializer(mv);
diff --git a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java
index 737139bcc6ff..9ebfe2cdb16d 100644
--- a/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java
+++ b/plugins/android/jps-plugin/src/org/jetbrains/jps/android/AndroidJpsUtil.java
@@ -19,8 +19,8 @@ import org.jetbrains.jps.*;
import org.jetbrains.jps.idea.Facet;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.ModuleLevelBuilder;
-import org.jetbrains.jps.incremental.Paths;
import org.jetbrains.jps.incremental.ProjectBuildException;
+import org.jetbrains.jps.incremental.Utils;
import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
@@ -510,7 +510,7 @@ class AndroidJpsUtil {
@NotNull
public static File getGeneratedSourcesStorage(@NotNull Module module) {
- final File dataStorageRoot = Paths.getDataStorageRoot(module.getProject());
+ final File dataStorageRoot = Utils.getDataStorageRoot(module.getProject());
final File androidStorageRoot = new File(dataStorageRoot, ANDROID_STORAGE_DIR);
final File generatedSourcesRoot = new File(androidStorageRoot, GENERATED_SOURCES_FOLDER_NAME);
return new File(generatedSourcesRoot, module.getName());
@@ -518,7 +518,7 @@ class AndroidJpsUtil {
@NotNull
public static File getGeneratedResourcesStorage(@NotNull Module module) {
- final File dataStorageRoot = Paths.getDataStorageRoot(module.getProject());
+ final File dataStorageRoot = Utils.getDataStorageRoot(module.getProject());
final File androidStorageRoot = new File(dataStorageRoot, ANDROID_STORAGE_DIR);
final File generatedSourcesRoot = new File(androidStorageRoot, GENERATED_RESOURCES_DIR_NAME);
return new File(generatedSourcesRoot, module.getName());
diff --git a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java
index 0852f2e8fdfe..2e8aa639441b 100644
--- a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java
+++ b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java
@@ -8,6 +8,7 @@ import com.intellij.util.ArrayUtil;
import com.intellij.util.Consumer;
import com.intellij.util.SystemProperties;
import groovy.util.CharsetToolkit;
+import org.jetbrains.asm4.ClassReader;
import org.jetbrains.ether.dependencyView.Callbacks;
import org.jetbrains.ether.dependencyView.Mappings;
import org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper;
@@ -19,7 +20,6 @@ import org.jetbrains.jps.incremental.messages.FileGeneratedEvent;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
import org.jetbrains.jps.incremental.storage.SourceToOutputMapping;
import org.jetbrains.jps.server.ClasspathBootstrap;
-import org.objectweb.asm.ClassReader;
import java.io.File;
import java.io.IOException;
diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java b/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java
index fbe4c8aaa86e..88dd5f9b12e6 100644
--- a/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java
+++ b/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java
@@ -27,9 +27,9 @@ import com.intellij.uiDesigner.lw.LwRootContainer;
import com.intellij.util.ArrayUtil;
import com.intellij.util.containers.HashSet;
import org.jetbrains.annotations.NonNls;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
+import org.jetbrains.asm4.ClassWriter;
+import org.jetbrains.asm4.MethodVisitor;
+import org.jetbrains.asm4.Opcodes;
import java.io.ByteArrayInputStream;
import java.io.File;
diff --git a/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java b/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java
index d8ff9f5c68a6..a5630623c131 100644
--- a/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java
+++ b/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java
@@ -31,7 +31,7 @@ import com.intellij.uiDesigner.lw.LwRootContainer;
import com.intellij.util.PathUtil;
import com.intellij.util.ui.UIUtil;
import junit.framework.TestCase;
-import org.objectweb.asm.ClassWriter;
+import org.jetbrains.asm4.ClassWriter;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
diff --git a/plugins/ui-designer/ui-designer.iml b/plugins/ui-designer/ui-designer.iml
index e68ce2feab61..15cbc57d564d 100644
--- a/plugins/ui-designer/ui-designer.iml
+++ b/plugins/ui-designer/ui-designer.iml
@@ -19,7 +19,7 @@
-
+