Commit c180d472 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Start sharing vsmw_clusters for static backends in same VCL.

parent 111a42f7
......@@ -42,6 +42,9 @@
#include "vtcp.h"
#include "vtim.h"
#include "common/heritage.h"
#include "common/vsmw.h"
const void * const vrt_magic_string_end = &vrt_magic_string_end;
const void * const vrt_magic_string_unset = &vrt_magic_string_unset;
......@@ -628,10 +631,17 @@ VRT_purge(VRT_CTX, double ttl, double grace, double keep)
struct vsmw_cluster * v_matchproto_()
VRT_VSM_Cluster_New(VRT_CTX, size_t sz)
{
struct vsmw_cluster *vc;
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
AN(sz);
return ((void*)VRT_VSM_Cluster_New);
assert(sz > 0);
AN(vsc_lock);
AN(vsc_unlock);
AN(heritage.proc_vsmw);
vsc_lock();
vc = VSMW_NewCluster(heritage.proc_vsmw, sz, "VSC_cluster");
vsc_unlock();
return (vc);
}
void v_matchproto_()
......
......@@ -75,6 +75,7 @@ struct vsmw_cluster {
char *fn;
size_t len;
void *ptr;
size_t next;
int refs;
};
......@@ -239,12 +240,15 @@ VSMW_Allocv(struct vsmw *vsmw, struct vsmw_cluster *vc,
AZ(VSB_finish(vsmw->vsb));
REPLACE(seg->id, VSB_data(vsmw->vsb));
vc = VSMW_NewCluster(vsmw, 64 + len, class);
if (vc == NULL)
vc = VSMW_NewCluster(vsmw, len, class);
AN(vc);
vc->refs++;
seg->cluster = vc;
seg->off = 64;
seg->off = vc->next;
vc->next += len;
assert(vc->next <= vc->len);
seg->ptr = seg->off + (char*)vc->ptr;
VTAILQ_INSERT_TAIL(&vsmw->segs, seg, list);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment