Changeset 11780
- Timestamp:
- 04/24/09 19:51:45 (14 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r11764 r11780 2958 2958 (emit 'getstatic *this-class* g +lisp-object+))) 2959 2959 (t 2960 (let ((name (lookup-known-symbol op))) 2960 (multiple-value-bind 2961 (name class) 2962 (lookup-known-symbol op) 2961 2963 (if name 2962 (emit 'getstatic +lisp-symbol-class+name +lisp-symbol+)2964 (emit 'getstatic class name +lisp-symbol+) 2963 2965 (emit 'getstatic *this-class* (declare-symbol op) +lisp-symbol+))))) 2964 2966 (process-args args) … … 4922 4924 (emit 'iconst_1) 4923 4925 (emit-move-from-stack target representation)) 4924 ((keywordp obj)4925 (let ((name (lookup-known-keyword obj)))4926 (if name4927 (emit 'getstatic "org/armedbear/lisp/Keyword" name +lisp-symbol+)4928 (emit 'getstatic *this-class* (declare-keyword obj) +lisp-symbol+)))4929 (emit-move-from-stack target representation))4930 4926 ((symbolp obj) 4931 (let ((name (lookup-known-symbol obj))) 4927 (multiple-value-bind 4928 (name class) 4929 (lookup-known-symbol obj) 4932 4930 (cond (name 4933 (emit 'getstatic +lisp-symbol-class+name +lisp-symbol+))4931 (emit 'getstatic class name +lisp-symbol+)) 4934 4932 ((symbol-package (truly-the symbol obj)) 4935 (emit 'getstatic *this-class* (declare-symbol obj) +lisp-symbol+)) 4933 (emit 'getstatic *this-class* (declare-symbol obj) 4934 +lisp-symbol+)) 4936 4935 (t 4937 4936 ;; An uninterned symbol. … … 8009 8008 (emit 'iconst_1)) 8010 8009 ((nil) 8011 (let ((name (lookup-known-keyword form))) 8010 (multiple-value-bind 8011 (name class) 8012 (lookup-known-symbol form) 8012 8013 (if name 8013 (emit 'getstatic "org/armedbear/lisp/Keyword" name +lisp-symbol+) 8014 (emit 'getstatic *this-class* (declare-keyword form) +lisp-symbol+))))) 8014 (emit 'getstatic class name +lisp-symbol+) 8015 (emit 'getstatic *this-class* (declare-keyword form) 8016 +lisp-symbol+))))) 8015 8017 (emit-move-from-stack target representation)) 8016 8018 (t -
trunk/abcl/src/org/armedbear/lisp/known-symbols.lisp
r11391 r11780 32 32 (in-package #:system) 33 33 34 (export '(lookup-known-symbol lookup-known-keyword))34 (export '(lookup-known-symbol)) 35 35 36 (let ((symbols (make-hash-table :test 'eq :size 1024)) 37 (keywords (make-hash-table :test 'eq :size 128))) 36 (let ((symbols (make-hash-table :test 'eq :size 2048))) 38 37 (defun initialize-known-symbols (source ht) 39 (clrhash ht)40 38 (let* ((source-class (java:jclass source)) 39 (class-designator (substitute #\/ #\. source)) 41 40 (symbol-class (java:jclass "org.armedbear.lisp.Symbol")) 42 41 (fields (java:jclass-fields source-class :declared t :public t))) … … 47 46 (let* ((name (java:jfield-name field)) 48 47 (symbol (java:jfield source-class name))) 49 (puthash symbol ht name))))))48 (puthash symbol ht (list name class-designator))))))) 50 49 (hash-table-count ht)) 51 50 52 51 (initialize-known-symbols "org.armedbear.lisp.Symbol" symbols) 53 (initialize-known-symbols "org.armedbear.lisp.Keyword" keywords)52 (initialize-known-symbols "org.armedbear.lisp.Keyword" symbols) 54 53 55 54 (defun lookup-known-symbol (symbol) 56 (gethash1 symbol symbols)) 55 "Returns the name of the field and its class designator 56 which stores the Java object `symbol'." 57 (values-list (gethash1 symbol symbols)))) 57 58 58 (defun lookup-known-keyword (keyword)59 (gethash1 keyword keywords)))60 59 61 60 (provide '#:known-symbols)
Note: See TracChangeset
for help on using the changeset viewer.