small changes for benchmarks
authorbdemsky <bdemsky>
Mon, 26 Feb 2007 01:44:54 +0000 (01:44 +0000)
committerbdemsky <bdemsky>
Mon, 26 Feb 2007 01:44:54 +0000 (01:44 +0000)
Robust/src/Benchmarks/ChatJava/ChatThread.java
Robust/src/Benchmarks/WebServer/Inventory.java
Robust/src/Benchmarks/WebServer/Logger.java
Robust/src/Benchmarks/WebServer/WebServerSocket.java
Robust/src/Benchmarks/WebServerJava/Logger.java
Robust/src/Benchmarks/WebServerJava/WebServerThread.java
Robust/src/ClassLibrary/String.java
Robust/src/IR/Flat/BuildCode.java
Robust/src/Runtime/garbage.c
Robust/src/Runtime/runtime.c
Robust/src/Runtime/runtime.h

index 7500abe9639af59c2e1e3f7c61445dabf27bef34..db533329fac3fa54a83ba67e293d499a6b72712a 100644 (file)
@@ -30,6 +30,10 @@ public class ChatThread extends Thread {
        byte buffer[]=new byte[1024];
        int length=sock.read(buffer);
        String st=(new String(buffer)).subString(0, length);
+       System.printString(st);
+       System.printString("\n");
+       System.printInt(length);
+       System.printString("\n");
        room.sendToRoom(this, st.getBytes());
     }
     
index ca8cb3a5134c2331d11fec45eb8f38700aa325a1..6964a18e4493833709fd011f15d9b11969a2a656 100644 (file)
@@ -5,11 +5,12 @@ public class Inventory {
     // Transaction variables
     int numitems;
     HashMap map;
-    int balance=100000;
+    int balance;
     
     // Constructor
     public Inventory(){
        map = new HashMap();
+       balance=100000;
     }
     
     public Inventory(int howmany) {
@@ -80,7 +81,7 @@ public class Inventory {
            totalvalue+=oo.quantity*oo.price;
        }
        sb.append("Total value: ");
-       sb.append(new Integer(totalvalue));
+       sb.append((new Integer(totalvalue)).toString());
        sb.append("\n");
        return sb.toString();   
     }  
index 1583870b51c099cd3992a2fc66998848fe4ff26d..a23cc4fac6b8ec5310d13a2069b70fc5e56d9112 100644 (file)
@@ -6,7 +6,7 @@ public class Logger {
 
     //Constructor
     public Logger(){
-       fos=new FileOutputStream("../../Tests/htmlfiles/request.log");//Open request.log file 
+       fos=new FileOutputStream("request.log");//Open request.log file 
     }
 
     //Logs filename as per client requests
index 01fbb3df6ce8fc71b06bf0eddd2db4a38ac0d984..67c58f60c376ce4780275a977633c915d6ef82cf 100644 (file)
@@ -95,51 +95,48 @@ public class WebServerSocket extends Socket {
        //kind of operation, name of item, quantity of item, price of item
        //e.g. trans_add_car_2_10000 is the filename
        //store in the parsed[] string , add,car,2,1000
-       public int parseTransaction(){
-               int start = filename.indexOf('_');
-               String s = filename.subString(start+1);
-
-               if (s.startsWith("add")==true){
-       //              System.printString("DEBUG > ADD\n");
-                       int i1 = s.indexOf('_');
-                       parsed[0] = new String(s.subString(0,i1));
-
-                       String s1 = s.subString(i1+1);
-                       int i2 = s1.indexOf('_');
-                       parsed[1] = new String(s1.subString(0,i2));
-                       
-                       String s2 = s1.subString(i2+1);
-                       int i3 = s2.indexOf('_');
-                       parsed[2] = new String(s2.subString(0,i3));
-                       
-                       String s3 = s2.subString(i3+1);
-                       parsed[3] = s3;
-                       
-                       return 0;
-                       
-               }
-               if (s.startsWith("buy")==true){
-       //              System.printString("DEBUG > BUY\n");
-                       int i1 = s.indexOf('_');
-                       parsed[0] = s.subString(0,i1);
-
-                       String s1 = s.subString(i1+1);
-                       int i2 = s1.indexOf('_');
-                       parsed[1] = s1.subString(0,i2);
-                       
-                       String s2 = s1.subString(i2+1);
-                       parsed[2] = s2;
-                       
-                       parsed[3] = "";
-               
-                       return 1;
-               }
-               if (s.startsWith("inventory")==true){
-       //              System.printString("DEBUG > INVENTORY\n");
-                       return 2;
-
-               }
-               // Error transaction
-               return -1;
+    public int parseTransaction(){
+       int start = filename.indexOf('_');
+       String s = filename.subString(start+1);
+       
+       if (s.startsWith("add")==true){
+           //          System.printString("DEBUG > ADD\n");
+           int i1 = s.indexOf('_');
+           parsed[0] = new String(s.subString(0,i1));
+           
+           int i2 = s.indexOf('_',i1+1);
+           parsed[1] = new String(s.subString(i1+1,i2));
+           
+           int i3 = s.indexOf('_',i2+1);
+           parsed[2] = new String(s.subString(i2+1,i3));
+           
+           String s3 = s.subString(i3+1);
+           parsed[3] = s3;
+           
+           return 0;
+           
+       }
+       if (s.startsWith("buy")==true){
+           //          System.printString("DEBUG > BUY\n");
+           int i1 = s.indexOf('_');
+           parsed[0] = s.subString(0,i1);
+           
+           int i2 = s.indexOf('_', i1+1);
+           parsed[1] = s.subString(i1+1,i2);
+           
+           String s2 = s.subString(i2+1);
+           parsed[2] = s2;
+           
+           parsed[3] = "";
+           
+           return 1;
+       }
+       if (s.startsWith("inventory")==true){
+           //          System.printString("DEBUG > INVENTORY\n");
+           return 2;
+           
        }
+       // Error transaction
+       return -1;
+    }
 }
index 1583870b51c099cd3992a2fc66998848fe4ff26d..a23cc4fac6b8ec5310d13a2069b70fc5e56d9112 100644 (file)
@@ -6,7 +6,7 @@ public class Logger {
 
     //Constructor
     public Logger(){
-       fos=new FileOutputStream("../../Tests/htmlfiles/request.log");//Open request.log file 
+       fos=new FileOutputStream("request.log");//Open request.log file 
     }
 
     //Logs filename as per client requests
index 501279037d837d0dcbf1f67f2e066a5ca3e2358a..3704e2f596c27b8ab54bc035df5fa6a1bed13096 100644 (file)
@@ -190,15 +190,13 @@ public class WebServerThread extends Thread {
            int i1 = s.indexOf('_');
            parsed[0] = new String(s.subString(0,i1));
            
-           String s1 = s.subString(i1+1);
-           int i2 = s1.indexOf('_');
-           parsed[1] = new String(s1.subString(0,i2));
+           int i2 = s.indexOf('_',i1+1);
+           parsed[1] = new String(s.subString(i1+1,i2));
            
-           String s2 = s1.subString(i2+1);
-           int i3 = s2.indexOf('_');
-           parsed[2] = new String(s2.subString(0,i3));
+           int i3 = s.indexOf('_',i2+1);
+           parsed[2] = new String(s.subString(i2+1,i3));
            
-           String s3 = s2.subString(i3+1);
+           String s3 = s.subString(i3+1);
            parsed[3] = s3;
            
            return 0;
@@ -209,11 +207,10 @@ public class WebServerThread extends Thread {
            int i1 = s.indexOf('_');
            parsed[0] = s.subString(0,i1);
            
-           String s1 = s.subString(i1+1);
-           int i2 = s1.indexOf('_');
-           parsed[1] = s1.subString(0,i2);
+           int i2 = s.indexOf('_', i1+1);
+           parsed[1] = s.subString(i1+1,i2);
            
-           String s2 = s1.subString(i2+1);
+           String s2 = s.subString(i2+1);
            parsed[2] = s2;
            
            parsed[3] = "";
index eda1206599cb21d45ec4aded953d0174a91680ac..95d85b229b439f5ff3b562989dcdc04c06a7b9d8 100644 (file)
@@ -2,6 +2,7 @@ public class String {
     char value[];
     int count;
     int offset;
+    private int cachedHashcode;
 
     private String() {
     }
@@ -154,9 +155,12 @@ public class String {
     }
 
     public int hashCode() {
+       if (cachedHashcode!=0)
+           return cachedHashcode;
        int hashcode=0;
        for(int i=0;i<count;i++)
            hashcode=hashcode*31+value[i+offset];
+       cachedHashcode=hashcode;
        return hashcode;
     }
 
index fe62e698acf6340fc380c732aa5b7f7d00583a09..6eda7f5efa0385bcf3847bf27614a277908633ff 100644 (file)
@@ -956,7 +956,11 @@ public class BuildCode {
            if (nodetolabel.containsKey(current_node))
                output.println("L"+nodetolabel.get(current_node)+":");
            if (state.INSTRUCTIONFAILURE) {
-               output.println("if ((--instructioncount)==0) injectinstructionfailure();");
+               if (state.THREAD) {
+                   output.println("if ((++instructioncount)>failurecount) {instructioncount=0;injectinstructionfailure();}");
+               }
+               else
+                   output.println("if ((--instructioncount)==0) injectinstructionfailure();");
            }
            if (current_node.numNext()==0) {
                output.print("   ");
index 4fced6a9393ff0e6ac79e875bd4f12d6847ad5ba..b59a3e8bd3f06551e67b04bfb518bb9fb46d7c94 100644 (file)
@@ -212,12 +212,16 @@ void collect(struct garbagelist * stackptr) {
   {
     struct genpointerlist * ptr=failedtasks->list;
     while(ptr!=NULL) {
-      void *orig=ptr->src;
+      struct taskparamdescriptor *tpd=ptr->src;
+      void *orig;
       void *copy;
-      if (gc_createcopy(orig, &copy))
-       enqueue(orig);
-      ptr->src=copy;
-      ptr->object=copy;
+      int i;
+      for(i=0;i<tpd->numParameters;i++) {
+       orig=tpd->parameterArray[i];
+       if (gc_createcopy(orig, &copy))
+         enqueue(orig);
+       tpd->parameterArray[i]=copy;
+      }
       ptr=ptr->inext;
     }
     genrehash(failedtasks);
index ac4d9807e304c93794b98a67bbfb858dfa9393f2..b6d7ff94195b708b8ff5139538b4b1f71981b28e 100644 (file)
@@ -415,7 +415,6 @@ void injectinstructionfailure() {
   if (injectinstructionfailures) {
     if (numfailures==0)
       return;
-    instructioncount=failurecount;    
     instaccum+=failurecount;
     if ((((double)random())/RAND_MAX)<instfailurechance) {
       if (numfailures>0)
index f59480981cd2780ec4bf82807006791a537a4356..5dd0fe6c198257c572b45ad8c66bcf28b39e5696 100644 (file)
@@ -3,6 +3,7 @@
 #include <setjmp.h>
 extern jmp_buf error_handler;
 extern int instructioncount;
+extern int failurecount;
 
 #ifdef PRECISE_GC
 #include "garbage.h"