Branch: Tag:

1999-11-11

1999-11-11 15:23:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Support for SHARED_NODES.

Rev: src/operators.c:1.69
Rev: src/program.c:1.172

6:   /**/   #include "global.h"   #include <math.h> - RCSID("$Id: operators.c,v 1.68 1999/11/05 01:31:41 hubbe Exp $"); + RCSID("$Id: operators.c,v 1.69 1999/11/11 15:20:56 grubba Exp $");   #include "interpret.h"   #include "svalue.h"   #include "multiset.h"
446:    node **first_arg, **second_arg, *ret;    if(count_args(CDR(n))==2)    { -  first_arg=my_get_arg(&CDR(n), 0); -  second_arg=my_get_arg(&CDR(n), 1); +  first_arg=my_get_arg(&_CDR(n), 0); +  second_arg=my_get_arg(&_CAR(n), 1);      #ifdef PIKE_DEBUG    if(!first_arg || !second_arg)
456:    if(node_is_false(*first_arg) && !node_may_overload(*second_arg,LFUN_EQ))    {    ret=*second_arg; + #ifndef SHARED_NODES    *second_arg=0; -  + #endif /* !SHARED_NODES */    return mkopernode("`!",ret,0);    }       if(node_is_false(*second_arg) && !node_may_overload(*first_arg,LFUN_EQ))    {    ret=*first_arg; -  + #ifndef SHARED_NODES    *first_arg=0; -  + #endif /* !SHARED_NODES */    return mkopernode("`!",ret,0);    }    }
477:       if(count_args(CDR(n))==1)    { -  first_arg=my_get_arg(&CDR(n), 0); +  first_arg=my_get_arg(&_CDR(n), 0);   #ifdef PIKE_DEBUG    if(!first_arg)    fatal("Couldn't find argument!\n");
485:    if(node_is_true(*first_arg)) return mkintnode(0);    if(node_is_false(*first_arg)) return mkintnode(1);    + #ifdef SHARED_NODES   #define TMP_OPT(X,Y) do { \    if((more_args=is_call_to(*first_arg, X))) \    { \    node *tmp=*more_args; \ -  +  return mkopernode(Y,tmp,0); \ +  } } while(0) + #else /* !SHARED_NODES */ + #define TMP_OPT(X,Y) do { \ +  if((more_args=is_call_to(*first_arg, X))) \ +  { \ +  node *tmp=*more_args; \    *more_args=0; \    return mkopernode(Y,tmp,0); \    } } while(0) -  + #endif /* SHARED_NODES */       TMP_OPT(f_eq, "`!=");    TMP_OPT(f_ne, "`==");
511:    node **first_arg, **second_arg, *ret;    if(count_args(CDR(n))==2)    { -  first_arg=my_get_arg(&CDR(n), 0); -  second_arg=my_get_arg(&CDR(n), 1); +  first_arg=my_get_arg(&_CDR(n), 0); +  second_arg=my_get_arg(&_CDR(n), 1);      #ifdef PIKE_DEBUG    if(!first_arg || !second_arg)
531:    mknode(F_ARG_LIST,    CDR(*first_arg),    *second_arg)); + #ifndef SHARED_NODES    CAR(n)=0;    CDR(*first_arg)=0;    *second_arg=0; -  + #endif /* !SHARED_NODES */    return ret;    }   
547:    mknode(F_ARG_LIST,    *first_arg,    CDR(*second_arg))); + #ifndef SHARED_NODES    CAR(n)=0;    *first_arg=0;    CDR(*second_arg)=0; -  + #endif /* SHARED_NODES */    return ret;    }    }