pike.git / src / las.c

version» Context lines:

pike.git/src/las.c:46:   #define MAX_GLOBAL 2048      /* #define yywarning my_yyerror */      int car_is_node(node *n)   {    switch(n->token)    {    case F_EXTERNAL:    case F_GET_SET: -  case F_IDENTIFIER: +     case F_TRAMPOLINE:    case F_CONSTANT:    case F_LOCAL:    case F_THIS:    case F_VERSION:    return 0;       default:    return !!_CAR(n);    }   }      int cdr_is_node(node *n)   {    switch(n->token)    {    case F_EXTERNAL:    case F_GET_SET: -  case F_IDENTIFIER: +     case F_TRAMPOLINE:    case F_CONSTANT:    case F_LOCAL:    case F_THIS:    case F_VERSION:    return 0;       default:    return !!_CDR(n);    }   }      int node_is_leaf(node *n)   {    switch(n->token)    {    case F_EXTERNAL:    case F_GET_SET: -  case F_IDENTIFIER: +     case F_TRAMPOLINE:    case F_CONSTANT:    case F_LOCAL:    case F_VERSION:    return 1;    }    return 0;   }      #ifdef PIKE_DEBUG
pike.git/src/las.c:747:    break;      #ifdef PIKE_DEBUG    case F_CAST:    case F_SOFT_CAST:    Pike_fatal("Attempt to create a cast-node with mknode()!\n");    case F_CONSTANT:    Pike_fatal("Attempt to create an F_CONSTANT-node with mknode()!\n");    case F_LOCAL:    Pike_fatal("Attempt to create an F_LOCAL-node with mknode()!\n"); -  case F_IDENTIFIER: -  Pike_fatal("Attempt to create an F_IDENTIFIER-node with mknode()!\n"); +     case F_TRAMPOLINE:    Pike_fatal("Attempt to create an F_TRAMPOLINE-node with mknode()!\n");    case F_EXTERNAL:    Pike_fatal("Attempt to create an F_EXTERNAL-node with mknode()!\n");    case F_GET_SET:    Pike_fatal("Attempt to create an F_GET_SET-node with mknode()!\n");   #endif /* PIKE_DEBUG */    }       check_tree(a,0);
pike.git/src/las.c:1106:    res->u.integer.b = 0;    } else {    res->u.integer.b = depth;    }       return res;   }      node *debug_mkidentifiernode(int i)   { - #if 1 +     node *res = mkexternalnode(Pike_compiler->new_program, i);    check_tree(res,0);    return res; - #else -  node *res = mkemptynode(); -  res->token = F_IDENTIFIER; -  copy_shared_string(res->type, ID_FROM_INT(Pike_compiler->new_program, i)->type); -  -  /* FIXME */ -  if(IDENTIFIER_IS_CONSTANT(ID_FROM_INT(Pike_compiler->new_program, i)->identifier_flags)) -  { -  res->node_info = OPT_EXTERNAL_DEPEND; -  }else{ -  res->node_info = OPT_NOT_CONST; +    } -  res->tree_info=res->node_info; +     - #ifdef __CHECKER__ -  _CDR(res) = 0; - #endif -  res->u.id.number = i; - #ifdef SHARED_NODES -  res->u.id.prog = Pike_compiler->new_program; - #endif /* SHARED_NODES */ -  -  check_tree(res,0); -  return res; - #endif - } -  +    node *debug_mktrampolinenode(int i, struct compiler_frame *frame)   {    struct compiler_frame *f;    node *res = mkemptynode();       res->token = F_TRAMPOLINE;    copy_pike_type(res->type, ID_FROM_INT(Pike_compiler->new_program, i)->type);       /* FIXME */    if(IDENTIFIER_IS_CONSTANT(ID_FROM_INT(Pike_compiler->new_program, i)->identifier_flags))
pike.git/src/las.c:1452:    {    yyerror("Failed to resolve external constant.");    push_int(0);    return;    }    p = state->new_program;    numid=n->u.integer.b;    }    break;    -  case F_IDENTIFIER: -  p=Pike_compiler->new_program; -  numid=n->u.id.number; -  break; -  +     case F_LOCAL:    /* FIXME: Ought to have the name of the identifier in the message. */    yyerror("Expected constant, got local variable.");    push_int(0);    return;       case F_GLOBAL:    /* FIXME: Ought to have the name of the identifier in the message. */    yyerror("Expected constant, got global variable.");    push_int(0);
pike.git/src/las.c:1829:   #endif    return a->u.trampoline.ident == b->u.trampoline.ident &&    a->u.trampoline.frame == b->u.trampoline.frame;       case F_EXTERNAL:    case F_GET_SET:    case F_LOCAL:    return a->u.integer.a == b->u.integer.a &&    a->u.integer.b == b->u.integer.b;    -  case F_IDENTIFIER: -  return a->u.id.number == b->u.id.number; -  +     case F_CAST:    case F_SOFT_CAST:    return a->type == b->type && node_is_eq(CAR(a), CAR(b));       case F_CONSTANT:    return is_equal(&(a->u.sval), &(b->u.sval));       default:    if( a->type != b->type ) return 0;    if(car_is_node(a) && !node_is_eq(CAR(a), CAR(b))) return 0;
pike.git/src/las.c:1975:   node *copy_node(node *n)   {    node *b;    debug_malloc_touch(n);    debug_malloc_touch(n->type);    check_tree(n,0);    if(!n) return n;    switch(n->token)    {    case F_LOCAL: -  case F_IDENTIFIER: +     case F_TRAMPOLINE:    b=mknewintnode(0);    if(b->type) free_type(b->type);    *b=*n;    copy_pike_type(b->type, n->type);    return b;       default:    add_ref(n);    return n;
pike.git/src/las.c:2180:    if (_CDR(foo)) {    low_print_tree(_CADR(foo),0);    fputs("):(", stderr);    low_print_tree(_CDDR(foo),0);    } else {    fputs("0:0", stderr);    }    fputc(')', stderr);    break;    -  case F_IDENTIFIER: -  if(needlval) fputc('&', stderr); -  if (Pike_compiler->new_program) { -  fprintf(stderr, "id(%s)",ID_FROM_INT(Pike_compiler->new_program, foo->u.id.number)->name->str); -  } else { -  fputs("unknown identifier", stderr); -  } -  break; -  +     case F_EXTERNAL:    case F_GET_SET:    if(needlval) fputc('&', stderr);    {    struct program_state *state = Pike_compiler;    char *name = "?";    int program_id = foo->u.integer.a;    int level = 0;    int id_no = foo->u.integer.b;    while(state && (state->new_program->id != program_id)) {
pike.git/src/las.c:2601:       case F_EXTERNAL:    case F_GET_SET:    q = find_q(&(p->externals), n->u.integer.b, n->u.integer.a);   #ifdef PIKE_DEBUG    if (l_flag > 2) {    fprintf(stderr, "external %d:%d is ",    n->u.integer.a, n->u.integer.b);    }   #endif /* PIKE_DEBUG */ -  goto set_pointer; -  -  case F_IDENTIFIER: -  q = find_q(&(p->externals), n->u.id.number, -  Pike_compiler->new_program->id); -  if(n->u.id.number > MAX_GLOBAL) -  { -  p->err=1; -  return 0; -  } - #ifdef PIKE_DEBUG -  if (l_flag > 2) { -  fprintf(stderr, "external %d:%d is ", -  Pike_compiler->new_program->id, n->u.id.number); -  } - #endif /* PIKE_DEBUG */ -  +     set_pointer:    if(overwrite)    {    if(*q == VAR_UNUSED && !noblock) {    *q = VAR_BLOCKED;   #ifdef PIKE_DEBUG    if (l_flag > 2) {    fputs("blocked\n", stderr);    }    } else {
pike.git/src/las.c:2745: Inside #if defined(PIKE_DEBUG)
  #ifdef PIKE_DEBUG    if (l_flag > 2) {    fprintf(stderr, "external %d:%d is written\n",    n->u.integer.a, n->u.integer.b);    }   #endif /* PIKE_DEBUG */    *find_q(&(p->externals), n->u.integer.b, n->u.integer.a) = VAR_USED;    }    break;    -  case F_IDENTIFIER: -  if(lvalue) -  { -  if(n->u.id.number >= MAX_VAR) -  { -  p->err=1; -  return; -  } - #ifdef PIKE_DEBUG -  if (l_flag > 2) { -  fprintf(stderr, "external %d:%d is written\n", -  Pike_compiler->new_program->id, n->u.id.number); -  } - #endif /* PIKE_DEBUG */ -  *find_q(&(p->externals), n->u.id.number, -  Pike_compiler->new_program->id) = VAR_USED; -  } -  break; -  +     case F_APPLY:    case F_AUTO_MAP:    if(n->tree_info & OPT_SIDE_EFFECT) {    p->ext_flags = VAR_USED;    }    find_written_vars(CAR(n), p, 0);    find_written_vars(CDR(n), p, 0);    break;       case F_AUTO_MAP_MARKER:
pike.git/src/las.c:3063:    struct pike_string *name = NULL;    if (!n) {    MAKE_CONST_STRING(name, "NULL");    return name;    }    switch(n->token)    {   #if 0 /* FIXME */    case F_TRAMPOLINE:   #endif -  case F_IDENTIFIER: -  name = ID_FROM_INT(Pike_compiler->new_program, n->u.id.number)->name; -  break; -  +     case F_ARROW:    case F_INDEX:    if(!CDR(n))    {    MAKE_CONST_STRING(name, "NULL");    }    else if(CDR(n)->token == F_CONSTANT &&    TYPEOF(CDR(n)->u.sval) == T_STRING)    {    name = CDR(n)->u.sval.u.string;