Changeset 8906


Ignore:
Timestamp:
Mar 27, 2008, 9:39:17 PM (11 years ago)
Author:
rme
Message:

various stuff

Location:
branches/ia32/level-0/X86/X8632
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/level-0/X86/X8632/x8632-def.lisp

    r8857 r8906  
    2424  (subl ($ 2) (% imm0))
    2525  (box-fixnum imm0 temp0)               ;byte offset of first self-ref offset
    26   (movl (@ x8632::misc-data-offset (% fun) (% temp0)) (% imm0))
    27   (jmp @test)
     26  (jmp @load-offset)
    2827  @loop
    2928  (movl (% fun) (@ x8632::misc-header-offset (% fun) (% imm0)))
    3029  (subl ($ '1) (% temp0))
     30  @load-offset
    3131  (movl (@ x8632::misc-data-offset (% fun) (% temp0)) (% imm0))
    32   @test
    3332  (test (% imm0) (% imm0))
    3433  (jne @loop)
     
    6867  (movzbl (@ (% fun) (% imm0)) (% imm0))
    6968  (box-fixnum imm0 arg_z)
    70   (single-value-return))
    71 
    72 ;;; Use the offsets in the self-reference table to replace the :self
    73 ;;; in (movl ($ :self) (% fn)) with the function's actual address.
    74 (defx8632lapfunction %make-code-executable ((f arg_z))
    75   (movzwl (@ x8632::misc-data-offset (% f)) (% imm0))
    76   (box-fixnum imm0 arg_y)
    77   (jmp @test)
    78   @loop
    79   (movl (% f) (@ (% f) (% imm0)))
    80   (subl ($ '1) (% arg_y))
    81   @test
    82   (movl (@ -4 (% f) (% arg_y)) (% imm0))
    83   (testl (% imm0) (% imm0))
    84   (jnz @loop)
    8569  (single-value-return))
    8670
     
    290274  (single-value-return 3))
    291275
    292 #+fix
    293276(defx8632lapfunction %apply-lexpr-with-method-context ((magic 4)
    294277                                                       #|(ra 0)|#
    295278                                                       (function arg_y)
    296279                                                       (args arg_z))
     280  (int ($ 3))
    297281  ;; Somebody's called (or tail-called) us.
    298282  ;; * Put magic arg in x8632::next-method-context (= x8632::temp0).
     
    341325  (jmp (% imm0)))
    342326
    343 #+fix
    344327(defx8632lapfunction %apply-with-method-context ((magic 4)
    345328                                                 #|(ra 0)|#
    346329                                                 (function arg_y)
    347330                                                 (args arg_z))
     331  (int ($ 3))
    348332  ;; Similar to above.
    349333  (popl (@ (% :rcontext) x8632::tcr.save0))     ;save return address
     
    402386;;; must have been tail-called, and the frame built on lexpr
    403387;;; entry must be in %rbp.
    404 #+fix
    405388(defx8632lapfunction %apply-lexpr-tail-wise ((method arg_y) (args arg_z))
     389  (int ($ 3))
    406390  (addl ($ x8632::node-size) (% esp))   ; discard extra return address
    407391  (movl (% method) (% xfn))             ;temp1
     
    496480;;;     (%eax/%xmm0) there (not really xmm0, but .SPffcall will pop the x87
    497481;;;     stack and put the value in there for us.
    498 #+notyet
     482
    499483(defx86lapfunction %do-ff-call ((frame arg_y) (entry arg_z))
     484  (int ($ 3))
    500485  (pop (% ra0))
    501486  (movl (% ebp) (@  (% esp)))
     
    514499  (single-value-return))
    515500 
    516 #+notyet
    517501(defun %ff-call (entry &rest specs-and-vals)
    518502  (declare (dynamic-extent specs-and-vals))
     
    536520           (declare (fixnum i))
    537521           (case spec
     522             (:registers
     523              (error "don't know what to do with argspec ~s" spec))
    538524             ((:double-float :unsigned-doubleword :signed-doubleword)
    539525              (incf total-words 2))
  • branches/ia32/level-0/X86/X8632/x8632-misc.lisp

    r8690 r8906  
    9191  (unbox-fixnum nbytes imm0)            ;will be used below
    9292  (push (% nbytes))                     ;put loop counter on stack
    93   (movl (@ dest (% esp)) (% arg_z))
     93  (movl (@ (+ 4 dest) (% esp)) (% arg_z))
    9494  (mark-as-imm temp1)
    9595  (mark-as-imm arg_y)
     
    151151    (movl (% nelements) (% val))     ;will be used below
    152152    (push (% nelements))             ;loop counter on stack (use ebp?)
    153     (movl (@ src (% esp)) (% a))
    154     (movl (@ src-element (% esp)) (% i))
    155     (movl (@ dest (% esp)) (% b))
     153    (movl (@ (+ 4 src) (% esp)) (% a))
     154    (movl (@ (+ 4 src-element) (% esp)) (% i))
     155    (movl (@ (+ 4 dest) (% esp)) (% b))
    156156    ;; j/arg_y already set
    157157    (cmpl (% a) (% b))
Note: See TracChangeset for help on using the changeset viewer.