- 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]
|
||||
[(jmpcall label rator arg*) #t]
|
||||
[(mvcall rator k) #t]
|
||||
[(primcall op arg*) #t] ;;; (ormap A arg*)] PUNT!!! FIXME!
|
||||
[(bind lhs* rhs* body) (or (ormap NonTail rhs*) (NonTail body))]
|
||||
[(fix lhs* rhs* body) (NonTail body)]
|
||||
[(conditional e0 e1 e2) (or (NonTail e0) (NonTail e1) (NonTail e2))]
|
||||
[(seq e0 e1) (or (NonTail e0) (NonTail e1))]
|
||||
[(primcall op arg*) (ormap A arg*)]
|
||||
[(forcall op arg*) (ormap NonTail arg*)]
|
||||
[(known x t v) (NonTail x)]
|
||||
[else (error who "invalid expr" x)]))
|
||||
|
@ -310,7 +310,7 @@
|
|||
[(clambda label case* cp free* name)
|
||||
(make-clambda label (map ClambdaCase case*) cp free* name)]))
|
||||
(define (Main x)
|
||||
(if (Tail x)
|
||||
(if (Tail x)
|
||||
(insert-check x)
|
||||
x))
|
||||
(define (Program x)
|
||||
|
|
|
@ -2339,7 +2339,7 @@
|
|||
[(E)
|
||||
(make-shortcut
|
||||
(make-conditional
|
||||
(make-primcall '<
|
||||
(make-primcall 'u<
|
||||
(list esp (make-primcall 'mref
|
||||
(list pcr (make-constant pcb-frame-redline)))))
|
||||
(make-primcall 'interrupt '())
|
||||
|
|
Loading…
Reference in New Issue