|
35 | 35 | // 3 - restoring an old state (javaCalls). |
36 | 36 |
|
37 | 37 | inline void clear(void) { |
| 38 | + // No hardware barriers are necessary. All members are volatile and the profiler |
| 39 | + // is run from a signal handler and only observers the thread its running on. |
| 40 | + |
38 | 41 | // Clearing _last_Java_sp must be first. |
39 | | - OrderAccess::release(); |
| 42 | + |
40 | 43 | _last_Java_sp = nullptr; |
41 | | - // Fence? |
42 | | - OrderAccess::fence(); |
43 | 44 |
|
44 | 45 | _last_Java_pc = nullptr; |
45 | 46 | } |
46 | 47 |
|
47 | 48 | inline void set(intptr_t* sp, address pc) { |
48 | 49 | _last_Java_pc = pc; |
49 | | - |
50 | | - OrderAccess::release(); |
51 | 50 | _last_Java_sp = sp; |
52 | 51 | } |
53 | 52 |
|
54 | 53 | void copy(JavaFrameAnchor* src) { |
55 | | - // In order to make sure the transition state is valid for "this" |
| 54 | + // No hardware barriers are necessary. All members are volatile and the profiler |
| 55 | + // is run from a signal handler and only observers the thread its running on. |
| 56 | + |
56 | 57 | // we must clear _last_Java_sp before copying the rest of the new data. |
57 | | - // Hack Alert: Temporary bugfix for 4717480/4721647 |
58 | | - // To act like previous version (pd_cache_state) don't null _last_Java_sp |
59 | | - // unless the value is changing. |
60 | | - // |
61 | 58 | if (_last_Java_sp != src->_last_Java_sp) { |
62 | | - OrderAccess::release(); |
63 | 59 | _last_Java_sp = nullptr; |
64 | | - OrderAccess::fence(); |
65 | 60 | } |
66 | 61 | _last_Java_pc = src->_last_Java_pc; |
67 | 62 | // Must be last so profiler will always see valid frame if has_last_frame() is true. |
68 | 63 |
|
69 | | - OrderAccess::release(); |
70 | 64 | _last_Java_sp = src->_last_Java_sp; |
71 | 65 | } |
72 | 66 |
|
|
80 | 74 | intptr_t* last_Java_fp(void) { return nullptr; } |
81 | 75 |
|
82 | 76 | intptr_t* last_Java_sp() const { return _last_Java_sp; } |
83 | | - void set_last_Java_sp(intptr_t* sp) { OrderAccess::release(); _last_Java_sp = sp; } |
| 77 | + void set_last_Java_sp(intptr_t* sp) { _last_Java_sp = sp; } |
84 | 78 |
|
85 | 79 | address last_Java_pc(void) { return _last_Java_pc; } |
86 | 80 |
|
|
0 commit comments