Changeset 8603


Ignore:
Timestamp:
02/18/05 14:30:46 (16 years ago)
Author:
piso
Message:

DECLARE-LOAD-TIME-VALUE
P2-LOAD-TIME-VALUE

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/jvm.lisp

    r8598 r8603  
    22;;;
    33;;; Copyright (C) 2003-2005 Peter Graves
    4 ;;; $Id: jvm.lisp,v 1.398 2005-02-17 18:38:44 piso Exp $
     4;;; $Id: jvm.lisp,v 1.399 2005-02-18 14:30:46 piso Exp $
    55;;;
    66;;; This program is free software; you can redistribute it and/or
     
    779779                         (compiler-unsupported "P1: unsupported special operator ~S" op))
    780780                        (t
    781                          (p1-function-call form)
    782                          )
    783                         ))
     781                         (p1-function-call form))))
    784782                 ((and (consp op) (eq (car op) 'LAMBDA))
    785783                  (p1 (list* 'FUNCALL form)))
     
    22322230    g))
    22332231
     2232(defun declare-load-time-value (obj)
     2233  (let* ((g (symbol-name (gensym)))
     2234         (*print-level* nil)
     2235         (*print-length* nil)
     2236         (s (%format nil "~S" obj))
     2237         (*code* *static-code*))
     2238    (declare-field g +lisp-object+)
     2239    (emit 'ldc (pool-string s))
     2240    (emit-invokestatic +lisp-class+ "readObjectFromString"
     2241                       (list +java-string+) +lisp-object+)
     2242    (emit-invokestatic +lisp-class+ "loadTimeValue"
     2243                       (list +lisp-object+) +lisp-object+)
     2244    (emit 'putstatic *this-class* g +lisp-object+)
     2245    (setf *static-code* *code*)
     2246    g))
     2247
    22342248(defun declare-package (obj)
    22352249  (let* ((g (symbol-name (gensym)))
     
    38843898         (emit-push-nil)
    38853899         (emit-move-from-stack target))))
     3900
     3901(defun p2-load-time-value (form &key (target :stack) representation)
     3902  (cond (*compile-file-truename*
     3903         (emit 'getstatic *this-class*
     3904               (declare-load-time-value (second form)) +lisp-object+))
     3905        (t
     3906         (compile-constant (eval (second form))
     3907                           :target target
     3908                           :representation representation))))
    38863909
    38873910(defun compile-quote (form &key (target :stack) representation)
     
    58525875                             values))
    58535876
    5854 (install-p2-handler '*              'p2-times)
    5855 (install-p2-handler '+              'p2-plus)
    5856 (install-p2-handler '-              'p2-minus)
    5857 (install-p2-handler '/=             'p2-numeric-comparison)
    5858 (install-p2-handler '<              'p2-numeric-comparison)
    5859 (install-p2-handler '<=             'p2-numeric-comparison)
    5860 (install-p2-handler '=              'p2-numeric-comparison)
    5861 (install-p2-handler '>              'p2-numeric-comparison)
    5862 (install-p2-handler '>=             'p2-numeric-comparison)
    5863 (install-p2-handler 'aref           'p2-aref)
    5864 (install-p2-handler 'ash            'p2-ash)
    5865 (install-p2-handler 'atom           'p2-atom)
    5866 (install-p2-handler 'cons           'p2-cons)
    5867 (install-p2-handler 'eql            'p2-eql)
    5868 (install-p2-handler 'eval-when      'p2-eval-when)
    5869 (install-p2-handler 'flet           'p2-flet)
    5870 (install-p2-handler 'go             'p2-go)
    5871 (install-p2-handler 'function       'p2-function)
    5872 (install-p2-handler 'labels         'p2-labels)
    5873 (install-p2-handler 'length         'p2-length)
    5874 (install-p2-handler 'logand         'p2-logand)
    5875 (install-p2-handler 'mod            'p2-mod)
    5876 (install-p2-handler 'not            'p2-not/null)
    5877 (install-p2-handler 'null           'p2-not/null)
    5878 (install-p2-handler 'return-from    'p2-return-from)
    5879 (install-p2-handler 'rplacd         'p2-rplacd)
    5880 (install-p2-handler 'schar          'p2-schar)
    5881 (install-p2-handler 'setq           'p2-setq)
    5882 (install-p2-handler 'the            'p2-the)
    5883 (install-p2-handler 'zerop          'p2-zerop)
     5877(install-p2-handler '*               'p2-times)
     5878(install-p2-handler '+               'p2-plus)
     5879(install-p2-handler '-               'p2-minus)
     5880(install-p2-handler '/=              'p2-numeric-comparison)
     5881(install-p2-handler '<               'p2-numeric-comparison)
     5882(install-p2-handler '<=              'p2-numeric-comparison)
     5883(install-p2-handler '=               'p2-numeric-comparison)
     5884(install-p2-handler '>               'p2-numeric-comparison)
     5885(install-p2-handler '>=              'p2-numeric-comparison)
     5886(install-p2-handler 'aref            'p2-aref)
     5887(install-p2-handler 'ash             'p2-ash)
     5888(install-p2-handler 'atom            'p2-atom)
     5889(install-p2-handler 'cons            'p2-cons)
     5890(install-p2-handler 'eql             'p2-eql)
     5891(install-p2-handler 'eval-when       'p2-eval-when)
     5892(install-p2-handler 'flet            'p2-flet)
     5893(install-p2-handler 'go              'p2-go)
     5894(install-p2-handler 'function        'p2-function)
     5895(install-p2-handler 'labels          'p2-labels)
     5896(install-p2-handler 'length          'p2-length)
     5897(install-p2-handler 'logand          'p2-logand)
     5898(install-p2-handler 'load-time-value 'p2-load-time-value)
     5899(install-p2-handler 'mod             'p2-mod)
     5900(install-p2-handler 'not             'p2-not/null)
     5901(install-p2-handler 'null            'p2-not/null)
     5902(install-p2-handler 'return-from     'p2-return-from)
     5903(install-p2-handler 'rplacd          'p2-rplacd)
     5904(install-p2-handler 'schar           'p2-schar)
     5905(install-p2-handler 'setq            'p2-setq)
     5906(install-p2-handler 'the             'p2-the)
     5907(install-p2-handler 'zerop           'p2-zerop)
    58845908
    58855909(install-p2-handler '%call-internal 'p2-%call-internal)
Note: See TracChangeset for help on using the changeset viewer.