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
|