- (let ((cons-cells (if star (1- num) num)))
- (pseudo-atomic (pa-flag
- :extra (* (pad-data-block cons-size)
- cons-cells))
- (inst or res alloc-tn list-pointer-lowtag)
+ (let* ((dx-p (node-stack-allocate-p node))
+ (cons-cells (if star (1- num) num))
+ (alloc (* (pad-data-block cons-size) cons-cells)))
+ (pseudo-atomic (pa-flag :extra (if dx-p 0 alloc))
+ (when dx-p
+ (align-csp res))
+ (inst srl res (if dx-p csp-tn alloc-tn) n-lowtag-bits)
+ (inst sll res n-lowtag-bits)
+ (inst or res list-pointer-lowtag)
+ (when dx-p
+ (inst addu csp-tn alloc))