Show
Ignore:
Timestamp:
03/03/08 03:20:00 (5 years ago)
Author:
lieutar
Message:

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

Files:
1 modified

Legend:

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

    r6617 r7383  
    22(require 'escm-cbos) 
    33(require 'escm-proc) 
    4 (require 'escm-wrapped-proc) 
    54 
    6 (defconst 'escm-vm::init-hook ()) 
     5(defconst 'escm-vm::init-hook    ()) 
     6(defconst 'escm-vm::serial-number 0) 
    77(defun escm-vm-init (vm) (run-hook-with-args 'escm-vm::init-hook vm)) 
    88 
     
    5858    (escm-vm::push-args vm ()))) 
    5959 
     60 
    6061(defsubst escm-vm::t-call (vm) 
    6162  (let ((proc   (escm-vm::get-current-val)) 
     
    6970    (escm-vm::set-current-pc    vm  0) 
    7071    (escm-vm::set-current-args  vm  ()))) 
     72 
    7173 
    7274(defsubst escm-vm::ret (vm) 
     
    8688  (escm-vm::pop-args vm)) 
    8789 
     90 
    8891(defsubst escm-vm::step (vm) 
    8992  (let ((pc  (escm-vm::get-current-pc vm))) 
    9093    (apply (aref (escm-vm::get-current-proc vm) pc) (list vm)) 
    9194    (escm-vm::set-current-pc vm (1+ pc)))) 
     95 
     96 
     97(defsubst escm-vm::apply (vm proc args) 
     98  (let ((procs  (escm-vm::get-proc-stack vm)) 
     99        (retval (progn (escm-vm::set-proc-stack ()) 
     100                       (escm-vm::set-current-args  vn args) 
     101                       (escm-vm::set-current-value vm proc) 
     102                       (escm-vm::call vm) 
     103                       (while (escm-vm::get-proc-stack vm) 
     104                         (escm-vm::step vm))))) 
     105    (escm-vm::set-proc-stack vm proc) 
     106    retval))