Changeset 13242 for branches/purify


Ignore:
Timestamp:
Nov 30, 2009, 11:33:56 PM (10 years ago)
Author:
gb
Message:

x8632 static-cons stuff.

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

Legend:

Unmodified
Added
Removed
  • branches/purify/source/level-0/X86/X8632/x8632-misc.lisp

    r11526 r13242  
    786786  (cmpxchgl (% temp0) (@ (+ (target-nil-value) (x8632::kernel-global static-conses))))
    787787  (jnz @again)
     788  (lock)
     789  (subl ($ '1) (@ (+ (target-nil-value) (x8632::kernel-global free-static-conses))))
    788790  @lose
    789791  (movl (% eax) (% arg_z))
    790792  (single-value-return))
    791793
    792 (defx8632lapfunction %augment-static-conses ((head arg_y) (tail arg_z))
    793   @again
    794   (movl (@ (+ (target-nil-value) (x8632::kernel-global static-conses))) (% eax))
    795   (movl (% eax) (@ target::cons.cdr (% tail)))
    796   (lock)
    797   (cmpxchgl (% head) (@ (+ (target-nil-value) (x8632::kernel-global static-conses))))
    798   (jnz @again)
    799   @lose
     794
     795
     796(defx8632lapfunction %staticp ((x arg_z))
     797  (check-nargs 1)
     798  (ref-global static-cons-area temp0)
     799  (movl (% x) (% imm0))
    800800  (movl ($ (target-nil-value)) (% arg_z))
    801   (single-value-return))
    802 
    803 (defx8632lapfunction %staticp ((x arg_z))
    804   (check-nargs 1)
    805   (ref-global tenured-area temp0)
    806   (movl (% x) (% imm0))
    807801  (subl (@ target::area.low (% temp0)) (% imm0))
    808802  (shrl ($ target::dnode-shift) (% imm0))
    809   (cmpl (@ target::area.static-dnodes (% temp0)) (% imm0))
    810   (leal (@ (% imm0) target::fixnumone) (% arg_z))
    811   (movl ($ (target-nil-value)) (%l imm0))
    812   (cmovael (% imm0) (% arg_z))
     803  (mark-as-imm temp1)
     804  (movl (@ target::area.ndnodes (% temp0)) (% temp1))
     805  (subl (% imm0) (% temp1))
     806  (lea (@ 128 (% temp1)) (% temp1))
     807  (leal (@ (% temp1) target::fixnumone) (% temp1))
     808  (cmoval (% temp1) (% arg_z))
     809  (mark-as-node temp1)
    813810  (single-value-return))
    814811
    815812(defx8632lapfunction %static-inverse-cons ((n arg_z))
    816813  (check-nargs 1)
    817   (ref-global tenured-area temp0)
    818   (movl (@ target::area.low (% temp0)) (% imm0))
    819   (leal (@ target::fulltag-cons (% imm0) (% n) 2) (% arg_z))
     814  (subl ($ '128) (% arg_z))
     815  (ref-global static-cons-area temp0)
     816  (movl (@ target::area.high (% temp0)) (% imm0))
     817  (subl (% arg_z) (% imm0))
     818  (subl (% arg_z) (% imm0))
     819  (lea (@ x8632::fulltag-cons (% imm0)) (% arg_z))
    820820  (single-value-return))
    821821
  • branches/purify/source/level-0/X86/X8632/x8632-utils.lisp

    r12837 r13242  
    418418  (jmp-subprim .SPnvalret))
    419419
     420(defx8632lapfunction %ensure-static-conses ()
     421  (check-nargs 0)
     422  (movl ($ arch::gc-trap-function-ensure-static-conses) (% imm0))
     423  (uuo-gc-trap)
     424  (movl ($ (target-nil-value)) (% arg_z))
     425  (single-value-return))
     426
    420427;;; offset is a fixnum, one of the x8632::kernel-import-xxx constants.
    421428;;; Returns that kernel import, a fixnum.
Note: See TracChangeset for help on using the changeset viewer.