Changeset 12749 for trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
- Timestamp:
- 06/09/10 11:27:42 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r12748 r12749 199 199 n))) 200 200 201 (defconstant +fasl-loader-class+ 202 "org/armedbear/lisp/FaslClassLoader") 201 203 (defconstant +java-string+ "Ljava/lang/String;") 202 204 (defconstant +java-object+ "Ljava/lang/Object;") … … 2268 2270 (setf g (symbol-name (gensym "LFUN"))) 2269 2271 (let* ((pathname (abcl-class-file-pathname (local-function-class-file local-function))) 2272 (class-name (concatenate 'string "org/armedbear/lisp/" (pathname-name pathname))) 2270 2273 (*code* *static-code*)) 2271 2274 ;; fixme *declare-inline* 2272 (declare-field g +lisp-object+ +field-access-default+) 2273 (emit 'ldc (pool-string (file-namestring pathname))) 2274 (emit-invokestatic +lisp-function-proxy-class+ "loadPreloadedFunction" 2275 (list +java-string+) +lisp-object+) 2275 (declare-field g +lisp-object+ +field-access-private+) 2276 (emit 'new class-name) 2277 (emit 'dup) 2278 (emit-invokespecial-init class-name '()) 2279 2280 ;(emit 'ldc (pool-string (pathname-name pathname))) 2281 ;(emit-invokestatic +fasl-loader-class+ "faslLoadFunction" 2282 ;(list +java-string+) +lisp-object+) 2283 2284 ; (emit 'ldc (pool-string (file-namestring pathname))) 2285 2286 ; (emit-invokestatic +lisp-function-proxy-class+ "loadPreloadedFunction" 2287 ; (list +java-string+) +lisp-object+) 2276 2288 (emit 'putstatic *this-class* g +lisp-object+) 2277 2289 (setf *static-code* *code*) … … 2418 2430 (typep form 'double-float) 2419 2431 (characterp form) 2420 (stringp form)2421 (packagep form)2422 (pathnamep form)2423 (vectorp form)2424 2432 (stringp form) 2425 2433 (packagep form) … … 5099 5107 (emit 'getstatic *this-class* 5100 5108 g +lisp-object+))))) ; Stack: template-function 5101 ((member name *functions-defined-in-current-file* :test #'equal) 5109 ((and (member name *functions-defined-in-current-file* :test #'equal) 5110 (not (notinline-p name))) 5102 5111 (emit 'getstatic *this-class* 5103 5112 (declare-setf-function name) +lisp-object+) … … 7549 7558 (compile-function-call form target representation)))) 7550 7559 7560 #|(defknown p2-java-jcall (t t t) t) 7561 (define-inlined-function p2-java-jcall (form target representation) 7562 ((and (> *speed* *safety*) 7563 (< 1 (length form)) 7564 (eq 'jmethod (car (cadr form))) 7565 (every #'stringp (cdr (cadr form))))) 7566 (let ((m (ignore-errors (eval (cadr form))))) 7567 (if m 7568 (let ((must-clear-values nil) 7569 (arg-types (raw-arg-types (jmethod-params m)))) 7570 (declare (type boolean must-clear-values)) 7571 (dolist (arg (cddr form)) 7572 (compile-form arg 'stack nil) 7573 (unless must-clear-values 7574 (unless (single-valued-p arg) 7575 (setf must-clear-values t)))) 7576 (when must-clear-values 7577 (emit-clear-values)) 7578 (dotimes (i (jarray-length raw-arg-types)) 7579 (push (jarray-ref raw-arg-types i) arg-types)) 7580 (emit-invokevirtual (jclass-name (jmethod-declaring-class m)) 7581 (jmethod-name m) 7582 (nreverse arg-types) 7583 (jmethod-return-type m))) 7584 ;; delay resolving the method to run-time; it's unavailable now 7585 (compile-function-call form target representation))))|# 7551 7586 7552 7587 (defknown p2-char= (t t t) t) … … 8225 8260 t) 8226 8261 8262 (defun p2-with-inline-code (form target representation) 8263 ;;form = (with-inline-code (&optional target-var repr-var) ...body...) 8264 (destructuring-bind (&optional target-var repr-var) (cadr form) 8265 (eval `(let (,@(when target-var `((,target-var ,target))) 8266 ,@(when repr-var `((,repr-var ,representation)))) 8267 ,@(cddr form))))) 8268 8227 8269 (defun compile-1 (compiland stream) 8228 8270 (let ((*all-variables* nil) … … 8517 8559 (install-p2-handler 'java:jconstructor 'p2-java-jconstructor) 8518 8560 (install-p2-handler 'java:jmethod 'p2-java-jmethod) 8561 ; (install-p2-handler 'java:jcall 'p2-java-jcall) 8519 8562 (install-p2-handler 'char= 'p2-char=) 8520 8563 (install-p2-handler 'characterp 'p2-characterp) … … 8601 8644 (install-p2-handler 'write-8-bits 'p2-write-8-bits) 8602 8645 (install-p2-handler 'zerop 'p2-zerop) 8646 (install-p2-handler 'with-inline-code 'p2-with-inline-code) 8603 8647 t) 8604 8648
Note: See TracChangeset
for help on using the changeset viewer.