[vmkit-commits] [vmkit] r83836 - in /vmkit/trunk/lib/N3/VMCore: N3Initialise.cpp VMObject.cpp VMObject.h VirtualTables.cpp
Gael Thomas
gael.thomas at lip6.fr
Mon Oct 12 02:13:50 PDT 2009
Author: gthomas
Date: Mon Oct 12 04:13:50 2009
New Revision: 83836
URL: http://llvm.org/viewvc/llvm-project?rev=83836&view=rev
Log:
Put VMCond inside a LockObj (it is not allocated with the gc).
Only applicative objects are now allocated with the gc (arrays, LockObj and VMObject).
Modified:
vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
vmkit/trunk/lib/N3/VMCore/VMObject.cpp
vmkit/trunk/lib/N3/VMCore/VMObject.h
vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
Modified: vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp?rev=83836&r1=83835&r2=83836&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Mon Oct 12 04:13:50 2009
@@ -173,9 +173,7 @@
}
#endif
- INIT(VMCond);
INIT(LockObj);
-
INIT(VMObject);
INIT(VMArray);
INIT(ArrayUInt8);
Modified: vmkit/trunk/lib/N3/VMCore/VMObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMObject.cpp?rev=83836&r1=83835&r2=83836&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMObject.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VMObject.cpp Mon Oct 12 04:13:50 2009
@@ -23,10 +23,6 @@
this->lockObj = 0;
}
-VMCond* VMCond::allocate() {
- return gc_new(VMCond)();
-}
-
void VMCond::notify() {
for (std::vector<VMThread*>::iterator i = threads.begin(),
e = threads.end(); i!= e; ++i) {
@@ -77,21 +73,19 @@
LockObj* LockObj::allocate() {
LockObj* res = gc_new(LockObj)();
- res->lock = new mvm::LockRecursive();
- res->varcond = VMCond::allocate();
return res;
}
void LockObj::aquire() {
- lock->lock();
+ lock.lock();
}
void LockObj::release() {
- lock->unlock();
+ lock.unlock();
}
bool LockObj::owner() {
- return lock->selfOwner();
+ return lock.selfOwner();
}
void VMObject::print(mvm::PrintBuffer* buf) const {
@@ -142,10 +136,10 @@
thread->interruptFlag = 0;
thread->vm->interruptedException(this);
} else {
- unsigned int recur = l->lock->recursionCount();
+ unsigned int recur = l->lock.recursionCount();
bool timeout = false;
- l->lock->unlockAll();
- l->varcond->wait(thread);
+ l->lock.unlockAll();
+ l->varcond.wait(thread);
thread->state = VMThread::StateWaiting;
if (timed) {
@@ -156,10 +150,10 @@
bool interrupted = (thread->interruptFlag != 0);
mutexThread->unlock();
- l->lock->lockAll(recur);
+ l->lock.lockAll(recur);
if (interrupted || timeout) {
- l->varcond->remove(thread);
+ l->varcond.remove(thread);
}
thread->state = VMThread::StateRunning;
@@ -185,7 +179,7 @@
void VMObject::notify() {
LockObj* l = myLock(this);
if (l->owner()) {
- l->varcond->notify();
+ l->varcond.notify();
} else {
VMThread::get()->vm->illegalMonitorStateException(this);
}
@@ -194,7 +188,7 @@
void VMObject::notifyAll() {
LockObj* l = myLock(this);
if (l->owner()) {
- l->varcond->notifyAll();
+ l->varcond.notifyAll();
} else {
VMThread::get()->vm->illegalMonitorStateException(this);
}
Modified: vmkit/trunk/lib/N3/VMCore/VMObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMObject.h?rev=83836&r1=83835&r2=83836&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMObject.h (original)
+++ vmkit/trunk/lib/N3/VMCore/VMObject.h Mon Oct 12 04:13:50 2009
@@ -28,27 +28,21 @@
class VMObject;
class VMThread;
-class VMCond : public mvm::Object {
+class VMCond {
public:
- static VirtualTable* VT;
std::vector<VMThread*> threads;
- static VMCond* allocate();
-
void notify();
void notifyAll();
void wait(VMThread* th);
void remove(VMThread* th);
-
- virtual void TRACER;
};
-
class LockObj : public mvm::Object {
public:
static VirtualTable* VT;
- mvm::LockRecursive *lock;
- VMCond* varcond;
+ mvm::LockRecursive lock;
+ VMCond varcond;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
Modified: vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp?rev=83836&r1=83835&r2=83836&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp Mon Oct 12 04:13:50 2009
@@ -36,10 +36,8 @@
INIT(ArrayFloat);
INIT(ArrayDouble);
INIT(ArrayObject);
- INIT(VMCond);
INIT(LockObj);
INIT(VMObject);
- INIT(ThreadSystem);
INIT(CLIString);
#undef INIT
@@ -49,9 +47,6 @@
compilingClass->CALL_TRACER;
}
-void ThreadSystem::TRACER {
-}
-
void CacheNode::TRACER {
((mvm::Object*)methPtr)->MARK_AND_TRACE;
lastCible->CALL_TRACER;
@@ -106,6 +101,16 @@
(*i)->CALL_TRACER; }}
+// root of tracing
+void VMThread::TRACER {
+ vmThread->MARK_AND_TRACE;
+ vm->CALL_TRACER;
+ //lock->MARK_AND_TRACE;
+ //varcond->MARK_AND_TRACE;
+ pendingException->MARK_AND_TRACE;
+}
+
+
void VMCommonClass::TRACER {
super->CALL_TRACER;
CALL_TRACER_VECTOR(VMClass*, interfaces, std::allocator);
@@ -166,16 +171,7 @@
classDef->CALL_TRACER;
}
-void VMCond::TRACER {
- for (std::vector<VMThread*, std::allocator<VMThread*> >::iterator i = threads.begin(), e = threads.end();
- i!= e; ++i) {
- (*i)->CALL_TRACER;
- }
-}
-
void LockObj::TRACER {
- //lock->MARK_AND_TRACE;
- varcond->MARK_AND_TRACE;
}
void VMObject::TRACER {
@@ -183,14 +179,6 @@
lockObj->MARK_AND_TRACE;
}
-void VMThread::TRACER {
- vmThread->MARK_AND_TRACE;
- vm->CALL_TRACER;
- //lock->MARK_AND_TRACE;
- //varcond->MARK_AND_TRACE;
- pendingException->MARK_AND_TRACE;
-}
-
void Param::TRACER {
method->CALL_TRACER;
}
@@ -212,7 +200,6 @@
}
void N3::TRACER {
- threadSystem->MARK_AND_TRACE;
functions->CALL_TRACER;
if (bootstrapThread) {
bootstrapThread->CALL_TRACER;
More information about the vmkit-commits
mailing list