28 private: |
28 private: |
29 void pd_initialize() { _anchor.clear(); } |
29 void pd_initialize() { _anchor.clear(); } |
30 |
30 |
31 frame pd_last_frame() { |
31 frame pd_last_frame() { |
32 assert(has_last_Java_frame(), "must have last_Java_sp() when suspended"); |
32 assert(has_last_Java_frame(), "must have last_Java_sp() when suspended"); |
33 if (_anchor.last_Java_pc() != NULL) { |
33 assert(_anchor.last_Java_pc() != NULL, "not walkable"); |
34 return frame(_anchor.last_Java_sp(), _anchor.last_Java_fp(), _anchor.last_Java_pc()); |
34 return frame(_anchor.last_Java_sp(), _anchor.last_Java_fp(), _anchor.last_Java_pc()); |
35 } else { |
|
36 // This will pick up pc from sp |
|
37 return frame(_anchor.last_Java_sp(), _anchor.last_Java_fp()); |
|
38 } |
|
39 } |
35 } |
40 |
36 |
41 public: |
37 public: |
42 // Mutators are highly dangerous.... |
38 // Mutators are highly dangerous.... |
43 intptr_t* last_Java_fp() { return _anchor.last_Java_fp(); } |
39 intptr_t* last_Java_fp() { return _anchor.last_Java_fp(); } |