More filtering: never define a method call 'call' since Groovy generates a lot of...
[jpf-core.git] / src / main / gov / nasa / jpf / vm / serialize / SmartThingsConfig.java
index 70d8589b826cb5fee26157ea580baa7812bc2baa..589f53eee0f1bba68fc0fcf6cfc4a8db033c08a5 100644 (file)
@@ -31,7 +31,35 @@ import gov.nasa.jpf.vm.serialize.AmmendableFilterConfiguration.FrameAmmendment;
 public class SmartThingsConfig
   implements FieldAmmendment, FrameAmmendment {
 
-  boolean ignoreClass(ClassInfo ci) {
+  public boolean staticClass(ClassInfo ci) {
+    String pName = ci.getName();
+    if (pName.startsWith("java."))
+      return true;
+
+    if (pName.startsWith("sun."))
+      return true;
+
+    if (pName.startsWith("com.sun"))
+      return true;
+
+    if (pName.startsWith("org."))
+      return true;
+
+    if (pName.startsWith("groovy."))
+      return true;
+
+    if (pName.startsWith("groovyjarjarasm."))
+      return true;
+
+    if (pName.startsWith("gov."))
+      return true;
+
+    if (pName.startsWith("["))
+      return true;
+
+    return false;
+  }
+  public boolean ignoreClass(ClassInfo ci) {
     String pName = ci.getName();
     if (pName.startsWith("org")) {
       if (pName.startsWith("org.codehaus.groovy")) {
@@ -53,11 +81,10 @@ public class SmartThingsConfig
         if (pName.startsWith("java.lang.ClassLoader")) {
           return true;
         }
-        if (pName.startsWith("java.lang.Thread$State")) {
-          return true;
-        }
         if (pName.startsWith("java.lang.Class"))
           return true;
+        if (pName.startsWith("java.lang.Thread"))
+          return true;
         if (pName.startsWith("java.lang.Package"))
           return true;
       } else {
@@ -104,7 +131,8 @@ public class SmartThingsConfig
       return true;
     if (pName.startsWith("sun.net.www"))
       return true;
-    
+    if (pName.startsWith("gov.nasa"))
+      return true;
     return false;
   }
   
@@ -119,15 +147,21 @@ public class SmartThingsConfig
     return sofar;
   }
 
+  boolean checkName(String name) {
+    if (name.equals("call"))
+      return true;
+    return (name.charAt(0) == '[' && name.charAt(name.length()-1)==']');
+  }
+  
   @Override
   public FramePolicy ammendFramePolicy(MethodInfo mi, FramePolicy sofar) {
     ClassInfo ci = mi.getClassInfo();
-    if (ignoreClass(ci)) {
+    if (ignoreClass(ci) || checkName(mi.getName())) {
       sofar.includeLocals = false;
       sofar.includeOps = false;
       sofar.includePC = false;
     } else {
-      //      System.out.println("Including M: " +mi);
+      //            System.out.println("Including M: " +mi.getName());
     }
 
     return sofar;