- fixed how stack overflow check is performed (now using unsigned
arithmetic to compare the stack pointer with the redline). - disabled stack overflow check elimination due to a bug in the logic that assumes primitive calls are not recursive.
This commit is contained in:
parent
b9085e15da
commit
9b9464229a
|
@ -276,11 +276,11 @@
|
||||||
[(funcall rator arg*) #t]
|
[(funcall rator arg*) #t]
|
||||||
[(jmpcall label rator arg*) #t]
|
[(jmpcall label rator arg*) #t]
|
||||||
[(mvcall rator k) #t]
|
[(mvcall rator k) #t]
|
||||||
|
[(primcall op arg*) #t] ;;; (ormap A arg*)] PUNT!!! FIXME!
|
||||||
[(bind lhs* rhs* body) (or (ormap NonTail rhs*) (NonTail body))]
|
[(bind lhs* rhs* body) (or (ormap NonTail rhs*) (NonTail body))]
|
||||||
[(fix lhs* rhs* body) (NonTail body)]
|
[(fix lhs* rhs* body) (NonTail body)]
|
||||||
[(conditional e0 e1 e2) (or (NonTail e0) (NonTail e1) (NonTail e2))]
|
[(conditional e0 e1 e2) (or (NonTail e0) (NonTail e1) (NonTail e2))]
|
||||||
[(seq e0 e1) (or (NonTail e0) (NonTail e1))]
|
[(seq e0 e1) (or (NonTail e0) (NonTail e1))]
|
||||||
[(primcall op arg*) (ormap A arg*)]
|
|
||||||
[(forcall op arg*) (ormap NonTail arg*)]
|
[(forcall op arg*) (ormap NonTail arg*)]
|
||||||
[(known x t v) (NonTail x)]
|
[(known x t v) (NonTail x)]
|
||||||
[else (error who "invalid expr" x)]))
|
[else (error who "invalid expr" x)]))
|
||||||
|
@ -310,7 +310,7 @@
|
||||||
[(clambda label case* cp free* name)
|
[(clambda label case* cp free* name)
|
||||||
(make-clambda label (map ClambdaCase case*) cp free* name)]))
|
(make-clambda label (map ClambdaCase case*) cp free* name)]))
|
||||||
(define (Main x)
|
(define (Main x)
|
||||||
(if (Tail x)
|
(if (Tail x)
|
||||||
(insert-check x)
|
(insert-check x)
|
||||||
x))
|
x))
|
||||||
(define (Program x)
|
(define (Program x)
|
||||||
|
|
|
@ -2339,7 +2339,7 @@
|
||||||
[(E)
|
[(E)
|
||||||
(make-shortcut
|
(make-shortcut
|
||||||
(make-conditional
|
(make-conditional
|
||||||
(make-primcall '<
|
(make-primcall 'u<
|
||||||
(list esp (make-primcall 'mref
|
(list esp (make-primcall 'mref
|
||||||
(list pcr (make-constant pcb-frame-redline)))))
|
(list pcr (make-constant pcb-frame-redline)))))
|
||||||
(make-primcall 'interrupt '())
|
(make-primcall 'interrupt '())
|
||||||
|
|
Loading…
Reference in New Issue