pike.git / src / interpret.h

version» Context lines:

pike.git/src/interpret.h:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/      /* -  * $Id: interpret.h,v 1.87 2001/06/08 16:25:48 grubba Exp $ +  * $Id: interpret.h,v 1.88 2001/06/08 21:31:15 grubba Exp $    */   #ifndef INTERPRET_H   #define INTERPRET_H      #include "global.h"   #include "program.h"   #include "pike_error.h"      #ifdef SHORT_PIKE_OPCODE   #define PIKE_OPCODE_T unsigned INT16
pike.git/src/interpret.h:262:    static int fun_, master_cnt=0; \    struct object *master_ob=master(); \    if(master_cnt != master_ob->prog->id) \    { \    fun_=find_identifier(FUN,master_ob->prog); \    master_cnt = master_ob->prog->id; \    } \    safe_apply_low(master_ob, fun_, ARGS); \   }while(0)    + #define SAFE_APPLY_HANDLER(FUN, HANDLER, COMPAT, ARGS) do { \ +  static int h_fun_=-1, h_id_=0; \ +  static int c_fun_=-1, c_fun_id_=0; \ +  struct object *h_=(HANDLER), *c_=(COMPAT); \ +  if (h_) { \ +  if (h_->prog->id != h_id_) { \ +  h_fun_ = find_identifier(fun, h_->prog); \ +  h_id_ = h_->prog->id; \ +  } \ +  if (h_fun_ != -1) { \ +  safe_apply_low(h_, h_fun_, ARGS); \ +  break; \ +  } \ +  } \ +  if (c_) { \ +  if (c_->prog->id != c_id_) { \ +  c_fun_ = find_identifier(fun, c_->prog); \ +  c_id_ = c_->prog->id; \ +  } \ +  if (c_fun_ != -1) { \ +  safe_apply_low(c_, c_fun_, ARGS); \ +  break; \ +  } \ +  } \ +  SAFE_APPLY_MASTER(FUN, ARGS); \ +  } while(0) +    #define check_threads_etc() \    call_callback(& evaluator_callbacks, (void *)0)      #ifdef PIKE_DEBUG   #define fast_check_threads_etc(X) do { \    static int div_; if(d_flag || !(div_++& ((1<<(X))-1))) check_threads_etc(); } while(0)      #else   #define fast_check_threads_etc(X) do { \    static int div_; if(!(div_++& ((1<<(X))-1))) check_threads_etc(); } while(0)