Branch: Tag:

2014-08-14

2014-08-14 13:46:10 by Per Hedbor <ph@opera.com>

Removed F_IDENTIFIER: It was never generated.

This lessens the confusion and code-duplication somewhat.

764:    emit1(F_ASSIGN_LOCAL_AND_POP, var->u.integer.a );    break;    -  /* FIXME: Make special case for F_EXTERNAL */ -  case F_IDENTIFIER: -  if(!IDENTIFIER_IS_VARIABLE( ID_FROM_INT(Pike_compiler->new_program, -  var->u.id.number)->identifier_flags)) -  { -  yyerror("Cannot assign functions or constants.\n"); -  }else{ -  code_expression(val, 0, "RHS"); -  emit_multi_assign(vals, vars, no+1); -  emit_assign_global( var->u.id.number, 1 ); -  } -  break; -  +     case F_GET_SET:    {    /* Check for the setter function. */
870:    case F_LVALUE_LIST:    case F_LOCAL:    case F_GLOBAL: -  case F_IDENTIFIER: +     case F_INDEX:    case F_ARROW:    case F_ARG_LIST:
1299:    CDR(n)->u.integer.a );    break;    -  /* FIXME: Make special case for F_EXTERNAL */ -  case F_IDENTIFIER: -  if(!IDENTIFIER_IS_VARIABLE( ID_FROM_INT(Pike_compiler->new_program, CDR(n)->u.id.number)->identifier_flags)) -  { -  yyerror("Cannot assign functions or constants.\n"); -  }else{ -  code_expression(CAR(n), 0, "RHS"); -  emit_assign_global( CDR(n)->u.id.number, flags & DO_POP ); -  } -  break; +        case F_GET_SET:    {
1918:   #endif    return 1;    } -  else if(CAR(n)->token == F_IDENTIFIER) -  { -  return do_lfun_call(CAR(n)->u.id.number, CDR(n)); -  } +     else if(CAR(n)->token == F_EXTERNAL &&    CAR(n)->u.integer.a == Pike_compiler->new_program->id &&    CAR(n)->u.integer.b != IDREF_MAGIC_THIS)
2675:    return 1;    }    -  case F_IDENTIFIER: { -  struct identifier *id = ID_FROM_INT(Pike_compiler->new_program, n->u.id.number); -  if(IDENTIFIER_IS_FUNCTION(id->identifier_flags)) -  { -  if(flags & WANT_LVALUE) -  { -  yyerror("Cannot assign functions.\n"); -  }else{ -  if (id->identifier_flags & IDENTIFIER_HAS_BODY) -  /* Only use this opcode when it's certain that the result -  * can't zero, i.e. when we know the function isn't just a -  * prototype. */ -  emit1(F_LFUN,n->u.id.number); -  else -  emit_global(n->u.id.number); -  } -  }else{ -  if(flags & WANT_LVALUE) -  { -  emit1(F_GLOBAL_LVALUE,n->u.id.number); -  return 2; -  }else{ -  emit_global(n->u.id.number); -  } -  } -  return 1; -  } -  +     case F_VAL_LVAL:    ret = do_docode(CAR(n),flags);    return ret + do_docode(CDR(n), flags | DO_LVALUE);