Branch: Tag:

1999-02-10

1999-02-10 22:03:31 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

lots of minor optimizations..

Rev: src/builtin_functions.c:1.148
Rev: src/constants.c:1.14
Rev: src/constants.h:1.8
Rev: src/cpp.c:1.33
Rev: src/dynamic_load.c:1.34
Rev: src/module.c:1.10
Rev: src/modules/Gdbm/gdbmmod.c:1.7
Rev: src/modules/Gmp/mpz_glue.c:1.39
Rev: src/modules/Gz/zlibmod.c:1.23
Rev: src/modules/Image/colors.c:1.9
Rev: src/modules/Image/colortable.c:1.48
Rev: src/modules/Image/font.c:1.43
Rev: src/modules/Image/image.c:1.112
Rev: src/modules/Msql/msqlmod.c:1.10
Rev: src/modules/Mysql/mysql.c:1.26
Rev: src/modules/Mysql/result.c:1.15
Rev: src/modules/Odbc/odbc.c:1.14
Rev: src/modules/Odbc/odbc_result.c:1.17
Rev: src/modules/Oracle/oracle.c:1.16
Rev: src/modules/Perl/perlmod.c:1.6
Rev: src/modules/Pipe/pipe.c:1.30
Rev: src/modules/Postgres/pgresult.c:1.10
Rev: src/modules/Postgres/postgres.c:1.12
Rev: src/modules/Regexp/glue.c:1.14
Rev: src/modules/Ssleay/ssleay.c:1.11
Rev: src/modules/Yp/yp.c:1.16
Rev: src/modules/_Charset/charsetmod.c:1.9
Rev: src/modules/_Charset/iso2022.c:1.4
Rev: src/modules/_Crypto/cast.c:1.6
Rev: src/modules/_Crypto/cbc.c:1.14
Rev: src/modules/_Crypto/crypto.c:1.27
Rev: src/modules/_Crypto/des.c:1.13
Rev: src/modules/_Crypto/idea.c:1.13
Rev: src/modules/_Crypto/invert.c:1.8
Rev: src/modules/_Crypto/md2.c:1.6
Rev: src/modules/_Crypto/md5.c:1.12
Rev: src/modules/_Crypto/pipe.c:1.14
Rev: src/modules/_Crypto/rc4.c:1.9
Rev: src/modules/_Crypto/sha.c:1.15
Rev: src/modules/_Image_JPEG/image_jpeg.c:1.20
Rev: src/modules/_Image_TTF/image_ttf.c:1.11
Rev: src/modules/_Image_XFace/image_xface.c:1.6
Rev: src/modules/call_out/call_out.c:1.25
Rev: src/modules/files/efuns.c:1.64
Rev: src/modules/files/socket.c:1.42
Rev: src/modules/math/math.c:1.17
Rev: src/modules/spider/accesseddb.c:1.18
Rev: src/modules/spider/dumudp.c:1.43
Rev: src/modules/spider/spider.c:1.78
Rev: src/modules/spider/xml.c:1.7
Rev: src/modules/sprintf/sprintf.c:1.32
Rev: src/modules/system/nt.c:1.8
Rev: src/modules/system/passwords.c:1.24
Rev: src/modules/system/system.c:1.62
Rev: src/object.c:1.57
Rev: src/operators.c:1.47
Rev: src/pike_macros.h:1.12
Rev: src/pike_types.c:1.50
Rev: src/pike_types.h:1.17
Rev: src/program.c:1.110
Rev: src/program.h:1.51
Rev: src/security.c:1.11
Rev: src/signal_handler.c:1.106
Rev: src/stralloc.h:1.29
Rev: src/svalue.h:1.21
Rev: src/threads.c:1.89

13:   #include "interpret.h"   #include "mapping.h"   #include "error.h" + #include "block_alloc.h"    - RCSID("$Id: constants.c,v 1.13 1998/03/28 15:37:45 grubba Exp $"); + RCSID("$Id: constants.c,v 1.14 1999/02/10 21:46:39 hubbe Exp $");      static INT32 num_callable=0;   static struct mapping *builtin_constants = 0;
63:    low_add_constant(name, &s);   }    - struct callable *make_callable(c_fun fun, -  char *name, -  char *type, + #undef INIT_BLOCK + #define INIT_BLOCK(X) num_callable++ + #undef EXIT_BLOCK + #define EXIT_BLOCK(X) do { \ +  free_string(X->type); \ +  free_string(X->name); \ +  num_callable--; \ + }while(0) + BLOCK_ALLOC(callable,128) +  + /* Eats one ref to 'type' and 'name' */ + struct callable *low_make_callable(c_fun fun, +  struct pike_string *name, +  struct pike_string *type,    INT16 flags,    optimize_fun optimize,    docode_fun docode)   { -  struct callable *f; -  f=ALLOC_STRUCT(callable); -  num_callable++; +  struct callable *f=alloc_callable();    f->refs=1;    f->function=fun; -  f->name=make_shared_string(name); -  f->type=parse_type(type); +  f->name=name; +  f->type=type;    f->flags=flags;    f->docode=docode;    f->optimize=optimize;    return f;   }    - void really_free_callable(struct callable *fun) + struct callable *make_callable(c_fun fun, +  char *name, +  char *type, +  INT16 flags, +  optimize_fun optimize, +  docode_fun docode)   { -  free_string(fun->type); -  free_string(fun->name); -  free((char *)fun); -  num_callable--; +  return low_make_callable(fun,make_shared_string(name),parse_type(type),flags,optimize,docode);   }      void add_efun2(char *name,
115:    add_efun2(name,fun,type,flags,0,0);   }    + void quick_add_efun(char *name, int name_length, +  c_fun fun, +  char *type, int type_length, +  INT16 flags, +  optimize_fun optimize, +  docode_fun docode) + { +  struct svalue s; +  struct pike_string *n,*t; +  +  n=make_shared_binary_string(name,name_length); +  t=make_shared_binary_string(type,type_length); + #ifdef DEBUG +  check_type_string(t); + #endif +  s.type=T_FUNCTION; +  s.subtype=FUNCTION_BUILTIN; +  add_ref(n); +  s.u.efun=low_make_callable(fun, n, t, flags, optimize, docode); +  low_add_efun(n, &s); +  free_svalue(&s); +  free_string(n); + } +    void cleanup_added_efuns(void)   {    if(builtin_constants)