diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-09-01 19:22:53 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-09-01 19:22:53 +0000 |
commit | 8a36fd5f840f13e2cb16e7876012d5dc43c244e3 (patch) | |
tree | acd552f9647579b95e35b1e1abf6b4fbe474c2f4 /src | |
parent | f96102812da70214ef45e4f7bb68707258d3a41c (diff) |
renamed DynamicVar -> Var
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/BytecodeCompiler.java | 58 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 62 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 14 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Var.java (renamed from src/jvm/clojure/lang/DynamicVar.java) | 36 |
4 files changed, 85 insertions, 85 deletions
diff --git a/src/jvm/clojure/lang/BytecodeCompiler.java b/src/jvm/clojure/lang/BytecodeCompiler.java index 0063c0f1..db448d7f 100644 --- a/src/jvm/clojure/lang/BytecodeCompiler.java +++ b/src/jvm/clojure/lang/BytecodeCompiler.java @@ -46,7 +46,7 @@ static Symbol _AMP_ = Symbol.create("&"); private static final int MAX_POSITIONAL_ARITY = 20; private static Type OBJECT_TYPE; private static Type KEYWORD_TYPE = Type.getType(Keyword.class); -private static Type VAR_TYPE = Type.getType(DynamicVar.class); +private static Type VAR_TYPE = Type.getType(Var.class); private static Type[][] ARG_TYPES; @@ -65,28 +65,28 @@ static //symbol->localbinding -static public DynamicVar LOCAL_ENV = DynamicVar.create(null); +static public Var LOCAL_ENV = Var.create(null); //vector<localbinding> -static public DynamicVar LOOP_LOCALS = DynamicVar.create(); +static public Var LOOP_LOCALS = Var.create(); //keyword->keywordexpr -static public DynamicVar KEYWORDS = DynamicVar.create(); +static public Var KEYWORDS = Var.create(); //var->var -static public DynamicVar VARS = DynamicVar.create(); +static public Var VARS = Var.create(); //FnFrame -static public DynamicVar METHOD = DynamicVar.create(null); +static public Var METHOD = Var.create(null); //String -static public DynamicVar SOURCE = DynamicVar.create(null); +static public Var SOURCE = Var.create(null); //Integer -static public DynamicVar NEXT_LOCAL_NUM = DynamicVar.create(0); +static public Var NEXT_LOCAL_NUM = Var.create(0); //DynamicClassLoader -static public DynamicVar LOADER = DynamicVar.create(); +static public Var LOADER = Var.create(); enum C{ STATEMENT, //value ignored @@ -100,10 +100,10 @@ interface Expr{ } static class DefExpr implements Expr{ - final DynamicVar var; + final Var var; final Expr init; - public DefExpr(DynamicVar var, Expr init){ + public DefExpr(Var var, Expr init){ this.var = var; this.init = init; } @@ -120,7 +120,7 @@ static class DefExpr implements Expr{ throw new Exception("Too few arguments to def"); else if(!(RT.second(form) instanceof Symbol)) throw new Exception("Second argument to def must be a Symbol"); - DynamicVar v = lookupVar((Symbol) RT.second(form)); + Var v = lookupVar((Symbol) RT.second(form)); if(!v.sym.ns.equals(currentNS())) throw new Exception("Can't create defs outside of current ns"); return new DefExpr(v, analyze(C.EXPRESSION, RT.third(form), v.sym.name)); @@ -128,10 +128,10 @@ static class DefExpr implements Expr{ } static class VarExpr implements Expr{ - final DynamicVar var; + final Var var; final Symbol tag; - public VarExpr(DynamicVar var, Symbol tag){ + public VarExpr(Var var, Symbol tag){ this.var = var; this.tag = tag; } @@ -299,7 +299,7 @@ static class FnExpr implements Expr{ fn.internalName = fn.name.replace('.', '/'); try { - DynamicVar.pushThreadBindings( + Var.pushThreadBindings( RT.map( KEYWORDS, PersistentHashMap.EMPTY, VARS, PersistentHashMap.EMPTY)); @@ -346,7 +346,7 @@ static class FnExpr implements Expr{ } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } fn.compile(); return fn; @@ -454,7 +454,7 @@ static class FnMethod{ { FnMethod method = new FnMethod(fn, (FnMethod) METHOD.get()); //register as the current method and set up a new env frame - DynamicVar.pushThreadBindings( + Var.pushThreadBindings( RT.map( METHOD, method, LOCAL_ENV, LOCAL_ENV.get(), @@ -506,7 +506,7 @@ static class FnMethod{ } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } } @@ -612,7 +612,7 @@ static class LetExpr implements Expr{ try { - DynamicVar.pushThreadBindings(dynamicBindings); + Var.pushThreadBindings(dynamicBindings); PersistentVector bindingInits = PersistentVector.EMPTY; PersistentVector loopLocals = PersistentVector.EMPTY; @@ -637,7 +637,7 @@ static class LetExpr implements Expr{ } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } @@ -725,31 +725,31 @@ private static Expr analyzeSymbol(Symbol sym) throws Exception{ if(b != null) return new LocalBindingExpr(b, tag); } - DynamicVar v = lookupVar(sym); + Var v = lookupVar(sym); if(v != null) return new VarExpr(v, tag); throw new Exception("Unable to resolve symbol: " + sym + " in this context"); } -static DynamicVar lookupVar(Symbol sym) throws Exception{ - DynamicVar var = null; +static Var lookupVar(Symbol sym) throws Exception{ + Var var = null; //note - ns-qualified vars must already exist if(sym.ns != null) { - var = DynamicVar.find(sym); + var = Var.find(sym); } else { //is it an alias? IPersistentMap uses = (IPersistentMap) RT.USES.get(); - var = (DynamicVar) uses.valAt(sym); + var = (Var) uses.valAt(sym); if(var == null) { //introduce a new var in the current ns String ns = currentNS(); - var = DynamicVar.intern(Symbol.intern(ns, sym.name)); + var = Var.intern(Symbol.intern(ns, sym.name)); } } if(var != null) @@ -757,7 +757,7 @@ static DynamicVar lookupVar(Symbol sym) throws Exception{ return var; } -private static void registerVar(DynamicVar var) throws Exception{ +private static void registerVar(Var var) throws Exception{ if(!VARS.isBound()) return; IPersistentMap varsMap = (IPersistentMap) VARS.get(); @@ -805,7 +805,7 @@ public static void main(String[] args){ { try { - DynamicVar.pushThreadBindings( + Var.pushThreadBindings( RT.map(LOADER, new DynamicClassLoader())); Object r = LispReader.read(rdr, false, EOF, false); if(r == EOF) @@ -817,7 +817,7 @@ public static void main(String[] args){ } catch(Exception e) { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); e.printStackTrace(); } } diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 85f2347e..2446bcd6 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -39,33 +39,33 @@ static Symbol USE = Symbol.create("use"); static Symbol _AMP_KEY = Symbol.create("&key"); static Symbol _AMP_REST = Symbol.create("&rest"); -static public DynamicVar _CRT_OUT = RT.OUT; -static public DynamicVar _CRT_MODULE = RT.CURRENT_MODULE; +static public Var _CRT_OUT = RT.OUT; +static public Var _CRT_MODULE = RT.CURRENT_MODULE; static NilExpr NIL_EXPR = new NilExpr(); //short-name-string->full-name-string -static public DynamicVar IMPORTS = DynamicVar.create(); +static public Var IMPORTS = Var.create(); //keyword->keywordexpr -static public DynamicVar KEYWORDS = DynamicVar.create(); +static public Var KEYWORDS = Var.create(); //var->var -static public DynamicVar VARS = DynamicVar.create(); +static public Var VARS = Var.create(); //symbol->localbinding -static public DynamicVar LOCAL_ENV = DynamicVar.create(); +static public Var LOCAL_ENV = Var.create(); //FnFrame -static public DynamicVar METHOD = DynamicVar.create(); +static public Var METHOD = Var.create(); //module->module -static public DynamicVar USES = DynamicVar.create(); +static public Var USES = Var.create(); //ISeq FnExprs -static public DynamicVar FNS = DynamicVar.create(); +static public Var FNS = Var.create(); static public IPersistentMap CHAR_MAP = new PersistentArrayMap(new Object[]{'-', "_DASH_", @@ -99,7 +99,7 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. StringWriter w = new StringWriter(); try { - DynamicVar.pushThreadBindings( + Var.pushThreadBindings( RT.map( _CRT_OUT, w, KEYWORDS, null, @@ -118,7 +118,7 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. { try { - DynamicVar.pushThreadBindings( + Var.pushThreadBindings( RT.map( IMPORTS, null, USES, null)); @@ -159,7 +159,7 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } //declare static members for keywords, vars @@ -170,7 +170,7 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. } for(ISeq vars = RT.seq(VARS.get()); vars != null; vars = vars.rest()) { - DynamicVar v = (DynamicVar) ((IMapEntry) vars.first()).val(); + Var v = (Var) ((IMapEntry) vars.first()).val(); format("static DynamicVar ~A;~%", munge(v.toString())); } @@ -194,7 +194,7 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. } for(ISeq vars = RT.seq(VARS.get()); vars != null; vars = vars.rest()) { - DynamicVar v = (DynamicVar) ((IMapEntry) vars.first()).val(); + Var v = (Var) ((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 @@ -216,7 +216,7 @@ static String compile(String ns, String className, LineNumberingPushbackReader.. } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } return w.toString(); } @@ -283,13 +283,13 @@ static class AnExpr implements Expr{ StringWriter w = new StringWriter(); try { - DynamicVar.pushThreadBindings(RT.map(_CRT_OUT, w)); + Var.pushThreadBindings(RT.map(_CRT_OUT, w)); emitExpression(); return w.toString(); } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } @@ -791,7 +791,7 @@ private static Expr analyzeLet(C context, ISeq form) throws Exception{ } try { - DynamicVar.pushThreadBindings(RT.map(LOCAL_ENV, LOCAL_ENV.get())); + Var.pushThreadBindings(RT.map(LOCAL_ENV, LOCAL_ENV.get())); for(int i = 0; i < bindingInits.count(); i++) { BindingInit bi = (BindingInit) bindingInits.nth(i); @@ -806,7 +806,7 @@ private static Expr analyzeLet(C context, ISeq form) throws Exception{ } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } @@ -817,7 +817,7 @@ private static Expr analyzeLetFn(C context, ISeq form) throws Exception{ return analyze(context, RT.list(RT.list(FN, null, form))); try { - DynamicVar.pushThreadBindings(RT.map(LOCAL_ENV, LOCAL_ENV.get())); + Var.pushThreadBindings(RT.map(LOCAL_ENV, LOCAL_ENV.get())); ISeq bindings = (ISeq) RT.second(form); ISeq body = RT.rest(RT.rest(form)); PersistentVector bindingPairs = PersistentVector.EMPTY; @@ -846,7 +846,7 @@ private static Expr analyzeLetFn(C context, ISeq form) throws Exception{ } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } @@ -864,7 +864,7 @@ private static Expr analyzeLetStar(C context, ISeq form) throws Exception{ try { - DynamicVar.pushThreadBindings(RT.map(LOCAL_ENV, LOCAL_ENV.get())); + Var.pushThreadBindings(RT.map(LOCAL_ENV, LOCAL_ENV.get())); PersistentVector bindingInits = PersistentVector.EMPTY; for(ISeq bs = bindings; bs != null; bs = RT.rest(RT.rest(bs))) { @@ -885,7 +885,7 @@ private static Expr analyzeLetStar(C context, ISeq form) throws Exception{ } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } @@ -1409,7 +1409,7 @@ private static FnMethod analyzeMethod(FnExpr fn, ISeq form) throws Exception{ try { FnMethod method = new FnMethod(fn, (FnMethod) METHOD.get()); - DynamicVar.pushThreadBindings( + Var.pushThreadBindings( RT.map( METHOD, method, LOCAL_ENV, LOCAL_ENV.get())); @@ -1467,7 +1467,7 @@ private static FnMethod analyzeMethod(FnExpr fn, ISeq form) throws Exception{ } finally { - DynamicVar.popThreadBindings(); + Var.popThreadBindings(); } } @@ -1488,7 +1488,7 @@ private static Expr analyzeDef(C context, ISeq form) throws Exception{ throw new Exception("Too many arguments to def"); Symbol sym = (Symbol) RT.second(form); Module module = (Module) _CRT_MODULE.get(); - DynamicVar var = null;//!module.intern(baseSymbol(sym)); + Var var = null;//!module.intern(baseSymbol(sym)); registerVar(var); VarExpr ve = new VarExpr(var, typeHint(sym)); Expr init = analyze(C.EXPRESSION, macroexpand(RT.third(form))); @@ -1540,14 +1540,14 @@ private static Expr analyzeSymbol(Symbol sym, boolean inFnPosition) throws Excep b.valueTaken = true; return new LocalBindingExpr(b, typeHint); } - DynamicVar v = lookupVar(sym); + Var v = lookupVar(sym); if(v != null) return new VarExpr(v, typeHint); throw new Exception("Unable to resolve symbol: " + sym.name + " in this context"); } } -static DynamicVar lookupVar(Symbol sym) throws Exception{ +static Var lookupVar(Symbol sym) throws Exception{ Module module = (Module) _CRT_MODULE.get(); // Var v = module.find(sym); // if(v != null) @@ -1574,7 +1574,7 @@ private static KeywordExpr registerKeyword(Keyword keyword) throws Exception{ return ke; } -private static void registerVar(DynamicVar var) throws Exception{ +private static void registerVar(Var var) throws Exception{ IPersistentMap varsMap = (IPersistentMap) VARS.get(); if(RT.get(varsMap, var) == null) VARS.set(RT.assoc(varsMap, var, var)); @@ -1927,10 +1927,10 @@ static class LocalBindingExpr extends AnExpr{ } static class VarExpr extends AnExpr{ - final DynamicVar var; + final Var var; final String typeHint; - public VarExpr(DynamicVar var, String typeHint){ + public VarExpr(Var var, String typeHint){ this.var = var; this.typeHint = typeHint; } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 314d783d..4a9648e5 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -19,19 +19,19 @@ import java.io.*; public class RT{ static public Symbol T = Symbol.create(null, "t"); -final static public DynamicVar OUT = - DynamicVar.intern(Symbol.create("clojure", "out"), new OutputStreamWriter(System.out)); +final static public Var OUT = + Var.intern(Symbol.create("clojure", "out"), new OutputStreamWriter(System.out)); final static Keyword TAG_KEY = Keyword.intern("clojure", "tag"); -final static public DynamicVar CURRENT_MODULE = DynamicVar.intern(Symbol.create("clojure", "current-module"), - Module.findOrCreateModule("clojure/user")); +final static public Var CURRENT_MODULE = Var.intern(Symbol.create("clojure", "current-module"), + Module.findOrCreateModule("clojure/user")); //string -final static DynamicVar CURRENT_NS = DynamicVar.intern(Symbol.create("clojure", "current-ns"), "clojure-user"); +final static Var CURRENT_NS = Var.intern(Symbol.create("clojure", "current-ns"), "clojure-user"); //simple-symbol->var -final static DynamicVar USES = DynamicVar.intern(Symbol.create("clojure", "uses"), PersistentHashMap.EMPTY); +final static Var USES = Var.intern(Symbol.create("clojure", "uses"), PersistentHashMap.EMPTY); //simple-symbol->fully-qualified-class-name-symbol -final static DynamicVar IMPORTS = DynamicVar.intern(Symbol.create("clojure", "imports"), PersistentHashMap.EMPTY); +final static Var IMPORTS = Var.intern(Symbol.create("clojure", "imports"), PersistentHashMap.EMPTY); static public final Object[] EMPTY_ARRAY = new Object[]{}; static public final Character[] chars; diff --git a/src/jvm/clojure/lang/DynamicVar.java b/src/jvm/clojure/lang/Var.java index a7d4852d..edcc7c23 100644 --- a/src/jvm/clojure/lang/DynamicVar.java +++ b/src/jvm/clojure/lang/Var.java @@ -16,7 +16,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; -public class DynamicVar implements IFn{ +public class Var implements IFn{ static class Frame{ Associative bmap; @@ -46,19 +46,19 @@ Object root; transient final AtomicInteger count; final Symbol sym; -static ConcurrentHashMap<Symbol, DynamicVar> table = new ConcurrentHashMap<Symbol, DynamicVar>(); +static ConcurrentHashMap<Symbol, Var> table = new ConcurrentHashMap<Symbol, Var>(); -public static DynamicVar intern(Symbol sym, Object root){ +public static Var intern(Symbol sym, Object root){ return intern(sym, root, true); } -public static DynamicVar intern(Symbol sym, Object root, boolean replaceRoot){ - DynamicVar dvout = table.get(sym); +public static Var intern(Symbol sym, Object root, boolean replaceRoot){ + Var dvout = table.get(sym); boolean present = dvout != null; if(!present) { - DynamicVar dvin = new DynamicVar(sym, root); + Var dvin = new Var(sym, root); dvout = table.putIfAbsent(sym, dvin); present = dvout != null; //might have snuck in if(!present) @@ -69,12 +69,12 @@ public static DynamicVar intern(Symbol sym, Object root, boolean replaceRoot){ return dvout; } -public static DynamicVar intern(Symbol sym){ - DynamicVar dvout = table.get(sym); +public static Var intern(Symbol sym){ + Var dvout = table.get(sym); if(dvout != null) return dvout; - DynamicVar dvin = table.putIfAbsent(sym, dvout = new DynamicVar(sym)); + Var dvin = table.putIfAbsent(sym, dvout = new Var(sym)); if(dvin != null) return dvin; return dvout; @@ -84,25 +84,25 @@ public static void unintern(Symbol sym){ table.remove(sym); } -public static DynamicVar find(Symbol sym){ +public static Var find(Symbol sym){ return table.get(sym); } -public static DynamicVar create(){ - return new DynamicVar(null); +public static Var create(){ + return new Var(null); } -public static DynamicVar create(Object root){ - return new DynamicVar(null, root); +public static Var create(Object root){ + return new Var(null, root); } -private DynamicVar(Symbol sym){ +private Var(Symbol sym){ this.sym = sym; this.count = new AtomicInteger(); this.root = dvals; //use dvals as magic not-bound value } -private DynamicVar(Symbol sym, Object root){ +private Var(Symbol sym, Object root){ this(sym); this.root = root; } @@ -150,7 +150,7 @@ public static void pushThreadBindings(Associative bindings){ for(ISeq bs = bindings.seq(); bs != null; bs = bs.rest()) { IMapEntry e = (IMapEntry) bs.first(); - DynamicVar v = (DynamicVar) e.key(); + Var v = (Var) e.key(); v.count.incrementAndGet(); bmap = bmap.assoc(v, new Box(e.val())); } @@ -164,7 +164,7 @@ public static void popThreadBindings(){ for(ISeq bs = f.bindings.seq(); bs != null; bs = bs.rest()) { IMapEntry e = (IMapEntry) bs.first(); - DynamicVar v = (DynamicVar) e.key(); + Var v = (Var) e.key(); v.count.decrementAndGet(); } dvals.set(f.prev); |