more changes.
authoryeom <yeom>
Thu, 21 Jul 2011 02:00:20 +0000 (02:00 +0000)
committeryeom <yeom>
Thu, 21 Jul 2011 02:00:20 +0000 (02:00 +0000)
Robust/src/Analysis/SSJava/FlowDownCheck.java
Robust/src/Analysis/SSJava/MethodAnnotationCheck.java
Robust/src/Tests/ssJava/mp3decoder/Crc16.java
Robust/src/Tests/ssJava/mp3decoder/Decoder.java
Robust/src/Tests/ssJava/mp3decoder/Header.java
Robust/src/Tests/ssJava/mp3decoder/LayerIDecoder.java
Robust/src/Tests/ssJava/mp3decoder/LayerIIDecoder.java
Robust/src/Tests/ssJava/mp3decoder/LayerIIIDecoder.java
Robust/src/Tests/ssJava/mp3decoder/SynthesisFilter.java
Robust/src/Tests/ssJava/mp3decoder/huffcodetab.java

index 41439da..74e1c25 100644 (file)
@@ -43,6 +43,7 @@ import IR.Tree.ReturnNode;
 import IR.Tree.SubBlockNode;
 import IR.Tree.SwitchBlockNode;
 import IR.Tree.SwitchStatementNode;
+import IR.Tree.SynchronizedNode;
 import IR.Tree.TertiaryNode;
 import IR.Tree.TreeNode;
 import Util.Pair;
@@ -283,9 +284,43 @@ public class FlowDownCheck {
     case Kind.LoopNode:
       checkDeclarationInLoopNode(md, nametable, (LoopNode) bsn);
       break;
+
+    case Kind.IfStatementNode:
+      checkDeclarationInIfStatementNode(md, nametable, (IfStatementNode) bsn);
+      return;
+
+    case Kind.SwitchStatementNode:
+      checkDeclarationInSwitchStatementNode(md, nametable, (SwitchStatementNode) bsn);
+      return;
+
+    case Kind.SynchronizedNode:
+      checkDeclarationInSynchronizedNode(md, nametable, (SynchronizedNode) bsn);
+      return;
+
+    }
+  }
+
+  private void checkDeclarationInSynchronizedNode(MethodDescriptor md, SymbolTable nametable,
+      SynchronizedNode sbn) {
+    checkDeclarationInBlockNode(md, nametable, sbn.getBlockNode());
+  }
+
+  private void checkDeclarationInSwitchStatementNode(MethodDescriptor md, SymbolTable nametable,
+      SwitchStatementNode ssn) {
+    BlockNode sbn = ssn.getSwitchBody();
+    for (int i = 0; i < sbn.size(); i++) {
+      SwitchBlockNode node = (SwitchBlockNode) sbn.get(i);
+      checkDeclarationInBlockNode(md, nametable, node.getSwitchBlockStatement());
     }
   }
 
+  private void checkDeclarationInIfStatementNode(MethodDescriptor md, SymbolTable nametable,
+      IfStatementNode isn) {
+    checkDeclarationInBlockNode(md, nametable, isn.getTrueBlock());
+    if (isn.getFalseBlock() != null)
+      checkDeclarationInBlockNode(md, nametable, isn.getFalseBlock());
+  }
+
   private void checkDeclarationInLoopNode(MethodDescriptor md, SymbolTable nametable, LoopNode ln) {
 
     if (ln.getType() == LoopNode.FORLOOP) {
@@ -434,12 +469,6 @@ public class FlowDownCheck {
       // declaration annotation
       CompositeLocation declaredReturnLoc = md2ReturnLoc.get(md);
 
-      System.out.println("\nreturnLocAt=" + declaredReturnLoc);
-      System.out.println("returnValueLoc=" + returnValueLoc);
-      System.out.println("COMPARE RESULT="
-          + CompositeLattice.compare(declaredReturnLoc, returnValueLoc,
-              generateErrorMessage(md.getClassDesc(), rn)));
-
       int compareResult =
           CompositeLattice.compare(returnValueLoc, declaredReturnLoc,
               generateErrorMessage(md.getClassDesc(), rn));
@@ -596,15 +625,10 @@ public class FlowDownCheck {
   private CompositeLocation checkLocationFromDeclarationNode(MethodDescriptor md,
       SymbolTable nametable, DeclarationNode dn) {
 
-    System.out.println("##DeclarationNode=" + dn.printNode(0) + " "
-        + generateErrorMessage(md.getClassDesc(), dn));
-
     VarDescriptor vd = dn.getVarDescriptor();
 
     CompositeLocation destLoc = d2loc.get(vd);
 
-    System.out.println("##DeclarationNode destLoc=" + destLoc + " of vd=" + vd + " of md=" + md);
-
     if (dn.getExpression() != null) {
       CompositeLocation expressionLoc =
           checkLocationFromExpressionNode(md, nametable, dn.getExpression(),
@@ -806,20 +830,18 @@ public class FlowDownCheck {
       argList.add(callerArg);
     }
 
-    System.out.println("##");
-    System.out.println("min.getMethod()=" + min.getMethod() + " argList=" + argList);
-    System.out.println("computeReturnLocation="
-        + md2ReturnLocGen.get(min.getMethod()).computeReturnLocation(argList));
+    System.out.println("\n## computeReturnLocation=" + min.getMethod() + " argList=" + argList);
+    CompositeLocation compLoc = md2ReturnLocGen.get(min.getMethod()).computeReturnLocation(argList);
+    DeltaLocation delta = new DeltaLocation(compLoc, 1);
+    System.out.println("##computeReturnLocation=" + delta);
 
-    return md2ReturnLocGen.get(min.getMethod()).computeReturnLocation(argList);
+    return delta;
 
   }
 
   private void checkCalleeConstraints(MethodDescriptor md, SymbolTable nametable,
       MethodInvokeNode min) {
 
-    System.out.println("checkCalleeConstraints " + generateErrorMessage(md.getClassDesc(), min));
-
     if (min.numArgs() > 1) {
       // caller needs to guarantee that it passes arguments in regarding to
       // callee's hierarchy
@@ -828,7 +850,6 @@ public class FlowDownCheck {
         CompositeLocation callerArg1 =
             checkLocationFromExpressionNode(md, nametable, en, new CompositeLocation());
 
-        ClassDescriptor calleecd = min.getMethod().getClassDesc();
         VarDescriptor calleevd = (VarDescriptor) min.getMethod().getParameter(i);
         CompositeLocation calleeLoc1 = d2loc.get(calleevd);
 
@@ -845,9 +866,6 @@ public class FlowDownCheck {
               VarDescriptor calleevd2 = (VarDescriptor) min.getMethod().getParameter(currentIdx);
               CompositeLocation calleeLoc2 = d2loc.get(calleevd2);
 
-              System.out.println("#callerResult=" + callerArg1 + " " + callerArg2);
-              System.out.println("#calleeResult=" + calleeLoc1 + " " + calleeLoc2);
-
               int callerResult =
                   CompositeLattice.compare(callerArg1, callerArg2,
                       generateErrorMessage(md.getClassDesc(), min));
@@ -944,6 +962,7 @@ public class FlowDownCheck {
 
     System.out.println("checking op node=" + on.printNode(0)
         + generateErrorMessage(md.getClassDesc(), on));
+    System.out.println("# op node=" + on.printNode(0));
     System.out.println("left loc=" + leftLoc + " from " + on.getLeft().getClass());
     if (on.getRight() != null) {
       System.out.println("right loc=" + rightLoc + " from " + on.getRight().kind());
@@ -1024,6 +1043,7 @@ public class FlowDownCheck {
         loc.addLocation(locElement);
         return loc;
       }
+
       Descriptor d = (Descriptor) nametable.get(varname);
 
       // CompositeLocation localLoc = null;
@@ -1040,6 +1060,7 @@ public class FlowDownCheck {
             // if it is 'static final', the location has TOP since no one can
             // change its value
             loc.addLocation(Location.createTopLocation(md));
+            return loc;
           } else {
             // if 'static', the location has pre-assigned global loc
             MethodLattice<String> localLattice = ssjava.getMethodLattice(md);
@@ -1061,6 +1082,24 @@ public class FlowDownCheck {
 
         Location fieldLoc = (Location) fd.getType().getExtension();
         loc.addLocation(fieldLoc);
+      } else if (d == null) {
+
+        // check if the var is a static field of the class
+        FieldDescriptor fd = nn.getField();
+        ClassDescriptor cd = nn.getClassDesc();
+
+        if (fd != null && cd != null) {
+
+          if (fd.isStatic() && fd.isFinal()) {
+            loc.addLocation(Location.createTopLocation(md));
+            return loc;
+          } else {
+            MethodLattice<String> localLattice = ssjava.getMethodLattice(md);
+            Location fieldLoc = new Location(md, localLattice.getThisLoc());
+            loc.addLocation(fieldLoc);
+          }
+        }
+
       }
     }
     return loc;
@@ -1074,8 +1113,14 @@ public class FlowDownCheck {
 
     FieldDescriptor fd = fan.getField();
 
-    if (ltd.isClassNameRef()) {
-      // using a class name directly
+    String varName = null;
+    if (left.kind() == Kind.NameNode) {
+      NameDescriptor nd = ((NameNode) left).getName();
+      varName = nd.toString();
+    }
+
+    if (ltd.isClassNameRef() || (varName != null && varName.equals("this"))) {
+      // using a class name directly or access using this
       if (fd.isStatic() && fd.isFinal()) {
         loc.addLocation(Location.createTopLocation(md));
         return loc;
@@ -1449,37 +1494,97 @@ public class FlowDownCheck {
         }
         Location loc2 = compLoc2.get(i);
 
-        if (!loc1.getDescriptor().equals(loc2.getDescriptor())) {
+        Descriptor d1 = loc1.getDescriptor();
+        Descriptor d2 = loc2.getDescriptor();
+
+        Descriptor descriptor;
+
+        if (d1 instanceof ClassDescriptor && d2 instanceof ClassDescriptor) {
+
+          if (d1.equals(d2)) {
+            descriptor = d1;
+          } else {
+            // identifying which one is parent class
+            Set<Descriptor> d1SubClassesSet = ssjava.tu.getSubClasses((ClassDescriptor) d1);
+            Set<Descriptor> d2SubClassesSet = ssjava.tu.getSubClasses((ClassDescriptor) d2);
+
+            if (d1 == null && d2 == null) {
+              throw new Error("Failed to compare two locations of " + compLoc1 + " and " + compLoc2
+                  + " because they are not comparable at " + msg);
+            } else if (d1 != null && d1SubClassesSet.contains(d2)) {
+              descriptor = d1;
+            } else if (d2 != null && d2SubClassesSet.contains(d1)) {
+              descriptor = d2;
+            } else {
+              throw new Error("Failed to compare two locations of " + compLoc1 + " and " + compLoc2
+                  + " because they are not comparable at " + msg);
+            }
+          }
+
+        } else if (d1 instanceof MethodDescriptor && d2 instanceof MethodDescriptor) {
+
+          if (d1.equals(d2)) {
+            descriptor = d1;
+          } else {
+
+            // identifying which one is parent class
+            MethodDescriptor md1 = (MethodDescriptor) d1;
+            MethodDescriptor md2 = (MethodDescriptor) d2;
+
+            if (!md1.matches(md2)) {
+              throw new Error("Failed to compare two locations of " + compLoc1 + " and " + compLoc2
+                  + " because they are not comparable at " + msg);
+            }
+
+            Set<Descriptor> d1SubClassesSet =
+                ssjava.tu.getSubClasses(((MethodDescriptor) d1).getClassDesc());
+            Set<Descriptor> d2SubClassesSet =
+                ssjava.tu.getSubClasses(((MethodDescriptor) d2).getClassDesc());
+
+            if (d1 == null && d2 == null) {
+              throw new Error("Failed to compare two locations of " + compLoc1 + " and " + compLoc2
+                  + " because they are not comparable at " + msg);
+            } else if (d1 != null && d1SubClassesSet.contains(d2)) {
+              descriptor = d1;
+            } else if (d2 != null && d2SubClassesSet.contains(d1)) {
+              descriptor = d2;
+            } else {
+              throw new Error("Failed to compare two locations of " + compLoc1 + " and " + compLoc2
+                  + " because they are not comparable at " + msg);
+            }
+          }
+
+        } else {
           throw new Error("Failed to compare two locations of " + compLoc1 + " and " + compLoc2
               + " because they are not comparable at " + msg);
         }
 
-        Descriptor d1 = loc1.getDescriptor();
-        Descriptor d2 = loc2.getDescriptor();
+        // SSJavaLattice<String> lattice1 = getLatticeByDescriptor(d1);
+        // SSJavaLattice<String> lattice2 = getLatticeByDescriptor(d2);
 
-        SSJavaLattice<String> lattice1 = getLatticeByDescriptor(d1);
-        SSJavaLattice<String> lattice2 = getLatticeByDescriptor(d2);
+        SSJavaLattice<String> lattice = getLatticeByDescriptor(descriptor);
 
         // check if the spin location is appeared only at the end of the
         // composite location
-        if (lattice1.getSpinLocSet().contains(loc1.getLocIdentifier())) {
+        if (lattice.getSpinLocSet().contains(loc1.getLocIdentifier())) {
           if (i != (compLoc1.getSize() - 1)) {
-            throw new Error("The spin location " + loc1.getLocIdentifier()
+            throw new Error("The shared location " + loc1.getLocIdentifier()
                 + " cannot be appeared in the middle of composite location at" + msg);
           }
         }
 
-        if (lattice2.getSpinLocSet().contains(loc2.getLocIdentifier())) {
+        if (lattice.getSpinLocSet().contains(loc2.getLocIdentifier())) {
           if (i != (compLoc2.getSize() - 1)) {
             throw new Error("The spin location " + loc2.getLocIdentifier()
                 + " cannot be appeared in the middle of composite location at " + msg);
           }
         }
 
-        if (!lattice1.equals(lattice2)) {
-          throw new Error("Failed to compare two locations of " + compLoc1 + " and " + compLoc2
-              + " because they are not comparable at " + msg);
-        }
+        // if (!lattice1.equals(lattice2)) {
+        // throw new Error("Failed to compare two locations of " + compLoc1 +
+        // " and " + compLoc2
+        // + " because they are not comparable at " + msg);
+        // }
 
         if (loc1.getLocIdentifier().equals(loc2.getLocIdentifier())) {
           numOfTie++;
@@ -1487,11 +1592,11 @@ public class FlowDownCheck {
           // note that the spinning location only can be appeared in the last
           // part of the composite location
           if (awareSharedLoc && numOfTie == compLoc1.getSize()
-              && lattice1.getSpinLocSet().contains(loc1.getLocIdentifier())) {
+              && lattice.getSpinLocSet().contains(loc1.getLocIdentifier())) {
             return ComparisonResult.GREATER;
           }
           continue;
-        } else if (lattice1.isGreaterThan(loc1.getLocIdentifier(), loc2.getLocIdentifier())) {
+        } else if (lattice.isGreaterThan(loc1.getLocIdentifier(), loc2.getLocIdentifier())) {
           return ComparisonResult.GREATER;
         } else {
           return ComparisonResult.LESS;
@@ -1731,12 +1836,6 @@ class ReturnLocGenerator {
     // compute GLB of arguments subset that are same or higher than return
     // location
     CompositeLocation glb = CompositeLattice.calculateGLB(inputGLB);
-
-    System.out.println("### computeReturnLocation");
-    System.out.println("### args=" + args);
-    System.out.println("### calculateGLB=" + inputGLB);
-    System.out.println("### glb=" + glb);
-
     return glb;
   }
 }
index d1914e0..f05fcff 100644 (file)
@@ -90,28 +90,19 @@ public class MethodAnnotationCheck {
           if (!visited.contains(p)) {
             visited.add(p);
 
-            if (calleeMD.getClassDesc().isInterface()) {
-              calleeMD.getClassDesc();
-            }
-
             tovisit.add(calleeMD);
 
-            if (calleeMD.isAbstract()) {
-              Set<MethodDescriptor> possibleCalleeSet =
-                  (Set<MethodDescriptor>) ssjava.getCallGraph().getMethods(calleeMD);
-
-              for (Iterator iterator2 = possibleCalleeSet.iterator(); iterator2.hasNext();) {
-                MethodDescriptor possibleCallee = (MethodDescriptor) iterator2.next();
+            Set<MethodDescriptor> possibleCalleeSet =
+                (Set<MethodDescriptor>) ssjava.getCallGraph().getMethods(calleeMD);
 
-                if (!possibleCallee.isAbstract()) {
-                  ssjava.addAnnotationRequire(possibleCallee);
-                  tovisit.add(possibleCallee);
-                }
+            for (Iterator iterator2 = possibleCalleeSet.iterator(); iterator2.hasNext();) {
+              MethodDescriptor possibleCallee = (MethodDescriptor) iterator2.next();
 
+              if (!possibleCallee.isAbstract()) {
+                ssjava.addAnnotationRequire(possibleCallee);
+                tovisit.add(possibleCallee);
               }
 
-            } else {
-              ssjava.addAnnotationRequire(calleeMD);
             }
 
           }
index ae35b48..aea133e 100644 (file)
@@ -46,16 +46,17 @@ public final class Crc16
    */\r
   public void add_bits (@LOC("IN") int bitstring, @LOC("IN") int length)\r
   {\r
-        @LOC("SH") int bitmask = 1 << (length - 1);\r
-       do\r
-        if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0 ))\r
-        {\r
-               crc <<= 1;\r
-               crc ^= polynomial;\r
-        }\r
-        else\r
-               crc <<= 1;\r
-       while ((bitmask >>>= 1) != 0);\r
+    @LOC("SH") int bitmask = 1 << (length - 1);\r
+    do{\r
+      if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0 ))\r
+      {\r
+        crc <<= 1;\r
+        crc ^= polynomial;\r
+      }\r
+      else{\r
+        crc <<= 1;\r
+      }\r
+    }while ((bitmask >>>= 1) != 0);\r
   }\r
 \r
   /**\r
index 46c87ba..6b8a588 100644 (file)
@@ -27,7 +27,7 @@
  * @version 0.0.7 12/12/99\r
  * @since      0.0.5\r
  */\r
-@LATTICE("ST,OUT,FIL,DE,O,EQ,PA,INIT")\r
+@LATTICE("ST,OUT,FIL,DE,O,EQ,PA,INIT,DE*")\r
 public class Decoder implements DecoderErrors\r
 {\r
        static private final Params DEFAULT_PARAMS = new Params();\r
@@ -145,10 +145,17 @@ public class Decoder implements DecoderErrors
 \r
          output.clear_buffer();\r
 \r
-         @LOC("DE") FrameDecoder decoder = retrieveDecoder(header, stream, layer);\r
-\r
+         @LOC("TH,Decoder.DE") FrameDecoder decoder = retrieveDecoder(header, stream, layer);\r
          decoder.decodeFrame();\r
 \r
+         if(layer==3){\r
+           l3decoder=(LayerIIIDecoder)decoder;\r
+         }else if(layer==2){\r
+           l2decoder=(LayerIIDecoder)decoder;\r
+         }else{\r
+           l1decoder=(LayerIDecoder)decoder;\r
+         }\r
+         \r
          output.write_buffer(1);\r
 \r
          return output;        \r
index 0282614..cd7fb01 100644 (file)
@@ -353,19 +353,19 @@ public final class Header
        /**\r
         * Returns version.\r
         */\r
-     @RETURNLOC("THIS")\r
+     @RETURNLOC("OUT")\r
        public int version() { return h_version; }\r
 \r
        /**\r
         * Returns Layer ID.\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public int layer() { return h_layer; }\r
 \r
        /**\r
         * Returns bitrate index.\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public int bitrate_index() { return h_bitrate_index; }\r
 \r
        /**\r
@@ -381,7 +381,7 @@ public final class Header
        /**\r
         * Returns Mode.\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public int mode() { return h_mode; }\r
 \r
        /**\r
@@ -425,7 +425,7 @@ public final class Header
         * Returns Checksum flag.\r
         * Compares computed checksum with stream checksum.\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public boolean checksum_ok () { return (checksum == crc.checksum()); }\r
 \r
        // Seeking and layer III stuff\r
@@ -441,13 +441,13 @@ public final class Header
        /**\r
         * Returns Slots.\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public int slots() { return nSlots; }\r
 \r
        /**\r
         * Returns Mode Extension.\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public int mode_extension() { return h_mode_extension; }\r
 \r
        // E.B -> private to public\r
@@ -762,7 +762,7 @@ public final class Header
         * Returns the number of subbands in the current frame.\r
         * @return number of subbands\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public int number_of_subbands() {return h_number_of_subbands;}\r
 \r
        /**\r
@@ -772,6 +772,6 @@ public final class Header
         * subbands above that limit are in intensity stereo mode.\r
         * @return intensity\r
         */\r
-       @RETURNLOC("THIS")\r
+       @RETURNLOC("OUT")\r
        public int intensity_stereo_bound() {return h_intensity_stereo_bound;}\r
 }\r
index b3572bf..3b2285b 100644 (file)
@@ -40,7 +40,7 @@
     @LOC("H") protected int                                    which_channels;
     @LOC("H") protected int                                    mode;
        
-    @LOC("H") protected int                                    num_subbands;
+    @LOC("SH") protected int                                   num_subbands;
     @LOC("L") protected Subband[]                              subbands;
     @LOC("H") protected Crc16                                  crc     = null; // new Crc16[1] to enable CRC checking.
        
              sample = sample * factor + offset;                // requantization
                  if (channels == OutputChannels.BOTH_CHANNELS)
              {
-                       @LOC("OUT") float sample1 = sample * scalefactor;
+                    @LOC("OUT") float sample1 = sample * scalefactor;
                        @LOC("OUT") float sample2 = sample * channel2_scalefactor;
                        filter1.input_sample(sample1, subbandnumber);
                        filter2.input_sample(sample2, subbandnumber);
index a6740fa..2814250 100644 (file)
@@ -65,8 +65,9 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder
        protected void readScaleFactorSelection()
        {
          // eom note: num_subbands is defined in LayerIDecoder so it has (THIS, LayerIDecoder) Loc
-             for (@LOC("V,LayerIIDecoder.SH") int i = 0; i < num_subbands; ++i)
-                 ((SubbandLayer2)subbands[i]).read_scalefactor_selection(stream, crc);         
+             for (@LOC("V,LayerIIDecoder.SH") int i = 0; i < num_subbands; ++i){
+               ((SubbandLayer2)subbands[i]).read_scalefactor_selection(stream, crc);
+             }
        }
        
        
@@ -677,7 +678,8 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder
          /**
           *
           */
-          @LATTICE("OUT<V,V<SH,SH<TEMP,TEMP<TMP,TMP<THIS,THIS<IN,SH*,TEMP*,TMP*,THISLOC=THIS,GLOBALLOC=IN")
+//          @LATTICE("OUT<V,V<SH,SH<TEMP,TEMP<TMP,TMP<THIS,THIS<IN,SH*,TEMP*,TMP*,THISLOC=THIS,GLOBALLOC=IN")
+         @LATTICE("OUT<V,V<TEMP,TEMP<TMP,TMP<SH,SH<THIS,THIS<IN,SH*,TEMP*,TMP*,THISLOC=THIS,GLOBALLOC=IN")
          @RETURNLOC("V")
          public boolean read_sampledata (@LOC("IN") Bitstream stream)
          {
index 83cc3bf..8d9bb67 100644 (file)
@@ -38,7 +38,7 @@
  * 
  * @since 0.0
  */
-@LATTICE("FS<BR,BR<SF,LR<IR,IR<IP,IP<SF,LR<K,K<F,LR<VAR,LR<RO,RO<F,VAR<F,VAR<RAW,CSH<F,SAM<O,O<F,NS<SI,SI<CH,SFREQ<H,MAX<H,H<CH,FLCH<CH,FLCH<WC,SF<SFT,SFT<NS,NS<C,TS<RAW,O<TS,LY<F,NZ<VAR,C*,FS*,SI*,IP*,IR*,LR*,K*,O*,TS*,TS<BT,BT<GR,GR<SI,LR<S,S<ME,ME<CH,K<SH,K<LSF,LSF<H,LSF<CH,IP<SH,SH<J,J<S,S<ME,SH<SFREQ,SH<RO,IP<TMP2,LSF<H,TMP2<F,J*,SH*,O<RO2,RO2<RO3,RO3<RO4,RO4<RO5,O<RO1,RO1<RO5,RO5<RO6,RO6<RO7,RO7<RO8,RO8<RO9,RO9<SFREQ,RO9<F,RO1*,RO4*,RO5*,RO6*,RO9*,VAR<HD3,HD3<HD2,HD2<HD1,HD1<SI,HD1<SFREQ,HD1<RAW,HD2*,HD3*,SFB<GLSFD5,GLSFD5<NS,GLSFD5<GLSFD4,NS<GLSFD3,GLSFD4<GLSFD3,GLSFD3<GLSFD2,GLSFD2<GLSFD1,GLSFD1<SI,GLSFD5*,SF<GLSFF4,GLSFF4<GLSFF3,GLSFF3<GLSFF2,GLSFF2<GLSFF1,GLSFF1<SI,GLSFF4*,GLSFF3*,GLSFF2*,SF<GSF5,GSF5<GSF4,GSF4<GSF3,GSF3<GSF2,GSF2<GSF1,GSF1<SI,GSF5*,GSF4*,O<D3,D3<D2,D2<D1,D1<FLCH,D1*,D2*")
+@LATTICE("FS<BR,BR<SF,LR<IR,IR<IP,IP<SF,LR<K,K<F,LR<VAR,LR<RO,RO<F,VAR<F,VAR<RAW,CSH<F,SAM<O,O<F,NS<SI,SI<CH,SFREQ<H,MAX<H,H<CH,FLCH<CH,FLCH<WC,SF<SFT,SFT<NS,NS<C,TS<RAW,O<TS,LY<F,NZ<VAR,C*,FS*,IP*,IR*,LR*,K*,O*,TS*,TS<BT,BT<GR,GR<SI,LR<S,S<ME,ME<CH,K<SH,K<LSF,LSF<H,LSF<CH,IP<SH,SH<J,J<S,S<ME,SH<SFREQ,SH<RO,IP<TMP2,LSF<H,TMP2<F,J*,SH*,O<RO2,RO2<RO3,RO3<RO4,RO4<RO5,O<RO1,RO1<RO5,RO5<RO6,RO6<RO7,RO7<RO8,RO8<RO9,RO9<SFREQ,RO9<F,RO1*,RO4*,RO5*,RO6*,RO9*,VAR<HD3,HD3<HD2,HD2<HD1,HD1<SI,HD1<SFREQ,HD1<RAW,HD2*,HD3*,SFB<GLSFD5,GLSFD5<NS,GLSFD5<GLSFD4,NS<GLSFD3,GLSFD4<GLSFD3,GLSFD3<GLSFD2,GLSFD2<GLSFD1,GLSFD1<SI,GLSFD5*,SF<GLSFF4,GLSFF4<GLSFF3,GLSFF3<GLSFF2,GLSFF2<GLSFF1,GLSFF1<SI,GLSFF4*,GLSFF3*,GLSFF2*,SF<GSF5,GSF5<GSF4,GSF4<GSF3,GSF3<GSF2,GSF2<GSF1,GSF1<SI,GSF5*,GSF4*,O<D3,D3<D2,D2<D1,D1<FLCH,D1*,D2*")
 //4th line added for hybrid.
 //5th added for stereo
 //6th added for reorder method
index 9981860..8b152fd 100644 (file)
@@ -458,9 +458,17 @@ final class SynthesisFilter
     // manually doing something that a compiler should handle sucks\r
     // coding like this is hard to read\r
     @LOC("IN,SynthesisFilter.L4") float tmp2;\r
-    new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11)\r
-    + p5 + p13;\r
-    new_v7 = (new_v9 = p15 + p11 + p3) + p13;\r
+//    new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11)\r
+//    + p5 + p13;\r
+    new_v15 = p15;\r
+    new_v13 = p15 + p7;\r
+    new_v11 = p15 + p7 + p11;\r
+    new_v5 = new_v11 + p5 + p13;\r
+    \r
+//    new_v7 = (new_v9 = p15 + p11 + p3) + p13;\r
+    new_v9 = p15 + p11 + p3;\r
+    new_v7 = new_v9 + p13;\r
+    \r
     new_v16/*33-17*/ = -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14;\r
     new_v18/*35-17*/ = -(new_v3 = tmp1 + p5 + p7) - p6 - p14;\r
 \r
index 13e4291..1769d0f 100644 (file)
@@ -45,8 +45,8 @@
 @METHODDEFAULT("OUT<V,V<SH,SH<IN,SH*,THISLOC=IN,GLOBALLOC=IN")\r
 final class huffcodetab\r
 {\r
-  @LOC("FINAL") private static final int        MXOFF=250;\r
-  @LOC("FINAL") private static final int        HTN=34;\r
+  private static final int      MXOFF=250;\r
+  private static final int      HTN=34;\r
   \r
   @LOC("FIELD") private char                            tablename0 = ' ';      /* string, containing table_description   */\r
   @LOC("FIELD") private char                            tablename1 = ' ';      /* string, containing table_description   */\r