* the fasl-reader in the binary handles 'Q' tags (thunks) now.
This commit is contained in:
		
							parent
							
								
									24aa0fffb3
								
							
						
					
					
						commit
						3ba89a0638
					
				
							
								
								
									
										
											BIN
										
									
								
								bin/ikarus
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/ikarus
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -358,7 +358,7 @@ static ikp do_read(ikpcb* pcb, fasl_port* p){ | ||||||
|     } |     } | ||||||
|     return rtd; |     return rtd; | ||||||
|   } |   } | ||||||
|   else if(c == 'T'){ /* thunk */ |   else if(c == 'Q'){ /* thunk */ | ||||||
|     fprintf(stderr, "THUNK\n"); |     fprintf(stderr, "THUNK\n"); | ||||||
|     ikp proc = ik_alloc(pcb, align(disp_closure_data)) + closure_tag; |     ikp proc = ik_alloc(pcb, align(disp_closure_data)) + closure_tag; | ||||||
|     if(put_mark_index){ |     if(put_mark_index){ | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								lib/ikarus.boot
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/ikarus.boot
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -234,6 +234,7 @@ | ||||||
| (define-record clambda (cases)) | (define-record clambda (cases)) | ||||||
| (define-record clambda-code (label cases free)) | (define-record clambda-code (label cases free)) | ||||||
| (define-record closure (code free*)) | (define-record closure (code free*)) | ||||||
|  | (define-record thunk (code)) | ||||||
| (define-record funcall (op rand*)) | (define-record funcall (op rand*)) | ||||||
| (define-record appcall (op rand*)) | (define-record appcall (op rand*)) | ||||||
| (define-record forcall (op rand*)) | (define-record forcall (op rand*)) | ||||||
|  | @ -3892,7 +3893,12 @@ | ||||||
|           (lambda (ls) |           (lambda (ls) | ||||||
|             (for-each (lambda (x) (printf "    ~s\n" x)) ls)) |             (for-each (lambda (x) (printf "    ~s\n" x)) ls)) | ||||||
|           ls*)) |           ls*)) | ||||||
|       (let ([code* (list*->code* (lambda (x) #f) ls*)]) |       (let ([code* (list*->code*  | ||||||
|  |                      (lambda (x)  | ||||||
|  |                        (if (thunk? x) | ||||||
|  |                            (thunk-code x) | ||||||
|  |                            #f)) | ||||||
|  |                      ls*)]) | ||||||
|         (car code*))))) |         (car code*))))) | ||||||
| 
 | 
 | ||||||
| (define compile-file | (define compile-file | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Abdulaziz Ghuloum
						Abdulaziz Ghuloum