| 33 | #ifdef SimulateExceptions |
| 34 | |
| 35 | void Throw() |
| 36 | { |
| 37 | for (Janitor* jan = JumpBase::jl->janitor; jan; jan = jan->NextJanitor) |
| 38 | jan->CleanUp(); |
| 39 | JumpItem* jx = JumpBase::jl->ji; // previous jumpbase; |
| 40 | if ( !jx ) { Terminate(); } // jl was initial JumpItem |
| 41 | JumpBase::jl = jx; // drop down a level; cannot be in front |
| 42 | // of previous line |
| 43 | Tracer::last = JumpBase::jl->trace; |
| 44 | longjmp(JumpBase::jl->env, 1); |
| 45 | } |
| 46 | |
| 47 | #endif // end of simulate exceptions |
| 48 |