fixnum-shift-fast subprimitive
							parent
							
								
									1aefde994f
								
							
						
					
					
						commit
						dd20b39cd6
					
				| 
						 | 
					@ -302,6 +302,21 @@ big-endian off
 | 
				
			||||||
    ds-reg [] arg0 MOV                         ! save
 | 
					    ds-reg [] arg0 MOV                         ! save
 | 
				
			||||||
] f f f \ fixnum-bitnot define-sub-primitive
 | 
					] f f f \ fixnum-bitnot define-sub-primitive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					    ECX ds-reg [] MOV                          ! load shift count
 | 
				
			||||||
 | 
					    ECX tag-bits get SHR                       ! untag shift count
 | 
				
			||||||
 | 
					    ds-reg bootstrap-cell SUB                  ! adjust stack pointer
 | 
				
			||||||
 | 
					    arg0 ds-reg [] MOV                         ! load value
 | 
				
			||||||
 | 
					    arg1 arg0 MOV                              ! make a copy
 | 
				
			||||||
 | 
					    arg1 CL SHL                                ! compute positive shift value in arg1
 | 
				
			||||||
 | 
					    ECX NEG                                    ! compute negative shift value in arg0
 | 
				
			||||||
 | 
					    arg0 CL SHR
 | 
				
			||||||
 | 
					    arg0 tag-mask get bitnot AND
 | 
				
			||||||
 | 
					    ECX 0 CMP                                  ! if shift count was negative, move arg0 to arg1
 | 
				
			||||||
 | 
					    arg1 arg0 CMOVLE
 | 
				
			||||||
 | 
					    ds-reg [] arg1 MOV                         ! push to stack
 | 
				
			||||||
 | 
					] f f f \ fixnum-shift-fast define-sub-primitive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[
 | 
					[
 | 
				
			||||||
    arg0 ds-reg [] MOV                         ! load local number
 | 
					    arg0 ds-reg [] MOV                         ! load local number
 | 
				
			||||||
    fixnum>slot@                               ! turn local number into offset
 | 
					    fixnum>slot@                               ! turn local number into offset
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue