1 #include "pmc_garbage.h"
3 struct pmc_queue * pmc_localqueue;
5 void incrementthreads() {
6 tmc_spin_mutex_lock(&pmc_heapptr->lock);
7 pmc_heapptr->numthreads++;
8 tmc_spin_mutex_unlock(&pmc_heapptr->lock);
11 void decrementthreads() {
12 tmc_spin_mutex_lock(&pmc_heapptr->lock);
13 pmc_heapptr->numthreads--;
14 tmc_spin_mutex_unlock(&pmc_heapptr->lock);
18 pmc_localqueue=&pmc_heapptr->regions[BAMBOO_NUM_OF_THREADS].markqueue;
19 pmc_queueinit(pmc_localqueue);
20 tmc_spin_barrier_init(&pmc_heapptr->barrier, NUMCORES4GC);
24 if (BAMBOO_NUM_OF_THREADS==STARTUPCORE) {
25 pmc_heapptr->numthreads=NUMCORES4GC;
27 tmc_spin_barrier_wait(&pmc_heapptr->barrier);
30 void gc(struct garbagelist *gl) {
34 tmc_spin_barrier_wait(&pmc_heapptr->barrier);
35 if (BAMBOO_NUM_OF_THREADS==STARTUPCORE) {
38 tmc_spin_barrier_wait(&pmc_heapptr->barrier);