pike.git / src / interpret.h

version» Context lines:

pike.git/src/interpret.h:272:    * by tailcall optimizations. This is usually the case    * when one frame is used repeatedly, e.g. in f_map()    */   #define PIKE_FRAME_NO_REUSE 4   #define PIKE_FRAME_SAVE_LOCALS 0x4000 /* save_locals_bitmask is set */   #define PIKE_FRAME_MALLOCED_LOCALS 0x8000      #define PIKE_FRAME_RETURN_MASK (PIKE_FRAME_RETURN_INTERNAL|PIKE_FRAME_RETURN_POP)   #define PIKE_FRAME_LOCALS_MASK (PIKE_FRAME_SAVE_LOCALS|PIKE_FRAME_MALLOCED_LOCALS)    + /* This is true if the frame can be reused by the _tailcall variants. Some cases where +  * the stack frame cannot be reused is when +  * +  * 1) a trampoline has a reference to the frame +  * 2) map() or similar are going to reuse the same frame +  * for further iterations +  * +  */ + static inline int frame_can_reuse(const struct pike_frame *frame) { +  return !(frame->flags & PIKE_FRAME_NO_REUSE) && frame->refs == 1; + } +    struct external_variable_context   {    struct object *o;    struct inherit *inherit;    int parent_identifier;   };