Branch: Tag:

2004-06-23

2004-06-23 11:19:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Avoid eating as much C-stack in eat_stack() (reduced by ~1/10).

Rev: src/testsuite.in:1.732

1:   START_MARKER - test_true([["$Id: testsuite.in,v 1.731 2004/06/13 14:24:48 mast Exp $"]]); + test_true([["$Id: testsuite.in,v 1.732 2004/06/23 11:19:56 grubba Exp $"]]);      // This triggered a bug only if run sufficiently early.   test_compile_any([[#pike 7.2]])
780:    }    }    -  mixed eat_stack() +  mixed eat_stack(int|void cnt)    {    mixed err = 1; -  if (catch (err = eat_stack()) || err != 10) +  // 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 = catch {   
4828:    ]])       test_do([[ -  mixed eat_stack() +  mixed eat_stack(int|void cnt)    {    mixed err = 1; -  if (catch (err = eat_stack()) || err != 10) +  // 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 = catch {    class Foo