aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_ptab.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2013-03-27 18:44:08 +0100
committerRickard Green <[email protected]>2013-04-03 17:09:36 +0200
commit8d70fd874ae4da853ac79f4349fbf4a985950656 (patch)
treebf7c2a0ec719e681c85c299fa759621b61e677fe /erts/emulator/beam/erl_ptab.c
parent05f11890bdfec4bfc3a78e191a87e70a937ffc54 (diff)
downloadotp-8d70fd874ae4da853ac79f4349fbf4a985950656.tar.gz
otp-8d70fd874ae4da853ac79f4349fbf4a985950656.tar.bz2
otp-8d70fd874ae4da853ac79f4349fbf4a985950656.zip
Be less eager requesting wakeup for cleanup jobs
Diffstat (limited to 'erts/emulator/beam/erl_ptab.c')
-rw-r--r--erts/emulator/beam/erl_ptab.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_ptab.c b/erts/emulator/beam/erl_ptab.c
index 87beeafa1a..5bbc71c659 100644
--- a/erts/emulator/beam/erl_ptab.c
+++ b/erts/emulator/beam/erl_ptab.c
@@ -421,6 +421,7 @@ erts_ptab_init_table(ErtsPTab *ptab,
void (*release_element)(void *),
ErtsPTabElementCommon *invalid_element,
int size,
+ UWord element_size,
char *name)
{
size_t tab_sz;
@@ -443,6 +444,7 @@ erts_ptab_init_table(ErtsPTab *ptab,
bits = erts_fit_in_bits_int32((Sint32) size - 1);
}
+ ptab->r.o.element_size = element_size;
ptab->r.o.max = size;
tab_sz = ERTS_ALC_CACHE_LINE_ALIGN_SIZE(size*sizeof(erts_smp_atomic_t));
@@ -670,9 +672,10 @@ erts_ptab_delete_element(ErtsPTab *ptab,
}
if (ptab->r.o.release_element)
- erts_schedule_thr_prgr_later_op(ptab->r.o.release_element,
- (void *) ptab_el,
- &ptab_el->u.release);
+ erts_schedule_thr_prgr_later_cleanup_op(ptab->r.o.release_element,
+ (void *) ptab_el,
+ &ptab_el->u.release,
+ ptab->r.o.element_size);
}
/*