constructor for MemoryUsage objects.
* src/vm/javaobjects.hpp (java_lang_management_MemoryUsage): Added accessor.
* src/native/vm/gnuclasspath/gnu_java_lang_management_VMClassLoadingMXBeanImpl.cpp,
* src/native/vm/gnuclasspath/gnu_java_lang_management_VMMemoryMXBeanImpl.cpp:
Fixed broken methods and use above invocation wrapper now.
#include "toolbox/logging.hpp"
#include "vm/classcache.hpp"
+#include "vm/options.h"
#include "vm/utf8.h"
#include "vm/vm.hpp"
*/
JNIEXPORT jlong JNICALL Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_getUnloadedClassCount(JNIEnv *env, jclass clazz)
{
- log_println("Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_getUnloadedClassCount: IMPLEMENT ME!");
+ int32_t count;
+
+ // XXX Fix this once we support class unloading!
+ count = 0;
- return 0;
+ return count;
}
*/
JNIEXPORT jboolean JNICALL Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_isVerbose(JNIEnv *env, jclass clazz)
{
-/* return _Jv_jvm->Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_verbose; */
-#warning Move to C++
- log_println("Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_isVerbose: MOVE TO C++!");
- return 0;
+ return opt_verboseclass;
}
*/
JNIEXPORT void JNICALL Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_setVerbose(JNIEnv *env, jclass clazz, jboolean verbose)
{
-/* _Jv_jvm->Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_verbose = verbose; */
-#warning Move to C++
- log_println("Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_setVerbose: MOVE TO C++!");
+ opt_verboseclass = verbose;
}
} // extern "C"
# include "native/vm/include/gnu_java_lang_management_VMMemoryMXBeanImpl.h"
#endif
-#include "vm/jit/builtin.hpp"
#include "vm/class.hpp"
#include "vm/global.h"
-#include "vm/loader.hpp" /* XXX only for load_class_bootstrap */
+#include "vm/javaobjects.hpp"
#include "vm/options.h"
#include "vm/vm.hpp"
*/
JNIEXPORT jobject JNICALL Java_gnu_java_lang_management_VMMemoryMXBeanImpl_getHeapMemoryUsage(JNIEnv *env, jclass clazz)
{
- classinfo *class_java_lang_management_MemoryUsage;
- java_handle_t *o;
- methodinfo *m;
- int64_t init;
- int64_t used;
- int64_t commited;
- int64_t maximum;
+ // Get values from the VM.
+ // XXX If we ever support more than one VM, change this.
+ int64_t init = opt_heapstartsize;
+ int64_t used = gc_get_total_bytes();
+ int64_t commited = gc_get_heap_size();
+ int64_t maximum = gc_get_max_heap_size();
- /* get the class */
- /* XXX optimize me! sometime... */
+ // Construct a new java.lang.management.MemoryUsage object.
+ java_lang_management_MemoryUsage jlmmu(init, used, commited, maximum);
- if (!(class_java_lang_management_MemoryUsage = load_class_bootstrap(utf_new_char("java/lang/management/MemoryUsage"))))
- return false;
-
- /* create the object */
-
- o = builtin_new(class_java_lang_management_MemoryUsage);
-
- if (o == NULL)
- return NULL;
-
- /* find initializer */
-
- m = class_findmethod(class_java_lang_management_MemoryUsage,
- utf_init, utf_new_char("(JJJJ)V"));
-
- /* initializer not found */
-
- if (m == NULL)
- return NULL;
-
- /* get values from the VM */
- /* XXX if we ever support more than one VM, change this */
-
- init = opt_heapstartsize;
- used = gc_get_total_bytes();
- commited = gc_get_heap_size();
- maximum = gc_get_max_heap_size();
-
- /* call initializer */
-
- (void) vm_call_method(m, o, init, used, commited, maximum);
-
- return (jobject) o;
+ return jlmmu.get_handle();
}
*/
JNIEXPORT jboolean JNICALL Java_gnu_java_lang_management_VMMemoryMXBeanImpl_isVerbose(JNIEnv *env, jclass clazz)
{
-/* return _Jv_jvm->Java_gnu_java_lang_management_VMMemoryMXBeanImpl_verbose; */
-#warning Move to C++
- log_println("Java_gnu_java_lang_management_VMMemoryMXBeanImpl_isVerbose: MOVE TO C++!");
- return 0;
+ return opt_verbosegc;
}
*/
JNIEXPORT void JNICALL Java_gnu_java_lang_management_VMMemoryMXBeanImpl_setVerbose(JNIEnv *env, jclass clazz, jboolean verbose)
{
-/* _Jv_jvm->Java_gnu_java_lang_management_VMMemoryMXBeanImpl_verbose = verbose; */
-#warning Move to C++
- log_println("Java_gnu_java_lang_management_VMMemoryMXBeanImpl_setVerbose: MOVE TO C++!");
+ opt_verbosegc = verbose;
}
} // extern "C"
}
+/**
+ * Constructs a new instance of the class by calling the
+ * appropriate Java initializer.
+ */
+java_lang_management_MemoryUsage::java_lang_management_MemoryUsage(int64_t init, int64_t used, int64_t commited, int64_t maximum)
+{
+ // Load the class.
+ // XXX Maybe this should be made global at some points.
+ classinfo* class_java_lang_management_MemoryUsage;
+ if (!(class_java_lang_management_MemoryUsage = load_class_bootstrap(utf_new_char("java/lang/management/MemoryUsage"))))
+ return;
+
+ // Find the appropriate initializer.
+ // XXX Maybe this should be made global at some points.
+ methodinfo* m = class_findmethod(class_java_lang_management_MemoryUsage,
+ utf_init,
+ utf_new_char("(JJJJ)V"));
+
+ if (m == NULL)
+ return;
+
+ // Instantiate a new object.
+ _handle = builtin_new(class_java_lang_management_MemoryUsage);
+
+ if (is_null())
+ return;
+
+ // Call initializer.
+ (void) vm_call_method(m, _handle, init, used, commited, maximum);
+}
+
+
/**
* Constructs a Java object with the given
* java.lang.reflect.Constructor.
#if defined(ENABLE_JAVASE)
+/**
+ * java/lang/management/MemoryUsage
+ *
+ * Object layout:
+ *
+ * 0. object header
+ * [other fields are not used]
+ */
+class java_lang_management_MemoryUsage : public java_lang_Object, private FieldAccess {
+public:
+ java_lang_management_MemoryUsage(java_handle_t* h) : java_lang_Object(h) {}
+ java_lang_management_MemoryUsage(int64_t init, int64_t used, int64_t commited, int64_t maximum);
+};
+
+
# if defined(ENABLE_ANNOTATIONS)
/**
* OpenJDK sun/reflect/ConstantPool