Branch: Tag:

2004-07-16

2004-07-16 14:38:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Made eat_stack() eat less C stack.

Rev: src/testsuite.in:1.737

1:   START_MARKER - test_true([["$Id: testsuite.in,v 1.736 2004/07/04 22:31:10 nilsson Exp $"]]); + test_true([["$Id: testsuite.in,v 1.737 2004/07/16 14:38:36 grubba Exp $"]]);      // This triggered a bug only if run sufficiently early.   test_compile_any([[#pike 7.2]])
780:    }    }    -  mixed eat_stack(int|void cnt) +  mixed eat_stack(int|void probe)    { -  +  // Avoid eating as much C-stack by releasing the +  // catch at every level. +  if (probe) return 1; +  if (catch(eat_stack(1))) return 1;    mixed err = 1; -  // Avoid eating C-stack by adding a catch context only every -  // 10th frame. -  if ((cnt && ((err = eat_stack(cnt-1)) != 10)) || -  (!cnt && (catch(err = eat_stack(10)) || err != 10))) -  return intp (err) && err > 0 ? err + 1 : err; +  if ((err = eat_stack()) != 10) +  return intp(err) && err > 0 ? err + 1 : err;    if (err = catch {       Foo foo;
4831:    ]])       test_do([[ -  mixed eat_stack(int|void cnt) +  mixed eat_stack(int|void probe)    { -  +  // Avoid eating as much C-stack by releasing the +  // catch at every level. +  if (probe) return 1; +  if (catch(eat_stack(1))) return 1;    mixed err = 1; -  // Avoid eating C-stack by adding a catch context only every -  // 10th frame. -  if ((cnt && ((err = eat_stack(cnt-1)) != 10)) || -  (!cnt && (catch(err = eat_stack(10)) || err != 10))) -  return intp (err) && err ? err + 1 : err; +  if ((err = eat_stack()) != 10) +  return intp(err) && err > 0 ? err + 1 : err;    if (err = catch {    class Foo    {