Branch: Tag:


1999-01-31 09:03:50 by Fredrik Hübinette (Hubbe) <>

lexical closures implemented...

Rev: src/ChangeLog:1.160
Rev: src/alloca.c:1.3
Rev: src/block_alloc.h:1.5
Rev: src/block_alloc_h.h:1.1
Rev: src/builtin_functions.c:1.146
Rev: src/callback.c:1.16
Rev: src/dmalloc.h:1.9
Rev: src/docode.c:1.43
Rev: src/error.c:1.23
Rev: src/error.h:1.27
Rev: src/interpret.c:1.113
Rev: src/interpret.h:1.26
Rev: src/language.yacc:1.109
Rev: src/las.c:1.73
Rev: src/las.h:1.18
Rev: src/lex.c:1.61
Rev: src/main.c:1.62
Rev: src/modules/call_out/call_out.c:1.24
Rev: src/object.c:1.55
Rev: src/
Rev: src/pike_memory.c:1.29
Rev: src/pike_memory.h:1.8
Rev: src/program.c:1.107
Rev: src/program.h:1.48
Rev: src/
Rev: src/threads.h:1.61

4:   ||| See the files COPYING and DISCLAIMER for more information.   \*/   #include "global.h" - RCSID("$Id: builtin_functions.c,v 1.145 1999/01/21 09:14:58 hubbe Exp $"); + RCSID("$Id: builtin_functions.c,v 1.146 1999/01/31 09:01:40 hubbe Exp $");   #include "interpret.h"   #include "svalue.h"   #include "pike_macros.h"
280:   void f_backtrace(INT32 args)   {    INT32 frames; -  struct frame *f,*of; +  struct pike_frame *f,*of;    struct array *a,*i;       frames=0;    if(args) pop_n_elems(args); -  for(f=fp;f;f=f->parent_frame) frames++; +  for(f=fp;f;f=f->next) frames++;       sp->type=T_ARRAY;    sp->u.array=a=allocate_array_no_init(frames,0);    sp++;    -  /* NOTE: The first frame is ignored, since it is the call to backtrace(). */ +  /* NOTE: The first pike_frame is ignored, since it is the call to backtrace(). */    of=0; -  for(f=fp;f;f=(of=f)->parent_frame) +  for(f=fp;f;f=(of=f)->next)    {    char *program_name;