Branch: Tag:

2001-06-07

2001-06-07 08:26:48 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

optimized the range operator

Rev: src/array.c:1.107
Rev: src/array.h:1.36
Rev: src/docode.c:1.113
Rev: src/interpret_functions.h:1.56

5:   \*/   /**/   #include "global.h" - RCSID("$Id: docode.c,v 1.112 2001/04/15 15:37:19 mast Exp $"); + RCSID("$Id: docode.c,v 1.113 2001/06/07 08:26:47 hubbe Exp $");   #include "las.h"   #include "program.h"   #include "pike_types.h"
714:    case F_ASSIGN:    switch(CAR(n)->token)    { +  case F_RANGE:    case F_AND:    case F_OR:    case F_XOR:
730:    if(match_types(CDR(n)->type, array_type_string) ||    match_types(CDR(n)->type, string_type_string))    { -  code_expression(CDAR(n), 0, "binary operand"); -  emit0(F_LTOSVAL2); +  switch(do_docode(check_node_hash(CDAR(n)), 0)) +  { +  case 1: emit0(F_LTOSVAL2); break; +  case 2: emit0(F_LTOSVAL3); break; + #ifdef PIKE_DEBUG +  default: +  fatal("Arglebargle glop-glyf?\n"); + #endif +  }    }else{    emit0(F_LTOSVAL); -  code_expression(CDAR(n), 0, "binary operand"); +  do_docode(check_node_hash(CDAR(n)), 0);    }       emit0(CAR(n)->token);