* src/vm/properties.c: Moved to .cpp.
[cacao.git] / src / vm / vm.hpp
index e074b7a48fa0e7982adde16b4dd16b356b2543a0..3fd13dea756c800b9b729c31cc8d1a75f19ff4ae 100644 (file)
 #include <stdarg.h>
 #include <stdint.h>
 
-#include "vm/types.h"
+// We need the JNI types for the VM class.
+#include "native/jni.hpp"
 
-#include "native/jni.h"
+#include "vm/properties.hpp"
 
-#include "vm/global.h"
-
-#include "vm/class.h"
-#include "vm/method.h"
 
 #ifdef __cplusplus
 
@@ -47,6 +44,9 @@
  */
 class VM {
 private:
+       // This is _the_ VM instance.
+       static VM* _vm;
+
        // JNI variables.
        JavaVM* _javavm;
        JNIEnv* _jnienv;
@@ -57,6 +57,9 @@ private:
        bool    _exiting;
        int64_t _starttime;
 
+       // Subsystems.
+       Properties _properties; ///< Commandline properties.
+
 public:
        // Constructor, Destructor.
        VM(JavaVMInitArgs*);
@@ -64,6 +67,10 @@ public:
 
        // Static methods.
        static bool create(JavaVM** p_vm, void** p_env, void* vm_args);
+       static VM*  get_current() { return _vm; }
+
+       static void print_build_time_config();
+       void        print_run_time_config();
 
        // Getters for private members.
        JavaVM* get_javavm()      { return _javavm; }
@@ -72,13 +79,14 @@ public:
        bool    is_created()      { return _created; }
        bool    is_exiting()      { return _exiting; }
        int64_t get_starttime()   { return _starttime; }
-};
 
+       Properties& get_properties() { return _properties; }
 
-/**
- * This is _the_ instance of the VM.
- */
-extern VM* vm;
+       // Instance functions.
+       void abort(const char* text, ...);
+       void abort_errnum(int errnum, const char* text, ...);
+       void abort_errno(const char* text, ...);
+};
 
 #else
 
@@ -90,6 +98,12 @@ int64_t VM_get_starttime();
 
 #endif
 
+
+// Includes.
+#include "vm/global.h"
+#include "vm/method.h"
+
+
 /* These C methods are the exported interface. ********************************/
 
 #ifdef __cplusplus
@@ -106,7 +120,7 @@ bool VM_create(JavaVM** p_vm, void** p_env, void* vm_args);
 /* export global variables ****************************************************/
 
 #if defined(ENABLE_INTRP)
-extern u1 *intrp_main_stack;
+extern uint8_t* intrp_main_stack;
 #endif
 
 
@@ -120,15 +134,12 @@ void usage(void);
 
 bool vm_create(JavaVMInitArgs *vm_args);
 void vm_run(JavaVM *vm, JavaVMInitArgs *vm_args);
-s4   vm_destroy(JavaVM *vm);
-void vm_exit(s4 status);
-void vm_shutdown(s4 status);
+int32_t   vm_destroy(JavaVM *vm);
+void vm_exit(int32_t status);
+void vm_shutdown(int32_t status);
 
 void vm_exit_handler(void);
 
-void vm_abort(const char *text, ...);
-void vm_abort_errnum(int errnum, const char *text, ...);
-void vm_abort_errno(const char *text, ...);
 void vm_abort_disassemble(void *pc, int count, const char *text, ...);
 
 /* Java method calling functions */
@@ -157,6 +168,12 @@ double  vm_call_method_double_jvalue(methodinfo *m, java_handle_t *o, const jval
 
 java_handle_t *vm_call_method_objectarray(methodinfo *m, java_handle_t *o, java_handle_objectarray_t *params);
 
+
+// Legacy C interface.
+void vm_abort(const char* text, ...);
+void vm_abort_errnum(int errnum, const char* text, ...);
+void vm_abort_errno(const char* text, ...);
+
 #ifdef __cplusplus
 }
 #endif