diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-07-31 15:48:17 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-07-31 15:48:17 +0000 |
commit | 7eb9b13d196dfab9215e9d45a7c956fddcf88640 (patch) | |
tree | 3399b902ab2473ad4832cdb8f6c2ce00e6fa9549 /src | |
parent | 4fb15c3fa20e22258c4aa9a47866443fd80da74a (diff) |
removed old transaction code
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 82 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Module.java | 16 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 6 |
3 files changed, 52 insertions, 52 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 4da17d4f..9090c870 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -39,33 +39,33 @@ static Symbol USE = new Symbol("use"); static Symbol _AMP_KEY = new Symbol("&key"); static Symbol _AMP_REST = new Symbol("&rest"); -static public TRef _CRT_OUT = RT.OUT; -static public TRef _CRT_MODULE = RT.CURRENT_MODULE; +static public DynamicVar _CRT_OUT = RT.OUT; +static public DynamicVar _CRT_MODULE = RT.CURRENT_MODULE; static NilExpr NIL_EXPR = new NilExpr(); //short-name-string->full-name-string -static public TRef IMPORTS = new TRef(); +static public DynamicVar IMPORTS = new DynamicVar(); //keyword->keywordexpr -static public TRef KEYWORDS = new TRef(); +static public DynamicVar KEYWORDS = new DynamicVar(); //var->var -static public TRef VARS = new TRef(); +static public DynamicVar VARS = new DynamicVar(); //symbol->localbinding -static public TRef LOCAL_ENV = new TRef(); +static public DynamicVar LOCAL_ENV = new DynamicVar(); //FnFrame -static public TRef METHOD = new TRef(); +static public DynamicVar METHOD = new DynamicVar(); //module->module -static public TRef USES = new TRef(); +static public DynamicVar USES = new DynamicVar(); //ISeq FnExprs -static public TRef FNS = new TRef(); +static public DynamicVar FNS = new DynamicVar(); static public IPersistentMap CHAR_MAP = new PersistentArrayMap(new Object[]{'-', "_DSH_", @@ -136,7 +136,7 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. //makes entries in IMPORTS for: //"ThisClass"->"org.package.ThisClass" //"ThatClass"->"org.package.ThatClass" - IPersistentMap importMap = (IPersistentMap) IMPORTS.currentVal(); + IPersistentMap importMap = (IPersistentMap) IMPORTS.get(); String pkg = RT.second(form).toString(); for(ISeq classes = RT.rest(RT.rest(form)); classes != null; classes = classes.rest()) { @@ -160,21 +160,21 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. } } //declare static members for keywords, vars - for(ISeq keys = RT.seq(KEYWORDS.currentVal()); keys != null; keys = keys.rest()) + for(ISeq keys = RT.seq(KEYWORDS.get()); keys != null; keys = keys.rest()) { KeywordExpr k = (KeywordExpr) ((IMapEntry) keys.first()).val(); format("static Keyword ~A;~%", k.emitExpressionString()); } - for(ISeq vars = RT.seq(VARS.currentVal()); vars != null; vars = vars.rest()) + for(ISeq vars = RT.seq(VARS.get()); vars != null; vars = vars.rest()) { - TRef v = (TRef) ((IMapEntry) vars.first()).val(); - format("static TRef ~A;~%", munge(v.toString())); + DynamicVar v = (DynamicVar) ((IMapEntry) vars.first()).val(); + format("static DynamicVar ~A;~%", munge(v.toString())); } //todo declare static members for syms, quoted aggregates //emit nested static class/method declarations for nested fns - PersistentVector fns = (PersistentVector) FNS.currentVal(); + PersistentVector fns = (PersistentVector) FNS.get(); for(int f = 0; f < fns.count(); f++) { FnExpr fn = (FnExpr) fns.nth(f); @@ -184,14 +184,14 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. //define the load function format("public void load() throws Exception{~%"); //init the keywords and vars - for(ISeq keys = RT.seq(KEYWORDS.currentVal()); keys != null; keys = keys.rest()) + for(ISeq keys = RT.seq(KEYWORDS.get()); keys != null; keys = keys.rest()) { KeywordExpr k = (KeywordExpr) ((IMapEntry) keys.first()).val(); format("~A = (Keyword)Symbol.intern(~S);~%", k.emitExpressionString(), k.sym.name); } - for(ISeq vars = RT.seq(VARS.currentVal()); vars != null; vars = vars.rest()) + for(ISeq vars = RT.seq(VARS.get()); vars != null; vars = vars.rest()) { - TRef v = (TRef) ((IMapEntry) vars.first()).val(); + DynamicVar v = (DynamicVar) ((IMapEntry) vars.first()).val(); //!format("~A = Module.intern(~S,~S);~%", munge(v.toString()), v.module.name, v.name.name); } //todo init syms and quoted aggregates @@ -794,7 +794,7 @@ private static Expr analyzeLet(C context, ISeq form) throws Exception{ } try { - LOCAL_ENV.pushThreadBinding(LOCAL_ENV.currentVal()); + LOCAL_ENV.pushThreadBinding(LOCAL_ENV.get()); for(int i = 0; i < bindingInits.count(); i++) { BindingInit bi = (BindingInit) bindingInits.nth(i); @@ -820,7 +820,7 @@ private static Expr analyzeLetFn(C context, ISeq form) throws Exception{ return analyze(context, RT.list(RT.list(FN, null, form))); try { - LOCAL_ENV.pushThreadBinding(LOCAL_ENV.currentVal()); + LOCAL_ENV.pushThreadBinding(LOCAL_ENV.get()); ISeq bindings = (ISeq) RT.second(form); ISeq body = RT.rest(RT.rest(form)); PersistentVector bindingPairs = PersistentVector.EMPTY; @@ -867,7 +867,7 @@ private static Expr analyzeLetStar(C context, ISeq form) throws Exception{ try { - LOCAL_ENV.pushThreadBinding(LOCAL_ENV.currentVal()); + LOCAL_ENV.pushThreadBinding(LOCAL_ENV.get()); PersistentVector bindingInits = PersistentVector.EMPTY; for(ISeq bs = bindings; bs != null; bs = RT.rest(RT.rest(bs))) { @@ -1411,9 +1411,9 @@ private static FnMethod analyzeMethod(FnExpr fn, ISeq form) throws Exception{ ISeq body = RT.rest(form); try { - FnMethod method = new FnMethod(fn, (FnMethod) METHOD.currentVal()); + FnMethod method = new FnMethod(fn, (FnMethod) METHOD.get()); METHOD.pushThreadBinding(method); - LOCAL_ENV.pushThreadBinding(LOCAL_ENV.currentVal()); + LOCAL_ENV.pushThreadBinding(LOCAL_ENV.get()); PSTATE state = PSTATE.REQ; for(ISeq ps = parms; ps != null; ps = ps.rest()) { @@ -1489,8 +1489,8 @@ private static Expr analyzeDef(C context, ISeq form) throws Exception{ if(form.count() > 3) throw new Exception("Too many arguments to def"); Symbol sym = (Symbol) RT.second(form); - Module module = (Module) _CRT_MODULE.currentVal(); - TRef var = null;//!module.intern(baseSymbol(sym)); + Module module = (Module) _CRT_MODULE.get(); + DynamicVar var = null;//!module.intern(baseSymbol(sym)); registerVar(var); VarExpr ve = new VarExpr(var, typeHint(sym)); Expr init = analyze(C.EXPRESSION, macroexpand(RT.third(form))); @@ -1542,19 +1542,19 @@ private static Expr analyzeSymbol(Symbol sym, boolean inFnPosition) throws Excep b.valueTaken = true; return new LocalBindingExpr(b, typeHint); } - TRef v = lookupVar(sym); + DynamicVar v = lookupVar(sym); if(v != null) return new VarExpr(v, typeHint); throw new Exception("Unable to resolve symbol: " + sym.name + " in this context"); } } -static TRef lookupVar(Symbol sym) throws Exception{ - Module module = (Module) _CRT_MODULE.currentVal(); +static DynamicVar lookupVar(Symbol sym) throws Exception{ + Module module = (Module) _CRT_MODULE.get(); // Var v = module.find(sym); // if(v != null) // return v; -// for(ISeq seq = RT.seq(USES.currentVal()); seq != null; seq = RT.rest(seq)) +// for(ISeq seq = RT.seq(USES.get()); seq != null; seq = RT.rest(seq)) // { // module = (Module) ((IMapEntry) RT.first(seq)).key(); // v = module.find(sym); @@ -1569,21 +1569,21 @@ static Object macroexpand(Object x){ } private static KeywordExpr registerKeyword(Keyword keyword) throws Exception{ - IPersistentMap keywordsMap = (IPersistentMap) KEYWORDS.currentVal(); + IPersistentMap keywordsMap = (IPersistentMap) KEYWORDS.get(); KeywordExpr ke = (KeywordExpr) RT.get(keyword, keywordsMap); //! if(ke == null) //! KEYWORDS.set(RT.assoc(keyword, ke = new KeywordExpr(keyword), keywordsMap)); return ke; } -private static void registerVar(TRef var) throws Exception{ - IPersistentMap varsMap = (IPersistentMap) VARS.currentVal(); +private static void registerVar(DynamicVar var) throws Exception{ + IPersistentMap varsMap = (IPersistentMap) VARS.get(); if(RT.get(var, varsMap) == null) VARS.set(RT.assoc(varsMap, var, var)); } private static void registerFn(FnExpr fn) throws Exception{ - FNS.set(RT.cons(fn, (IPersistentCollection) FNS.currentVal())); + FNS.set(RT.cons(fn, (IPersistentCollection) FNS.get())); } static void closeOver(LocalBinding b, FnMethod method){ @@ -1596,18 +1596,18 @@ static void closeOver(LocalBinding b, FnMethod method){ } static LocalBinding referenceLocal(Symbol sym) throws Exception{ - LocalBinding b = (LocalBinding) RT.get(sym, LOCAL_ENV.currentVal()); + LocalBinding b = (LocalBinding) RT.get(sym, LOCAL_ENV.get()); if(b != null) { - closeOver(b, (FnMethod) METHOD.currentVal()); + closeOver(b, (FnMethod) METHOD.get()); } return b; } private static void registerLocal(LocalBinding b) throws Exception{ - IPersistentMap localsMap = (IPersistentMap) LOCAL_ENV.currentVal(); + IPersistentMap localsMap = (IPersistentMap) LOCAL_ENV.get(); //!LOCAL_ENV.setValue(RT.assoc(b.sym, b, localsMap)); - FnMethod method = (FnMethod) METHOD.currentVal(); + FnMethod method = (FnMethod) METHOD.get(); method.locals = (IPersistentMap) RT.assoc(method.locals, b, b); } /* @@ -1630,7 +1630,7 @@ static String resolveHostClassname(String classname) throws Exception{ return classname; if(isPrimitive(classname)) return classname; - IPersistentMap importMap = (IPersistentMap) IMPORTS.currentVal(); + IPersistentMap importMap = (IPersistentMap) IMPORTS.get(); String fullyQualifiedName = (String) RT.get(classname, importMap); if(fullyQualifiedName == null) throw new Exception("Can't resolve type name: " + classname); @@ -1929,10 +1929,10 @@ static class LocalBindingExpr extends AnExpr{ } static class VarExpr extends AnExpr{ - final TRef var; + final DynamicVar var; final String typeHint; - public VarExpr(TRef var, String typeHint){ + public VarExpr(DynamicVar var, String typeHint){ this.var = var; this.typeHint = typeHint; } @@ -1942,7 +1942,7 @@ static class VarExpr extends AnExpr{ } public void emitExpression() throws Exception{ - format("~A.currentVal()", getName()); + format("~A.get()", getName()); } public Class getHostType() throws Exception{ diff --git a/src/jvm/clojure/lang/Module.java b/src/jvm/clojure/lang/Module.java index 0c28aab0..0e0d6d91 100644 --- a/src/jvm/clojure/lang/Module.java +++ b/src/jvm/clojure/lang/Module.java @@ -24,7 +24,7 @@ static final public ConcurrentHashMap<String, Module> table = new ConcurrentHash /** * Symbol->Var */ -final public TRef<IPersistentMap> vars = new TRef(PersistentHashMap.EMPTY); +final public Ref vars = new Ref(PersistentHashMap.EMPTY); final public String name; Module(String name){ @@ -42,23 +42,23 @@ static public Module findOrCreateModule(String name){ return module; } -public TRef findRef(String name) throws Exception{ - return (TRef) vars.val().valAt(name); +public Ref findRef(String name) throws Exception{ + return (Ref) ((IPersistentMap) vars.get()).valAt(name); } -public static TRef intern(String moduleName, String name) throws Exception{ +public static Ref intern(String moduleName, String name) throws Exception{ Module module = findModule(moduleName); if(module == null) throw new Exception(String.format("Module %s not found", moduleName)); return module.intern(name); } -public TRef intern(String name) throws Exception{ +public Ref intern(String name) throws Exception{ //must be called in transaction - IPersistentMap varmap = vars.val(); - TRef var = (TRef) varmap.valAt(name); + IPersistentMap varmap = (IPersistentMap) vars.get(); + Ref var = (Ref) varmap.valAt(name); if(var == null) - vars.set(varmap.assoc(name, var = new TRef())); + vars.set(varmap.assoc(name, var = new Ref())); return var; } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 5cf0f4b5..dde7e319 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -19,10 +19,10 @@ import java.io.*; public class RT{ static public Symbol T = new Symbol("t"); -final static public TRef OUT = new TRef(new OutputStreamWriter(System.out)); +final static public DynamicVar OUT = new DynamicVar(new OutputStreamWriter(System.out)); final static Keyword TAG_KEY = new Keyword("clojure", "tag"); -final static public TRef CURRENT_MODULE = new TRef(Module.findOrCreateModule("clojure/user")); +final static public DynamicVar CURRENT_MODULE = new DynamicVar(Module.findOrCreateModule("clojure/user")); static public final Object[] EMPTY_ARRAY = new Object[]{}; static public final Character[] chars; @@ -637,7 +637,7 @@ static public Object format(Object o, String s, Object... args) throws Exception if(o == null) w = new StringWriter(); else if(equal(o, T)) - w = (Writer) OUT.currentVal(); + w = (Writer) OUT.get(); else w = (Writer) o; doFormat(w, s, ArraySeq.create(args)); |