public static void main(String argv[]){
int nthreads;
+ nthreads = 1;
+ int size = 3;
if(argv.length != 0 ) {
- nthreads = Integer.parseInt(argv[0]);
- } else {
- System.printString("The no of threads has not been specified, defaulting to 1\n");
- System.printString(" \n");
- nthreads = 1;
- }
+ size = Integer.parseInt(argv[0]);
+ }
+// if(argv.length != 0 ) {
+// nthreads = Integer.parseInt(argv[0]);
+// } else {
+// System.printString("The no of threads has not been specified, defaulting to 1\n");
+// System.printString(" \n");
+// nthreads = 1;
+// }
JGFInstrumentor instr = new JGFInstrumentor();
//JGFInstrumentor.printHeader(2,0,nthreads);
JGFSORBench sor;
sor = new JGFSORBench(nthreads);
- int size = 3;
+
JGFInstrumentor.addTimer("Section2:SOR:Kernel", "Iterations",size, instr.timers);
sor.JGFsetsize(size);
*/
__thread SESEcommon_p seseCaller;
+__thread void * baseptr=NULL;
+
+__thread int spaceleft=0;
+
+#define MBLOCK 65536
+#define MLOW 1000
+
+void * MLPMALLOC(int size) {
+ // printf("%d\n",size);
+ if (spaceleft<MLOW) {
+ baseptr=malloc(MBLOCK);
+ spaceleft=MBLOCK;
+ }
+ if (size>spaceleft) {
+ return malloc(size);
+ } else {
+ //rount size up
+ size=(size+7)&~7;
+ char *charbase=(char *)baseptr;
+ baseptr=(void *)(charbase+size);
+ spaceleft-=size;
+ return charbase;
+ }
+}
void* mlpAllocSESErecord( int size ) {
- void* newrec = RUNMALLOC( size );
+ void* newrec = MLPMALLOC( size );
if( newrec == 0 ) {
printf( "mlpAllocSESErecord did not obtain memory!\n" );
exit( -1 );
void mlpFreeSESErecord( void* seseRecord ) {
- RUNFREE( seseRecord );
+ // MLPFREE( seseRecord );
}
MemoryQueue** mlpCreateMemoryQueueArray(int numMemoryQueue){
int i;
- MemoryQueue** newMemoryQueue=(MemoryQueue**)RUNMALLOC( sizeof( MemoryQueue* ) * numMemoryQueue );
+ MemoryQueue** newMemoryQueue=(MemoryQueue**)MLPMALLOC( sizeof( MemoryQueue* ) * numMemoryQueue );
for(i=0; i<numMemoryQueue; i++){
newMemoryQueue[i]=createMemoryQueue();
}
}
REntry* mlpCreateREntryArray(){
- REntry* newREntryArray=(REntry*)RUNMALLOC(sizeof(REntry)*NUMRENTRY);
+ REntry* newREntryArray=(REntry*)MLPMALLOC(sizeof(REntry)*NUMRENTRY);
return newREntryArray;
}
REntry* mlpCreateFineREntry(int type, void* seseToIssue, void* dynID){
- REntry* newREntry=(REntry*)RUNMALLOC(sizeof(REntry));
+ struct ___Object___ * obj=(struct ___Object___*)*((unsigned INTPTR *)dynID);
+ REntry* newREntry=(REntry*)MLPMALLOC(sizeof(REntry));
newREntry->type=type;
newREntry->seseRec=seseToIssue;
newREntry->pointer=dynID;
- if((*newREntry->pointer)!=0){// make sure it is not unresolved address.
- struct ___Object___ * obj=(struct ___Object___*)((unsigned INTPTR)*newREntry->pointer);
+ if (obj!=NULL)
newREntry->oid=obj->oid;
- }
+
return newREntry;
}
REntry* mlpCreateREntry(int type, void* seseToIssue){
- REntry* newREntry=(REntry*)RUNMALLOC(sizeof(REntry));
+ REntry* newREntry=(REntry*)MLPMALLOC(sizeof(REntry));
newREntry->type=type;
newREntry->seseRec=seseToIssue;
return newREntry;
Hashtable* createHashtable(){
int i=0;
- Hashtable* newTable=(Hashtable*)RUNMALLOC(sizeof(Hashtable));
+ Hashtable* newTable=(Hashtable*)MLPMALLOC(sizeof(Hashtable));
newTable->item.type=HASHTABLE;
for(i=0;i<NUMBINS;i++){
- newTable->array[i]=(BinElement*)RUNMALLOC(sizeof(BinElement));
+ newTable->array[i]=(BinElement*)MLPMALLOC(sizeof(BinElement));
newTable->array[i]->head=NULL;
newTable->array[i]->tail=NULL;
}
}
WriteBinItem* createWriteBinItem(){
- WriteBinItem* binitem=(WriteBinItem*)RUNMALLOC(sizeof(WriteBinItem));
+ WriteBinItem* binitem=(WriteBinItem*)MLPMALLOC(sizeof(WriteBinItem));
binitem->item.type=WRITEBIN;
return binitem;
}
ReadBinItem* createReadBinItem(){
- ReadBinItem* binitem=(ReadBinItem*)RUNMALLOC(sizeof(ReadBinItem));
+ ReadBinItem* binitem=(ReadBinItem*)MLPMALLOC(sizeof(ReadBinItem));
binitem->index=0;
binitem->item.type=READBIN;
return binitem;
}
Vector* createVector(){
- Vector* vector=(Vector*)RUNMALLOC(sizeof(Vector));
+ Vector* vector=(Vector*)MLPMALLOC(sizeof(Vector));
vector->index=0;
vector->item.type=VECTOR;
return vector;
}
SCC* createSCC(){
- SCC* scc=(SCC*)RUNMALLOC(sizeof(SCC));
+ SCC* scc=(SCC*)MLPMALLOC(sizeof(SCC));
scc->item.type=SINGLEITEM;
return scc;
}
MemoryQueue* createMemoryQueue(){
- MemoryQueue* queue = (MemoryQueue*)RUNMALLOC(sizeof(MemoryQueue));
- MemoryQueueItem* dummy=(MemoryQueueItem*)RUNMALLOC(sizeof(MemoryQueueItem));
+ MemoryQueue* queue = (MemoryQueue*)MLPMALLOC(sizeof(MemoryQueue));
+ MemoryQueueItem* dummy=(MemoryQueueItem*)MLPMALLOC(sizeof(MemoryQueueItem));
dummy->type=3; // dummy type
dummy->total=0;
dummy->status=READY;