| //===---------------- JavaIsolate.h - Isolates ----------------------------===// |
| // |
| // JnJVM |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef JNJVM_JAVA_ISOLATE_H |
| #define JNJVM_JAVA_ISOLATE_H |
| |
| |
| #include "mvm/Object.h" |
| #include "mvm/Threads/Cond.h" |
| #include "mvm/Threads/Locks.h" |
| |
| #include "types.h" |
| |
| #include "JavaArray.h" |
| #include "JavaThread.h" |
| #include "Jnjvm.h" |
| |
| namespace jnjvm { |
| |
| class ThreadSystem : public mvm::Object { |
| public: |
| static VirtualTable* VT; |
| uint16 nonDaemonThreads; |
| mvm::Lock* nonDaemonLock; |
| mvm::Cond* nonDaemonVar; |
| |
| virtual void print(mvm::PrintBuffer* buf) const; |
| virtual void tracer(size_t sz); |
| |
| static ThreadSystem* allocateThreadSystem(); |
| }; |
| |
| class JavaIsolate : public Jnjvm { |
| public: |
| static VirtualTable* VT; |
| ThreadSystem* threadSystem; |
| JavaThread* bootstrapThread; |
| |
| virtual void print(mvm::PrintBuffer* buf) const; |
| virtual void tracer(size_t sz); |
| virtual void destroyer(size_t sz); |
| |
| JavaObject* loadAppClassLoader(); |
| void loadBootstrap(); |
| void executeClass(const char* className, ArrayObject* args); |
| void executePremain(const char* className, JavaString* args, |
| JavaObject* instrumenter); |
| void waitForExit(); |
| void runMain(int argc, char** argv); |
| void mapInitialThread(); |
| static void runIsolate(const char* className, ArrayObject* args); |
| static JavaIsolate* allocateIsolate(Jnjvm* callingVM); |
| static JavaIsolate* allocateBootstrap(); |
| |
| }; |
| |
| } // end namespace jnjvm |
| |
| #endif |