Changeset 8374


Ignore:
Timestamp:
01/19/05 15:59:04 (16 years ago)
Author:
piso
Message:

Work in progress (tested).

File:
1 edited

Legend:

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

    r8372 r8374  
    22;;;
    33;;; Copyright (C) 2003-2005 Peter Graves
    4 ;;; $Id: jvm.lisp,v 1.357 2005-01-19 14:57:14 piso Exp $
     4;;; $Id: jvm.lisp,v 1.358 2005-01-19 15:59:04 piso Exp $
    55;;;
    66;;; This program is free software; you can redistribute it and/or
     
    6868(defmacro defsubst (&rest args)
    6969  `(defun ,@args))
    70 
    71 ;; (defvar *use-locals-vector* nil)
    7270
    7371(defvar *compiler-debug* nil)
     
    35673565          (cond
    35683566           ((and *trust-user-type-declarations*
    3569 ;;                  (not *use-locals-vector*)
    35703567                 (null (variable-closure-index variable))
    35713568                 (not (variable-special-p variable))
     
    35783575            (emit 'istore (variable-register variable))
    35793576            (setf boundp t))
    3580            ((and ;;(not *use-locals-vector*)
    3581                  (null (variable-closure-index variable))
     3577           ((and (null (variable-closure-index variable))
    35823578                 (not (variable-special-p variable))
    35833579                 (eql (variable-writes variable) 0)
     
    55555551          (aver (not (null (compiland-argument-register compiland))))
    55565552          (emit 'aload (compiland-argument-register compiland)) ; arg vector
    5557           ; Reserve extra slots for locals if applicable.
    5558 ;;           (let ((extra (if *use-locals-vector*
    5559 ;;                            (length (context-vars *context*))
    5560 ;;                            0)))
    5561 ;;             (emit 'sipush extra))
    5562           (emit-push-constant-int 0)
    5563           (emit-invokevirtual *this-class*
    5564                               (if (or (memq '&optional args) (memq '&key args))
    5565                                   "processArgs"
    5566                                   "fastProcessArgs")
    5567                               "([Lorg/armedbear/lisp/LispObject;I)[Lorg/armedbear/lisp/LispObject;"
    5568                               -2)
    5569          (emit 'astore (compiland-argument-register compiland)))
    5570         )
     5553          (cond ((or (memq '&optional args) (memq '&key args))
     5554                 (emit 'iconst_0)
     5555                 (emit-invokevirtual *this-class*
     5556                                     "processArgs"
     5557                                     "([Lorg/armedbear/lisp/LispObject;I)[Lorg/armedbear/lisp/LispObject;"
     5558                                     -2))
     5559                (t
     5560                 (emit-invokevirtual *this-class*
     5561                                     "fastProcessArgs"
     5562                                     "([Lorg/armedbear/lisp/LispObject;)[Lorg/armedbear/lisp/LispObject;"
     5563                                     -1)))
     5564          (emit 'astore (compiland-argument-register compiland))))
    55715565       (*hairy-arglist-p*
    55725566        (dformat t "prologue case 1~%")
     
    55745568        (aver (not (null (compiland-argument-register compiland))))
    55755569        (emit 'aload (compiland-argument-register compiland)) ; arg vector
    5576         ; Reserve extra slots for locals if applicable.
    5577 ;;         (let ((extra (if *use-locals-vector*
    5578 ;;                          (length (context-vars *context*))
    5579 ;;                          0)))
    5580 ;;           (emit 'sipush extra))
    5581         (emit-push-constant-int 0)
    5582         (emit-invokevirtual *this-class*
    5583                             (if (or (memq '&optional args) (memq '&key args))
    5584                                 "processArgs"
    5585                                 "fastProcessArgs")
    5586                             "([Lorg/armedbear/lisp/LispObject;I)[Lorg/armedbear/lisp/LispObject;"
    5587                             -2)
     5570        (cond ((or (memq '&optional args) (memq '&key args))
     5571               (emit 'iconst_0)
     5572               (emit-invokevirtual *this-class*
     5573                                   "processArgs"
     5574                                   "([Lorg/armedbear/lisp/LispObject;I)[Lorg/armedbear/lisp/LispObject;"
     5575                                   -2))
     5576              (t
     5577               (emit-invokevirtual *this-class*
     5578                                   "fastProcessArgs"
     5579                                   "([Lorg/armedbear/lisp/LispObject;)[Lorg/armedbear/lisp/LispObject;"
     5580                                   -1)))
    55885581        (emit 'astore (compiland-argument-register compiland)))
    55895582       ((not *using-arg-array*)
Note: See TracChangeset for help on using the changeset viewer.