Mercurial > hg > graal-jvmci-8
comparison src/share/vm/prims/jvmtiImpl.hpp @ 2147:9afee0b9fc1d
7012505: BreakpointWithFullGC.sh fails with Internal Error (src/share/vm/oops/methodOop.cpp:220)
Summary: Rebuild breakpoint cache at gc_epilogue instead of during oops_do
Reviewed-by: dcubed, ysr, coleenp
author | kamg |
---|---|
date | Wed, 19 Jan 2011 13:51:53 -0800 |
parents | 7246a374a9f2 |
children | bf8517f4e4d0 |
comparison
equal
deleted
inserted
replaced
2146:2f33b03bd915 | 2147:9afee0b9fc1d |
---|---|
115 void remove (int index); | 115 void remove (int index); |
116 // clear out all elements and release all heap space, notify listener | 116 // clear out all elements and release all heap space, notify listener |
117 void clear(); | 117 void clear(); |
118 // apply f to every element and update the cache | 118 // apply f to every element and update the cache |
119 void oops_do(OopClosure* f); | 119 void oops_do(OopClosure* f); |
120 // update the cache after a full gc | |
121 void gc_epilogue(); | |
120 }; | 122 }; |
121 | 123 |
122 | 124 |
123 /////////////////////////////////////////////////////////////// | 125 /////////////////////////////////////////////////////////////// |
124 // | 126 // |
146 int find(JvmtiBreakpoint& e) { return _cache.find((GrowableElement *) &e); } | 148 int find(JvmtiBreakpoint& e) { return _cache.find((GrowableElement *) &e); } |
147 void append(JvmtiBreakpoint& e) { _cache.append((GrowableElement *) &e); } | 149 void append(JvmtiBreakpoint& e) { _cache.append((GrowableElement *) &e); } |
148 void remove (int index) { _cache.remove(index); } | 150 void remove (int index) { _cache.remove(index); } |
149 void clear() { _cache.clear(); } | 151 void clear() { _cache.clear(); } |
150 void oops_do(OopClosure* f) { _cache.oops_do(f); } | 152 void oops_do(OopClosure* f) { _cache.oops_do(f); } |
153 void gc_epilogue() { _cache.gc_epilogue(); } | |
151 }; | 154 }; |
152 | 155 |
153 | 156 |
154 /////////////////////////////////////////////////////////////// | 157 /////////////////////////////////////////////////////////////// |
155 // | 158 // |
280 | 283 |
281 int set(JvmtiBreakpoint& bp); | 284 int set(JvmtiBreakpoint& bp); |
282 int clear(JvmtiBreakpoint& bp); | 285 int clear(JvmtiBreakpoint& bp); |
283 void clearall_in_class_at_safepoint(klassOop klass); | 286 void clearall_in_class_at_safepoint(klassOop klass); |
284 void clearall(); | 287 void clearall(); |
288 void gc_epilogue(); | |
285 }; | 289 }; |
286 | 290 |
287 | 291 |
288 /////////////////////////////////////////////////////////////// | 292 /////////////////////////////////////////////////////////////// |
289 // | 293 // |
323 | 327 |
324 // quickly test whether the bcp matches a cached breakpoint in the list | 328 // quickly test whether the bcp matches a cached breakpoint in the list |
325 static inline bool is_breakpoint(address bcp); | 329 static inline bool is_breakpoint(address bcp); |
326 | 330 |
327 static void oops_do(OopClosure* f); | 331 static void oops_do(OopClosure* f); |
332 static void gc_epilogue(); | |
328 }; | 333 }; |
329 | 334 |
330 // quickly test whether the bcp matches a cached breakpoint in the list | 335 // quickly test whether the bcp matches a cached breakpoint in the list |
331 bool JvmtiCurrentBreakpoints::is_breakpoint(address bcp) { | 336 bool JvmtiCurrentBreakpoints::is_breakpoint(address bcp) { |
332 address *bps = get_breakpoint_list(); | 337 address *bps = get_breakpoint_list(); |