Kick off 0.87 with better callstack underflow handling
parent
f8e2b1112a
commit
f67ee0f315
|
@ -38,7 +38,6 @@
|
||||||
- allow rebinding styles
|
- allow rebinding styles
|
||||||
- fix windows gcc issue
|
- fix windows gcc issue
|
||||||
- robustify stepper -- see if step back past a throw works
|
- robustify stepper -- see if step back past a throw works
|
||||||
- empty callstack: should throw an exception instead of being a critical error
|
|
||||||
|
|
||||||
+ ui:
|
+ ui:
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
IN: kernel
|
IN: kernel
|
||||||
: version "0.86" ;
|
: version "0.87" ;
|
||||||
|
|
|
@ -104,7 +104,5 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
run_toplevel();
|
run_toplevel();
|
||||||
|
|
||||||
critical_error("run_toplevel() returned due to empty callstack",0);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
5
vm/run.c
5
vm/run.c
|
@ -69,8 +69,13 @@ void interpreter_loop(void)
|
||||||
if(callframe_scan == callframe_end)
|
if(callframe_scan == callframe_end)
|
||||||
{
|
{
|
||||||
if(cs_bot - cs == CELLS)
|
if(cs_bot - cs == CELLS)
|
||||||
|
{
|
||||||
|
if(stack_chain->next)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
general_error(ERROR_CS_UNDERFLOW,F,F,false);
|
||||||
|
}
|
||||||
|
|
||||||
callframe_end = get(cs);
|
callframe_end = get(cs);
|
||||||
callframe_scan = get(cs - CELLS);
|
callframe_scan = get(cs - CELLS);
|
||||||
callframe = get(cs - CELLS * 2);
|
callframe = get(cs - CELLS * 2);
|
||||||
|
|
Loading…
Reference in New Issue