Show
Ignore:
Timestamp:
02/13/08 01:31:53 (7 years ago)
Author:
lieutar
Message:

/share/lang/elisp/escm/trunk: add some changes

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/elisp/escm/trunk/escm-vm.el

    r6576 r6617  
    22(require 'escm-cbos) 
    33(require 'escm-proc) 
     4(require 'escm-wrapped-proc) 
     5 
     6(defconst 'escm-vm::init-hook ()) 
     7(defun escm-vm-init (vm) (run-hook-with-args 'escm-vm::init-hook vm)) 
    48 
    59(escm-util::expand 
     
    4246           vm))))) 
    4347 
    44 (defsubst escm-vm::call (vm proc) 
    45   (let ((args   (escm-vm::get-current-args vm)) 
     48(defsubst escm-vm::call (vm) 
     49  (let ((proc   (escm-vm::get-current-val)) 
     50        (args   (escm-vm::get-current-args vm)) 
    4651        (env    (escm-cbos::clone  (escm-proc::get-env   proc))) 
    4752        (arity  (escm-proc::get-arity proc)) 
     
    5358    (escm-vm::push-args vm ()))) 
    5459 
    55 (defsubst escm-vm::t-call (vm proc) 
    56   (let ((args   (escm-vm::get-current-args vm)) 
     60(defsubst escm-vm::t-call (vm) 
     61  (let ((proc   (escm-vm::get-current-val)) 
     62        (args   (escm-vm::get-current-args vm)) 
    5763        (env    (escm-cbos::clone  (escm-proc::get-env   proc))) 
    5864        (arity  (escm-proc::get-arity proc)) 
     
    6470    (escm-vm::set-current-args  vm  ()))) 
    6571 
    66 (defsubst escm-vm::ret (vm val) 
     72(defsubst escm-vm::ret (vm) 
     73  (escm-vm::set-val  (mapcar (lambda (v) 
     74                               (if (escm-cbos::is-a v 'escm-proc) 
     75                                   (let ((proc (escm-cbos::clone v)) 
     76                                         (renv (escm-cbos::clone (escm-proc::get-env v))) 
     77                                         (cenv (escm-vm::get-current-env vm))) 
     78                                     (escm-env::set-parent renv cenv) 
     79                                     (escm-proc::set-env   proc renv) 
     80                                     proc) 
     81                                 v)) 
     82                             (escm-vm::get-val))) 
    6783  (escm-vm::pop-proc vm) 
    6884  (escm-vm::pop-env  vm)