From e7b4004b5960716c11f6a064ab30d811f7c74bb6 Mon Sep 17 00:00:00 2001 From: jzhou Date: Wed, 16 Mar 2011 23:18:16 +0000 Subject: [PATCH] Bug fix. Now the SPECjbb2005 can run with small workload that does not invoke gc --- Robust/src/ClassLibrary/MGC/System.java | 6 +++- Robust/src/ClassLibrary/MGC/Thread.java | 6 +++- .../src/ClassLibrary/MGC/gnu/Collections.java | 2 +- .../ClassLibrary/MGC/gnu/DecimalFormat.java | 4 +-- Robust/src/ClassLibrary/MGC/gnu/File.java | 4 +-- Robust/src/ClassLibrary/MGC/gnu/Float.java | 2 +- Robust/src/ClassLibrary/MGC/gnu/Logger.java | 8 ++--- .../src/ClassLibrary/MGC/gnu/Properties.java | 2 +- Robust/src/IR/Flat/BuildCode.java | 8 ++--- Robust/src/Runtime/bamboo/multicoremem.c | 1 - Robust/src/Runtime/bamboo/multicoreruntime.c | 34 ++++++++++++++----- 11 files changed, 51 insertions(+), 26 deletions(-) diff --git a/Robust/src/ClassLibrary/MGC/System.java b/Robust/src/ClassLibrary/MGC/System.java index 01d46c81..45da9df3 100644 --- a/Robust/src/ClassLibrary/MGC/System.java +++ b/Robust/src/ClassLibrary/MGC/System.java @@ -95,7 +95,11 @@ public class System { public static void genReach(); private static Properties props; - private static native Properties initProperties(Properties props); + private static native Properties initProperties(); + + static { + initProperties(); + } public static Properties getProperties() { return props; diff --git a/Robust/src/ClassLibrary/MGC/Thread.java b/Robust/src/ClassLibrary/MGC/Thread.java index 14ed23e5..f329774e 100644 --- a/Robust/src/ClassLibrary/MGC/Thread.java +++ b/Robust/src/ClassLibrary/MGC/Thread.java @@ -18,6 +18,7 @@ public class Thread implements Runnable { private static void staticStart(Thread t) { t.run(); + t.finished = true; } public static native void yield(); @@ -34,10 +35,13 @@ public class Thread implements Runnable { if(target != null) { target.run(); } + this.finished = true; } private native void nativeCreate(); - public final native boolean isAlive(); + public final boolean isAlive() { + return !this.finished; + } } diff --git a/Robust/src/ClassLibrary/MGC/gnu/Collections.java b/Robust/src/ClassLibrary/MGC/gnu/Collections.java index 4ce8db76..416d9b18 100644 --- a/Robust/src/ClassLibrary/MGC/gnu/Collections.java +++ b/Robust/src/ClassLibrary/MGC/gnu/Collections.java @@ -94,6 +94,6 @@ public class Collections i.next(); i.set(a[pos]); }*/ - System.println("Collections.sort() invoked"); + //TODO System.println("Collections.sort() invoked"); } } // class Collections diff --git a/Robust/src/ClassLibrary/MGC/gnu/DecimalFormat.java b/Robust/src/ClassLibrary/MGC/gnu/DecimalFormat.java index 5cafa937..bfd245c2 100644 --- a/Robust/src/ClassLibrary/MGC/gnu/DecimalFormat.java +++ b/Robust/src/ClassLibrary/MGC/gnu/DecimalFormat.java @@ -305,12 +305,12 @@ public class DecimalFormat //extends NumberFormat }*/ public StringBuffer format(long l) { - System.println("Unimplemented DecimalFormat.format(long)"); + // TODO System.println("Unimplemented DecimalFormat.format(long)"); return new StringBuffer(""); } public StringBuffer format(double l) { - System.println("Unimplemented DecimalFormat.format(double)"); + // TODO System.println("Unimplemented DecimalFormat.format(double)"); return new StringBuffer(""); } diff --git a/Robust/src/ClassLibrary/MGC/gnu/File.java b/Robust/src/ClassLibrary/MGC/gnu/File.java index 5ecf4d32..0e11599c 100644 --- a/Robust/src/ClassLibrary/MGC/gnu/File.java +++ b/Robust/src/ClassLibrary/MGC/gnu/File.java @@ -38,7 +38,7 @@ public class File { } public boolean delete() { - System.println("Unimplemented File.delete()"); + // TODO System.println("Unimplemented File.delete()"); return false; } @@ -54,7 +54,7 @@ public class File { } } return (String[])(v.toArray(new String[0]));*/ - System.println("Unimplemented File.list()"); + // TODO System.println("Unimplemented File.list()"); return null; } } diff --git a/Robust/src/ClassLibrary/MGC/gnu/Float.java b/Robust/src/ClassLibrary/MGC/gnu/Float.java index 12515b7f..360145af 100644 --- a/Robust/src/ClassLibrary/MGC/gnu/Float.java +++ b/Robust/src/ClassLibrary/MGC/gnu/Float.java @@ -355,7 +355,7 @@ public final class Float public static float parseFloat(String str) { //return VMFloat.parseFloat(str); - return (float)Double.parseDouble(str); + return (float)(Long.parseLong(str)); } /** diff --git a/Robust/src/ClassLibrary/MGC/gnu/Logger.java b/Robust/src/ClassLibrary/MGC/gnu/Logger.java index d173b7d5..d3f4b9b4 100644 --- a/Robust/src/ClassLibrary/MGC/gnu/Logger.java +++ b/Robust/src/ClassLibrary/MGC/gnu/Logger.java @@ -533,7 +533,7 @@ public class Logger */ public void log(LogRecord record) { - System.println("Unimplemented Logger.log(LogRecord)"); + // TODO System.println("Unimplemented Logger.log(LogRecord)"); /*synchronized (lock) { if (!isLoggable(record.getLevel())) @@ -980,7 +980,7 @@ public class Logger */ public void addHandler(StreamHandler handler) //throws SecurityException { - System.println("Unimplemented Logger.addHandler(StreamHandler)"); + // TODO System.println("Unimplemented Logger.addHandler(StreamHandler)"); /*synchronized (lock) { if (handler == null) @@ -1051,7 +1051,7 @@ public class Logger */ /*return (Handler[]) handlerList.toArray(new Handler[handlerList.size()]); }*/ - System.println("Unimplemented Logger.getHandlers()"); + // TODO System.println("Unimplemented Logger.getHandlers()"); return new Handler[0]; } @@ -1180,7 +1180,7 @@ public class Logger index++; return index < stackTrace.length ? stackTrace[index] : null;*/ - System.println("Logger.getCallerStackFrame() invoked"); + // TODO System.println("Logger.getCallerStackFrame() invoked"); return null; } diff --git a/Robust/src/ClassLibrary/MGC/gnu/Properties.java b/Robust/src/ClassLibrary/MGC/gnu/Properties.java index e71684aa..7dc2d4b0 100644 --- a/Robust/src/ClassLibrary/MGC/gnu/Properties.java +++ b/Robust/src/ClassLibrary/MGC/gnu/Properties.java @@ -359,7 +359,7 @@ label = Name:\\u0020 public void load(InputStream inStream) throws IOException { //load(new InputStreamReader(inStream, "ISO-8859-1")); - System.println("Properties.load(InputStream) invoked"); + //TODO System.println("Properties.load(InputStream) invoked"); } /** diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 9f683f77..beb4593a 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -318,7 +318,7 @@ public class BuildCode { * initialization.*/ protected void outputStaticBlocks(PrintWriter outmethod) { // execute all the static blocks and all the static field initializations - // execute all the static blocks and all the static field initializations + // execute all the static blocks and all the static field initializations SymbolTable sctbl = this.state.getSClassSymbolTable(); Iterator it_sclasses = sctbl.getDescriptorsIterator(); if(it_sclasses.hasNext()) { @@ -650,7 +650,7 @@ public class BuildCode { if(state.MGC) { outclassdefs.println(" int mutex;"); outclassdefs.println(" volatile int notifycount;"); - outclassdefs.println(" int objlock;"); + outclassdefs.println(" volatile int objlock;"); if(state.MULTICOREGC) { outclassdefs.println(" int marked;"); } @@ -706,7 +706,7 @@ public class BuildCode { if(state.MGC) { outclassdefs.println(" int mutex;"); outclassdefs.println(" volatile int notifycount;"); - outclassdefs.println(" int objlock;"); + outclassdefs.println(" volatile int objlock;"); if(state.MULTICOREGC) { outclassdefs.println(" int marked;"); } @@ -1641,7 +1641,7 @@ public class BuildCode { if (state.MGC) { classdefout.println(" int mutex;"); classdefout.println(" volatile int notifycount;"); - classdefout.println(" int objlock;"); + classdefout.println(" volatile int objlock;"); if(state.MULTICOREGC) { classdefout.println(" int marked;"); } diff --git a/Robust/src/Runtime/bamboo/multicoremem.c b/Robust/src/Runtime/bamboo/multicoremem.c index f0747f8b..61d79cf9 100644 --- a/Robust/src/Runtime/bamboo/multicoremem.c +++ b/Robust/src/Runtime/bamboo/multicoremem.c @@ -682,7 +682,6 @@ void * smemalloc_I(int coren, } return NULL; #else - BAMBOO_DEBUGPRINT(0xe003); BAMBOO_EXIT(0xe003); #endif } diff --git a/Robust/src/Runtime/bamboo/multicoreruntime.c b/Robust/src/Runtime/bamboo/multicoreruntime.c index 359cad91..7b2034f7 100644 --- a/Robust/src/Runtime/bamboo/multicoreruntime.c +++ b/Robust/src/Runtime/bamboo/multicoreruntime.c @@ -9,6 +9,7 @@ #include "mem.h" #ifndef RAW #include +#include #endif #ifndef INLINE @@ -82,7 +83,7 @@ void injectinstructionfailure() { #ifdef D___Double______nativeparsedouble____L___String___ double CALL01(___Double______nativeparsedouble____L___String___,struct ___String___ * ___str___) { - /*int length=VAR(___str___)->___count___; + int length=VAR(___str___)->___count___; int maxlength=(length>60) ? 60 : length; char str[maxlength+1]; struct ArrayObject * chararray=VAR(___str___)->___value___; @@ -92,16 +93,14 @@ double CALL01(___Double______nativeparsedouble____L___String___,struct ___String str[i]=((short *)(((char *)&chararray->___length___)+sizeof(int)))[i+offset]; } str[i]=0; - double d=atof(str);*/ - printf("Unimplemented Double.nativeparsedouble(S) \n"); - double d = 0.0; + double d=0.0; //atof(str); TODO Unimplemented nativeparsedoulbe return d; } #endif #ifdef D___Double______nativeparsedouble_____AR_B_I_I double CALL23(___Double______nativeparsedouble_____AR_B_I_I, int start, int length,int start,int length,struct ArrayObject * ___str___) { - /*int maxlength=(length>60)?60:length; + int maxlength=(length>60)?60:length; char str[maxlength+1]; struct ArrayObject * bytearray=VAR(___str___); int i; @@ -109,9 +108,7 @@ double CALL23(___Double______nativeparsedouble_____AR_B_I_I, int start, int leng str[i]=(((char *)&bytearray->___length___)+sizeof(int))[i+start]; } str[i]=0; - double d=atof(str);*/ - printf("Unimplemented Double.nativeparsedouble() \n"); - double d = 0.0; + double d=0.0; //atof(str); TODO Unimplemented nativeparsedouble return d; } #endif @@ -302,6 +299,27 @@ void CALL01(___System______printString____L___String___,struct ___String___ * __ #endif // MGC } +#ifdef D___System______initProperties____ +struct ___Properties___ * CALL00(___System______initProperties____) { +#ifdef MGC + struct ___Properties___ * ___srctmp31736___; + struct ___String___ * ___arg42781___; + struct ___String___ * ___arg42782___; + struct ___String___ * ___s42780___; + ___srctmp31736___=allocate_new(76); + { + ___Properties______Properties____((struct ___Properties___ *) ___srctmp31736___); + } + global_defs_p->___System______props___ = ___srctmp31736___; + ___arg42781___=NewString("line.separator",14); + ___arg42782___=NewString("\n",1); + { + ___s42780___=___System______setProperty____L___String____L___String___((struct ___String___ *) ___arg42781___, (struct ___String___ *) ___arg42782___); + } +#endif // MGC +} +#endif + /* Object allocation function */ #ifdef MULTICORE_GC -- 2.34.1