Skip to content

Commit

Permalink
Remove custom allocators from nick/patricia.
Browse files Browse the repository at this point in the history
  • Loading branch information
gunnarbeutner committed Jul 30, 2013
1 parent 4c3d420 commit b063a11
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 96 deletions.
1 change: 0 additions & 1 deletion nick/nick.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ void _init() {
for (anp=authnametable[i];anp;anp=anp->next)
anp->nicks=NULL;

initnickalloc();
initnickhelpers();
memset(nicktable,0,sizeof(nicktable));
memset(servernicks,0,sizeof(servernicks));
Expand Down
8 changes: 5 additions & 3 deletions nick/nick.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "../lib/base64.h"
#include "../lib/irc_ipv6.h"
#include "../patricia/patricia.h"
#include "../lib/ccassert.h"

#include "../authext/authext.h"

Expand Down Expand Up @@ -130,6 +131,8 @@ typedef struct realname {
struct realname *next;
} realname;

CCASSERT(sizeof(host) == sizeof(realname));

typedef struct nick {
char nick[NICKLEN+1];
long numeric;
Expand Down Expand Up @@ -185,13 +188,12 @@ extern char *NULLAUTHNAME;
(((*gethandlebynumeric(x))->numeric==(x&MAXNUMERIC))?(*gethandlebynumeric(x)):NULL)))

/* nickalloc.c functions */
void initnickalloc();
realname *newrealname();
void freerealname(realname *rn);
nick *newnick();
void freenick (nick *np);
void freenick(nick *np);
host *newhost();
void freehost (host *hp);
void freehost(host *hp);

/* nick.c functions */
void handleserverchange(int hooknum, void *arg);
Expand Down
54 changes: 6 additions & 48 deletions nick/nickalloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,9 @@
#include <assert.h>
#include <stdlib.h>

#define ALLOCUNIT 100

/* Hosts and realname structures are the same size */
/* This assumption is checked in initnickalloc(); */

nick *freenicks;
host *freehosts;

void initnickalloc() {
freenicks=NULL;
freehosts=NULL;

assert(sizeof(host)==sizeof(realname));
}

realname *newrealname() {
return (realname *)newhost();
}
Expand All @@ -30,48 +18,18 @@ void freerealname(realname *rn) {
}

nick *newnick() {
nick *np;
int i;

if (freenicks==NULL) {
freenicks=(nick *)nsmalloc(POOL_NICK,ALLOCUNIT*sizeof(nick));
for (i=0;i<(ALLOCUNIT-1);i++) {
freenicks[i].next=&(freenicks[i+1]);
}
freenicks[ALLOCUNIT-1].next=NULL;
}

np=freenicks;
freenicks=np->next;

return np;
return nsmalloc(POOL_NICK, sizeof(nick));
}

void freenick (nick *np) {
np->next=freenicks;
freenicks=np;
void freenick(nick *np) {
nsfree(POOL_NICK, np);
}

host *newhost() {
host *nh;
int i;

if (freehosts==NULL) {
freehosts=(host *)nsmalloc(POOL_NICK,ALLOCUNIT*sizeof(host));
for (i=0;i<(ALLOCUNIT-1);i++) {
freehosts[i].next=&(freehosts[i+1]);
}
freehosts[ALLOCUNIT-1].next=NULL;
}

nh=freehosts;
freehosts=nh->next;

return nh;
return nsmalloc(POOL_NICK, sizeof(host));
}

void freehost (host *hp) {
hp->next=freehosts;
freehosts=hp;
void freehost(host *hp) {
nsfree(POOL_NICK, hp);
}

50 changes: 6 additions & 44 deletions patricia/patricia_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,58 +4,20 @@
#include <assert.h>
#include "../core/nsmalloc.h"

#define ALLOCUNIT 100

patricia_node_t *node_freelist;
union prefixes *prefix_freelist;

prefix_t *newprefix() {
union prefixes *prefixes = prefix_freelist;
int i;

if (prefixes==NULL) {
prefixes=(union prefixes *)nsmalloc(POOL_PATRICIA,ALLOCUNIT*sizeof(prefix_t));

for (i=0;i<(ALLOCUNIT-1);i++) {
prefixes[i].next=&(prefixes[i+1]);
}
prefixes[ALLOCUNIT-1].next=NULL;
}

prefix_freelist = prefixes->next;
return &(prefixes->prefix);

return nsmalloc(POOL_PATRICIA, sizeof(prefix_t));
}

void freeprefix (prefix_t *prefix) {
union prefixes *ups = (union prefixes *)prefix;
ups->next = prefix_freelist;
prefix_freelist = ups;
void freeprefix(prefix_t *prefix) {
nsfree(POOL_PATRICIA, prefix);
}


patricia_node_t *newnode() {
int i;
patricia_node_t *node;

if( node_freelist==NULL ) {
node_freelist=(patricia_node_t *)nsmalloc(POOL_PATRICIA,ALLOCUNIT*sizeof(patricia_node_t));

for (i=0;i<(ALLOCUNIT-1);i++) {
node_freelist[i].parent=(patricia_node_t *)&(node_freelist[i+1]);
}
node_freelist[ALLOCUNIT-1].parent=NULL;
}

node=node_freelist;
node_freelist=(patricia_node_t *)node->parent;

return node;
return nsmalloc(POOL_PATRICIA, sizeof(patricia_node_t));
}

void freenode (patricia_node_t *node) {
node->parent=(patricia_node_t *)node_freelist;
node_freelist=node;
void freenode(patricia_node_t *node) {
nsfree(POOL_PATRICIA, node);
}


0 comments on commit b063a11

Please sign in to comment.