< prev index next >
src/share/vm/prims/whitebox.cpp
Print this page
*** 32,41 ****
--- 32,42 ----
#include "compiler/methodMatcher.hpp"
#include "jvmtifiles/jvmtiEnv.hpp"
#include "memory/metadataFactory.hpp"
#include "memory/metaspaceShared.hpp"
#include "memory/universe.hpp"
+ #include "oops/constantPool.hpp"
#include "oops/oop.inline.hpp"
#include "prims/wbtestmethods/parserTests.hpp"
#include "prims/whitebox.hpp"
#include "runtime/arguments.hpp"
#include "runtime/compilationPolicy.hpp"
*** 1303,1312 ****
--- 1304,1345 ----
WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))
instanceKlassHandle ikh(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
return (jlong) ikh->constants();
WB_END
+ WB_ENTRY(jint, WB_GetConstantPoolCacheIndexTag(JNIEnv* env, jobject wb))
+ return ConstantPool::CPCACHE_INDEX_TAG;
+ WB_END
+
+ WB_ENTRY(jint, WB_GetConstantPoolCacheLength(JNIEnv* env, jobject wb, jclass klass))
+ instanceKlassHandle ikh(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
+ ConstantPool* cp = ikh->constants();
+ if (cp->cache() == NULL) {
+ return -1;
+ }
+ return cp->cache()->length();
+ WB_END
+
+ WB_ENTRY(jint, WB_ConstantPoolRemapInstructionOperandFromCache(JNIEnv* env, jobject wb, jclass klass, jint index))
+ instanceKlassHandle ikh(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
+ ConstantPool* cp = ikh->constants();
+ if (cp->cache() == NULL) {
+ THROW_MSG_0(vmSymbols::java_lang_IllegalStateException(), "Constant pool does not have a cache");
+ }
+ jint cpci = index;
+ jint cpciTag = ConstantPool::CPCACHE_INDEX_TAG;
+ if (cpciTag > cpci || cpci >= cp->cache()->length() + cpciTag) {
+ THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Constant pool cache index is out of range");
+ }
+ jint cpi = cp->remap_instruction_operand_from_cache(cpci);
+ return cpi;
+ WB_END
+
+ WB_ENTRY(jint, WB_ConstantPoolEncodeIndyIndex(JNIEnv* env, jobject wb, jint index))
+ return ConstantPool::encode_invokedynamic_index(index);
+ WB_END
+
WB_ENTRY(void, WB_ClearInlineCaches(JNIEnv* env, jobject wb))
VM_ClearICs clear_ics;
VMThread::execute(&clear_ics);
WB_END
*** 1618,1627 ****
--- 1651,1666 ----
{CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize },
{CC"assertMatchingSafepointCalls", CC"(ZZ)V", (void*)&WB_AssertMatchingSafepointCalls },
{CC"isMonitorInflated0", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsMonitorInflated },
{CC"forceSafepoint", CC"()V", (void*)&WB_ForceSafepoint },
{CC"getConstantPool0", CC"(Ljava/lang/Class;)J", (void*)&WB_GetConstantPool },
+ {CC"getConstantPoolCacheIndexTag0", CC"()I", (void*)&WB_GetConstantPoolCacheIndexTag},
+ {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength},
+ {CC"remapInstructionOperandFromCPCache0",
+ CC"(Ljava/lang/Class;I)I", (void*)&WB_ConstantPoolRemapInstructionOperandFromCache},
+ {CC"encodeConstantPoolIndyIndex0",
+ CC"(I)I", (void*)&WB_ConstantPoolEncodeIndyIndex},
{CC"getMethodBooleanOption",
CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Boolean;",
(void*)&WB_GetMethodBooleaneOption},
{CC"getMethodIntxOption",
CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;",
< prev index next >