summaryrefslogtreecommitdiff
path: root/src/cli/runtime/Transaction.cs
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-06-10 19:29:20 +0000
committerRich Hickey <richhickey@gmail.com>2006-06-10 19:29:20 +0000
commitac65dac6b044e965d244e78ee5f7d49a62440c92 (patch)
treede2166d549ba01a21151bddd68ecf01e7adc5d25 /src/cli/runtime/Transaction.cs
parentdc5642e9d61e6a6099d3b9690ff3e40415d532c7 (diff)
interim checkin, modified TLD - Var broken
Diffstat (limited to 'src/cli/runtime/Transaction.cs')
-rw-r--r--src/cli/runtime/Transaction.cs25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/cli/runtime/Transaction.cs b/src/cli/runtime/Transaction.cs
index dc328ab7..a64e7f1c 100644
--- a/src/cli/runtime/Transaction.cs
+++ b/src/cli/runtime/Transaction.cs
@@ -51,42 +51,43 @@ Dictionary<TRef,ISeq> commutates;
static public Object runInTransaction(ThreadLocalData tld,IFn fn) {
- if(tld.transaction != null)
+ if(ThreadLocalData.getTransaction() != null)
return fn.invoke(tld);
- tld.transaction = new Transaction();
+ Transaction t = new Transaction();
+ ThreadLocalData.setTransaction(t);
try{
- return tld.transaction.run(tld, fn);
+ return t.run(fn);
}
finally{
- tld.transaction = null;
+ ThreadLocalData.setTransaction(null);
}
}
static public TRef tref(Object val) {
- Transaction trans = ThreadLocalData.get().getTransaction();
+ Transaction trans = ThreadLocalData.getTransaction();
TRef tref = new TRef();
trans.set(tref, val);
return tref;
}
static public Object get2(TRef tref) {
- return ThreadLocalData.get().getTransaction().get(tref);
+ return ThreadLocalData.getTransaction().get(tref);
}
static public Object set2(TRef tref, Object val) {
- return ThreadLocalData.get().getTransaction().set(tref,val);
+ return ThreadLocalData.getTransaction().set(tref,val);
}
static public void touch2(TRef tref) {
- ThreadLocalData.get().getTransaction().touch(tref);
+ ThreadLocalData.getTransaction().touch(tref);
}
static public void commutate2(TRef tref, IFn fn) {
- ThreadLocalData.get().getTransaction().commutate(tref, fn);
+ ThreadLocalData.getTransaction().commutate(tref, fn);
}
-Object run(ThreadLocalData tld, IFn fn) {
+Object run(IFn fn) {
bool done = false;
Object ret = null;
List<TRef> locks = null;
@@ -95,7 +96,7 @@ Object run(ThreadLocalData tld, IFn fn) {
while(!done){
try
{
- ret = fn.invoke(tld);
+ ret = fn.invoke();
if(locks == null && (sets != null || commutates != null))
locks = new List<TRef>();
if(sets != null)
@@ -133,7 +134,7 @@ Object run(ThreadLocalData tld, IFn fn) {
for(ISeq c = e.Value;c!=null;c = c.rest())
{
IFn f = (IFn) c.first();
- val = f.invoke(tld, val);
+ val = f.invoke(val);
}
sets[tref] = val;
}