pike.git / src / docode.c

version» Context lines:

pike.git/src/docode.c:1143:    adroppings - bdroppings);    adroppings=bdroppings;    }       low_insert_label( DO_NOT_WARN((INT32)tmp2));       current_switch.jumptable = prev_switch_jumptable;    return adroppings;    }    -  case F_AND_EQ: -  case F_OR_EQ: -  case F_XOR_EQ: -  case F_LSH_EQ: -  case F_RSH_EQ: -  case F_ADD_EQ: -  case F_SUB_EQ: -  case F_MULT_EQ: -  case F_MOD_EQ: -  case F_DIV_EQ: -  if((CAR(n) && CAR(n)->token == F_AUTO_MAP_MARKER) || -  (CDR(n) && CDR(n)->token == F_AUTO_MAP_MARKER)) -  { -  char *opname; -  -  if(CAR(n)->token == F_AUTO_MAP_MARKER) -  { -  int depth=0; -  node *tmp=CAR(n); -  while(tmp->token == F_AUTO_MAP_MARKER) -  { -  depth++; -  tmp=CAR(tmp); -  } -  tmp1=do_docode(tmp,DO_LVALUE); -  emit0(F_MARK); -  emit0(F_MARK); -  emit0(F_LTOSVAL); -  emit1(F_NUMBER,depth); -  emit_apply_builtin("__builtin.automap_marker"); -  }else{ -  tmp1=do_docode(CAR(n),DO_LVALUE); -  emit0(F_LTOSVAL); -  } -  -  switch(n->token) -  { -  case F_ADD_EQ: opname="`+"; break; -  case F_AND_EQ: opname="`&"; break; -  case F_OR_EQ: opname="`|"; break; -  case F_XOR_EQ: opname="`^"; break; -  case F_LSH_EQ: opname="`<<"; break; -  case F_RSH_EQ: opname="`>>"; break; -  case F_SUB_EQ: opname="`-"; break; -  case F_MULT_EQ:opname="`*"; break; -  case F_MOD_EQ: opname="`%"; break; -  case F_DIV_EQ: opname="`/"; break; -  default: -  Pike_fatal("Really???\n"); -  opname="`make gcc happy"; -  } -  -  emit_builtin_svalue(opname); -  emit2(F_REARRANGE,1,1); -  -  if(CDR(n)->token == F_AUTO_MAP) -  { -  do_encode_automap_arg_list(CDR(n), 0); -  }else{ -  code_expression(CDR(n), 0, "assignment"); -  } -  emit_apply_builtin("__automap__"); -  }else{ -  tmp1=do_docode(CAR(n),DO_LVALUE); - #ifdef PIKE_DEBUG -  if(tmp1 != 2) -  Pike_fatal("HELP! FATAL INTERNAL COMPILER ERROR (7)\n"); - #endif -  -  if(n->token == F_ADD_EQ && (flags & DO_POP)) -  { -  code_expression(CDR(n), 0, "assignment"); -  emit0(F_ADD_TO_AND_POP); -  return 0; -  } -  -  if(CAR(n)->token != F_AUTO_MAP && -  (match_types(CAR(n)->type, array_type_string) || -  match_types(CAR(n)->type, string_type_string) || -  match_types(CAR(n)->type, mapping_type_string) || -  match_types(CAR(n)->type, object_type_string))) -  { -  code_expression(CDR(n), 0, "assignment"); -  emit0(F_LTOSVAL2_AND_FREE); -  }else{ -  emit0(F_LTOSVAL); -  code_expression(CDR(n), 0, "assignment"); -  } -  -  -  switch(n->token) -  { -  case F_ADD_EQ: -  if(CAR(n)->type == int_type_string && -  CDR(n)->type == int_type_string) -  { -  emit0(F_ADD_INTS); -  } -  else if(CAR(n)->type == float_type_string && -  CDR(n)->type == float_type_string) -  { -  emit0(F_ADD_FLOATS); -  }else{ -  emit0(F_ADD); -  } -  break; -  case F_AND_EQ: emit0(F_AND); break; -  case F_OR_EQ: emit0(F_OR); break; -  case F_XOR_EQ: emit0(F_XOR); break; -  case F_LSH_EQ: emit0(F_LSH); break; -  case F_RSH_EQ: emit0(F_RSH); break; -  case F_SUB_EQ: emit0(F_SUBTRACT); break; -  case F_MULT_EQ:emit0(F_MULTIPLY);break; -  case F_MOD_EQ: emit0(F_MOD); break; -  case F_DIV_EQ: emit0(F_DIVIDE); break; -  } -  } -  -  if(flags & DO_POP) -  { -  emit0(F_ASSIGN_AND_POP); -  return 0; -  }else{ -  emit0(F_ASSIGN); -  return 1; -  } -  +     case F_MULTI_ASSIGN:    if (flags & DO_POP) {    emit_multi_assign(CAR(n), CDR(n), 0);    return 0;    } else {    /* Fall back to the normal assign case. */    tmp1=do_docode(CDR(n),DO_LVALUE);   #ifdef PIKE_DEBUG    if(tmp1 & 1)    Pike_fatal("Very internal compiler error.\n");
pike.git/src/docode.c:1295:    emit_apply_builtin("aggregate");    POP_AND_DONT_CLEANUP;    emit0(F_ASSIGN);    return 1;    }       case F_ASSIGN:    switch(CAR(n)->token)    {    case F_RANGE: -  case F_AND: -  case F_OR: -  case F_XOR: -  case F_LSH: -  case F_RSH: -  case F_ADD: -  case F_MOD: -  case F_SUBTRACT: -  case F_DIVIDE: -  case F_MULTIPLY: +     if(node_is_eq(CDR(n),CAAR(n)))    {    int num_args;    /* tmp1=do_docode(CDR(n),DO_LVALUE); */    if(match_types(CDR(n)->type, array_type_string) ||    match_types(CDR(n)->type, string_type_string) ||    match_types(CDR(n)->type, object_type_string) ||    match_types(CDR(n)->type, multiset_type_string) ||    match_types(CDR(n)->type, mapping_type_string))    {
pike.git/src/docode.c:1519:    DO_CODE_BLOCK(CDR(n));    low_insert_label( DO_NOT_WARN((INT32)tmp1));    return 0;    }else{    do_cond_jump(CAR(n), DO_NOT_WARN((INT32)tmp1), n->token == F_LOR, 0);    code_expression(CDR(n), flags, n->token == F_LOR ? "||" : "&&");    low_insert_label( DO_NOT_WARN((INT32)tmp1));    return 1;    }    -  case F_EQ: -  case F_NE: -  case F_ADD: -  case F_LT: -  case F_LE: -  case F_GT: -  case F_GE: -  case F_SUBTRACT: -  case F_MULTIPLY: -  case F_DIVIDE: -  case F_MOD: -  case F_LSH: -  case F_RSH: -  case F_XOR: -  case F_OR: -  case F_AND: -  case F_NOT: -  case F_COMPL: -  case F_NEGATE: -  Pike_fatal("Optimizer error.\n"); -  +     case F_RANGE:    tmp1=do_docode(CAR(n),DO_NOT_COPY_TOPLEVEL);    {   #ifdef PIKE_DEBUG    int num_args =   #endif    do_docode (CDR (n), DO_NOT_COPY);    emit_range (n DO_IF_DEBUG (COMMA num_args));    return DO_NOT_WARN((INT32)tmp1);    }