Changeset 8229
- Timestamp:
- Jan 20, 2008, 1:20:15 PM (17 years ago)
- Location:
- trunk/source
- Files:
-
- 2 edited
-
level-0/X86/x86-misc.lisp (modified) (1 diff)
-
lib/misc.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/level-0/X86/x86-misc.lisp
r8197 r8229 782 782 783 783 784 (defx86lapfunction %atomic-pop-static-cons () 785 @again 786 (movq (@ (+ x8664::nil-value (x8664::kernel-global static-conses))) (% rax)) 787 (testq ($ x8664::nil-value) (% rax)) 788 (jz @lose) 789 (%cdr rax temp0) 790 (lock) 791 (cmpxchgq (% temp0) (@ (+ x8664::nil-value (x8664::kernel-global static-conses)))) 792 (jnz @again) 793 @lose 794 (movq (% rax) (% arg_z)) 795 (single-value-return)) 784 796 785 797 -
trunk/source/lib/misc.lisp
r8226 r8229 809 809 "Activates collection of garbage conses in the static-conses 810 810 list and allocates initial static conses." 811 (without-interrupts 812 (%lock-gc-lock) 813 ; Another thread might have called initialize already 814 (when (eq (%get-kernel-global 'static-conses) 0) 815 (%set-kernel-global 'static-conses nil)) 816 (%unlock-gc-lock)) 811 ; There might be a race here when multiple threads call this 812 ; function. However, the discarded static conses will become 813 ; garbage and be added right back to the list. No harm here 814 ; except for additional garbage collections. 815 (%set-kernel-global 'static-conses nil) 817 816 (allocate-static-conses)) 818 817 … … 842 841 (when (eq (%get-kernel-global 'static-conses) 0) 843 842 (initialize-static-cons)) 844 (let ((cell (atomic-pop-kernel-global 'static-conses))) 843 (let ((cell #-x8664-target (atomic-pop-kernel-global 'static-conses) 844 #+x8664-target (%atomic-pop-static-cons))) 845 845 (if cell 846 846 (progn
Note:
See TracChangeset
for help on using the changeset viewer.
