//===----------- Lock.cpp - Implementation of the Lock class  -------------===//
//
//                              The VMKit project
//
// This file is distributed under the University of Illinois Open Source 
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#include "JavaObject.h"
#include "JavaString.h"
#include "JavaThread.h"
#include "mvm/Threads/Locks.h"

using namespace j3;

struct Lock {
  JavaObject base;
  mvm::SpinLock spin;
  JavaString* name;
};


extern "C" void Java_org_j3_mmtk_Lock_acquire__(Lock* l) {
  l->spin.acquire();
}
extern "C" void Java_org_j3_mmtk_Lock_check__I () { JavaThread::get()->printBacktrace(); abort(); }

extern "C" void Java_org_j3_mmtk_Lock_release__(Lock* l) {
  l->spin.release();
}
