Changeset 1107


Ignore:
Timestamp:
Sep 23, 2007, 7:29:00 AM (18 years ago)
Author:
bird
Message:

some silly realloc optimizations.

Location:
trunk/src/kmk
Files:
2 edited

Legend:

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

    r916 r1107  
    6363    {
    6464      unsigned int offset = ptr - variable_buffer;
     65#ifdef KMK
     66      variable_buffer_length = variable_buffer_length <= 1024
     67                             ? 2048 : variable_buffer_length * 4;
     68      if (variable_buffer_length < newlen + 100)
     69          variable_buffer_length = (newlen + 100 + 1023) & ~1023U;
     70#else
    6571      variable_buffer_length = (newlen + 100 > 2 * variable_buffer_length
    66                                 ? newlen + 100
    67                                 : 2 * variable_buffer_length);
     72                               ? newlen + 100
     73                               : 2 * variable_buffer_length);
     74#endif
    6875      variable_buffer = xrealloc (variable_buffer, variable_buffer_length);
    6976      ptr = variable_buffer + offset;
     
    8390  if (variable_buffer == 0)
    8491    {
     92#ifdef KMK
     93      variable_buffer_length = 384;
     94#else
    8595      variable_buffer_length = 200;
     96#endif
    8697      variable_buffer = xmalloc (variable_buffer_length);
    8798      variable_buffer[0] = '\0';
  • trunk/src/kmk/variable.c

    r1101 r1107  
    13941394
    13951395  /* The juicy bits, append the specified value to the variable
    1396      This is a heavily exercied code path in kBuild. */
     1396     This is a heavily exercised code path in kBuild. */
    13971397  if (v->recursive)
    13981398    {
     
    14061406      if ((unsigned)v->value_alloc_len <= new_value_len)
    14071407        {
    1408           /* XXX: anticipating further appends/prepends. */
    1409           if (value_len > v->value_alloc_len)
    1410             v->value_alloc_len = (new_value_len + 0x80) + 0x7f;
    1411           else
    1412             v->value_alloc_len = (new_value_len + value_len + 0x80) + 0x7f;
     1408          v->value_alloc_len *= 2;
     1409          if (v->value_alloc_len < new_value_len)
     1410              v->value_alloc_len = (new_value_len + value_len + 0x7f) + ~0x7fU;
    14131411          if (append || !v->value_length)
    14141412            v->value = xrealloc (v->value, v->value_alloc_len);
Note: See TracChangeset for help on using the changeset viewer.