From eb67b13a7643a8f3f3349869247b0dfbc0d92725 Mon Sep 17 00:00:00 2001 From: navid Date: Wed, 21 Jan 2009 18:58:45 +0000 Subject: [PATCH] *** empty log message *** --- .../dstm2/src/dstm2/AtomicArray.java | 4 + .../Transactions/dstm2/src/dstm2/Thread.java | 2 +- .../dstm2/src/dstm2/factory/BaseFactory.java | 7 +- .../com/enea/jcarder/agent/EventListener.java | 124 +++++-- .../enea/jcarder/agent/EventListenerIfc.java | 3 +- .../com/enea/jcarder/agent/JavaAgent.java | 13 +- .../enea/jcarder/agent/LockIdGenerator.java | 67 +++- .../jcarder/agent/LockingContextIdCache.java | 75 +++- .../jcarder/agent/StaticEventListener.java | 83 ++++- .../agent/instrument/ClassTransformer.java | 2 +- .../com/enea/jcarder/analyzer/Analyzer.java | 16 +- .../common/contexts/ContextFileWriter.java | 325 ++++++++++-------- .../common/events/EventFileWriter.java | 111 ++++-- .../jcarder/transactionalinterfaces/Bool.java | 6 +- .../transactionalinterfaces/Intif.java | 5 +- .../transactionalinterfaces/bytebuffer.java | 72 ++-- .../enea/jcarder/util/BuildInformation.java | 1 + .../mysrc/com/enea/jcarder/util/Counter.java | 1 + .../jcarder/util/TransactionalCounter.java | 8 +- .../util/logging/AppendableHandler.java | 8 +- 20 files changed, 651 insertions(+), 282 deletions(-) diff --git a/Robust/Transactions/dstm2/src/dstm2/AtomicArray.java b/Robust/Transactions/dstm2/src/dstm2/AtomicArray.java index e38017c4..b55c4496 100644 --- a/Robust/Transactions/dstm2/src/dstm2/AtomicArray.java +++ b/Robust/Transactions/dstm2/src/dstm2/AtomicArray.java @@ -49,6 +49,7 @@ import java.lang.reflect.Array; private Transaction writer; private ReadSet readers; long version; + private final String FORMAT = "Unexpected transaction state: %s"; /** Creates a new instance of AtomicArray */ @@ -59,6 +60,9 @@ import java.lang.reflect.Array; readers = new ReadSet(); version = 0; } + public int size(){ + return array.length; + } public T get(int i) { Transaction me = Thread.getTransaction(); diff --git a/Robust/Transactions/dstm2/src/dstm2/Thread.java b/Robust/Transactions/dstm2/src/dstm2/Thread.java index c21a7c78..e3dda097 100644 --- a/Robust/Transactions/dstm2/src/dstm2/Thread.java +++ b/Robust/Transactions/dstm2/src/dstm2/Thread.java @@ -72,7 +72,7 @@ import static dstm2.Defaults.*; * * @see dstm2.ContentionManager */ -public class Thread extends java.lang.Thread { +public class Thread extends java.lang.Thread{ /** * Contention manager class. */ diff --git a/Robust/Transactions/dstm2/src/dstm2/factory/BaseFactory.java b/Robust/Transactions/dstm2/src/dstm2/factory/BaseFactory.java index 01a5f1df..82431bff 100644 --- a/Robust/Transactions/dstm2/src/dstm2/factory/BaseFactory.java +++ b/Robust/Transactions/dstm2/src/dstm2/factory/BaseFactory.java @@ -148,8 +148,11 @@ public abstract class BaseFactory implements Factory { private void parseProperties(Class _class) { // Make sure implied field types are scalar or atomic. // Enough to check return type of getField() methods. - for (java.lang.reflect.Method method : _class.getMethods()) { - if (method.getName().substring(0,3).equals("get")) { + for (java.lang.reflect.Method method : _class.getMethods()) { + if (method.getName().substring(0,3).equals("get") && + !method.getDeclaringClass().getCanonicalName().contains("dstm2.util.LinkedList") && + !method.getDeclaringClass().getCanonicalName().contains("dstm2.util.Hashtable") && + !method.getDeclaringClass().getCanonicalName().contains("dstm2.util.HashMap")) { if (!isAtomicOrScalar(method.getReturnType())) { throw new PanicException("Method %s return type %s not scalar or atomic.", method.getName(), method.getReturnType().getName()); diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListener.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListener.java index 7d4acdb3..73f18398 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListener.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListener.java @@ -30,6 +30,7 @@ import com.enea.jcarder.common.contexts.ContextFileWriter; import com.enea.jcarder.common.contexts.ContextWriterIfc; import com.enea.jcarder.common.events.EventFileWriter; import com.enea.jcarder.common.events.LockEventListenerIfc; +import com.enea.jcarder.transactionalinterfaces.trEventListener; import com.enea.jcarder.util.Counter; //import com.enea.jcarder.util.TransactionalCounter; import com.enea.jcarder.util.TransactionalCounter; @@ -40,15 +41,15 @@ import dstm2.Thread; //@ThreadSafe import java.util.Vector; import java.util.concurrent.Callable; +import java.util.logging.Level; final class EventListener implements EventListenerIfc { + trEventListener listener; private final ThreadLocalEnteredMonitors mEnteredMonitors; private final LockEventListenerIfc mLockEventListener; private final LockIdGenerator mLockIdGenerator; private final LockingContextIdCache mContextCache; private final Logger mLogger; - private final Counter mNumberOfEnteredMonitors; - - + //private final Counter mNumberOfEnteredMonitors; private final TransactionalCounter trmNumberOfEnteredMonitors; public static EventListener create(Logger logger, File outputdir) @@ -64,17 +65,56 @@ final class EventListener implements EventListenerIfc { public EventListener(Logger logger, LockEventListenerIfc lockEventListener, - ContextWriterIfc contextWriter) { - mLogger = logger; + /*ContextWriterIfc contextWriter*/ContextFileWriter contextWriter) { + + mLogger = logger; mEnteredMonitors = new ThreadLocalEnteredMonitors(); mLockEventListener = lockEventListener; mLockIdGenerator = new LockIdGenerator(mLogger, contextWriter); mContextCache = new LockingContextIdCache(mLogger, contextWriter); - mNumberOfEnteredMonitors = - new Counter("Entered Monitors", mLogger, 100000); + // mNumberOfEnteredMonitors = + // new Counter("Entered Monitors", mLogger, 100000); trmNumberOfEnteredMonitors = new TransactionalCounter("Entered Monitors", mLogger, 100000); + + /* listener = new trEventListener(); + listener.atmoicfileds = trEventListener.factory.create(); + this.listener.atmoicfileds.setCCByteBuffer(this.getMContextCache().getMContextWriter().getMbuff().mbuffer); + listener.atmoicfileds.setCCPosiiton(getMContextCache().getMContextWriter().getTest().pos); + listener.atmoicfileds.setCCShutdown(getMContextCache().getMContextWriter().getShutdownHookExecuted().boolif); + + + listener.atmoicfileds.setHMap1Capacity(getMContextCache().getMCache().capacity); + listener.atmoicfileds.setHMap1Position(getMContextCache().getMCache().position); + listener.atmoicfileds.setHMap1Values(getMContextCache().getMCache().values); + + listener.atmoicfileds.setELNumberofMonitors(getTrmNumberOfEnteredMonitors().mValue); + + listener.atmoicfileds.setLIGByteBuffer(getMLockIdGenerator().getMContextWriter().getMbuff().mbuffer); + listener.atmoicfileds.setLIGPosiiton(getMLockIdGenerator().getMContextWriter().getTest().pos); + listener.atmoicfileds.setLIGShutdown(getMLockIdGenerator().getMContextWriter().getShutdownHookExecuted().boolif); + + listener.atmoicfileds.setHMap2Capacity(getMLockIdGenerator().getMIdMap().capacity); + listener.atmoicfileds.setHMap2Position(getMLockIdGenerator().getMIdMap().position); + listener.atmoicfileds.setHMap2Values(getMLockIdGenerator().getMIdMap().values); + + listener.atmoicfileds.setEFWByteBuffer(((EventFileWriter)this.getMLockEventListener()).getMbuff().mbuffer); + listener.atmoicfileds.setEFWShutdown(((EventFileWriter)this.getMLockEventListener()).getShutdownHookExecuted().boolif); + listener.atmoicfileds.setEFWCounter(((EventFileWriter)this.getMLockEventListener()).getTrmWrittenLockEvents().mValue);*/ + + + } + + + public EventListener(EventListener other) { + this.mLogger = other.mLogger; + this.mEnteredMonitors = other.mEnteredMonitors; + this.trmNumberOfEnteredMonitors = other.trmNumberOfEnteredMonitors; + //this.trmNumberOfEnteredMonitors.mValue.setPosition(other.trmNumberOfEnteredMonitors.mValue.getPosition()); + this.mContextCache = new LockingContextIdCache(other.mContextCache); + this.mLockIdGenerator =new LockIdGenerator(other.mLockIdGenerator); + this.mLockEventListener = new EventFileWriter((EventFileWriter) (other.mLockEventListener)); } public void beforeMonitorEnter(Object monitor, LockingContext context) @@ -94,11 +134,12 @@ final class EventListener implements EventListenerIfc { } - private synchronized void enteringNewMonitor(Object monitor, + /* private synchronized void enteringNewMonitor(Object monitor, LockingContext context) throws Exception { mNumberOfEnteredMonitors.increment(); int newLockId = mLockIdGenerator.acquireLockId(monitor); + System.out.println("monitor " + monitor.getClass()); int newContextId = mContextCache.acquireContextId(context); EnteredMonitor lastMonitor = mEnteredMonitors.getFirst(); @@ -114,19 +155,24 @@ final class EventListener implements EventListenerIfc { newLockId, newContextId)); - } + }*/ - private synchronized void trenteringNewMonitor(Object monitor, - Vector context) + private void trenteringNewMonitor(Vector arguments) throws Exception { - mNumberOfEnteredMonitors.increment(); - int newLockId = mLockIdGenerator.acquireLockId(monitor); - int newContextId = mContextCache.acquireContextId((LockingContext)context.get(0)); + + trmNumberOfEnteredMonitors.increment(); + final int newLockId = mLockIdGenerator.acquireLockId((Object)arguments.get(1)); + final int newContextId = mContextCache.acquireContextId((LockingContext)arguments.get(0)); + arguments.add(newLockId); + arguments.add(newContextId); EnteredMonitor lastMonitor = mEnteredMonitors.getFirst(); if (lastMonitor != null) { java.lang.Thread performingThread = Thread.currentThread(); Vector args = new Vector(); + + + args.add(newLockId); args.add(newContextId); args.add(lastMonitor.getLockId()); @@ -135,25 +181,61 @@ final class EventListener implements EventListenerIfc { mLockEventListener.tronLockEvent(args); } - mEnteredMonitors.addFirst(new EnteredMonitor(monitor, - newLockId, - newContextId)); + // mEnteredMonitors.addFirst(new EnteredMonitor((Object)context.get(1), + // newLockId, + // newContextId)); } - private void trenteringNewMonitorWrapper(Object monitor, + + + private void enteringNewMonitor(Object monitor, LockingContext context) throws Exception { final Vector arguments = new Vector(); arguments.add(context); - Thread.doIt(new Callable() { + arguments.add(monitor); + Thread.doIt(new Callable() { public Boolean call() throws Exception { - trenteringNewMonitor(mLogger, arguments); + trenteringNewMonitor(arguments); + return true; } }); + // System.out.println(arguments.size()); + mEnteredMonitors.addFirst(new EnteredMonitor(monitor, ((Integer)(arguments.get(2))).intValue(), ((Integer)(arguments.get(3))).intValue())); + arguments.clear(); - } + + public LockingContextIdCache getMContextCache() { + return mContextCache; + } + + public ThreadLocalEnteredMonitors getMEnteredMonitors() { + return mEnteredMonitors; + } + + public LockEventListenerIfc getMLockEventListener() { + return mLockEventListener; + } + + public LockIdGenerator getMLockIdGenerator() { + return mLockIdGenerator; + } + + public Logger getMLogger() { + return mLogger; + } + + public TransactionalCounter getTrmNumberOfEnteredMonitors() { + return trmNumberOfEnteredMonitors; + } + + + + + + } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListenerIfc.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListenerIfc.java index f62580b8..3872f987 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListenerIfc.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/EventListenerIfc.java @@ -17,8 +17,9 @@ package com.enea.jcarder.agent; import com.enea.jcarder.common.LockingContext; +import dstm2.AtomicSuperClass; -public interface EventListenerIfc { +public interface EventListenerIfc extends AtomicSuperClass{ void beforeMonitorEnter(Object monitor, LockingContext context) throws Exception; diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/JavaAgent.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/JavaAgent.java index 62dc534d..31f83280 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/JavaAgent.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/JavaAgent.java @@ -75,6 +75,7 @@ public final class JavaAgent { initLogger(); mLogger.info("Starting " + BuildInformation.getShortInfo() + " agent"); logJvmInfo(); + Thread t; EventListener listener = EventListener.create(mLogger, mOutputDir); ClassTransformer classTransformer = new ClassTransformer(mLogger, mOutputDir, mConfig); @@ -98,12 +99,12 @@ public final class JavaAgent { return; } mLogWriter = new PrintWriter(new BufferedWriter(fileWriter)); - AppendableHandler fileHandler = new AppendableHandler(mLogWriter); - // AppendableHandler fileHandler = new AppendableHandler(mLogWriter, new TransactionalFile(LOG_FILENAME, "rw")); - AppendableHandler consoleHandler = - new AppendableHandler(System.err, Logger.Level.INFO, "{message}\n"); + // AppendableHandler fileHandler = new AppendableHandler(mLogWriter); + AppendableHandler fileHandler = new AppendableHandler(mLogWriter, new TransactionalFile(LOG_FILENAME, "rw")); + //AppendableHandler consoleHandler = + // new AppendableHandler(System.err, Logger.Level.INFO, "{message}\n"); - /* File logFile2 = new File(mOutputDir, LOG2_FILENAME); + File logFile2 = new File(mOutputDir, LOG2_FILENAME); if (logFile2.exists()) { logFile2.delete(); } @@ -120,7 +121,7 @@ public final class JavaAgent { AppendableHandler consoleHandler = new AppendableHandler(new PrintWriter(new BufferedWriter(fileWriter)), Logger.Level.INFO, "{message}\n", new TransactionalFile(LOG2_FILENAME, "rw")); -*/ + Thread hook = new Thread() { public void run() { mLogWriter.flush(); diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockIdGenerator.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockIdGenerator.java index 3afe3a42..847e3d19 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockIdGenerator.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockIdGenerator.java @@ -20,9 +20,15 @@ import java.io.IOException; //import net.jcip.annotations.NotThreadSafe; import com.enea.jcarder.common.Lock; +import com.enea.jcarder.common.contexts.ContextFileWriter; import com.enea.jcarder.common.contexts.ContextWriterIfc; +//import com.enea.jcarder.transactionalinterfaces.trHashMap; import com.enea.jcarder.util.IdentityWeakHashMap; import com.enea.jcarder.util.logging.Logger; +import dstm2.util.IntHashMap; +import com.enea.jcarder.transactionalinterfaces.Intif; +//import java.util.HashMap; +import sun.misc.VM; /** * This class is responsible for generating unique IDs for objects. @@ -34,17 +40,35 @@ import com.enea.jcarder.util.logging.Logger; */ //@NotThreadSafe final class LockIdGenerator { - private final IdentityWeakHashMap mIdMap; - private final ContextWriterIfc mContextWriter; + //private final IdentityWeakHashMap mIdMap; + // private final HashMap mIdMap; + private final IntHashMap mIdMap; + //private final ContextWriterIfc mContextWriter; + private final ContextFileWriter mContextWriter; private final Logger mLogger; /** * Create a LockIdGenerator backed by a ContextWriterIfc */ - public LockIdGenerator(Logger logger, ContextWriterIfc writer) { + public LockIdGenerator(LockIdGenerator other){ + this.mIdMap = other.mIdMap; + // this.mIdMap.values.setValues(other.mIdMap.values.getValues()); + // this.mIdMap.position.setPosition(other.mIdMap.position.getPosition()); + // this.mIdMap.capacity.setPosition(other.mIdMap.capacity.getPosition()); + //this.mIdMap.keys = other.mIdMap.keys; + this.mContextWriter = other.mContextWriter; + this.mLogger = other.mLogger; + + + } + + public LockIdGenerator(Logger logger, /*ContextWriterIfc writer*/ContextFileWriter writer) { mLogger = logger; - mIdMap = new IdentityWeakHashMap(); + // mIdMap = new IdentityWeakHashMap(); +// mIdMap = new HashMap(); + mIdMap = new IntHashMap(); mContextWriter = writer; + } /** @@ -56,12 +80,39 @@ final class LockIdGenerator { */ public int acquireLockId(Object o) throws IOException { assert o != null; - Integer id = mIdMap.get(o); - if (id == null) { + Integer id = (Integer)mIdMap.get(System.identityHashCode(o)); + // if (mIdMap.get(HashMap.hash(o)) == null){ + if (id == null){ + id = mContextWriter.writeLock(new Lock(o)); + // Intif.positionif tmp = Intif.factory.create(); + // tmp.setPosition(id); + // mIdMap.put(HashMap.hash(o), tmp); + //mIdMap.put(o, tmp); + mIdMap.put(System.identityHashCode(o), id); + mLogger.finest("Created new lock ID: " + id); + } + // else + // id = mIdMap.get(HashMap.hash(o)).getPosition(); + + /* if (id == null) { id = mContextWriter.writeLock(new Lock(o)); - mIdMap.put(o, id); + tmp.setPosition(id); + mIdMap.put(System.identityHashCode(o), tmp); mLogger.finest("Created new lock ID: " + id); - } + }*/ return id; } + + public ContextFileWriter getMContextWriter() { + return mContextWriter; + } + + + + public Logger getMLogger() { + return mLogger; + } + + + } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockingContextIdCache.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockingContextIdCache.java index cb33b33f..aa82b918 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockingContextIdCache.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/LockingContextIdCache.java @@ -20,12 +20,19 @@ import java.io.IOException; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; import java.lang.ref.SoftReference; -import java.util.HashMap; + + +//import dstm2.util.HashMap; //import net.jcip.annotations.NotThreadSafe; import com.enea.jcarder.common.LockingContext; +import com.enea.jcarder.common.contexts.ContextFileWriter; import com.enea.jcarder.common.contexts.ContextWriterIfc; +import com.enea.jcarder.transactionalinterfaces.Intif; +import com.enea.jcarder.transactionalinterfaces.trHashMap; import com.enea.jcarder.util.logging.Logger; +import dstm2.util.IntHashMap; +//import dstm2.util.HashMap; /** * This class is responsible for mapping LockingContext instances to locking @@ -48,19 +55,36 @@ import com.enea.jcarder.util.logging.Logger; */ //@NotThreadSafe final class LockingContextIdCache { - private final HashMap mCache; - private final ReferenceQueue mReferenceQueue; - private final ContextWriterIfc mContextWriter; + //private final HashMap mCache; + //private final HashMap mCache; + private final IntHashMap mCache; + //private final ReferenceQueue mReferenceQueue; + //private final ContextWriterIfc mContextWriter; + private final ContextFileWriter mContextWriter; private final Logger mLogger; + /** * Create a LockingContextIdCache backed by a ContextWriterIfc. */ + public LockingContextIdCache(LockingContextIdCache other){ + this.mCache = other.mCache; + // this.mCache.values.setValues(other.mCache.values.getValues()); + //this.mCache.position.setPosition(other.mCache.position.getPosition()); + //this.mCache.capacity.setPosition(other.mCache.capacity.getPosition()); + //this.mCache.keys = other.mCache.keys;; + this.mContextWriter = other.mContextWriter; + this.mLogger = other.mLogger; + + } + public LockingContextIdCache(Logger logger, ContextWriterIfc writer) { mLogger = logger; - mCache = new HashMap(); - mReferenceQueue = new ReferenceQueue(); - mContextWriter = writer; + //mCache = new HashMap(); +// mCache = new HashMap(); + mCache = new IntHashMap(); + // mReferenceQueue = new ReferenceQueue(); + mContextWriter = (ContextFileWriter) writer; } /** @@ -73,17 +97,40 @@ final class LockingContextIdCache { */ public int acquireContextId(LockingContext context) throws IOException { assert context != null; - removeGarbageCollectedKeys(); - Integer id = mCache.get(new StrongKey(context)); - if (id == null) { + // removeGarbageCollectedKeys(); + //Integer id = mCache.get(new StrongKey(context)); + Integer id = mCache.get(context.hashCode()); + // if (mCache.get(HashMap.hash(context)) == null) { + if (id == null){ mLogger.finest("Creating new context ID"); id = mContextWriter.writeContext(context); - mCache.put((new SoftKey(context, mReferenceQueue)), id); - } + //mCache.put((new SoftKey(context, mReferenceQueue)), id); + // Intif.positionif tmp = Intif.factory.create(); + // tmp.setPosition(id); + //intval.setPosition(id); + // mCache.put(HashMap.hash(context),tmp); + mCache.put(context.hashCode(),id); + } + //else + // id = mCache.get(HashMap.hash(context)).getPosition(); return id; } - private void removeGarbageCollectedKeys() { + public IntHashMap getMCache() { + return mCache; + } + + public ContextFileWriter getMContextWriter() { + return mContextWriter; + } + + public Logger getMLogger() { + return mLogger; + } + + + + /* private void removeGarbageCollectedKeys() { Reference e; while ((e = mReferenceQueue.poll()) != null) { mLogger.finest("Removing garbage-collected cached context"); @@ -154,5 +201,5 @@ final class LockingContextIdCache { public int hashCode() { return mHash; } - } + }*/ } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/StaticEventListener.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/StaticEventListener.java index 74010e90..727312d3 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/StaticEventListener.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/StaticEventListener.java @@ -18,24 +18,98 @@ package com.enea.jcarder.agent; //import net.jcip.annotations.ThreadSafe; import com.enea.jcarder.common.LockingContext; +import com.enea.jcarder.common.events.EventFileWriter; +import com.enea.jcarder.transactionalinterfaces.trEventListener; +import dstm2.AtomicSuperClass; +import java.util.concurrent.Callable; +import dstm2.Thread; +import java.util.HashMap; +import java.util.Vector; /** * This class provides static methods that are supposed to be invoked directly * from the instrumented classes. */ //@ThreadSafe -public final class StaticEventListener { +public final class StaticEventListener{ private StaticEventListener() { } + //private static EventListenerIfc smListener; private static EventListenerIfc smListener; + private static HashMap map= new HashMap(); + - public synchronized static void setListener(EventListenerIfc listener) { - smListener = listener; + //public synchronized static void setListener(EventListenerIfc listener) { + // smListener = (EventListener)listener; + //} + + public static void trsetListener(Vector listener) { + //smListener = ((EventListener)(arg.get(0))); + smListener = (EventListenerIfc)listener.get(0); + // smListener = new EventListener((EventListener)(arg.get(0))); + // smListener.listener = new trEventListener(); + // smListener.listener.atmoicfileds = trEventListener.factory.create(); + // smListener.listener.atmoicfileds = ((EventListener)(arg.get(0))).listener.atmoicfileds; + + /*smListener2.atmoicfileds.setCCByteBuffer(((EventListener)(arg.get(0))).getMContextCache().getMContextWriter().getMbuff().mbuffer); + smListener2.atmoicfileds.setCCPosiiton(((EventListener)(arg.get(0))).getMContextCache().getMContextWriter().getTest().pos); + smListener2.atmoicfileds.setCCShutdown(((EventListener)(arg.get(0))).getMContextCache().getMContextWriter().getShutdownHookExecuted().boolif); + + + + smListener2.atmoicfileds.setHMap1Capacity(((EventListener)(arg.get(0))).getMContextCache().getMCache().capacity); + smListener2.atmoicfileds.setHMap1Position(((EventListener)(arg.get(0))).getMContextCache().getMCache().position); + smListener2.atmoicfileds.setHMap1Values(((EventListener)(arg.get(0))).getMContextCache().getMCache().values); + + smListener2.atmoicfileds.setELNumberofMonitors(((EventListener)(arg.get(0))).getTrmNumberOfEnteredMonitors().mValue); + + smListener2.atmoicfileds.setLIGByteBuffer(((EventListener)(arg.get(0))).getMLockIdGenerator().getMContextWriter().getMbuff().mbuffer); + smListener2.atmoicfileds.setLIGPosiiton(((EventListener)(arg.get(0))).getMLockIdGenerator().getMContextWriter().getTest().pos); + smListener2.atmoicfileds.setLIGShutdown(((EventListener)(arg.get(0))).getMLockIdGenerator().getMContextWriter().getShutdownHookExecuted().boolif); + + smListener2.atmoicfileds.setHMap2Capacity(((EventListener)(arg.get(0))).getMLockIdGenerator().getMIdMap().capacity); + smListener2.atmoicfileds.setHMap2Position(((EventListener)(arg.get(0))).getMLockIdGenerator().getMIdMap().position); + smListener2.atmoicfileds.setHMap2Values(((EventListener)(arg.get(0))).getMLockIdGenerator().getMIdMap().values); + + smListener2.atmoicfileds.setEFWByteBuffer(((EventFileWriter)((EventListener)(arg.get(0))).getMLockEventListener()).getMbuff().mbuffer); + smListener2.atmoicfileds.setEFWShutdown(((EventFileWriter)((EventListener)(arg.get(0))).getMLockEventListener()).getShutdownHookExecuted().boolif); + smListener2.atmoicfileds.setEFWCounter(((EventFileWriter)((EventListener)(arg.get(0))).getMLockEventListener()).getTrmWrittenLockEvents().mValue);*/ + } + + public static void setListener(EventListenerIfc listener) { + final Vector arg = new Vector(); + arg.add(listener); + Thread.doIt(new Callable() { + public Boolean call() throws Exception { + trsetListener(arg); + return true; + } + }); + } + + // } - public synchronized static EventListenerIfc getListener() { + public static EventListenerIfc trgetListener() { + /* + ((EventListener)smListener).getMContextCache().getMCache().capacity.getPosition(); + ((EventListener)smListener).getMContextCache().getMCache().position.getPosition(); + ((EventListener)smListener).getMContextCache().getMCache().values.getValues(); + ((EventListener)smListener).getTrmNumberOfEnteredMonitors().mValue.getPosition(); + ((EventListener)smListener).getMLockIdGenerator().getMIdMap().capacity.getPosition(); + ((EventListener)smListener).getMLockIdGenerator().getMIdMap().position.getPosition(); + ((EventListener)smListener).getMLockIdGenerator().getMIdMap().values.getValues();*/ return smListener; } + + public static EventListenerIfc getListener() { + return Thread.doIt(new Callable() { + public EventListenerIfc call() throws Exception { + return trgetListener(); + } + }); + + } /** * This method is expected to be called from the instrumented classes. @@ -69,6 +143,7 @@ public final class StaticEventListener { } catch (Throwable t) { handleError(t); } + // System.out.println("here finito"); } private static void handleError(Throwable t) { diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/instrument/ClassTransformer.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/instrument/ClassTransformer.java index a278e901..e5b6d7e3 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/instrument/ClassTransformer.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/agent/instrument/ClassTransformer.java @@ -176,7 +176,7 @@ public class ClassTransformer implements ClassFileTransformer { if (className.startsWith("java.") || className.startsWith("javax.") || className.startsWith("sun.") || className.startsWith("TransactionalIO.") - || className.startsWith("dstm2")) { + || className.startsWith("dstm2") || className.startsWith("org")) { return "standard library class"; } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/analyzer/Analyzer.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/analyzer/Analyzer.java index 8b502db5..5214e778 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/analyzer/Analyzer.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/analyzer/Analyzer.java @@ -139,14 +139,14 @@ public final class Analyzer { private void initLogger() { Collection handlers = new ArrayList(); - // try { - handlers.add(new AppendableHandler(System.out, - Logger.Level.CONFIG, - "{message}\n")); - // handlers.add(new AppendableHandler(new PrintStream(new File("analyzer.log")), Logger.Level.CONFIG, "{message}\n", new TransactionalFile("analyzer.log", "rw"))); - /// } catch (FileNotFoundException ex) { - // java.util.logging.Logger.getLogger(Analyzer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - // } + try { + // handlers.add(new AppendableHandler(System.out, + // Logger.Level.CONFIG, + // "{message}\n")); + handlers.add(new AppendableHandler(new PrintStream(new File("analyzer.log")), Logger.Level.CONFIG, "{message}\n", new TransactionalFile("analyzer.log", "rw"))); + } catch (FileNotFoundException ex) { + java.util.logging.Logger.getLogger(Analyzer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } mLogger = new Logger(handlers, mLogLevel); } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/common/contexts/ContextFileWriter.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/common/contexts/ContextFileWriter.java index 737c4fc1..45dca578 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/common/contexts/ContextFileWriter.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/common/contexts/ContextFileWriter.java @@ -31,7 +31,8 @@ import com.enea.jcarder.common.LockingContext; import com.enea.jcarder.transactionalinterfaces.Bool; import com.enea.jcarder.transactionalinterfaces.Intif; import com.enea.jcarder.transactionalinterfaces.bytebuffer; -import com.enea.jcarder.transactionalinterfaces.bytebuffer.byteholder; +import com.enea.jcarder.transactionalinterfaces.jcbuffer; +import com.enea.jcarder.util.Counter; import com.enea.jcarder.util.logging.Logger; import dstm2.Init; import dstm2.atomic; @@ -49,50 +50,51 @@ import java.util.logging.Level; public final class ContextFileWriter implements ContextWriterIfc { - private final FileChannel mChannel; - private int mNextFilePosition = 0; +// private final FileChannel mChannel; +// private int mNextFilePosition = 0; private final Logger mLogger; - private ByteBuffer mBuffer;// = ByteBuffer.allocateDirect(8192); - private byte[] data; +// private ByteBuffer mBuffer = ByteBuffer.allocateDirect(8192); RandomAccessFile raFile; - +// byte[] data; + + //private jcbuffer mbuff; + //byteholder[] bytes; private bytebuffer mbuff; - private Intif filePosition; private Intif test; private Bool ShutdownHookExecuted; TransactionalFile trraFile; - private boolean mShutdownHookExecuted = false; + // private boolean mShutdownHookExecuted = false; public ContextFileWriter(Logger logger, File file) throws IOException { - System.out.println("d"); mbuff = new bytebuffer(); + // mbuff = new jcbuffer(); mbuff.allocateDirect(8192); - filePosition = new Intif(); - filePosition.init(); + test = new Intif(); test.init(); ShutdownHookExecuted = new Bool(); ShutdownHookExecuted.init(); - data = new byte[8192]; - mBuffer = ByteBuffer.wrap(data); + +// data = new byte[8192]; +// mBuffer = ByteBuffer.wrap(data); mLogger = logger; mLogger.info("Opening for writing: " + file.getAbsolutePath()); raFile = new RandomAccessFile(file, "rw"); - - trraFile = new TransactionalFile(file.getAbsolutePath(), "rw"); + System.out.println(file.getAbsolutePath()); + trraFile = new TransactionalFile(file.getPath(), "rw"); trraFile.file.setLength(0); -// ShutdownHookExecuted.init(); + ShutdownHookExecuted.init(); raFile.setLength(0); - mChannel = raFile.getChannel(); +// mChannel = raFile.getChannel(); - // writeHeader(); + writeHeader(); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { shutdownHook(); } @@ -130,14 +132,12 @@ implements ContextWriterIfc { private void writeBuffer() throws IOException { mbuff.flip(); - System.out.println(Thread.currentThread()); - - // System.out.println(mbuff.remaining()); trraFile.write(mbuff.getBytes()); + while (mbuff.hasRemaining()) { Thread.yield(); trraFile.write(mbuff.getBytes()); - } + } mbuff.clear(); } @@ -150,10 +150,16 @@ implements ContextWriterIfc { mBuffer.putInt(ContextFileReader.MAJOR_VERSION); mBuffer.putInt(ContextFileReader.MINOR_VERSION); mBuffer.rewind(); - for (int i=0; i<16; i++){ - mbuff.put(mBuffer.get()); - } + // mybyte[0] =(byte)( foo >> 24 ); + // mybyte[1] =(byte)( (foo << 8) >> 24 ); + // mybyte[2] =(byte)( (foo << 16) >> 24 ); + // mybyte[3] =(byte)( (foo << 24) >> 24 ); + // for (int i=0; i<16; i++){ + // mbuff.putar(mBuffer.get()); + // } + //filePosition.get(); + mbuff.put(mBuffer); test.increment(8+4+4); //filePosition.increment(8+4+4); } @@ -193,42 +199,30 @@ implements ContextWriterIfc { mBuffer.putInt(length); mBuffer.put(encodedString); mBuffer.rewind(); - System.out.println("---------------"); - System.out.println("int: " + length); - System.out.println("str: " + encodedString); - System.out.println("---------------"); - //test.increment(8+length); + mbuff.put(mBuffer); - //for (int i=0; i<4+length; i++) - // mbuff.put(mBuffer.get()); - // while (mBuffer.hasRemaining()) - // mbuff.put(mBuffer.get()); - // mbuff.put(mBuffer); - // mbuff.put(encodedString); - //filePosition.get(); - // test.increment(4+length); - // test.increment(4); - //filePosition.increment(4 + length); + //for (int j=0; j<4+length; j++){ + // mbuff.factory2.create(); + //} + //mbuff.put(mBuffer.get()); + test.increment(4+length); + // + } private void writeInteger(int i) throws IOException { - // System.out.println("int"); assureBufferCapacity(4); ByteBuffer mBuffer = ByteBuffer.allocateDirect(4); mBuffer.putInt(i); - System.out.println("---------------"); - System.out.println("int: " + i); - - - System.out.println("---------------"); - for (int j=0; j<4; j++){ - // mbuff.put(mBuffer.get()); - } - // filePosition.get(); - //test.increment(4); - //filePosition.increment(4); + mBuffer.rewind(); + mbuff.put(mBuffer); + //for (int j=0; j<4; j++){ + // mbuff.factory2.create(); + //mbuff.put(mBuffer.get()); + //} + test.increment(4); } @@ -249,41 +243,31 @@ implements ContextWriterIfc { - public int trwriteLock(Vector arg) throws IOException { + public int writeLock(Lock lock) throws IOException { int startPosition = test.get(); - //writeString(((Lock)arg.get(0)).getClassName()); - //writeInteger(((Lock)arg.get(0)).getObjectId()); + writeString(lock.getClassName()); + writeInteger(lock.getObjectId()); - ByteBuffer encodedString = ContextFileReader.CHARSET.encode(((Lock)arg.get(0)).getClassName()); - final int length = encodedString.remaining(); - ByteBuffer mBuffer = ByteBuffer.allocateDirect(8+ length); - mBuffer.putInt(length); - mBuffer.put(encodedString); - mBuffer.putInt(((Lock)arg.get(0)).getObjectId()); - mBuffer.rewind(); - // assureBufferCapacity(8+length); - for (int j=0; j<(8+length); j++){ - byte value = mBuffer.get(); - //if (mbuff.mbuffer.getByteHolder().get(mbuff.mbuffer.getPosition()) == null) - // mbuff.mbuffer.getByteHolder().set(mbuff.mbuffer.getPosition(), mbuff.factory2.create()); - AtomicArray ar = mbuff.mbuffer.getByteHolder(); - byteholder bh = mbuff.factory2.create(); - bh.setByte(value); - mbuff.mbuffer.getByteHolder().set(mbuff.mbuffer.getPosition(),bh); - mbuff.mbuffer.setPosition(mbuff.mbuffer.getPosition()+1); - } - - /*System.out.println("---------------"); - System.out.println("int: " + length); - System.out.println("str: " + encodedString); - System.out.println("int: " + ((Lock)arg.get(0)).getObjectId()); - System.out.println("---------------");*/ - test.increment(8+length); + // ByteBuffer encodedString = ContextFileReader.CHARSET.encode(((Lock)arg.get(0)).getClassName()); + // final int length = encodedString.remaining(); + // ByteBuffer mBuffer = ByteBuffer.allocateDirect(8+ length); + // mBuffer.putInt(length); + // mBuffer.put(encodedString); + // mBuffer.putInt(((Lock)arg.get(0)).getObjectId()); + // mBuffer.rewind(); + // assureBufferCapacity(8+length); + // for (int j=0; j<(8+length); j++){ + // byte value = mBuffer.get(); + // mbuff.put(value); + // } + // mbuff.put(mBuffer); + // test.increment(8+length); flushBufferIfNeeded(); return startPosition; + } - public int writeLock(Lock lock) throws IOException { + /* public int writeLockWrapper(Lock lock) throws IOException { // System.out.println("lock"); int result = 0; try{ @@ -294,7 +278,7 @@ implements ContextWriterIfc { public Integer call() { try { // System.out.println(Thread.currentThread() + " alockborted in committing"); - return trwriteLock(arg); + return writeLock(arg); // System.out.println(Thread.currentThread() + " NO???? alockborted in committing"); } catch (IOException ex) { java.util.logging.Logger.getLogger(ContextFileWriter.class.getName()).log(Level.SEVERE, null, ex); @@ -309,66 +293,52 @@ implements ContextWriterIfc { }finally{ return result; } - } + }*/ - public int trwriteContext(LockingContext context) + public int writeContext(LockingContext context) throws IOException { int startPosition = test.get(); + writeString(context.getThreadName()); + writeString(context.getLockReference()); + writeString(context.getMethodWithClass()); - // writeString(context.getThreadName()); - // writeString(context.getLockReference()); - // writeString(context.getMethodWithClass()); - - ByteBuffer encodedString = ContextFileReader.CHARSET.encode(context.getThreadName()); - final int length = encodedString.remaining(); - ByteBuffer encodedString2 = ContextFileReader.CHARSET.encode(context.getLockReference()); - final int length2 = encodedString2.remaining(); - ByteBuffer encodedString3 = ContextFileReader.CHARSET.encode(context.getMethodWithClass()); - final int length3 = encodedString3.remaining(); - ByteBuffer mBuffer = ByteBuffer.allocateDirect(12+length+length2+length3); + // ByteBuffer encodedString = ContextFileReader.CHARSET.encode(context.getThreadName()); + // final int length = encodedString.remaining(); + // ByteBuffer encodedString2 = ContextFileReader.CHARSET.encode(context.getLockReference()); + // final int length2 = encodedString2.remaining(); + // ByteBuffer encodedString3 = ContextFileReader.CHARSET.encode(context.getMethodWithClass()); + // final int length3 = encodedString3.remaining(); + // ByteBuffer mBuffer = ByteBuffer.allocateDirect(12+length+length2+length3); - mBuffer.putInt(length); - mBuffer.put(encodedString); - mBuffer.putInt(length2); - mBuffer.put(encodedString2); - mBuffer.putInt(length3); - mBuffer.put(encodedString3); - mBuffer.rewind(); - /* System.out.println("------"); - System.out.println("int: " + length); - System.out.println("str: " + encodedString); - System.out.println("int: " + length2); - System.out.println("str: " + encodedString2); - System.out.println("int: " + length3); - System.out.println("str: " + encodedString3); - System.out.println("------");*/ + // mBuffer.putInt(length); + // mBuffer.put(encodedString); + // mBuffer.putInt(length2); + // mBuffer.put(encodedString2); + // mBuffer.putInt(length3); + // mBuffer.put(encodedString3); + // mBuffer.rewind(); + - // assureBufferCapacity(12 + length + length2 + length3); - for (int j=0;j<(12+length +length2 +length3);j++){ - // mbuff.put(mBuffer.get()); - byte value = mBuffer.get(); - //if (mbuff.mbuffer.getByteHolder().get(mbuff.mbuffer.getPosition()) == null) - // mbuff.mbuffer.getByteHolder().set(mbuff.mbuffer.getPosition(), mbuff.factory2.create()); - AtomicArray ar = mbuff.mbuffer.getByteHolder(); - byteholder bh = mbuff.factory2.create(); - bh.setByte(value); - mbuff.mbuffer.getByteHolder().set(mbuff.mbuffer.getPosition(),bh); - mbuff.mbuffer.getByteHolder().get(mbuff.mbuffer.getPosition()).setByte(value); - mbuff.mbuffer.setPosition(mbuff.mbuffer.getPosition()+1); - } + // assureBufferCapacity(12 + length + length2 + length3); + //for (int j=0;j<(12+length +length2 +length3);j++){ + // byte value = mBuffer.get(); + // mbuff.put(value); + // } + // mbuff.put(mBuffer); - test.increment(12+length +length2 +length3); + //test.increment(12+length +length2 +length3); flushBufferIfNeeded(); return startPosition; + // mbuff.put((byte)2); + // return -1; } - public int writeContext(LockingContext context) +/* public int writeContext(LockingContext context) { - int startPosition = -2; try{ final LockingContext c = context; @@ -386,10 +356,22 @@ implements ContextWriterIfc { System.out.println(Thread.currentThread() + " context graceful exc"); } finally{ - // System.out.println(Thread.currentThread() + " con"); + // System.out.println(Thread.currentThread() + " con"); + // Throwable t = new Throwable(); +//StackTraceElement[] es = t.getStackTrace(); +//for ( int i=0; i() { @@ -210,7 +225,7 @@ public final class EventFileWriter implements LockEventListenerIfc { } } - private synchronized void shutdownHook() { + /* private synchronized void shutdownHook() { try { if (mFileChannel.isOpen()) { writeBuffer(); @@ -219,10 +234,10 @@ public final class EventFileWriter implements LockEventListenerIfc { e.printStackTrace(); } mShutdownHookExecuted = true; - } + }*/ - private void trshutdownHook() { + private void shutdownHook() { System.out.println(Thread.currentThread() + " ashut ddddddborted in committing"); try{ Thread.doIt(new Callable() { @@ -246,4 +261,38 @@ public final class EventFileWriter implements LockEventListenerIfc { System.out.println(Thread.currentThread() + " shut graceful exc"); } } + + public Bool getShutdownHookExecuted() { + return ShutdownHookExecuted; + } + + public void setShutdownHookExecuted(Bool ShutdownHookExecuted) { + this.ShutdownHookExecuted = ShutdownHookExecuted; + } + + public bytebuffer getMbuff() { + return mbuff; + } + + public void setMbuff(bytebuffer mbuff) { + this.mbuff = mbuff; + } + + public TransactionalFile getTraf() { + return traf; + } + + public void setTraf(TransactionalFile traf) { + this.traf = traf; + } + + public TransactionalCounter getTrmWrittenLockEvents() { + return trmWrittenLockEvents; + } + + public void setTrmWrittenLockEvents(TransactionalCounter trmWrittenLockEvents) { + this.trmWrittenLockEvents = trmWrittenLockEvents; + } + + } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Bool.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Bool.java index 1825b87d..7187c78a 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Bool.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Bool.java @@ -15,7 +15,7 @@ package com.enea.jcarder.transactionalinterfaces; */ -import com.enea.jcarder.transactionalinterfaces.bytebuffer.byteholder; + import dstm2.AtomicArray; import dstm2.atomic; import dstm2.Thread; @@ -27,11 +27,11 @@ import java.nio.ByteBuffer; * * @author navid */ -public class Bool { +public class Bool{ static Factory factory = Thread.makeFactory(boolif.class); - boolif boolif; + public boolif boolif; public void init(){ boolif = factory.create(); diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Intif.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Intif.java index 8c333df4..8b7c7758 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Intif.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/Intif.java @@ -5,6 +5,7 @@ package com.enea.jcarder.transactionalinterfaces; +import dstm2.AtomicSuperClass; import dstm2.atomic; import dstm2.Thread; import dstm2.factory.Factory; @@ -17,7 +18,7 @@ public class Intif { public static Factory factory = Thread.makeFactory(positionif.class); - positionif pos; + public positionif pos; public void init(){ @@ -34,7 +35,7 @@ public class Intif { return pos.getPosition(); } - @atomic public interface positionif{ + @atomic public interface positionif extends AtomicSuperClass{ public int getPosition(); public void setPosition(int pos); } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/bytebuffer.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/bytebuffer.java index 610b3441..9d47fa57 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/bytebuffer.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/transactionalinterfaces/bytebuffer.java @@ -5,8 +5,10 @@ package com.enea.jcarder.transactionalinterfaces; -import com.enea.jcarder.transactionalinterfaces.bytebuffer.byteholder; +//import com.enea.jcarder.transactionalinterfaces.bytebuffer.byteholder; +import com.enea.jcarder.util.Counter; import dstm2.AtomicArray; +import dstm2.AtomicByteArray; import dstm2.atomic; import dstm2.Thread; import dstm2.factory.Factory; @@ -21,7 +23,7 @@ public class bytebuffer { static Factory factory = Thread.makeFactory(bytebufferif.class); - public static Factory factory2 = Thread.makeFactory(byteholder.class); +// public static Factory factory2 = Thread.makeFactory(byteholder.class); public bytebufferif mbuffer; @@ -55,53 +57,80 @@ public class bytebuffer { } public void put(byte value){ - if (mbuffer.getByteHolder().get(mbuffer.getPosition()) == null) - mbuffer.getByteHolder().set(mbuffer.getPosition(), factory2.create()); - mbuffer.getByteHolder().get(mbuffer.getPosition()).setByte(value); - mbuffer.setPosition(mbuffer.getPosition()+1); + + AtomicByteArray ar = mbuffer.getByteHolderar(); + + ar.set(mbuffer.getPosition(),value); + mbuffer.setPosition(mbuffer.getPosition()+1); + } + + public void put(ByteBuffer value){ if (remaining() < value.remaining()) throw new BufferOverflowException(); - for (int i=0; i ar = mbuffer.getByteHolder(); + while(value.hasRemaining()){ + byteholder bh = mbuffer.getByteHolder().get(mbuffer.getPosition()); + if ((bh = mbuffer.getByteHolder().get(mbuffer.getPosition())) == null){ + bh = factory2.create(); + } + bh.setByte(value.get()); + ar.set(mbuffer.getPosition(),bh); mbuffer.setPosition(mbuffer.getPosition()+1); + }*/ + AtomicByteArray ar = mbuffer.getByteHolderar(); + while(value.hasRemaining()){ + + + ar.set(mbuffer.getPosition(),Byte.valueOf(value.get())); + mbuffer.setPosition(mbuffer.getPosition()+1); + } + // while(value.hasRemaining()){ + // if (mbuffer.getByteHolder().get(mbuffer.getPosition()) == null) + // mbuffer.getByteHolder().set(mbuffer.getPosition(), factory2.create()); + // mbuffer.getByteHolder.set((mbuffer.getPosition()), value.get()); + // mbuffer.setPosition(mbuffer.getPosition()+1); //System.out.println("sss"); - } + //} } public bytebuffer allocateDirect(int capacity){ + System.out.println("allocate " + capacity); mbuffer = factory.create(); - mbuffer.setByteHolder(new AtomicArray(byteholder.class,capacity)); + mbuffer.setByteHolderar(new AtomicByteArray(Byte.class,capacity)); mbuffer.setPosition(0); mbuffer.setLimit(capacity); mbuffer.setCapacity(capacity); - AtomicArray ar = mbuffer.getByteHolder(); - //for (int i=0; i getByteHolder(); - void setByteHolder(AtomicArray bytes); - } - - @atomic public interface byteholder{ - byte getByte(); - void setByte(byte value); + AtomicByteArray getByteHolderar(); + void setByteHolderar(AtomicByteArray bytes); + } + diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/BuildInformation.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/BuildInformation.java index 6a429a7c..a3494a89 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/BuildInformation.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/BuildInformation.java @@ -63,6 +63,7 @@ public final class BuildInformation { Properties props = new Properties(); ClassLoader classLoader = ClassLoader.getSystemClassLoader(); props.load(classLoader.getResourceAsStream("build.properties")); + // return null; return props; } } diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/Counter.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/Counter.java index 9d34ef75..94105220 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/Counter.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/Counter.java @@ -27,6 +27,7 @@ public final class Counter { final Logger mLogger; int mValue = 0; + public Counter(String name, Logger logger, int logInterval) { mName = name; mLogger = logger; diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/TransactionalCounter.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/TransactionalCounter.java index b47fb73b..ae1a3f0d 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/TransactionalCounter.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/TransactionalCounter.java @@ -15,10 +15,10 @@ import com.enea.jcarder.util.logging.Logger; */ public class TransactionalCounter { - final int mLogIntervall; - final String mName; - final Logger mLogger; - Intif.positionif mValue; + public final int mLogIntervall; + public final String mName; + public final Logger mLogger; + public Intif.positionif mValue; public TransactionalCounter(String name, Logger logger, int logInterval) { mValue = Intif.factory.create(); diff --git a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/logging/AppendableHandler.java b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/logging/AppendableHandler.java index 499c28af..0472f49a 100644 --- a/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/logging/AppendableHandler.java +++ b/Robust/Transactions/jcarderbenchmarks/mysrc/com/enea/jcarder/util/logging/AppendableHandler.java @@ -113,10 +113,10 @@ public class AppendableHandler implements Handler { String formattedMessage = mMessageFormat .replace("{level}", level.toString()) .replace("{message}", message); - synchronized (mDestination) { - mDestination.append(formattedMessage); - } - //traf.write(formattedMessage.getBytes()); + // synchronized (mDestination) { + // mDestination.append(formattedMessage); + // } + traf.write(formattedMessage.getBytes()); } catch (IOException e) { // Ignore. } -- 2.34.1