removing dead module

This commit is contained in:
Danny Yoo 2011-03-20 22:13:42 -04:00
parent b1384b71dd
commit 80ad749022
7 changed files with 11 additions and 201 deletions

View File

@ -2,14 +2,8 @@
(require "expression-structs.rkt"
"lexical-structs.rkt"
"il-structs.rkt"
"lexical-env.rkt"
"helpers.rkt"
"find-toplevel-variables.rkt"
"sets.rkt"
"compile.rkt"
"typed-parse.rkt"
racket/list)
"typed-parse.rkt")
(provide get-bootstrapping-code)
@ -46,14 +40,13 @@
,(make-AssignPrimOpStatement (adjust-target-depth (make-EnvLexicalReference 0 #f) 2)
(make-MakeCompiledProcedure call/cc-closure-entry
1 ;; the continuation consumes a single value
(list (make-EnvLexicalReference 0 #f)
(make-EnvLexicalReference 1 #f))
(list 0 1)
'call/cc))
,(make-PopEnvironment 2 0)))
;; Finally, do a tail call into f.
(compile-procedure-call '()
(extend-lexical-environment/placeholders '() 1)
(compile-procedure-call 0
1
1
'val
'return)

View File

@ -158,8 +158,7 @@
(define (compile-toplevel-set exp cenv target linkage)
(let* ([var (ToplevelSet-name exp)]
[lexical-pos (make-EnvPrefixReference (ToplevelSet-depth exp)
(ToplevelSet-pos exp)
(ToplevelSet-name exp))])
(ToplevelSet-pos exp))])
(let ([get-value-code
(parameterize ([current-defined-name var])
(compile (ToplevelSet-value exp) cenv lexical-pos
@ -225,7 +224,7 @@
target
(make-MakeCompiledProcedure proc-entry
(Lam-num-parameters exp)
(map make-Const (Lam-closure-map exp))
(Lam-closure-map exp)
(current-defined-name))))))
(compile-lambda-body exp proc-entry)
after-lambda)))
@ -354,7 +353,7 @@
(: compile-proc-appl (CompileTimeEnvironment Natural Target Linkage -> InstructionSequence))
(: compile-proc-appl (Natural Natural Target Linkage -> InstructionSequence))
;; Three fundamental cases for general compiled-procedure application.
;; 1. Non-tail calls that write to val
;; 2. Calls in argument position that write to the environment
@ -438,7 +437,7 @@
(: compile-let-void (LetVoid CompileTimeEnvironment Target Linkage -> InstructionSequence))
(: compile-let-void (LetVoid Natural Target Linkage -> InstructionSequence))
(define (compile-let-void exp cenv target linkage)
(let*: ([n : Natural (LetVoid-count exp)]
[after-let : Symbol (make-label 'afterLet)]

View File

@ -1,68 +0,0 @@
#lang typed/racket/base
(require "typed-structs.rkt"
"lexical-env.rkt"
"find-toplevel-variables.rkt")
(: find-boxed-bindings (Expression -> (HashTable Expression Boolean)))
;; Collects the list of toplevel variables we need.
(define (find-boxed-bindings exp)
(: ht (HashTable Expression Boolean))
(define ht (make-hasheq))
(: loop (Expression CompileTimeEnvironment -> 'ok))
(define (loop exp cenv)
(cond
[(Constant? exp)
'ok]
[(Quote? exp)
'ok]
[(Var? exp)
'ok]
[(Assign? exp)
(let ([lexical-address
(find-variable (Assign-variable exp) cenv)])
(cond
[(LocalAddress? lexical-address)
(hash-set! ht exp #t)
'ok]
[(PrefixAddress? lexical-address)
'ok]))
(loop (Assign-value exp) cenv)]
[(Def? exp)
(loop (Def-value exp) cenv)]
[(Branch? exp)
(loop (Branch-predicate exp) cenv)
(loop (Branch-consequent exp) cenv)
(loop (Branch-alternative exp) cenv)
'ok]
[(Lam? exp)
(let ([extended-cenv
(extend-lexical-environment cenv (Lam-parameters exp))])
(for-each (lambda: ([e : Expression]) (loop e extended-cenv))
(Lam-body exp))
'ok)]
[(Seq? exp)
(for-each (lambda: ([e : Expression]) (loop e cenv)) (Seq-actions exp))
'ok]
[(App? exp)
(loop (App-operator exp) cenv)
(for-each (lambda: ([e : Expression]) (loop e cenv)) (App-operands exp))
'ok]))
(let*: ([names : (Listof Symbol) (find-toplevel-variables exp)]
[cenv : CompileTimeEnvironment (list (make-Prefix names))])
(loop exp cenv))
ht)

View File

@ -1,67 +0,0 @@
#lang typed/racket/base
(require "expression-structs.rkt"
"lexical-structs.rkt"
"helpers.rkt"
racket/list)
(provide find-toplevel-variables)
(: find-toplevel-variables (ExpressionCore -> (Listof Symbol)))
;; Collects the list of toplevel variables we need.
(define (find-toplevel-variables exp)
(: loop (ExpressionCore -> (Listof Symbol)))
(define (loop exp)
(cond
[(Top? exp)
(list-difference (loop (Top-code exp))
(filter symbol? (Prefix-names (Top-prefix exp))))]
[(Constant? exp)
empty]
[(Var? exp)
(list (Var-id exp))]
[(Def? exp)
(cons (Def-variable exp)
(loop (Def-value exp)))]
[(Branch? exp)
(append (loop (Branch-predicate exp))
(loop (Branch-consequent exp))
(loop (Branch-alternative exp)))]
[(Lam? exp)
(list-difference (loop (Lam-body exp))
(Lam-parameters exp))]
[(Seq? exp)
(apply append (map loop (Seq-actions exp)))]
[(App? exp)
(append (loop (App-operator exp))
(apply append (map loop (App-operands exp))))]
[(Let1? exp)
(append (loop (Let1-rhs exp))
(list-difference (loop (Let1-body exp))
(list (Let1-name exp))))]
[(Let? exp)
(append (apply append (map loop (Let-rhss exp)))
(list-difference (loop (Let-body exp))
(Let-names exp)))]
[(LetRec? exp)
(append (apply append (map (lambda: ([rhs : ExpressionCore])
(list-difference (loop rhs)
(LetRec-names exp)))
(LetRec-rhss exp)))
(list-difference (loop (LetRec-body exp))
(LetRec-names exp)))]
#;[(Letrec? exp)
(list-difference (append (apply append (map loop (Letrec-procs exp)))
(loop (Letrec-body exp)))
(Letrec-names exp))]))
(unique/eq? (loop exp)))

View File

@ -131,7 +131,7 @@
;; closure needs to close over.
(define-struct: MakeCompiledProcedure ([label : Symbol]
[arity : Natural]
[closed-vals : (Listof EnvReference)]
[closed-vals : (Listof Natural)]
[display-name : (U Symbol False)])
#:transparent)
@ -177,8 +177,7 @@
;; Check that the value in the prefix has been defined.
;; If not, raise an error and stop evaluation.
(define-struct: CheckToplevelBound! ([depth : Natural]
[pos : Natural]
[name : Symbol])
[pos : Natural])
#:transparent)
;; Check the closure procedure value in 'proc and make sure it can accept n values.

View File

@ -1,6 +1,6 @@
#lang racket
(require "test-find-toplevel-variables.rkt"
(require "test-parse.rkt"
"test-simulator.rkt"
"test-compiler.rkt"
"test-assemble.rkt"

View File

@ -1,46 +0,0 @@
#lang racket
(require "find-toplevel-variables.rkt"
"parse.rkt")
;; test-find-toplevel-variables
(define-syntax (test stx)
(syntax-case stx ()
[(_ s exp)
(with-syntax ([stx stx])
(syntax/loc #'stx
(let ([results (find-toplevel-variables (parse s))])
(unless (equal? results exp)
(raise-syntax-error #f (format "Expected ~s, got ~s" exp results)
#'stx)))))]))
(test '(define (factorial n)
(if (= n 0)
1
(* (factorial (- n 1))
n)))
'(* - = factorial))
(test '(begin
(define (factorial n)
(fact-iter n 1))
(define (fact-iter n acc)
(if (= n 0)
acc
(fact-iter (- n 1) (* acc n)))))
'(* - = fact-iter factorial))
(test '(define (gauss n)
(if (= n 0)
0
(+ (gauss (- n 1))
n)))
'(+ - = gauss))
(test '(define (fib n)
(if (< n 2)
1
(+ (fib (- n 1))
(fib (- n 2)))))
'(+ - < fib))