#include "barrier.h"
#include "../mutex.h"
#include "thread.h"

namespace art {

Barrier::Barrier()
    : count_(0),
      lock_("GC barrier lock"),
      condition_("GC barrier condition", lock_) {
}

void Barrier::Pass(Thread* self) {
  MutexLock mu(self, lock_);
  SetCountLocked(self, count_ - 1);
}

void Barrier::Wait(Thread* self) {
  Increment(self, -1);
}

void Barrier::Init(Thread* self, int count) {
  MutexLock mu(self, lock_);
  SetCountLocked(self, count);
}

void Barrier::Increment(Thread* self, int delta) {
  MutexLock mu(self, lock_);
  SetCountLocked(self, count_ + delta);
  if (count_ != 0) {
    condition_.Wait(self);
  }
}

void Barrier::SetCountLocked(Thread* self, int count) {
  count_ = count;
  if (count_ == 0) {
    condition_.Broadcast(self);
  }
}

Barrier::~Barrier() {
  CHECK(!count_) << "Attempted to destory barrier with non zero count";
}

}
