Changeset 1847 for trunk/src/kmk/file.c


Ignore:
Timestamp:
Oct 12, 2008, 6:25:03 PM (17 years ago)
Author:
bird
Message:

kmk: Some optimizations for expand_deps.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/file.c

    r1833 r1847  
    507507      struct dep *new, *d1;
    508508      char *p;
     509#ifdef CONFIG_WITH_VALUE_LENGTH
     510      unsigned int len;
     511#endif
    509512
    510513      if (! d->name)
     
    518521          p = variable_expand ("");
    519522          buffer_offset = p - variable_buffer;
     523#ifndef CONFIG_WITH_VALUE_LENGTH
    520524          variable_buffer_output (p, d->name, strlen (d->name) + 1);
     525#else
     526          len = strcache_get_len (d->name);
     527          variable_buffer_output (p, d->name, len + 1);
     528#endif
    521529          p = variable_buffer + buffer_offset; /* bird - variable_buffer may have been reallocated. (observed it) */
    522530        }
     
    554562          set_file_variables (f);
    555563
     564#ifndef CONFIG_WITH_VALUE_LENGTH
    556565          p = variable_expand_for_file (d->name, f);
     566#else
     567          len = strcache_get_len (d->name);
     568          p = variable_expand_for_file_2 (NULL, d->name, len, f, &len);
     569#endif
    557570
    558571          if (d->stem != 0)
     
    561574
    562575      /* Parse the prerequisites.  */
     576#ifndef CONFIG_WITH_VALUE_LENGTH
    563577      new = parse_prereqs (p);
     578#else
     579      /** @todo make use of len here! */
     580      new = parse_prereqs (p);
     581#endif
    564582
    565583      /* If this dep list was from a static pattern rule, expand the %s.  We
     
    576594            {
    577595              char *percent;
     596#ifndef KMK
    578597              int nl = strlen (dp->name) + 1;
    579598              char *nm = alloca (nl);
    580599              memcpy (nm, dp->name, nl);
    581600              percent = find_percent (nm);
     601#else  /* KMK - don't make a stack copy unless it's actually required! */
     602              unsigned int nl = strcache_get_len (dp->name);
     603              char *nm;
     604              percent = memchr (nm, '%', nl);
     605              if (percent)
     606                {
     607                  nm = alloca (nl + 1);
     608                  memcpy (nm, dp->name, nl + 1);
     609                  percent = find_percent (nm);
     610                }
     611#endif /* KMK */
    582612              if (percent)
    583613                {
Note: See TracChangeset for help on using the changeset viewer.