< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page




  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 
  27 #include <new>
  28 
  29 #include "classfile/classLoaderDataGraph.hpp"
  30 #include "classfile/modules.hpp"
  31 #include "classfile/protectionDomainCache.hpp"
  32 #include "classfile/stringTable.hpp"
  33 #include "code/codeCache.hpp"
  34 #include "compiler/methodMatcher.hpp"
  35 #include "compiler/directivesParser.hpp"
  36 #include "gc/shared/gcConfig.hpp"
  37 #include "gc/shared/genCollectedHeap.hpp"
  38 #include "jvmtifiles/jvmtiEnv.hpp"


  39 #include "memory/metadataFactory.hpp"
  40 #include "memory/metaspaceShared.inline.hpp"
  41 #include "memory/iterator.hpp"
  42 #include "memory/resourceArea.hpp"
  43 #include "memory/universe.hpp"
  44 #include "memory/oopFactory.hpp"
  45 #include "oops/array.hpp"
  46 #include "oops/constantPool.inline.hpp"
  47 #include "oops/method.inline.hpp"
  48 #include "oops/objArrayKlass.hpp"
  49 #include "oops/objArrayOop.inline.hpp"
  50 #include "oops/oop.inline.hpp"
  51 #include "oops/typeArrayOop.inline.hpp"
  52 #include "prims/resolvedMethodTable.hpp"
  53 #include "prims/wbtestmethods/parserTests.hpp"
  54 #include "prims/whitebox.inline.hpp"
  55 #include "runtime/arguments.hpp"
  56 #include "runtime/compilationPolicy.hpp"
  57 #include "runtime/deoptimization.hpp"
  58 #include "runtime/fieldDescriptor.inline.hpp"
  59 #include "runtime/flags/jvmFlag.hpp"
  60 #include "runtime/frame.inline.hpp"


1734     ThreadToNativeFromVM ttnfv(thread);
1735     return doubleBox(thread, env, result);
1736   }
1737   return NULL;
1738 WB_END
1739 
1740 WB_ENTRY(jobject, WB_GetMethodStringOption(JNIEnv* env, jobject wb, jobject method, jstring name))
1741   ccstr ccstrResult;
1742   if (GetMethodOption <ccstr> (thread, env, method, name, &ccstrResult)) {
1743     // can't be in VM when we call JNI
1744     ThreadToNativeFromVM ttnfv(thread);
1745     jstring result = env->NewStringUTF(ccstrResult);
1746     CHECK_JNI_EXCEPTION_(env, NULL);
1747     return result;
1748   }
1749   return NULL;
1750 WB_END
1751 
1752 WB_ENTRY(jboolean, WB_IsShared(JNIEnv* env, jobject wb, jobject obj))
1753   oop obj_oop = JNIHandles::resolve(obj);
1754   return MetaspaceShared::is_archive_object(obj_oop);
1755 WB_END
1756 
1757 WB_ENTRY(jboolean, WB_IsSharedClass(JNIEnv* env, jobject wb, jclass clazz))
1758   return (jboolean)MetaspaceShared::is_in_shared_metaspace(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
1759 WB_END
1760 
1761 WB_ENTRY(jboolean, WB_AreSharedStringsIgnored(JNIEnv* env))
1762   return !StringTable::shared_string_mapped();
1763 WB_END
1764 
1765 WB_ENTRY(jobject, WB_GetResolvedReferences(JNIEnv* env, jobject wb, jclass clazz))
1766   Klass *k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
1767   if (k->is_instance_klass()) {
1768     InstanceKlass *ik = InstanceKlass::cast(k);
1769     ConstantPool *cp = ik->constants();
1770     objArrayOop refs =  cp->resolved_references();
1771     return (jobject)JNIHandles::make_local(env, refs);
1772   } else {
1773     return NULL;
1774   }
1775 WB_END
1776 
1777 WB_ENTRY(jboolean, WB_AreOpenArchiveHeapObjectsMapped(JNIEnv* env))
1778   return MetaspaceShared::open_archive_heap_region_mapped();
1779 WB_END
1780 
1781 WB_ENTRY(jboolean, WB_IsCDSIncludedInVmBuild(JNIEnv* env))
1782 #if INCLUDE_CDS
1783 # ifdef _LP64
1784     if (!UseCompressedOops || !UseCompressedClassPointers) {
1785       // On 64-bit VMs, CDS is supported only with compressed oops/pointers
1786       return false;
1787     }
1788 # endif // _LP64
1789   return true;
1790 #else
1791   return false;
1792 #endif // INCLUDE_CDS
1793 WB_END
1794 
1795 WB_ENTRY(jboolean, WB_IsJavaHeapArchiveSupported(JNIEnv* env))
1796   return MetaspaceShared::is_heap_object_archiving_allowed();
1797 WB_END
1798 
1799 
1800 WB_ENTRY(jboolean, WB_IsJFRIncludedInVmBuild(JNIEnv* env))
1801 #if INCLUDE_JFR
1802   return true;
1803 #else
1804   return false;
1805 #endif // INCLUDE_JFR
1806 WB_END
1807 
1808 #if INCLUDE_CDS
1809 
1810 WB_ENTRY(jint, WB_GetOffsetForName(JNIEnv* env, jobject o, jstring name))
1811   ResourceMark rm;
1812   char* c_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
1813   int result = CDSOffsets::find_offset(c_name);
1814   return (jint)result;
1815 WB_END
1816 




  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 
  27 #include <new>
  28 
  29 #include "classfile/classLoaderDataGraph.hpp"
  30 #include "classfile/modules.hpp"
  31 #include "classfile/protectionDomainCache.hpp"
  32 #include "classfile/stringTable.hpp"
  33 #include "code/codeCache.hpp"
  34 #include "compiler/methodMatcher.hpp"
  35 #include "compiler/directivesParser.hpp"
  36 #include "gc/shared/gcConfig.hpp"
  37 #include "gc/shared/genCollectedHeap.hpp"
  38 #include "jvmtifiles/jvmtiEnv.hpp"
  39 #include "memory/heapShared.inline.hpp"
  40 #include "memory/metaspaceShared.hpp"
  41 #include "memory/metadataFactory.hpp"

  42 #include "memory/iterator.hpp"
  43 #include "memory/resourceArea.hpp"
  44 #include "memory/universe.hpp"
  45 #include "memory/oopFactory.hpp"
  46 #include "oops/array.hpp"
  47 #include "oops/constantPool.inline.hpp"
  48 #include "oops/method.inline.hpp"
  49 #include "oops/objArrayKlass.hpp"
  50 #include "oops/objArrayOop.inline.hpp"
  51 #include "oops/oop.inline.hpp"
  52 #include "oops/typeArrayOop.inline.hpp"
  53 #include "prims/resolvedMethodTable.hpp"
  54 #include "prims/wbtestmethods/parserTests.hpp"
  55 #include "prims/whitebox.inline.hpp"
  56 #include "runtime/arguments.hpp"
  57 #include "runtime/compilationPolicy.hpp"
  58 #include "runtime/deoptimization.hpp"
  59 #include "runtime/fieldDescriptor.inline.hpp"
  60 #include "runtime/flags/jvmFlag.hpp"
  61 #include "runtime/frame.inline.hpp"


1735     ThreadToNativeFromVM ttnfv(thread);
1736     return doubleBox(thread, env, result);
1737   }
1738   return NULL;
1739 WB_END
1740 
1741 WB_ENTRY(jobject, WB_GetMethodStringOption(JNIEnv* env, jobject wb, jobject method, jstring name))
1742   ccstr ccstrResult;
1743   if (GetMethodOption <ccstr> (thread, env, method, name, &ccstrResult)) {
1744     // can't be in VM when we call JNI
1745     ThreadToNativeFromVM ttnfv(thread);
1746     jstring result = env->NewStringUTF(ccstrResult);
1747     CHECK_JNI_EXCEPTION_(env, NULL);
1748     return result;
1749   }
1750   return NULL;
1751 WB_END
1752 
1753 WB_ENTRY(jboolean, WB_IsShared(JNIEnv* env, jobject wb, jobject obj))
1754   oop obj_oop = JNIHandles::resolve(obj);
1755   return HeapShared::is_archived_object(obj_oop);
1756 WB_END
1757 
1758 WB_ENTRY(jboolean, WB_IsSharedClass(JNIEnv* env, jobject wb, jclass clazz))
1759   return (jboolean)MetaspaceShared::is_in_shared_metaspace(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
1760 WB_END
1761 
1762 WB_ENTRY(jboolean, WB_AreSharedStringsIgnored(JNIEnv* env))
1763   return !StringTable::shared_string_mapped();
1764 WB_END
1765 
1766 WB_ENTRY(jobject, WB_GetResolvedReferences(JNIEnv* env, jobject wb, jclass clazz))
1767   Klass *k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
1768   if (k->is_instance_klass()) {
1769     InstanceKlass *ik = InstanceKlass::cast(k);
1770     ConstantPool *cp = ik->constants();
1771     objArrayOop refs =  cp->resolved_references();
1772     return (jobject)JNIHandles::make_local(env, refs);
1773   } else {
1774     return NULL;
1775   }
1776 WB_END
1777 
1778 WB_ENTRY(jboolean, WB_AreOpenArchiveHeapObjectsMapped(JNIEnv* env))
1779   return HeapShared::open_archive_heap_region_mapped();
1780 WB_END
1781 
1782 WB_ENTRY(jboolean, WB_IsCDSIncludedInVmBuild(JNIEnv* env))
1783 #if INCLUDE_CDS
1784 # ifdef _LP64
1785     if (!UseCompressedOops || !UseCompressedClassPointers) {
1786       // On 64-bit VMs, CDS is supported only with compressed oops/pointers
1787       return false;
1788     }
1789 # endif // _LP64
1790   return true;
1791 #else
1792   return false;
1793 #endif // INCLUDE_CDS
1794 WB_END
1795 
1796 WB_ENTRY(jboolean, WB_IsJavaHeapArchiveSupported(JNIEnv* env))
1797   return HeapShared::is_heap_object_archiving_allowed();
1798 WB_END
1799 
1800 
1801 WB_ENTRY(jboolean, WB_IsJFRIncludedInVmBuild(JNIEnv* env))
1802 #if INCLUDE_JFR
1803   return true;
1804 #else
1805   return false;
1806 #endif // INCLUDE_JFR
1807 WB_END
1808 
1809 #if INCLUDE_CDS
1810 
1811 WB_ENTRY(jint, WB_GetOffsetForName(JNIEnv* env, jobject o, jstring name))
1812   ResourceMark rm;
1813   char* c_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
1814   int result = CDSOffsets::find_offset(c_name);
1815   return (jint)result;
1816 WB_END
1817 


< prev index next >