Changeset 12715
- Timestamp:
- 05/21/10 22:54:55 (13 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/Autoload.java
r12583 r12715 514 514 autoload(PACKAGE_JAVA, "%jregister-handler", "JHandler"); 515 515 autoload(PACKAGE_JAVA, "%load-java-class-from-byte-array", "RuntimeClass"); 516 autoload(PACKAGE_JAVA, "get-default-classloader", "JavaClassLoader"); 516 517 autoload(PACKAGE_MOP, "funcallable-instance-function", "StandardGenericFunction", false); 517 518 autoload(PACKAGE_MOP, "generic-function-name", "StandardGenericFunction", true); -
trunk/abcl/src/org/armedbear/lisp/Java.java
r12663 r12715 60 60 } 61 61 62 private static final Primitive ENSURE_JAVA_OBJECT = new pf_ensure_java_object(); 63 private static final class pf_ensure_java_object extends Primitive 64 { 65 pf_ensure_java_object() 66 { 67 super("ensure-java-object", PACKAGE_JAVA, true, "obj"); 68 } 69 70 @Override 71 public LispObject execute(LispObject obj) { 72 return obj instanceof JavaObject ? obj : new JavaObject(obj); 73 } 74 }; 75 62 76 // ### register-java-exception exception-name condition-symbol => T 63 77 private static final Primitive REGISTER_JAVA_EXCEPTION = new pf_register_java_exception(); … … 120 134 private static final class pf_jclass extends Primitive 121 135 { 136 122 137 pf_jclass() 123 138 { … … 129 144 public LispObject execute(LispObject arg) 130 145 { 131 return JavaObject.getInstance(javaClass(arg));146 return JavaObject.getInstance(javaClass(arg, JavaClassLoader.getCurrentClassLoader())); 132 147 } 133 148 … … 136 151 { 137 152 ClassLoader loader = (ClassLoader) classLoader.javaInstance(ClassLoader.class); 138 if(loader != null) { 139 return JavaObject.getInstance(javaClass(className, loader)); 140 } else { 141 return JavaObject.getInstance(javaClass(className)); 142 } 153 return JavaObject.getInstance(javaClass(className, loader)); 143 154 } 144 155 }; … … 1177 1188 1178 1189 private static Class javaClass(LispObject obj) { 1179 return javaClass(obj, null);1190 return javaClass(obj, JavaClassLoader.getCurrentClassLoader()); 1180 1191 } 1181 1192 … … 1203 1214 // Not a primitive Java type. 1204 1215 Class c; 1205 if(classLoader != null) { 1206 c = classForName(s, classLoader); 1207 } else { 1208 c = classForName(s); 1209 } 1216 c = classForName(s, classLoader); 1210 1217 if (c == null) 1211 1218 error(new LispError(s + " does not designate a Java class.")); -
trunk/abcl/src/org/armedbear/lisp/JavaClassLoader.java
r12298 r12715 39 39 import java.util.HashSet; 40 40 import java.util.Set; 41 import java.net.URL; 41 42 42 public class JavaClassLoader extends ClassLoader {43 public class JavaClassLoader extends java.net.URLClassLoader { 43 44 44 45 private static JavaClassLoader persistentInstance; … … 48 49 public JavaClassLoader() 49 50 { 50 super(JavaClassLoader.class.getClassLoader()); 51 this(JavaClassLoader.class.getClassLoader()); 52 } 53 54 public JavaClassLoader(ClassLoader parent) { 55 super(new URL[] {}, parent); 56 } 57 58 public JavaClassLoader(URL[] classpath, ClassLoader parent) { 59 super(classpath, parent); 51 60 } 52 61 … … 118 127 return null; 119 128 } 129 130 @Override 131 public void addURL(URL url) { 132 super.addURL(url); 133 } 134 135 public static final Symbol CLASSLOADER = PACKAGE_JAVA.intern("*CLASSLOADER*"); 136 137 private static final Primitive GET_DEFAULT_CLASSLOADER = new pf_get_default_classloader(); 138 private static final class pf_get_default_classloader extends Primitive { 139 140 private final LispObject defaultClassLoader = new JavaObject(new JavaClassLoader()); 141 142 pf_get_default_classloader() { 143 super("get-default-classloader", PACKAGE_JAVA, true, ""); 144 } 145 146 @Override 147 public LispObject execute() { 148 return defaultClassLoader; 149 } 150 }; 151 152 private static final Primitive MAKE_CLASSLOADER = new pf_make_classloader(); 153 private static final class pf_make_classloader extends Primitive 154 { 155 pf_make_classloader() 156 { 157 super("make-classloader", PACKAGE_JAVA, true, "&optional parent"); 158 } 159 160 @Override 161 public LispObject execute() { 162 return new JavaObject(new JavaClassLoader(getCurrentClassLoader())); 163 } 164 165 @Override 166 public LispObject execute(LispObject parent) { 167 return new JavaObject(new JavaClassLoader((ClassLoader) parent.javaInstance(ClassLoader.class))); 168 } 169 }; 170 171 public static ClassLoader getCurrentClassLoader() { 172 LispObject classLoader = CLASSLOADER.symbolValueNoThrow(); 173 if(classLoader != null) { 174 return (ClassLoader) classLoader.javaInstance(ClassLoader.class); 175 } else { 176 return Lisp.class.getClassLoader(); 177 } 178 } 179 180 181 120 182 } -
trunk/abcl/src/org/armedbear/lisp/clos.lisp
r12665 r12715 252 252 ((:documentation :report) 253 253 (list (car option) `',(cadr option))) 254 (t 255 (error 'program-error256 :format-control "invalid DEFCLASS option ~S"257 :format-arguments (list (car option))))))254 (t (list (car option) `(quote ,(cdr option)))))) 255 ; (error 'program-error 256 ; :format-control "invalid DEFCLASS option ~S" 257 ; :format-arguments (list (car option)))))) 258 258 259 259 (defun make-initfunction (initform) … … 542 542 543 543 (defun make-instance-standard-class (metaclass 544 &rest initargs 544 545 &key name direct-superclasses direct-slots 545 546 direct-default-initargs 546 documentation 547 &allow-other-keys) 547 documentation) 548 548 (declare (ignore metaclass)) 549 549 (let ((class (std-allocate-instance +the-standard-class+))) 550 (check-initargs class t initargs) 550 551 (%set-class-name name class) 551 552 (%set-class-layout nil class) … … 635 636 ;; We're redefining the class. 636 637 (%make-instances-obsolete old-class) 638 (check-initargs old-class t all-keys) 637 639 (apply #'std-after-initialization-for-classes old-class all-keys) 638 640 old-class))) … … 2377 2379 (when (eq (car option) :report) 2378 2380 (setf report (cadr option)) 2381 (setf options (delete option options :test #'equal)) 2379 2382 (return))) 2380 2383 (typecase report -
trunk/abcl/src/org/armedbear/lisp/java.lisp
r12661 r12715 35 35 (require "PRINT-OBJECT") 36 36 37 (defvar *classloader* (get-default-classloader)) 38 39 (defun add-url-to-classpath (url &optional (classloader *classloader*)) 40 (jcall "addUrl" classloader url)) 41 42 (defun add-urls-to-classpath (&rest urls) 43 (dolist (url urls) 44 (add-url-to-classpath url))) 45 37 46 (defun jregister-handler (object event handler &key data count) 38 47 (%jregister-handler object event handler data count)) … … 191 200 (setf (apply #'jarray-ref jarray (row-major-to-index dimensions i)) (row-major-aref array i)) 192 201 (apply #'(setf jarray-ref) (row-major-aref array i) jarray (row-major-to-index dimensions i)))))) 202 203 (defun jnew-array-from-list (element-type list) 204 (let ((jarray (jnew-array element-type (length list))) 205 (i 0)) 206 (dolist (x list) 207 (setf (jarray-ref jarray i) x 208 i (1+ i))) 209 jarray)) 193 210 194 211 (defun jclass-constructors (class)
Note: See TracChangeset
for help on using the changeset viewer.