cyclone/debug/compilation/cyclone-cps.scm
Justin Ethier b689a3bcde WIP
2016-03-09 03:46:27 -05:00

686 lines
97 KiB
Scheme

; may need to look at closure output, but consider __lambda_229
; seems like it is unnecessary. could it have been optimized out?
CHICKEN
(c)2008-2011 The Chicken Team
(c)2000-2007 Felix L. Winkelmann
Version 4.7.0
linux-unix-gnu-x86 [ manyargs dload ptables ]
compiled 2011-10-17 on roseapple (Linux)
; loading tmp2.scm ...
((define c-compile-and-emit
(lambda (k$178 input-program$73 lib-deps$72 src-file$71)
((lambda (globals$80
imported-vars$79
imports$78
lib-exports$77
lib-name$76
module-globals$75
program?$74)
((lambda (r$179) (call/cc k$178 r$179))
(lambda (k$180 return$81)
((lambda (globals$88
module-globals$87
program?$86
imports$85
imported-vars$84
lib-name$83
lib-exports$82)
((lambda (r$329)
((lambda (r$181)
((lambda (r$328)
((lambda (r$182)
((lambda (r$183)
((lambda (r$327)
((lambda (r$184)
((lambda (r$326)
((lambda (r$185)
((lambda (r$325)
((lambda (r$186)
((lambda (r$324)
((lambda (r$187)
(emit (lambda (r$188)
(trace:info
(lambda (r$189)
(trace:info
(lambda (r$190)
((lambda (k$290)
((lambda (r$323)
(library?
(lambda (r$291)
(if r$291
((lambda ()
((lambda (r$316)
(lib:includes
(lambda (r$292)
((lambda (includes$97)
((lambda (r$293)
((lambda (r$315)
(lib:name
(lambda (r$314)
((lambda (r$294)
(lib:name->symbol
(lambda (r$311)
((lambda (r$313)
(lib:exports
(lambda (r$312)
((lambda (r$310)
((lambda (r$295)
((lambda (r$309)
(lib:imports
(lambda (r$308)
((lambda (r$296)
((lambda (r$307)
(lib:body
(lambda (r$306)
((lambda (r$297)
((lambda (r$305)
(not (lambda (r$298)
(if r$298
((lambda (r$299)
(for-each k$290 r$299 includes$97))
(lambda (k$300 include$98)
(lib:import->path
(lambda (r$304)
((lambda (r$303)
(read-file
(lambda (r$302)
(append
(lambda (r$301)
(k$300 (set! input-program$73 r$301)))
r$302
input-program$73))
r$303))
(string-append r$304 include$98)))
lib-name$83)))
(k$290 #f)))
r$305))
(null? includes$97)))
(set! input-program$73 r$306)))
r$307))
(car input-program$73)))
(set! imports$85 r$308)))
r$309))
(car input-program$73)))
(set! lib-exports$82 r$310)))
(cons r$311 r$312)))
r$313))
(car input-program$73)))
lib-name$83))
(set! lib-name$83 r$314)))
r$315))
(car input-program$73)))
(set! program?$86 #f)))
r$292))
r$316))
(car input-program$73))))
((lambda (r$321)
((lambda (r$322)
(tagged-list?
(lambda (r$317)
(if r$317
((lambda ()
((lambda (r$320)
((lambda (r$318)
((lambda (r$319)
(k$290 (set! input-program$73 r$319)))
(cdr input-program$73)))
(set! imports$85 r$320)))
(cdar input-program$73))))
(k$290 #f)))
r$321
r$322))
(car input-program$73)))
'import)))
r$323))
(car input-program$73)))
(lambda (r$191)
(trace:info
(lambda (r$192)
(trace:info
(lambda (r$193)
(lib:resolve-imports
(lambda (r$289)
((lambda (r$194)
(trace:info
(lambda (r$195)
(trace:info
(lambda (r$196)
(lib:resolve-meta
(lambda (r$285)
((lambda (meta$96)
(append
(lambda (r$288)
((lambda (r$286)
(trace:info
(lambda (r$287)
(trace:info
(lambda (r$197)
((lambda (r$280)
((lambda (r$281)
(filter
(lambda (r$278)
((lambda (macros$95)
(append
(lambda (r$279)
((lambda (r$198)
((lambda (r$276)
((lambda (r$277)
(create-environment
(lambda (r$275)
(macro:load-env!
(lambda (r$199)
((lambda (k$274)
(if program?$86
(k$274 expand-lambda-body)
(k$274 expand)))
(lambda (r$272)
(macro:get-env
(lambda (r$273)
(r$272 (lambda (r$271)
((lambda (r$200)
(trace:info
(lambda (r$201)
(trace:info
(lambda (r$202)
(isolate-globals
(lambda (r$270)
((lambda (r$203)
((lambda (k$265)
((lambda (r$269)
(has-global?
(lambda (r$268)
(not (lambda (r$266)
(if r$266
(filter-unused-variables
(lambda (r$267)
(k$265 (set! input-program$73 r$267)))
input-program$73
lib-exports$82)
(k$265 #f)))
r$268))
input-program$73
r$269))
'eval))
(lambda (r$204)
(trace:info
(lambda (r$205)
(trace:info
(lambda (r$206)
(global-vars
(lambda (r$264)
((lambda (r$207)
(append
(lambda (r$263)
((lambda (r$208)
((lambda (r$261)
(map (lambda (r$260)
((lambda (r$209)
(trace:info
(lambda (r$210)
(trace:info
(lambda (r$211)
((lambda (r$258)
(map (lambda (r$245)
((lambda (cps$92)
((lambda (k$246)
((lambda (k$256)
(if library?
((lambda (r$257)
(k$256 (equal? lib-name$83 r$257)))
'(scheme base))
(k$256 #f)))
(lambda (r$247)
(if r$247
((lambda ()
((lambda (r$255)
(append
(lambda (r$254)
((lambda (r$248)
((lambda (r$253)
(append
(lambda (r$252)
((lambda (r$249)
((lambda (r$251)
((lambda (r$250)
(k$246 (set! input-program$73 r$250)))
(cons r$251 cps$92)))
'(define call/cc
(lambda (k f)
(f k (lambda (_ result) (k result)))))))
(set! module-globals$87 r$252)))
r$253
module-globals$87))
'(call/cc)))
(set! globals$88 r$254)))
r$255
globals$88))
'(call/cc))))
((lambda ()
(k$246 (set! input-program$73 cps$92))))))))
(lambda (r$212)
(trace:info
(lambda (r$213)
(trace:info
(lambda (r$214)
((lambda (r$241)
(map (lambda (r$240)
((lambda (r$215)
(trace:info
(lambda (r$216)
(trace:info
(lambda (r$217)
((lambda (r$229)
(map (lambda (r$228)
((lambda (r$218)
(trace:info
(lambda (r$219)
(trace:info
(lambda (r$220)
((lambda (k$225)
(not (lambda (r$226)
(if r$226
((lambda ()
(trace:error
(lambda (r$227) (k$225 (exit 0)))
"DEBUG, existing program")))
(k$225 #f)))
*do-code-gen*))
(lambda (r$221)
(trace:info
(lambda (r$222)
(mta:code-gen
(lambda (r$223)
((lambda (r$224) (return$81 k$180 r$224)) '()))
input-program$73
program?$86
lib-name$83
lib-exports$82
imported-vars$84
module-globals$87
lib-deps$72
src-file$71))
"---------------- C code:"))))
input-program$73))
"---------------- after closure-convert:"))
(set! input-program$73 r$228)))
r$229
input-program$73))
(lambda (k$230 expr$89)
(define?
(lambda (r$231)
(if r$231
((lambda ()
((lambda (r$232)
(define->var
(lambda (r$234)
(define->exp
(lambda (r$237)
(closure-convert
(lambda (r$236)
((lambda (r$235)
((lambda (r$233) (k$230 (cons r$232 r$233)))
(cons r$234 r$235)))
(caddr r$236)))
r$237
globals$88))
expr$89))
expr$89))
'define)))
(define-c?
(lambda (r$238)
(if r$238
((lambda () (k$230 expr$89)))
((lambda ()
(closure-convert
(lambda (r$239) (k$230 (caddr r$239)))
expr$89
globals$88)))))
expr$89)))
expr$89))))
input-program$73))
"---------------- after wrap-mutables:"))
(set! input-program$73 r$240)))
r$241
input-program$73))
(lambda (k$242 expr$90)
(clear-mutables
(lambda (r$243)
(analyze-mutable-variables
(lambda (r$244)
(wrap-mutables k$242 expr$90 globals$88))
expr$90))))))
input-program$73))
"---------------- after CPS:"))))
r$245))
r$258
input-program$73))
(lambda (k$259 expr$91)
(cps-convert k$259 expr$91))))
input-program$73))
"---------------- after alpha conversion:"))
(set! input-program$73 r$260)))
r$261
input-program$73))
(lambda (k$262 expr$93)
(alpha-convert
k$262
expr$93
globals$88
return$81))))
(set! globals$88 r$263)))
imported-vars$84
module-globals$87))
(set! module-globals$87 r$264)))
input-program$73))
input-program$73))
"---------------- after processing globals"))))
(set! input-program$73 r$270)))
input-program$73
program?$86
lib-name$83))
input-program$73))
"---------------- after macro expansion:"))
(set! input-program$73 r$271)))
input-program$73
r$273))))))
*defined-macros*
r$275))
r$276
r$277))
'()))
'()))
(set! *defined-macros* r$279)))
macros$95
*defined-macros*))
r$278))
r$280
r$281))
(Cyc-global-vars)))
(lambda (k$282 v$94)
((lambda (r$284)
((lambda (r$283) (k$282 (macro? r$283)))
(Cyc-get-cvar r$284)))
(cdr v$94)))))
meta$96))
"resolved macros:"))
(set! *defined-macros* r$288)))
meta$96
*defined-macros*))
r$285))
imports$85))
imported-vars$84))
"resolved imports:"))
(set! imported-vars$84 r$289)))
imports$85))
imports$85))
"imports:"))))
input-program$73))
"---------------- input program:"))
*c-file-header-comment*))
(set! lib-exports$82 r$324)))
'()))
(set! lib-name$83 r$325)))
'()))
(set! imported-vars$84 r$326)))
'()))
(set! imports$85 r$327)))
'()))
(set! program?$86 #t)))
(set! module-globals$87 r$328)))
'()))
(set! globals$88 r$329)))
'()))
#f
#f
#f
#f
#f
#f
#f))))
#f
#f
#f
#f
#f
#f
#f)))
(define read-file
(lambda (k$173 filename$69)
((lambda (r$174) (call-with-input-file k$173 filename$69 r$174))
(lambda (k$175 port$70) (read-all k$175 port$70)))))
(define run-compiler
(lambda (k$130 args$53 cc?$52)
((lambda (r$131)
((lambda (in-file$54)
(read-file
(lambda (r$132)
((lambda (in-prog$55)
((lambda (r$170)
(library?
(lambda (r$169)
(not (lambda (r$133)
((lambda (program?$56)
((lambda (k$163)
((lambda (k$166)
(if program?$56
((lambda (r$167)
((lambda (r$168) (tagged-list? k$166 r$167 r$168))
(car in-prog$55)))
'import)
(k$166 #f)))
(lambda (r$164)
(if r$164
((lambda (r$165)
(lib:get-all-import-deps k$163 r$165))
(cdar in-prog$55))
(k$163 '())))))
(lambda (r$134)
((lambda (lib-deps$57)
(basename
(lambda (r$135)
((lambda (exec-file$58)
((lambda (r$136)
((lambda (src-file$59)
((lambda (r$137)
((lambda (meta-file$60)
((lambda (r$138)
((lambda (create-c-file$62)
(create-c-file$62
(lambda (r$139)
((lambda (result$63)
((lambda ()
(if program?$56
((lambda ()
((lambda (objs-str$67 comp-prog-cmd$66 comp-objs-cmd$65)
((lambda (r$150)
(map (lambda (r$149)
((lambda (r$148)
((lambda (r$140)
((lambda (r$147)
((lambda (r$141)
((lambda (r$146)
((lambda (r$142)
(if cc?$52
((lambda ()
((lambda (r$144)
((lambda (r$143)
(if r$143
(k$130 (system comp-objs-cmd$65))
(k$130 #f)))
(equal? 0 r$144)))
(system comp-prog-cmd$66))))
((lambda ()
(write (lambda (r$145) (write k$130 comp-objs-cmd$65))
comp-prog-cmd$66)))))
(set! comp-objs-cmd$65 r$146)))
(string-append
"gcc "
exec-file$58
".o "
objs-str$67
" -pthread -lcyclone -lck -lm -g -o "
exec-file$58)))
(set! comp-prog-cmd$66 r$147)))
(string-append
"gcc "
src-file$59
" -g -c -o "
exec-file$58
".o")))
(set! objs-str$67 r$148)))
(apply string-append r$149)))
r$150
lib-deps$57))
(lambda (k$151 i$68)
(lib:import->filename
(lambda (r$152)
(k$151 (string-append " " r$152 " ")))
i$68
".o"))))
#f
#f
#f)))
((lambda ()
((lambda (r$155)
(with-output-to-file
(lambda (r$153)
((lambda (r$154)
((lambda (comp-lib-cmd$64)
(if cc?$52
((lambda () (k$130 (system comp-lib-cmd$64))))
((lambda () (write k$130 comp-lib-cmd$64)))))
r$154))
(string-append
"gcc "
src-file$59
" -g -c -o "
exec-file$58
".o")))
meta-file$60
r$155))
(lambda (k$156)
(display
(lambda (r$157)
(newline
(lambda (r$158)
(macro:get-defined-macros
(lambda (r$159) (write k$156 r$159))))))
";; This file was automatically generated by the Cyclone Scheme compiler")))))))))
r$139))
in-prog$55))
r$138))
(lambda (k$160 program$61)
((lambda (r$161)
(with-output-to-file k$160 src-file$59 r$161))
(lambda (k$162)
(c-compile-and-emit
k$162
program$61
lib-deps$57
in-file$54))))))
r$137))
(string-append exec-file$58 ".meta")))
r$136))
(string-append exec-file$58 ".c")))
r$135))
in-file$54))
r$134))))
r$133))
r$169))
r$170))
(car in-prog$55)))
r$132))
in-file$54))
r$131))
(car args$53))))
((lambda ()
((lambda (r$99)
((lambda (r$100)
((lambda (r$101)
((lambda (args$47)
((lambda (r$121)
(filter
(lambda (r$102)
((lambda (non-opts$49)
((lambda (compile?$50)
((lambda ()
((lambda (k$119)
((lambda (r$120)
(if r$120
(k$119 (set! *trace-level* 4))
(k$119 #f)))
(member "-t" args$47)))
(lambda (r$103)
((lambda (k$117)
((lambda (r$118)
(if r$118
(k$117 (set! compile?$50 #f))
(k$117 #f)))
(member "-d" args$47)))
(lambda (r$104)
((lambda (r$116)
((lambda (r$105)
(if r$105
((lambda ()
(display
(lambda (r$106) (newline %halt))
"cyclone: no input file")))
((lambda (r$114)
((lambda (tmp$51)
((lambda (k$115)
(if tmp$51
(k$115 tmp$51)
(k$115 (member "--help" args$47))))
(lambda (r$107)
(if r$107
((lambda ()
(display
(lambda (r$108) (newline %halt))
"\n -t Show intermediate trace output in generated C files\n -d Only generate intermediate C files, do not compile them\n -h, --help Display usage information\n -v Display version information\n --autogen Cyclone developer use only, create autogen.out file\n")))
((lambda (r$109)
(if r$109
((lambda () (display %halt *version-banner*)))
((lambda (r$110)
(if r$110
((lambda ()
(autogen
(lambda (r$111) (newline %halt))
"autogen.out")))
((lambda (r$112)
(if r$112
((lambda () (display %halt *version-banner*)))
((lambda (r$113)
(if r$113
((lambda () (autogen %halt "autogen.out")))
((lambda ()
(run-compiler %halt non-opts$49 compile?$50)))))
(member "--autogen" args$47))))
(member "-v" args$47))))
(member "--autogen" args$47))))
(member "-v" args$47))))))
r$114))
(member "-h" args$47))))
(< r$116 1)))
(length args$47)))))))))
#t))
r$102))
r$121
args$47))
(lambda (k$122 arg$48)
((lambda (k$124)
((lambda (r$127)
((lambda (r$125)
(if r$125
((lambda (r$126) (k$124 (equal? #\- r$126)))
(string-ref arg$48 0))
(k$124 #f)))
(> r$127 1)))
(string-length arg$48)))
(lambda (r$123) (not k$122 r$123))))))
r$101))
(command-line-arguments)))
#f))
0))))
#;1>