check in changes
authorbdemsky <bdemsky>
Tue, 15 Aug 2006 17:37:27 +0000 (17:37 +0000)
committerbdemsky <bdemsky>
Tue, 15 Aug 2006 17:37:27 +0000 (17:37 +0000)
Robust/src/IR/Flat/BuildCode.java
Robust/src/IR/Flat/FlatFlagActionNode.java
Robust/src/Runtime/runtime.c
Robust/src/Runtime/runtime.h

index 77a1e0936194790c7165f23c80053d2e390bbc5c..380b2a812dd91c6894f20de28e7ef8e321390419 100644 (file)
@@ -79,6 +79,10 @@ public class BuildCode {
        outmethodheader.println("#include \"structdefs.h\"");
 
        /* Output types for short array and string */
+       outstructs.println("#define STRINGARRAYTYPE "+
+                          (state.getArrayNumber(
+                                                (new TypeDescriptor(typeutil.getClass(TypeUtil.StringClass))).makeArray(state))+state.numClasses()));
+
        outstructs.println("#define STRINGTYPE "+typeutil.getClass(TypeUtil.StringClass).getId());
        outstructs.println("#define CHARARRAYTYPE "+
                           (state.getArrayNumber((new TypeDescriptor(TypeDescriptor.CHAR)).makeArray(state))+state.numClasses()));
@@ -1049,5 +1053,6 @@ public class BuildCode {
 
     public void generateFlatFlagActionNode(FlatMethod fm, FlatFlagActionNode ffann, PrintWriter output) {
        output.print("/* FlatFlagActionNode will go here */");
+       
     }
 }
index a6bff51fdf1bfec33f2db4dfb0c512ada6493887..41b93f406702464ffa6cc0c49c1492b9cb3fdf27 100644 (file)
@@ -24,6 +24,16 @@ public class FlatFlagActionNode extends FlatNode {
     public int kind() {
         return FKind.FlatFlagActionNode;
     }
+    
+    /** This method returns an iterator over the Temp/Flag pairs. */
+    
+    public Iterator getTempFlagPairs() {
+       return tempflagpairs.keySet().iterator();
+    }
+
+    public boolean getFlagChange(TempFlagPair tfp) {
+       return ((Boolean)tempflagpairs.get(tfp)).booleanValue();
+    }
 
     public TempDescriptor [] readsTemps() {
         if (tempflagpairs.size()==0)
index 084469da810e68301702cd8eb1c7899ae43603ee..c91890a9222ab160cd95a20ad04b53aa46dd6c5d 100644 (file)
@@ -1,5 +1,7 @@
 #include "runtime.h"
 #include "structdefs.h"
+#include <string.h>
+
 extern int classsize[];
 #ifdef BOEHM_GC
 #include "gc.h"
@@ -8,6 +10,26 @@ extern int classsize[];
 #define FREEMALLOC(x) calloc(1,x)
 #endif
 
+#ifdef TASK
+int main(int argc, char **argv) {
+  int i;
+  /* Allocate startup object */
+  struct ___StartupObject___ *startupobject=(struct ___StartupObject___*) allocate_new(STARTUPTYPE);
+
+  /* Build array of strings */
+  struct ArrayObject * stringarray=allocate_newarray(STRINGARRAYTYPE, argc); 
+  startupobject->___parameters___=stringarray;
+
+  for(i=0;i<argc;i++) {
+    int length=strlen(argv[i]);
+    struct ___String___ *newstring=NewString(argv[i],length);
+    ((void **)(((char *)& stringarray->___length___)+sizeof(int)))[i]=newstring;  
+  }
+
+
+}
+#endif
+
 int ___Object______hashcode____(struct ___Object___ * ___this___) {
   return (int) ___this___;
 }
@@ -21,17 +43,16 @@ void ___System______printString____L___String___(struct ___String___ * s) {
     }
 }
 
-
 void * allocate_new(int type) {
   void * v=FREEMALLOC(classsize[type]);
   *((int *)v)=type;
   return v;
 }
 
-void * allocate_newarray(int type, int length) {
-  void * v=FREEMALLOC(sizeof(struct ArrayObject)+length*classsize[type]);
-  *((int *)v)=type;
-  ((struct ArrayObject *)v)->___length___=length;
+struct ArrayObject * allocate_newarray(int type, int length) {
+  struct ArrayObject * v=FREEMALLOC(sizeof(struct ArrayObject)+length*classsize[type]);
+  v->type=type;
+  v->___length___=length;
   return v;
 }
 
index b84919e75977c6dcb8c82db217e9c108b765541c..eb020ef26b90de9f9e0c567881d96de47e65768b 100644 (file)
@@ -5,7 +5,7 @@
 
 
 void * allocate_new(int type);
-void * allocate_newarray(int type, int length);
+struct ArrayObject * allocate_newarray(int type, int length);
 struct ___String___ * NewString(char *str,int length);
 
 void failedboundschk();