pike.git / src / program.c

version» Context lines:

pike.git/src/program.c:1799:    c->resolve_cache=0;    }    }else{    yyerror("Module is neither mapping nor object");    }   }      void unuse_modules(INT32 howmany)   {    struct compilation *c = THIS_COMPILATION; +  struct svalue *s = buffer_dst(&c->used_modules);    if(!howmany) return; -  +  s -= howmany;   #ifdef PIKE_DEBUG -  if(howmany *sizeof(struct svalue) > c->used_modules.s.len) +  if(howmany *sizeof(struct svalue) > buffer_content_length(&c->used_modules))    Pike_fatal("Unusing too many modules.\n");   #endif    c->num_used_modules -= howmany;    Pike_compiler->num_used_modules-=howmany; -  low_make_buf_space((ptrdiff_t) sizeof(struct svalue) * -howmany, -  &c->used_modules); -  free_svalues((struct svalue *)low_make_buf_space(0, &c->used_modules), -  howmany, -  BIT_MAPPING | BIT_OBJECT | BIT_PROGRAM); +  free_svalues(s, howmany, BIT_MAPPING | BIT_OBJECT | BIT_PROGRAM); +  buffer_remove(&c->used_modules, howmany*sizeof(struct svalue)); + #ifdef PIKE_DEBUG +  if (s != buffer_dst(&c->used_modules)) +  Pike_fatal("buffer_remove is broken.\n"); + #endif    if(Pike_compiler->module_index_cache)    {    free_mapping(Pike_compiler->module_index_cache);    Pike_compiler->module_index_cache=0;    }   }      static struct node_s *index_modules(struct pike_string *ident,    struct mapping **module_index_cache,    const int num_used_modules,
pike.git/src/program.c:1902:   }      struct node_s *resolve_identifier(struct pike_string *ident);      struct node_s *find_module_identifier(struct pike_string *ident,    int see_inherit)   {    struct compilation *c = THIS_COMPILATION;    struct node_s *ret;    -  struct svalue *modules=(struct svalue *) -  (c->used_modules.s.str + c->used_modules.s.len); +  struct svalue *modules=(struct svalue *)buffer_dst(&c->used_modules);       {    struct program_state *p=Pike_compiler;    int n;    for(n=0;n<=c->compilation_depth;n++,p=p->previous)    {    int i;    if(see_inherit)    {    i=really_low_find_shared_string_identifier(ident,
pike.git/src/program.c:1940:    mkexternalnode(p->new_program, i);    }    }       if((ret=index_modules(ident,    &p->module_index_cache,    p->num_used_modules,    modules))) return ret;    modules-=p->num_used_modules;   #ifdef PIKE_DEBUG -  if( ((char *)modules ) < c->used_modules.s.str) +  if( ((char *)modules ) < (char*)buffer_ptr(&c->used_modules))    Pike_fatal("Modules out of whack!\n");   #endif    }    }       return resolve_identifier(ident);   }      /*! @decl constant UNDEFINED    *!
pike.git/src/program.c:10164:       STACK_LEVEL_CHECK(1);       assign_svalue(&c->default_module, Pike_sp-1);       /* Replace the implicit import of all_constants() with    * the new value.    */    if(c->num_used_modules)    { -  free_svalue( (struct svalue *)c->used_modules.s.str ); -  ((struct svalue *)c->used_modules.s.str)[0]=sp[-1]; +  struct svalue *dst = buffer_ptr(&c->used_modules); +  free_svalue( dst ); +  dst[0]=sp[-1];    sp--;    dmalloc_touch_svalue(sp);    if(Pike_compiler->module_index_cache)    {    free_mapping(Pike_compiler->module_index_cache);    Pike_compiler->module_index_cache=0;    }    }else{    use_module(sp-1);    pop_stack();
pike.git/src/program.c:11050:    push_int (0);    return;    }    pop_n_elems (args);       ref_push_function (THIS->frame->current_object, THIS->func);    init_buf(&save_buf);    describe_svalue (sp - 1, 0, 0);    str = complex_free_buf(&save_buf);    pop_stack(); -  push_string (make_shared_binary_string (str.str, str.len)); -  free (str.str); +  push_string(buffer_finish_pike_string(&str));   }      static void init_trampoline(struct object *UNUSED(o))   {    THIS->frame=0;   }      static void exit_trampoline(struct object *UNUSED(o))   {    if(THIS->frame)