From: yeom Date: Thu, 18 Aug 2011 01:50:57 +0000 (+0000) Subject: changes. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=IRC.git;a=commitdiff_plain;h=228b915898f49d8496fb35619969d2917a17a4e1 changes. --- diff --git a/Robust/src/Analysis/SSJava/FlowDownCheck.java b/Robust/src/Analysis/SSJava/FlowDownCheck.java index 9d41b838..5b458dc6 100644 --- a/Robust/src/Analysis/SSJava/FlowDownCheck.java +++ b/Robust/src/Analysis/SSJava/FlowDownCheck.java @@ -292,12 +292,14 @@ public class FlowDownCheck { private void checkDeclarationInMethodBody(ClassDescriptor cd, MethodDescriptor md) { BlockNode bn = state.getMethodBody(md); + System.out.println("\n#checkDeclarationInMethodBody=" + md); + // first, check annotations on method parameters List paramList = new ArrayList(); for (int i = 0; i < md.numParameters(); i++) { // process annotations on method parameters VarDescriptor vd = (VarDescriptor) md.getParameter(i); - assignLocationOfVarDescriptor(vd, md, md.getParameterTable(), bn); + assignLocationOfVarDescriptor(vd, md, md.getParameterTable(), null); paramList.add(d2loc.get(vd)); } Vector methodAnnotations = md.getModifiers().getAnnotations(); @@ -323,7 +325,9 @@ public class FlowDownCheck { // if developer does not define method lattice // search return location in the method default lattice String rtrStr = ssjava.getMethodLattice(md).getReturnLoc(); - returnLocComp = new CompositeLocation(new Location(md, rtrStr)); + if(rtrStr!=null){ + returnLocComp = new CompositeLocation(new Location(md, rtrStr)); + } } if (returnLocComp == null) { @@ -345,6 +349,7 @@ public class FlowDownCheck { System.out.println("### ReturnLocGenerator=" + md); System.out.println("### md2ReturnLoc.get(md)=" + md2ReturnLoc.get(md)); + md2ReturnLocGen.put(md, new ReturnLocGenerator(md2ReturnLoc.get(md), md, paramList, md + " of " + cd.getSourceFileName())); } @@ -1469,8 +1474,8 @@ public class FlowDownCheck { // currently enforce every variable to have corresponding location if (annotationVec.size() == 0) { - throw new Error("Location is not assigned to variable " + vd.getSymbol() + " in the method " - + md.getSymbol() + " of the class " + cd.getSymbol()); + throw new Error("Location is not assigned to variable '" + vd.getSymbol() + "' in the method '" + + md + "' of the class " + cd.getSymbol() + " at " + generateErrorMessage(cd, n)); } if (annotationVec.size() > 1) { // variable can have at most one location diff --git a/Robust/src/ClassLibrary/SSJava/Character.java b/Robust/src/ClassLibrary/SSJava/Character.java index 3e412818..edff16e4 100644 --- a/Robust/src/ClassLibrary/SSJava/Character.java +++ b/Robust/src/ClassLibrary/SSJava/Character.java @@ -1,3 +1,4 @@ +@LATTICE("VALUE") public class Character { public static int digit(char ch, int radix) { @@ -24,7 +25,7 @@ public class Character { return false; } - char value; + @LOC("VALUE") char value; public Character(char c) { value = c; @@ -34,6 +35,7 @@ public class Character { value = c.value; } + @LATTICE("OUT { /** @@ -104,7 +106,7 @@ public final class Long //extends Number implements Comparable * * @serial the wrapped long */ - private final long value; + @LOC("V") private final long value; /** * Create a Long object representing the value of the diff --git a/Robust/src/ClassLibrary/SSJava/String.java b/Robust/src/ClassLibrary/SSJava/String.java index 7bbb303b..b0fc9c0f 100644 --- a/Robust/src/ClassLibrary/SSJava/String.java +++ b/Robust/src/ClassLibrary/SSJava/String.java @@ -1,9 +1,19 @@ import Vector; +@LATTICE("V(str.length-offset)) - length=str.length-offset; - char charstr[]=new char[length]; - for(int i=0; i (str.length - offset)) + length = str.length - offset; + char charstr[] = new char[length]; + for (int i = 0; i < length; i++) + charstr[i] = (char) str[i + offset]; + this.value = charstr; + this.count = length; + this.offset = 0; } public String(byte str[], String encoding) { int length = this.count; - if (length>(str.length)) - length=str.length; - char charstr[]=new char[length]; - for(int i=0; i (str.length)) + length = str.length; + char charstr[] = new char[length]; + for (int i = 0; i < length; i++) + charstr[i] = (char) str[i]; + this.value = charstr; + this.count = length; + this.offset = 0; } public String(char str[], int offset, int length) { - if (length>(str.length-offset)) - length=str.length-offset; - char charstr[]=new char[length]; - for(int i=0; i (str.length - offset)) + length = str.length - offset; + char charstr[] = new char[length]; + for (int i = 0; i < length; i++) + charstr[i] = str[i + offset]; + this.value = charstr; + this.count = length; + this.offset = 0; } public String(String str) { - this.value=str.value; - this.count=str.count; - this.offset=str.offset; + this.value = str.value; + this.count = str.count; + this.offset = str.offset; } public String(StringBuffer strbuf) { - value=new char[strbuf.length()]; - count=strbuf.length(); - offset=0; - for(int i=0; ithis.count||endIndex>this.count||beginIndex>endIndex) { + String str = new String(); + if (beginIndex > this.count || endIndex > this.count || beginIndex > endIndex) { // FIXME - System.printString("Index error: "+beginIndex+" "+endIndex+" "+count+"\n"+this); + System.printString("Index error: " + beginIndex + " " + endIndex + " " + count + "\n" + this); } - str.value=this.value; - str.count=endIndex-beginIndex; - str.offset=this.offset+beginIndex; + str.value = this.value; + str.count = endIndex - beginIndex; + str.offset = this.offset + beginIndex; return str; } @@ -115,69 +124,69 @@ public class String { } public int lastIndexOf(char ch) { - return this.lastindexOf((int)ch, count - 1); + return this.lastindexOf((int) ch, count - 1); } public static String concat2(String s1, String s2) { - if (s1==null) + if (s1 == null) return "null".concat(s2); else return s1.concat(s2); } public String concat(String str) { - String newstr=new String(); - newstr.count=this.count+str.count; - char charstr[]=new char[newstr.count]; - newstr.offset=0; - for(int i=0; i0; i--) - if (this.charAt(i)==ch) + for (int i = fromIndex; i > 0; i--) + if (this.charAt(i) == ch) return i; return -1; } public String replace(char oldch, char newch) { - char[] buffer=new char[count]; - for(int i=0; i='a'&&x<='z') { - x=(char) ((x-'a')+'A'); + char[] buffer = new char[count]; + for (int i = 0; i < count; i++) { + char x = charAt(i); + if (x >= 'a' && x <= 'z') { + x = (char) ((x - 'a') + 'A'); } - buffer[i]=x; + buffer[i] = x; } return new String(buffer); } public String toLowerCase() { - char[] buffer=new char[count]; - for(int i=0; i='A'&&x<='Z') { - x=(char) ((x-'A')+'a'); + char[] buffer = new char[count]; + for (int i = 0; i < count; i++) { + char x = charAt(i); + if (x >= 'A' && x <= 'Z') { + x = (char) ((x - 'A') + 'a'); } - buffer[i]=x; + buffer[i] = x; } return new String(buffer); } @@ -187,8 +196,8 @@ public class String { } public int indexOf(int ch, int fromIndex) { - for(int i=fromIndex; ifromIndex) - k=fromIndex; - for(; k>=0; k--) { + int k = count - str.count; + if (k > fromIndex) + k = fromIndex; + for (; k >= 0; k--) { if (regionMatches(k, str, 0, str.count)) return k; } @@ -223,7 +232,7 @@ public class String { } public int lastIndexOf(String str) { - return lastIndexOf(str, count-str.count); + return lastIndexOf(str, count - str.count); } public boolean startsWith(String str) { @@ -235,26 +244,25 @@ public class String { } public boolean regionMatches(int toffset, String other, int ooffset, int len) { - if (toffset<0 || ooffset <0 || (toffset+len)>count || (ooffset+len)>other.count) + if (toffset < 0 || ooffset < 0 || (toffset + len) > count || (ooffset + len) > other.count) return false; - for(int i=0; i count) || (srcBegin > srcEnd)) { + if ((srcBegin < 0) || (srcEnd > count) || (srcBegin > srcEnd)) { // FIXME - System.printString("Index error: "+srcBegin+" "+srcEnd+" "+count+"\n"+this); + System.printString("Index error: " + srcBegin + " " + srcEnd + " " + count + "\n" + this); System.exit(-1); } int len = srcEnd - srcBegin; int j = dstBegin; - for(int i=srcBegin; i='a'&&l<='z') - l=(char)((l-'a')+'A'); - if (r>='a'&&r<='z') - r=(char)((r-'a')+'A'); - if (l!=r) + for (int i = 0; i < count; i++) { + char l = s.value[i + s.offset]; + char r = value[i + offset]; + if (l >= 'a' && l <= 'z') + l = (char) ((l - 'a') + 'A'); + if (r >= 'a' && r <= 'z') + r = (char) ((r - 'a') + 'A'); + if (l != r) return false; } return true; @@ -436,39 +444,40 @@ public class String { public Vector split() { Vector splitted = new Vector(); int i; - int cnt =0; + int cnt = 0; // skip first spaces - for(i = 0; i< count; i++) { - if(value[i+offset] != '\n' && value[i+offset] != '\t' && value[i+offset] != ' ') + for (i = 0; i < count; i++) { + if (value[i + offset] != '\n' && value[i + offset] != '\t' && value[i + offset] != ' ') break; } - int oldi=i; + int oldi = i; - while(i 0) || (len < count))?substring(st, len):this; + return ((st > 0) || (len < count)) ? substring(st, len) : this; } public boolean matches(String regex) { diff --git a/Robust/src/ClassLibrary/SSJava/StringBuffer.java b/Robust/src/ClassLibrary/SSJava/StringBuffer.java index fb1222b4..bebe02f0 100644 --- a/Robust/src/ClassLibrary/SSJava/StringBuffer.java +++ b/Robust/src/ClassLibrary/SSJava/StringBuffer.java @@ -1,23 +1,28 @@ +@LATTICE("Vvalue.length) { + public StringBuffer append(@LOC("IN") String s) { + if ((s.count + count) > value.length) { // Need to allocate - char newvalue[]=new char[s.count+count+16]; //16 is DEFAULTSIZE - for(int i=0; isize) - size=i; - if (i>value.length) { - char newvalue[]=new char[i]; - for(int ii=0; ii size) + size = i; + if (i > value.length) { + char newvalue[] = new char[i]; + for (int ii = 0; ii < count; ii++) + newvalue[ii] = value[ii]; + value = newvalue; } } public StringBuffer append(StringBuffer s) { - if ((s.count+count)>value.length) { + if ((s.count + count) > value.length) { // Need to allocate - char newvalue[]=new char[s.count+count+16]; //16 is DEFAULTSIZE - for(int i=0; i count) { // FIXME @@ -131,7 +137,7 @@ public class StringBuffer { void expandCapacity(int minimumCapacity) { int newCapacity = (value.length + 1) * 2; if (newCapacity < 0) { - newCapacity = 0x7fffffff /*Integer.MAX_VALUE*/; + newCapacity = 0x7fffffff /* Integer.MAX_VALUE */; } else if (minimumCapacity > newCapacity) { newCapacity = minimumCapacity; } diff --git a/Robust/src/Tests/ssJava/mp3decoder/Decoder.java b/Robust/src/Tests/ssJava/mp3decoder/Decoder.java index 8b3ecbc6..febbd7c8 100644 --- a/Robust/src/Tests/ssJava/mp3decoder/Decoder.java +++ b/Robust/src/Tests/ssJava/mp3decoder/Decoder.java @@ -26,8 +26,10 @@ * @version 0.0.7 12/12/99 * @since 0.0.5 */ -@LATTICE("ST,DE private to public - @LOC("T") public static final int bitrates[][][] = { { { 0 /* free format */, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, @@ -601,15 +598,16 @@ public final class Header { * * @return milliseconds per frame */ + @LATTICE("OUT private to public - @LOC("T") public static final String bitrate_str[][][] = { { { "free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", @@ -793,7 +790,6 @@ public final class Header { * * @return number of subbands */ - @RETURNLOC("OUT") public int number_of_subbands() { return h_number_of_subbands; } @@ -805,7 +801,6 @@ public final class Header { * * @return intensity */ - @RETURNLOC("OUT") public int intensity_stereo_bound() { return h_intensity_stereo_bound; } diff --git a/Robust/src/Tests/ssJava/mp3decoder/LayerIIIDecoder.java b/Robust/src/Tests/ssJava/mp3decoder/LayerIIIDecoder.java index 3277f38b..4ec6a898 100644 --- a/Robust/src/Tests/ssJava/mp3decoder/LayerIIIDecoder.java +++ b/Robust/src/Tests/ssJava/mp3decoder/LayerIIIDecoder.java @@ -48,7 +48,7 @@ // llth added for decode // @LATTICE("IS1D*,RO 0 && ret) { ret = decodeFrame(); } @@ -171,8 +170,7 @@ public class Player { * * @return true if there are no more frames to decode, false otherwise. */ - @LATTICE("Oframebuffer where the next bits are retrieved. - */ - private int wordpointer; + /** + * Index into framebuffer where the next bits are retrieved. + */ + @LOC("IDX") + private int wordpointer; - /** - * Number (0-31, from MSB to LSB) of next bit for get_bits() - */ - private int bitindex; + /** + * Number (0-31, from MSB to LSB) of next bit for get_bits() + */ + @LOC("IDX") + private int bitindex; - private int main_data_begin; + @LOC("V") + private int main_data_begin; - public int getMain_data_begin() { - return main_data_begin; - } + public int getMain_data_begin() { + return main_data_begin; + } - public void setMain_data_begin(int main_data_begin) { - this.main_data_begin = main_data_begin; - } + public void setMain_data_begin(@LOC("IN") int main_data_begin) { + this.main_data_begin = main_data_begin; + } - private final int bitmask[] = { - 0, // dummy - 0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, - 0x0000003F, 0x0000007F, 0x000000FF, 0x000001FF, 0x000003FF, - 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF, 0x00007FFF, - 0x0000FFFF, 0x0001FFFF }; + private static final int bitmask[] = { + 0, // dummy + 0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F, + 0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF, + 0x00007FFF, 0x0000FFFF, 0x0001FFFF }; - public int get_bits(int number_of_bits) { - int returnvalue = 0; - int sum = bitindex + number_of_bits; - // System.out.println("bitindex=" + bitindex + " wordpointer=" - // + wordpointer); - // E.B - // There is a problem here, wordpointer could be -1 ?! - if (wordpointer < 0) - wordpointer = 0; - // E.B : End. + @LATTICE("OUT>> 16) & 0x0000FFFF); - returnvalue >>>= 48 - sum; // returnvalue >>= 16 - (number_of_bits - (32 - // - bitindex)) - returnvalue &= bitmask[number_of_bits]; - bitindex = sum - 32; - return returnvalue; - } + returnvalue >>>= 48 - sum; // returnvalue >>= 16 - (number_of_bits - (32 + // - bitindex)) + returnvalue &= bitmask[number_of_bits]; + bitindex = sum - 32; + return returnvalue; + } - public void setBuffer(int idx, int value) { - framebuffer[idx] = value; - } + public void setBuffer(int idx, int value) { + framebuffer[idx] = value; + } } diff --git a/Robust/src/Tests/ssJava/mp3decoder/SynthesisFilter.java b/Robust/src/Tests/ssJava/mp3decoder/SynthesisFilter.java index 39871d82..0f276849 100644 --- a/Robust/src/Tests/ssJava/mp3decoder/SynthesisFilter.java +++ b/Robust/src/Tests/ssJava/mp3decoder/SynthesisFilter.java @@ -34,16 +34,25 @@ * from 32, 44.1 or 48 kHz to 8 kHz, if ULAW is defined. Frequencies above 4 kHz * are removed by ignoring higher subbands. */ +@LATTICE("OUT