Added new stack frame type for preservation frames (restore-regs).
authorStephen Adams <edu/mit/csail/zurich/adams>
Fri, 26 Jul 1996 00:36:11 +0000 (00:36 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Fri, 26 Jul 1996 00:36:11 +0000 (00:36 +0000)
commit9c1501c323df4e43d0a1e3e72611239257f86b37
tree43008b3bd0c17e7958af610a8b82145c0044e06d
parent7a4b37b8df9ebd8dc0a59724a4fc05a3504ea103
Added new stack frame type for preservation frames (restore-regs).
Added a debugging-info method.

Changed the illegal-arg error handler for primitive procedures to
avoid using retry restarts when the primitive signalled a type or
range error when called from compiled code.  This is necessary because
the compiler assumes that if it calls a primitive just to raise an
error then teh primitive will not return.  This assumption allows type
inference to eliminate furthur checks.

In order to stop the debugger returning a value, the primitive should
be called `indirectly' via another compiler procedure which refuses to
return.  I.e instead of compiling the error CAR operation as
INVOKE:PRIMITIVE

  (#[primitive-procedure car] x)

call it like this:

  (signal-primitive-error '#[primitive-procedure car] x)

where SIGNAL-PRIMITIVE-ERROR is compiled like this:

  (define (signal-primitive-error primitive . arguments)
     (apply primitive arguments)
     (error "..."))
v7/src/runtime/uerror.scm
v8/src/runtime/conpar.scm
v8/src/runtime/framex.scm
v8/src/runtime/runtime.pkg