hotspot/src/share/vm/prims/whitebox.cpp
changeset 24671 0ebd6fe70309
parent 24446 dca843327b90
child 24921 3b73ef0b62d1
--- a/hotspot/src/share/vm/prims/whitebox.cpp	Fri May 23 09:22:01 2014 -0700
+++ b/hotspot/src/share/vm/prims/whitebox.cpp	Sat May 24 00:04:21 2014 +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"
@@ -576,6 +578,15 @@
 WB_END
 
 
+WB_ENTRY(jlong, WB_GetThreadStackSize(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) t->stack_available(os::current_stack_pointer()) - (jlong) 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) {
@@ -690,6 +701,8 @@
   {CC"getCPUFeatures",     CC"()Ljava/lang/String;",  (void*)&WB_GetCPUFeatures     },
   {CC"getNMethod",         CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;",
                                                       (void*)&WB_GetNMethod         },
+  {CC"getThreadStackSize", CC"()J",                   (void*)&WB_GetThreadStackSize },
+  {CC"getThreadRemainingStackSize", CC"()J",          (void*)&WB_GetThreadRemainingStackSize },
 };
 
 #undef CC