--- old/src/share/vm/prims/whitebox.cpp 2014-01-29 18:56:02.823513311 +0400 +++ new/src/share/vm/prims/whitebox.cpp 2014-01-29 18:56:02.711513316 +0400 @@ -33,9 +33,11 @@ #include "prims/whitebox.hpp" #include "prims/wbtestmethods/parserTests.hpp" +#include "runtime/thread.hpp" #include "runtime/arguments.hpp" #include "runtime/interfaceSupport.hpp" #include "runtime/os.hpp" + #include "utilities/debug.hpp" #include "utilities/macros.hpp" #include "utilities/exceptions.hpp" @@ -489,6 +491,15 @@ c = *p; WB_END +WB_ENTRY(jlong, WB_GetThreadFullStackSize(JNIEnv* env, jobject o)) + return (jlong) Thread::current()->stack_size(); +WB_END + +WB_ENTRY(jlong, WB_GetThreadRemainingStackSize(JNIEnv* env, jobject o)) + JavaThread* t = JavaThread::current(); + return (jlong) ( (ptrdiff_t) t->stack_available(os::current_stack_pointer()) - StackShadowPages * os::vm_page_size() ); +WB_END + //Some convenience methods to deal with objects from java int WhiteBox::offset_for_field(const char* field_name, oop object, Symbol* signature_symbol) { @@ -600,6 +611,8 @@ {CC"isInStringTable", CC"(Ljava/lang/String;)Z", (void*)&WB_IsInStringTable }, {CC"fullGC", CC"()V", (void*)&WB_FullGC }, {CC"readReservedMemory", CC"()V", (void*)&WB_ReadReservedMemory }, + {CC"getThreadFullStackSize", CC"()J", (void*)&WB_GetThreadFullStackSize }, + {CC"getThreadRemainingStackSize", CC"()J", (void*)&WB_GetThreadRemainingStackSize }, }; #undef CC