< prev index next >

src/hotspot/share/prims/jvm.cpp

Print this page




  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "jvm.h"
  27 #include "classfile/classFileStream.hpp"
  28 #include "classfile/classLoader.hpp"
  29 #include "classfile/classLoaderData.inline.hpp"
  30 #include "classfile/javaAssertions.hpp"
  31 #include "classfile/javaClasses.inline.hpp"
  32 #include "classfile/moduleEntry.hpp"
  33 #include "classfile/modules.hpp"
  34 #include "classfile/packageEntry.hpp"
  35 #include "classfile/stringTable.hpp"
  36 #include "classfile/systemDictionary.hpp"
  37 #include "classfile/vmSymbols.hpp"
  38 #include "gc/shared/collectedHeap.inline.hpp"
  39 #include "interpreter/bytecode.hpp"
  40 #include "jfr/jfrEvents.hpp"

  41 #include "memory/oopFactory.hpp"
  42 #include "memory/referenceType.hpp"
  43 #include "memory/resourceArea.hpp"
  44 #include "memory/universe.hpp"
  45 #include "oops/access.inline.hpp"
  46 #include "oops/fieldStreams.hpp"
  47 #include "oops/instanceKlass.hpp"
  48 #include "oops/method.hpp"
  49 #include "oops/objArrayKlass.hpp"
  50 #include "oops/objArrayOop.inline.hpp"
  51 #include "oops/oop.inline.hpp"
  52 #include "prims/jvm_misc.hpp"
  53 #include "prims/jvmtiExport.hpp"
  54 #include "prims/jvmtiThreadState.hpp"
  55 #include "prims/nativeLookup.hpp"
  56 #include "prims/privilegedStack.hpp"
  57 #include "prims/stackwalk.hpp"
  58 #include "runtime/arguments.hpp"
  59 #include "runtime/atomic.hpp"
  60 #include "runtime/handles.inline.hpp"


3577 JVM_END
3578 
3579 
3580 JVM_ENTRY(jobject, JVM_NewInstanceFromConstructor(JNIEnv *env, jobject c, jobjectArray args0))
3581   JVMWrapper("JVM_NewInstanceFromConstructor");
3582   oop constructor_mirror = JNIHandles::resolve(c);
3583   objArrayHandle args(THREAD, objArrayOop(JNIHandles::resolve(args0)));
3584   oop result = Reflection::invoke_constructor(constructor_mirror, args, CHECK_NULL);
3585   jobject res = JNIHandles::make_local(env, result);
3586   if (JvmtiExport::should_post_vm_object_alloc()) {
3587     JvmtiExport::post_vm_object_alloc(JavaThread::current(), result);
3588   }
3589   return res;
3590 JVM_END
3591 
3592 // Atomic ///////////////////////////////////////////////////////////////////////////////////////////
3593 
3594 JVM_LEAF(jboolean, JVM_SupportsCX8())
3595   JVMWrapper("JVM_SupportsCX8");
3596   return VM_Version::supports_cx8();







3597 JVM_END
3598 
3599 // Returns an array of all live Thread objects (VM internal JavaThreads,
3600 // jvmti agent threads, and JNI attaching threads  are skipped)
3601 // See CR 6404306 regarding JNI attaching threads
3602 JVM_ENTRY(jobjectArray, JVM_GetAllThreads(JNIEnv *env, jclass dummy))
3603   ResourceMark rm(THREAD);
3604   ThreadsListEnumerator tle(THREAD, false, false);
3605   JvmtiVMObjectAllocEventCollector oam;
3606 
3607   int num_threads = tle.num_threads();
3608   objArrayOop r = oopFactory::new_objArray(SystemDictionary::Thread_klass(), num_threads, CHECK_NULL);
3609   objArrayHandle threads_ah(THREAD, r);
3610 
3611   for (int i = 0; i < num_threads; i++) {
3612     Handle h = tle.get_threadObj(i);
3613     threads_ah->obj_at_put(i, h());
3614   }
3615 
3616   return (jobjectArray) JNIHandles::make_local(env, threads_ah());




  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "jvm.h"
  27 #include "classfile/classFileStream.hpp"
  28 #include "classfile/classLoader.hpp"
  29 #include "classfile/classLoaderData.inline.hpp"
  30 #include "classfile/javaAssertions.hpp"
  31 #include "classfile/javaClasses.inline.hpp"
  32 #include "classfile/moduleEntry.hpp"
  33 #include "classfile/modules.hpp"
  34 #include "classfile/packageEntry.hpp"
  35 #include "classfile/stringTable.hpp"
  36 #include "classfile/systemDictionary.hpp"
  37 #include "classfile/vmSymbols.hpp"
  38 #include "gc/shared/collectedHeap.inline.hpp"
  39 #include "interpreter/bytecode.hpp"
  40 #include "jfr/jfrEvents.hpp"
  41 #include "memory/heapShared.hpp"
  42 #include "memory/oopFactory.hpp"
  43 #include "memory/referenceType.hpp"
  44 #include "memory/resourceArea.hpp"
  45 #include "memory/universe.hpp"
  46 #include "oops/access.inline.hpp"
  47 #include "oops/fieldStreams.hpp"
  48 #include "oops/instanceKlass.hpp"
  49 #include "oops/method.hpp"
  50 #include "oops/objArrayKlass.hpp"
  51 #include "oops/objArrayOop.inline.hpp"
  52 #include "oops/oop.inline.hpp"
  53 #include "prims/jvm_misc.hpp"
  54 #include "prims/jvmtiExport.hpp"
  55 #include "prims/jvmtiThreadState.hpp"
  56 #include "prims/nativeLookup.hpp"
  57 #include "prims/privilegedStack.hpp"
  58 #include "prims/stackwalk.hpp"
  59 #include "runtime/arguments.hpp"
  60 #include "runtime/atomic.hpp"
  61 #include "runtime/handles.inline.hpp"


3578 JVM_END
3579 
3580 
3581 JVM_ENTRY(jobject, JVM_NewInstanceFromConstructor(JNIEnv *env, jobject c, jobjectArray args0))
3582   JVMWrapper("JVM_NewInstanceFromConstructor");
3583   oop constructor_mirror = JNIHandles::resolve(c);
3584   objArrayHandle args(THREAD, objArrayOop(JNIHandles::resolve(args0)));
3585   oop result = Reflection::invoke_constructor(constructor_mirror, args, CHECK_NULL);
3586   jobject res = JNIHandles::make_local(env, result);
3587   if (JvmtiExport::should_post_vm_object_alloc()) {
3588     JvmtiExport::post_vm_object_alloc(JavaThread::current(), result);
3589   }
3590   return res;
3591 JVM_END
3592 
3593 // Atomic ///////////////////////////////////////////////////////////////////////////////////////////
3594 
3595 JVM_LEAF(jboolean, JVM_SupportsCX8())
3596   JVMWrapper("JVM_SupportsCX8");
3597   return VM_Version::supports_cx8();
3598 JVM_END
3599 
3600 JVM_ENTRY(void, JVM_InitializeFromArchive(JNIEnv* env, jclass cls))
3601   JVMWrapper("JVM_InitializeFromArchive");
3602   Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
3603   assert(k->is_klass(), "just checking");
3604   HeapShared::initialize_from_archived_subgraph(k);
3605 JVM_END
3606 
3607 // Returns an array of all live Thread objects (VM internal JavaThreads,
3608 // jvmti agent threads, and JNI attaching threads  are skipped)
3609 // See CR 6404306 regarding JNI attaching threads
3610 JVM_ENTRY(jobjectArray, JVM_GetAllThreads(JNIEnv *env, jclass dummy))
3611   ResourceMark rm(THREAD);
3612   ThreadsListEnumerator tle(THREAD, false, false);
3613   JvmtiVMObjectAllocEventCollector oam;
3614 
3615   int num_threads = tle.num_threads();
3616   objArrayOop r = oopFactory::new_objArray(SystemDictionary::Thread_klass(), num_threads, CHECK_NULL);
3617   objArrayHandle threads_ah(THREAD, r);
3618 
3619   for (int i = 0; i < num_threads; i++) {
3620     Handle h = tle.get_threadObj(i);
3621     threads_ah->obj_at_put(i, h());
3622   }
3623 
3624   return (jobjectArray) JNIHandles::make_local(env, threads_ah());


< prev index next >