Branch: Tag:

2010-11-11

2010-11-11 14:34:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Reduce PROGRAM_*_PARENT inflation further.

Don't mark external constants that have local scope as having external dependencies.
Only mark programs used by externals having external dependencies as needing parent objects.
Tentatively fixes [lyslyskom 18781511].

870:    int level = 0;    struct program_state *state = Pike_compiler;    while (state && (state->new_program->id != n->u.integer.a)) { -  state->new_program->flags |= PROGRAM_USES_PARENT | PROGRAM_NEEDS_PARENT; +  if ((flags & WANT_LVALUE) || +  (n->node_info & (OPT_EXTERNAL_DEPEND|OPT_NOT_CONST))) { +  /* Not a reference to a locally bound external constant. +  * We will thus need true parent pointers. */ +  state->new_program->flags |= +  PROGRAM_USES_PARENT | PROGRAM_NEEDS_PARENT; +  }    state = state->previous;    level++;    }