31 #include "classfile/vmSymbols.hpp"
32 #include "code/codeCache.hpp"
33 #include "code/scopeDesc.hpp"
34 #include "compiler/compileBroker.hpp"
35 #include "compiler/compileTask.hpp"
36 #include "gc/shared/gcId.hpp"
37 #include "gc/shared/gcLocker.inline.hpp"
38 #include "gc/shared/workgroup.hpp"
39 #include "interpreter/interpreter.hpp"
40 #include "interpreter/linkResolver.hpp"
41 #include "interpreter/oopMapCache.hpp"
42 #include "jvmtifiles/jvmtiEnv.hpp"
43 #include "logging/log.hpp"
44 #include "logging/logConfiguration.hpp"
45 #include "logging/logStream.hpp"
46 #include "memory/allocation.inline.hpp"
47 #include "memory/metaspaceShared.hpp"
48 #include "memory/oopFactory.hpp"
49 #include "memory/resourceArea.hpp"
50 #include "memory/universe.hpp"
51 #include "oops/instanceKlass.hpp"
52 #include "oops/objArrayOop.hpp"
53 #include "oops/oop.inline.hpp"
54 #include "oops/symbol.hpp"
55 #include "oops/typeArrayOop.inline.hpp"
56 #include "oops/verifyOopClosure.hpp"
57 #include "prims/jvm_misc.hpp"
58 #include "prims/jvmtiExport.hpp"
59 #include "prims/jvmtiThreadState.hpp"
60 #include "prims/privilegedStack.hpp"
61 #include "runtime/arguments.hpp"
62 #include "runtime/atomic.hpp"
63 #include "runtime/biasedLocking.hpp"
64 #include "runtime/commandLineFlagConstraintList.hpp"
65 #include "runtime/commandLineFlagWriteableList.hpp"
66 #include "runtime/commandLineFlagRangeList.hpp"
67 #include "runtime/deoptimization.hpp"
68 #include "runtime/frame.inline.hpp"
69 #include "runtime/globals.hpp"
70 #include "runtime/handshake.hpp"
3202 FREE_C_HEAP_ARRAY(char, (char*) _popframe_preserved_args);
3203 _popframe_preserved_args = NULL;
3204 _popframe_preserved_args_size = 0;
3205 }
3206
3207 #ifndef PRODUCT
3208
3209 void JavaThread::trace_frames() {
3210 tty->print_cr("[Describe stack]");
3211 int frame_no = 1;
3212 for (StackFrameStream fst(this); !fst.is_done(); fst.next()) {
3213 tty->print(" %d. ", frame_no++);
3214 fst.current()->print_value_on(tty, this);
3215 tty->cr();
3216 }
3217 }
3218
3219 class PrintAndVerifyOopClosure: public OopClosure {
3220 protected:
3221 template <class T> inline void do_oop_work(T* p) {
3222 oop obj = oopDesc::load_decode_heap_oop(p);
3223 if (obj == NULL) return;
3224 tty->print(INTPTR_FORMAT ": ", p2i(p));
3225 if (oopDesc::is_oop_or_null(obj)) {
3226 if (obj->is_objArray()) {
3227 tty->print_cr("valid objArray: " INTPTR_FORMAT, p2i(obj));
3228 } else {
3229 obj->print();
3230 }
3231 } else {
3232 tty->print_cr("invalid oop: " INTPTR_FORMAT, p2i(obj));
3233 }
3234 tty->cr();
3235 }
3236 public:
3237 virtual void do_oop(oop* p) { do_oop_work(p); }
3238 virtual void do_oop(narrowOop* p) { do_oop_work(p); }
3239 };
3240
3241
3242 static void oops_print(frame* f, const RegisterMap *map) {
|
31 #include "classfile/vmSymbols.hpp"
32 #include "code/codeCache.hpp"
33 #include "code/scopeDesc.hpp"
34 #include "compiler/compileBroker.hpp"
35 #include "compiler/compileTask.hpp"
36 #include "gc/shared/gcId.hpp"
37 #include "gc/shared/gcLocker.inline.hpp"
38 #include "gc/shared/workgroup.hpp"
39 #include "interpreter/interpreter.hpp"
40 #include "interpreter/linkResolver.hpp"
41 #include "interpreter/oopMapCache.hpp"
42 #include "jvmtifiles/jvmtiEnv.hpp"
43 #include "logging/log.hpp"
44 #include "logging/logConfiguration.hpp"
45 #include "logging/logStream.hpp"
46 #include "memory/allocation.inline.hpp"
47 #include "memory/metaspaceShared.hpp"
48 #include "memory/oopFactory.hpp"
49 #include "memory/resourceArea.hpp"
50 #include "memory/universe.hpp"
51 #include "oops/access.inline.hpp"
52 #include "oops/instanceKlass.hpp"
53 #include "oops/objArrayOop.hpp"
54 #include "oops/oop.inline.hpp"
55 #include "oops/symbol.hpp"
56 #include "oops/typeArrayOop.inline.hpp"
57 #include "oops/verifyOopClosure.hpp"
58 #include "prims/jvm_misc.hpp"
59 #include "prims/jvmtiExport.hpp"
60 #include "prims/jvmtiThreadState.hpp"
61 #include "prims/privilegedStack.hpp"
62 #include "runtime/arguments.hpp"
63 #include "runtime/atomic.hpp"
64 #include "runtime/biasedLocking.hpp"
65 #include "runtime/commandLineFlagConstraintList.hpp"
66 #include "runtime/commandLineFlagWriteableList.hpp"
67 #include "runtime/commandLineFlagRangeList.hpp"
68 #include "runtime/deoptimization.hpp"
69 #include "runtime/frame.inline.hpp"
70 #include "runtime/globals.hpp"
71 #include "runtime/handshake.hpp"
3203 FREE_C_HEAP_ARRAY(char, (char*) _popframe_preserved_args);
3204 _popframe_preserved_args = NULL;
3205 _popframe_preserved_args_size = 0;
3206 }
3207
3208 #ifndef PRODUCT
3209
3210 void JavaThread::trace_frames() {
3211 tty->print_cr("[Describe stack]");
3212 int frame_no = 1;
3213 for (StackFrameStream fst(this); !fst.is_done(); fst.next()) {
3214 tty->print(" %d. ", frame_no++);
3215 fst.current()->print_value_on(tty, this);
3216 tty->cr();
3217 }
3218 }
3219
3220 class PrintAndVerifyOopClosure: public OopClosure {
3221 protected:
3222 template <class T> inline void do_oop_work(T* p) {
3223 oop obj = RawAccess<>::oop_load(p);
3224 if (obj == NULL) return;
3225 tty->print(INTPTR_FORMAT ": ", p2i(p));
3226 if (oopDesc::is_oop_or_null(obj)) {
3227 if (obj->is_objArray()) {
3228 tty->print_cr("valid objArray: " INTPTR_FORMAT, p2i(obj));
3229 } else {
3230 obj->print();
3231 }
3232 } else {
3233 tty->print_cr("invalid oop: " INTPTR_FORMAT, p2i(obj));
3234 }
3235 tty->cr();
3236 }
3237 public:
3238 virtual void do_oop(oop* p) { do_oop_work(p); }
3239 virtual void do_oop(narrowOop* p) { do_oop_work(p); }
3240 };
3241
3242
3243 static void oops_print(frame* f, const RegisterMap *map) {
|