summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cli/runtime/Accessor.cs7
-rw-r--r--src/lisp/clojure.lisp44
-rw-r--r--src/org/clojure/runtime/Accessor.java17
3 files changed, 23 insertions, 45 deletions
diff --git a/src/cli/runtime/Accessor.cs b/src/cli/runtime/Accessor.cs
index 2a26ce32..b63e5e7c 100644
--- a/src/cli/runtime/Accessor.cs
+++ b/src/cli/runtime/Accessor.cs
@@ -14,12 +14,13 @@ namespace org.clojure.runtime
{
public class Accessor :Symbol, IFn
{
- internal Accessor(String name) :base(name) { }
+ String memberName; internal Accessor(String name) :base(name) { memberName = name.Substring(1); }
public Object invoke(ThreadLocalData tld) /*throws Exception*/ {
return AFn.throwArity();
- } /** * Indexer implements IFn for attr access * This single arg version is the getter * @param tld * @param obj - must be AMap * @return the value of the attr or nil if not found * @throws Exception */ public Object invoke(ThreadLocalData tld, Object obj) //throws Exception {
- return Reflector.invokeInstanceMember(name, obj); } /** * Indexer implements IFn for attr access * This two arg version is the setter * @param tld * @param obj - must be AMap * @param val * @return val * @throws Exception */ public Object invoke(ThreadLocalData tld, Object obj, Object val) //throws Exception { return Reflector.invokeInstanceMember(name,obj,val); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3) //throws Exception { return Reflector.invokeInstanceMember(name,arg1,arg2,arg3); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) //throws Exception { return Reflector.invokeInstanceMember(name,arg1,arg2,arg3,arg4); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) //throws Exception { return Reflector.invokeInstanceMember(name,arg1,arg2,arg3,arg4,arg5); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) //throws Exception { return Reflector.invokeInstanceMember(name,arg1,arg2,arg3,arg4,arg5,args); }
+ } /** * Indexer implements IFn for attr access * This single arg version is the getter * @param tld * @param obj - must be AMap * @return the value of the attr or nil if not found * @throws Exception */ public Object invoke(ThreadLocalData tld, Object obj) //throws Exception {
+
+ return Reflector.invokeInstanceMember(memberName, obj); } /** * Indexer implements IFn for attr access * This two arg version is the setter * @param tld * @param obj - must be AMap * @param val * @return val * @throws Exception */ public Object invoke(ThreadLocalData tld, Object obj, Object val) //throws Exception { return Reflector.invokeInstanceMember(memberName,obj,val); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3) //throws Exception { return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) //throws Exception { return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) //throws Exception { return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5); } public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args) //throws Exception { return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5,args); }
public Object applyTo(ThreadLocalData tld, Cons arglist) /*throws Exception*/ {
return AFn.applyToHelper(this, tld, arglist);
diff --git a/src/lisp/clojure.lisp b/src/lisp/clojure.lisp
index 10bbd898..d779f0eb 100644
--- a/src/lisp/clojure.lisp
+++ b/src/lisp/clojure.lisp
@@ -49,6 +49,7 @@
(defvar *reference-var*)
#|
+;build the library
(let ((*clojure-source-path* #p"/dev/clojure/src/lisp/")
(*clojure-target-path* #p"/dev/clojure/classes/"))
(compile-to :jvm "org.clojure" "Clojure"
@@ -57,30 +58,7 @@
(*clojure-target-path* #p"/dev/clojure/classes/test/"))
(compile-to :cli "org.clojure" "Clojure"
"lib.lisp"))
-;build the library
-(let ((*clojure-source-path* #p"/dev/clojure/")
- (*clojure-target-path* #p"/dev/gen/clojure/"))
- (compile-to :jvm "org.clojure" "Clojure"
- "arrays.lisp"
- "conditions.lisp"
- "conses.lisp"
- "data-and-control-flow.lisp"
- "hash-tables.lisp"
- "numbers.lisp"
- "printer.lisp"
- "sequences.lisp"
- "symbols.lisp"
- "impl.lisp"))
-
-(let ((*clojure-source-path* #p"/dev/")
- (*clojure-target-path* #p"/dev/clojure/"))
- (compile-to :java "org.clojure.user" "TestArrays"
- "test-arrays.lisp"))
-
-(let ((*clojure-source-path* #p"/dev/")
- (*clojure-target-path* #p"/dev/clojure/"))
- (compile-to :java "org.clojure.user" "TestHash"
- "test-hash.lisp"))
+
|#
@@ -155,9 +133,8 @@
(munge-name (symbol-name symbol))))
(defun accessor-member-name (symbol)
- (format nil "ACC__~A__~A"
- (munge-name (package-name (symbol-package symbol)))
- (munge-name (subseq (symbol-name symbol) 1))))
+ (format nil "ACC__~A"
+ (subseq (symbol-name symbol) 1)))
(defun symbol-member-name (symbol)
(format nil "SYM__~A"
@@ -262,23 +239,22 @@
(symbol-member-name sym)
(munge-name (symbol-name sym))))
(dolist (keyword *keywords*)
- (format target "static Keyword ~A = Keyword.intern(~S);~%"
+ (format target "static Keyword ~A = (Keyword)Symbol.intern(~S);~%"
(keyword-member-name keyword)
- (munge-name (symbol-name keyword))))
+ (concatenate 'string ":" (munge-name (symbol-name keyword)))))
(dolist (var *vars*)
- (format target "static Var ~A = Namespace.internVar(~S,~S);~%"
+ (format target "static Var ~A = Namespace.intern(~S,~S);~%"
(var-member-name var)
(munge-name (package-name (symbol-package var)))
(munge-name (symbol-name var))))
(dolist (accessor *accessors*)
- (format target "static Accessor ~A = Namespace.internAccessor(~S,~S);~%"
+ (format target "static Accessor ~A = (Accessor)Symbol.intern(~S);~%"
(accessor-member-name accessor)
- (munge-name (package-name (symbol-package accessor)))
- (munge-name (subseq (symbol-name accessor) 1))))
+ (symbol-name accessor)))
(format target "~Atry{~%" (begin-static-block class-name))
;(format target "~%static public void __load() ~A{~%" (exception-declaration-string lang))
(dolist (var *defns*)
- (format target "Namespace.internVar(~S,~S).bind(new ~A());~%"
+ (format target "Namespace.intern(~S,~S).bind(new ~A());~%"
(munge-name (package-name (symbol-package var)))
(munge-name (symbol-name var))
(munge-name var)))
diff --git a/src/org/clojure/runtime/Accessor.java b/src/org/clojure/runtime/Accessor.java
index 5883e3db..b69bb0bb 100644
--- a/src/org/clojure/runtime/Accessor.java
+++ b/src/org/clojure/runtime/Accessor.java
@@ -14,11 +14,12 @@ package org.clojure.runtime;
public class Accessor extends Symbol implements IFn{
-
+String memberName;
Accessor(String name)
{
super(name);
- }
+ memberName = name.substring(1);
+ }
public Object invoke(ThreadLocalData tld) throws Exception {
@@ -35,7 +36,7 @@ public Object invoke(ThreadLocalData tld) throws Exception {
public Object invoke(ThreadLocalData tld, Object obj) throws Exception
{
- return Reflector.invokeInstanceMember(name,obj);
+ return Reflector.invokeInstanceMember(memberName,obj);
}
/**
@@ -50,29 +51,29 @@ public Object invoke(ThreadLocalData tld, Object obj) throws Exception
public Object invoke(ThreadLocalData tld, Object obj, Object val) throws Exception
{
- return Reflector.invokeInstanceMember(name,obj,val);
+ return Reflector.invokeInstanceMember(memberName,obj,val);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3) throws Exception
{
- return Reflector.invokeInstanceMember(name,arg1,arg2,arg3);
+ return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception
{
- return Reflector.invokeInstanceMember(name,arg1,arg2,arg3,arg4);
+ return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5)
throws Exception
{
- return Reflector.invokeInstanceMember(name,arg1,arg2,arg3,arg4,arg5);
+ return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5);
}
public Object invoke(ThreadLocalData tld, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Cons args)
throws Exception
{
- return Reflector.invokeInstanceMember(name,arg1,arg2,arg3,arg4,arg5,args);
+ return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5,args);
}
public Object applyTo(ThreadLocalData tld, Cons arglist) throws Exception {