From 4eb230d04473f349f6e000aab4a3388902071c90 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Sun, 4 Nov 2007 03:33:00 +0000 Subject: [PATCH] more changes --- .../ClassLibrary/BufferedOutputStream.java | 15 ++++++++- Robust/src/ClassLibrary/BufferedWriter.java | 8 +++++ Robust/src/ClassLibrary/FileOutputStream.java | 13 ++++++-- Robust/src/ClassLibrary/FileWriter.java | 6 ++++ Robust/src/ClassLibrary/OutputStream.java | 9 ++++++ .../src/ClassLibrary/OutputStreamWriter.java | 10 ++++++ .../src/ClassLibrary/SocketInputStream.java | 2 +- Robust/src/ClassLibrary/SocketJava.java | 14 +++++++- .../src/ClassLibrary/SocketOutputStream.java | 8 +++++ Robust/src/ClassLibrary/String.java | 32 +++++++++++++++++++ Robust/src/ClassLibrary/System.java | 2 ++ Robust/src/ClassLibrary/Writer.java | 4 ++- Robust/src/IR/Flat/BuildCode.java | 9 ++++-- Robust/src/Main/Main.java | 3 +- Robust/src/Runtime/file.c | 5 ++- Robust/src/Runtime/runtime.c | 4 +++ Robust/src/Runtime/runtime.h | 2 ++ 17 files changed, 132 insertions(+), 14 deletions(-) create mode 100644 Robust/src/ClassLibrary/FileWriter.java create mode 100644 Robust/src/ClassLibrary/OutputStreamWriter.java create mode 100644 Robust/src/ClassLibrary/SocketOutputStream.java diff --git a/Robust/src/ClassLibrary/BufferedOutputStream.java b/Robust/src/ClassLibrary/BufferedOutputStream.java index f6adbd09..8a36bde2 100644 --- a/Robust/src/ClassLibrary/BufferedOutputStream.java +++ b/Robust/src/ClassLibrary/BufferedOutputStream.java @@ -1,6 +1,19 @@ public class BufferedOutputStream extends OutputStream { OutputStream o; - + public BufferedOutputStream(OutputStream o) { + this.o=o; + } + public void write(byte []b, int off, int len) { + o.write(b, off, len); + } + + public void flush() { + o.flush(); + } + + public void close() { + o.close(); + } } diff --git a/Robust/src/ClassLibrary/BufferedWriter.java b/Robust/src/ClassLibrary/BufferedWriter.java index f9b0049a..c800ef3b 100644 --- a/Robust/src/ClassLibrary/BufferedWriter.java +++ b/Robust/src/ClassLibrary/BufferedWriter.java @@ -1,6 +1,10 @@ public class BufferedWriter extends Writer { Writer out; + public BufferedWriter(Writer out) { + this.out=out; + } + public void write(String s) { out.write(s); } @@ -13,4 +17,8 @@ public class BufferedWriter extends Writer { out.flush(); } + public void close() { + out.close(); + } + } diff --git a/Robust/src/ClassLibrary/FileOutputStream.java b/Robust/src/ClassLibrary/FileOutputStream.java index d5b1f6bf..cbb46499 100644 --- a/Robust/src/ClassLibrary/FileOutputStream.java +++ b/Robust/src/ClassLibrary/FileOutputStream.java @@ -1,10 +1,17 @@ -public class FileOutputStream { +public class FileOutputStream extends OutputStream { private int fd; public FileOutputStream(String pathname) { fd=nativeOpen(pathname.getBytes()); } + public FileOutputStream(String pathname, boolean append) { + if(append) + fd=nativeAppend(pathname.getBytes()); + else + fd=nativeOpen(pathname.getBytes()); + } + public FileOutputStream(String pathname, int mode) { if(mode==0) fd=nativeAppend(pathname.getBytes()); @@ -22,7 +29,7 @@ public class FileOutputStream { private static native int nativeOpen(byte[] filename); private static native int nativeAppend(byte[] filename); - private static native void nativeWrite(int fd, byte[] array); + private static native void nativeWrite(int fd, byte[] array, int off, int len); private static native void nativeClose(int fd); private static native void nativeFlush(int fd); @@ -33,7 +40,7 @@ public class FileOutputStream { } public void write(byte[] b) { - nativeWrite(fd, b); + nativeWrite(fd, b, 0, b.length); } public void flush() { diff --git a/Robust/src/ClassLibrary/FileWriter.java b/Robust/src/ClassLibrary/FileWriter.java new file mode 100644 index 00000000..66f73774 --- /dev/null +++ b/Robust/src/ClassLibrary/FileWriter.java @@ -0,0 +1,6 @@ +public class FileWriter extends OutputStreamWriter { + public FileWriter(String file, boolean append) { + super(new FileOutputStream(file, append)); + } + +} diff --git a/Robust/src/ClassLibrary/OutputStream.java b/Robust/src/ClassLibrary/OutputStream.java index d1318bb0..22fadd19 100644 --- a/Robust/src/ClassLibrary/OutputStream.java +++ b/Robust/src/ClassLibrary/OutputStream.java @@ -7,4 +7,13 @@ public class OutputStream { public void write(byte[] b) { } + + public void write(byte[] b, int off, int len) { + } + + public void flush() { + } + + public void close() { + } } diff --git a/Robust/src/ClassLibrary/OutputStreamWriter.java b/Robust/src/ClassLibrary/OutputStreamWriter.java new file mode 100644 index 00000000..b1afd6e9 --- /dev/null +++ b/Robust/src/ClassLibrary/OutputStreamWriter.java @@ -0,0 +1,10 @@ +public class OutputStreamWriter extends Writer { + OutputStream fos; + public OutputStreamWriter(OutputStream fos) { + this.fos=fos; + } + + + + +} diff --git a/Robust/src/ClassLibrary/SocketInputStream.java b/Robust/src/ClassLibrary/SocketInputStream.java index 0539785a..b63bfcd8 100644 --- a/Robust/src/ClassLibrary/SocketInputStream.java +++ b/Robust/src/ClassLibrary/SocketInputStream.java @@ -1,4 +1,4 @@ -public class SocketInputStream { +public class SocketInputStream extends InputStream { Socket s; public SocketInputStream(Socket s) { this.s=s; diff --git a/Robust/src/ClassLibrary/SocketJava.java b/Robust/src/ClassLibrary/SocketJava.java index 55624e1b..a24a7fe3 100644 --- a/Robust/src/ClassLibrary/SocketJava.java +++ b/Robust/src/ClassLibrary/SocketJava.java @@ -1,8 +1,20 @@ public class Socket { /* File Descriptor */ int fd; - + SocketInputStream sin; + SocketOutputStream sout; + public Socket() { + sin=new SocketInputStream(this); + sout=new SocketOutputStream(this); + } + + public InputStream getInputStream() { + return sin; + } + + public OutputStream getOutputStream() { + return sout; } public Socket(String host, int port) { diff --git a/Robust/src/ClassLibrary/SocketOutputStream.java b/Robust/src/ClassLibrary/SocketOutputStream.java new file mode 100644 index 00000000..6e4167da --- /dev/null +++ b/Robust/src/ClassLibrary/SocketOutputStream.java @@ -0,0 +1,8 @@ +public class SocketOutputStream extends OutputStream { + Socket s; + public SocketOutputStream(Socket s) { + this.s=s; + } + + +} diff --git a/Robust/src/ClassLibrary/String.java b/Robust/src/ClassLibrary/String.java index 4048cc02..4ad4b7c9 100644 --- a/Robust/src/ClassLibrary/String.java +++ b/Robust/src/ClassLibrary/String.java @@ -251,6 +251,38 @@ public class String { return new String(chararray); } + public static String valueOf(long x) { + int length=0; + long tmp; + if (x<0) + tmp=-x; + else + tmp=x; + do { + tmp=tmp/10; + length=length+1; + } while(tmp!=0); + + char chararray[]; + if (x<0) + chararray=new char[length+1]; + else + chararray=new char[length]; + int voffset; + if (x<0) { + chararray[0]='-'; + voffset=1; + x=-x; + } else + voffset=0; + + do { + chararray[--length+voffset]=(char)(x%10+'0'); + x=x/10; + } while (length!=0); + return new String(chararray); + } + public int hashCode() { if (cachedHashcode!=0) return cachedHashcode; diff --git a/Robust/src/ClassLibrary/System.java b/Robust/src/ClassLibrary/System.java index 89b33ea4..d1352339 100644 --- a/Robust/src/ClassLibrary/System.java +++ b/Robust/src/ClassLibrary/System.java @@ -9,4 +9,6 @@ public class System { public static void error() { System.printString("Error (Use Breakpoint on ___System______error method for more information!)\n"); } + + public static native void exit(int status); } diff --git a/Robust/src/ClassLibrary/Writer.java b/Robust/src/ClassLibrary/Writer.java index c245a141..e0959e55 100644 --- a/Robust/src/ClassLibrary/Writer.java +++ b/Robust/src/ClassLibrary/Writer.java @@ -1,5 +1,4 @@ public class Writer { - public void write(String s) { } @@ -9,4 +8,7 @@ public class Writer { public void flush() { } + + public void close() { + } } diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 789db3ed..cf5650c2 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -1869,9 +1869,12 @@ public class BuildCode { } private void generateFlatReturnNode(FlatMethod fm, LocalityBinding lb, FlatReturnNode frn, PrintWriter output) { - if (frn.getReturnTemp()!=null) - output.println("return "+generateTemp(fm, frn.getReturnTemp(), lb)+";"); - else + if (frn.getReturnTemp()!=null) { + if (frn.getReturnTemp().getType().isPtr()) + output.println("return (struct "+fm.getMethod().getReturnType().getSafeSymbol()+"*)"+generateTemp(fm, frn.getReturnTemp(), lb)+";"); + else + output.println("return "+generateTemp(fm, frn.getReturnTemp(), lb)+";"); + } else output.println("return;"); } diff --git a/Robust/src/Main/Main.java b/Robust/src/Main/Main.java index cb377a93..4265e604 100644 --- a/Robust/src/Main/Main.java +++ b/Robust/src/Main/Main.java @@ -96,7 +96,8 @@ public class Main { readSourceFile(state, ClassLibraryPrefix+"FileOutputStream.java"); readSourceFile(state, ClassLibraryPrefix+"File.java"); readSourceFile(state, ClassLibraryPrefix+"InetAddress.java"); - + readSourceFile(state, ClassLibraryPrefix+"SocketInputStream.java"); + readSourceFile(state, ClassLibraryPrefix+"SocketOutputStream.java"); if (state.TASK) { diff --git a/Robust/src/Runtime/file.c b/Robust/src/Runtime/file.c index 39cc3263..63f21bd5 100644 --- a/Robust/src/Runtime/file.c +++ b/Robust/src/Runtime/file.c @@ -7,10 +7,9 @@ #include "mem.h" #include "runtime.h" -void CALL12(___FileOutputStream______nativeWrite____I__AR_B, int fd, int fd, struct ArrayObject * ___array___) { - int length=VAR(___array___)->___length___; +void CALL34(___FileOutputStream______nativeWrite____I__AR_B_I_I, int fd, int off, int len, int fd, struct ArrayObject * ___array___, int off, int len) { char * string= (((char *)& VAR(___array___)->___length___)+sizeof(int)); - int status=write(fd, string, length); + int status=write(fd, &string[off], len); } void CALL11(___FileOutputStream______nativeClose____I, int fd, int fd) { diff --git a/Robust/src/Runtime/runtime.c b/Robust/src/Runtime/runtime.c index 3917da59..7f727511 100644 --- a/Robust/src/Runtime/runtime.c +++ b/Robust/src/Runtime/runtime.c @@ -74,6 +74,10 @@ void injectinstructionfailure() { #endif } +void CALL11(___System______exit____I,int ___status___, int ___status___) { + exit(___status___); +} + void CALL01(___System______printString____L___String___,struct ___String___ * ___s___) { struct ArrayObject * chararray=VAR(___s___)->___value___; int i; diff --git a/Robust/src/Runtime/runtime.h b/Robust/src/Runtime/runtime.h index af2c7901..fdef2c2f 100644 --- a/Robust/src/Runtime/runtime.h +++ b/Robust/src/Runtime/runtime.h @@ -59,6 +59,7 @@ void createstartupobject(); #define CALL12(name,rest, alt1, alt2) name(struct name ## _params * ___params___, rest) #define CALL23(name, rest, rest2, alt1, alt2, alt3) name(struct name ## _params * ___params___, rest, rest2) #define CALL24(name, rest, rest2, alt1, alt2, alt3, alt4) name(struct name ## _params * ___params___, rest, rest2) +#define CALL34(name, rest, rest2, rest3, alt1, alt2, alt3, alt4) name(struct name ## _params * ___params___, rest, rest2, rest3) #else #define VAR(name) name #define CALL00(name) name() @@ -68,6 +69,7 @@ void createstartupobject(); #define CALL12(name,rest, alt1, alt2) name(alt1, alt2) #define CALL23(name, rest, rest2, alt1, alt2, alt3) name(alt1, alt2, alt3) #define CALL24(name, rest, rest2, alt1, alt2, alt3, alt4) name(alt1, alt2, alt3, alt4) +#define CALL34(name, rest, rest2, rest3, alt1, alt2, alt3, alt4) name(alt1, alt2, alt3, alt4) #endif #ifdef TASK -- 2.34.1