diff src/share/vm/graal/graalCompilerToVM.cpp @ 6549:15e04f248d6b

Add functionality to initialize a type
author Christian Wimmer <christian.wimmer@oracle.com>
date Wed, 10 Oct 2012 20:32:33 -0700
parents 2a0c9f20baa1
children d5f7e737827f
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Wed Oct 10 20:29:53 2012 -0700
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Wed Oct 10 20:32:33 2012 -0700
@@ -562,6 +562,13 @@
   return instanceKlass::cast(klass)->is_initialized();
 C2V_END
 
+// public bool JavaType_isInitialized(HotSpotResolvedType klass);
+C2V_VMENTRY(void, JavaType_initialize, (JNIEnv *, jobject, jobject hotspot_klass))
+  klassOop klass = java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(hotspot_klass));
+  assert(klass != NULL, "method must not be called for primitive types");
+  instanceKlass::cast(klass)->initialize(JavaThread::current());
+C2V_END
+
 C2V_VMENTRY(jobject, JavaType_arrayOf, (JNIEnv *, jobject, jobject klass))
   KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass)));
   KlassHandle arr = klass_handle->array_klass(THREAD);
@@ -989,6 +996,7 @@
   {CC"JavaType_arrayOf",                    CC"("RESOLVED_TYPE")"TYPE,                            FN_PTR(JavaType_arrayOf)},
   {CC"JavaType_fields",                     CC"("RESOLVED_TYPE")["RESOLVED_FIELD,                 FN_PTR(JavaType_fields)},
   {CC"JavaType_isInitialized",              CC"("RESOLVED_TYPE")Z",                               FN_PTR(JavaType_isInitialized)},
+  {CC"JavaType_initialize",                 CC"("RESOLVED_TYPE")V",                               FN_PTR(JavaType_initialize)},
 
   {CC"getPrimitiveArrayType",               CC"("KIND")"TYPE,                                     FN_PTR(getPrimitiveArrayType)},
   {CC"getMaxCallTargetOffset",              CC"(J)J",                                             FN_PTR(getMaxCallTargetOffset)},