Branch: Tag:

2001-09-29

2001-09-29 06:19:28 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

reworked trampolines to cause less circular references, solves [bug 1937 (#1937)]

Rev: src/apply_low.h:1.4
Rev: src/docode.c:1.134
Rev: src/interpret_functions.h:1.95
Rev: src/language.yacc:1.262
Rev: src/las.c:1.269
Rev: src/las.h:1.53
Rev: src/pike_types.h:1.73
Rev: src/program.c:1.378

1:   /* -  * $Id: interpret_functions.h,v 1.94 2001/09/28 00:01:44 hubbe Exp $ +  * $Id: interpret_functions.h,v 1.95 2001/09/29 06:19:27 hubbe Exp $    *    * Opcode definitions for the interpreter.    */
274:    print_return_value();   });    - OPCODE1(F_TRAMPOLINE, "trampoline", { + OPCODE2(F_TRAMPOLINE, "trampoline", {    struct object *o=low_clone(pike_trampoline_program); -  add_ref( ((struct pike_trampoline *)(o->storage))->frame=Pike_fp ); +  struct pike_frame *f=Pike_fp; +  while(arg2--) f=f->scope; +  add_ref( ((struct pike_trampoline *)(o->storage))->frame=f );    ((struct pike_trampoline *)(o->storage))->func=arg1+Pike_fp->context.identifier_level;    push_object(o);    /* Make it look like a function. */