170
171
172 # ifdef ENABLE_ZAP_DEAD_LOCALS
173
174 static int zap_traversals = 0;
175
176 void InterfaceSupport::zap_dead_locals_old() {
177 JavaThread* thread = JavaThread::current();
178 if (zap_traversals == -1) // edit constant for debugging
179 warning("I am here");
180 int zap_frame_count = 0; // count frames to help debugging
181 for (StackFrameStream sfs(thread); !sfs.is_done(); sfs.next()) {
182 sfs.current()->zap_dead_locals(thread, sfs.register_map());
183 ++zap_frame_count;
184 }
185 ++zap_traversals;
186 }
187
188 # endif
189
190
191 int deoptimizeAllCounter = 0;
192 int zombieAllCounter = 0;
193
194
195 void InterfaceSupport::zombieAll() {
196 if (is_init_completed() && zombieAllCounter > ZombieALotInterval) {
197 zombieAllCounter = 0;
198 VM_ZombieAll op;
199 VMThread::execute(&op);
200 } else {
201 zombieAllCounter++;
202 }
203 }
204
205 void InterfaceSupport::unlinkSymbols() {
206 VM_UnlinkSymbols op;
207 VMThread::execute(&op);
208 }
209
210 void InterfaceSupport::deoptimizeAll() {
211 if (is_init_completed() ) {
212 if (DeoptimizeALot && deoptimizeAllCounter > DeoptimizeALotInterval) {
213 deoptimizeAllCounter = 0;
214 VM_DeoptimizeAll op;
215 VMThread::execute(&op);
216 } else if (DeoptimizeRandom && (deoptimizeAllCounter & 0x1f) == (os::random() & 0x1f)) {
217 VM_DeoptimizeAll op;
218 VMThread::execute(&op);
219 }
220 }
221 deoptimizeAllCounter++;
222 }
223
224
225 void InterfaceSupport::stress_derived_pointers() {
226 #ifdef COMPILER2
227 JavaThread *thread = JavaThread::current();
228 if (!is_init_completed()) return;
229 ResourceMark rm(thread);
230 bool found = false;
231 for (StackFrameStream sfs(thread); !sfs.is_done() && !found; sfs.next()) {
232 CodeBlob* cb = sfs.current()->cb();
233 if (cb != NULL && cb->oop_maps() ) {
234 // Find oopmap for current method
235 OopMap* map = cb->oop_map_for_return_address(sfs.current()->pc());
236 assert(map != NULL, "no oopmap found for pc");
|
170
171
172 # ifdef ENABLE_ZAP_DEAD_LOCALS
173
174 static int zap_traversals = 0;
175
176 void InterfaceSupport::zap_dead_locals_old() {
177 JavaThread* thread = JavaThread::current();
178 if (zap_traversals == -1) // edit constant for debugging
179 warning("I am here");
180 int zap_frame_count = 0; // count frames to help debugging
181 for (StackFrameStream sfs(thread); !sfs.is_done(); sfs.next()) {
182 sfs.current()->zap_dead_locals(thread, sfs.register_map());
183 ++zap_frame_count;
184 }
185 ++zap_traversals;
186 }
187
188 # endif
189
190 int deoptimizeAllCounter = 0;
191 int zombieAllCounter = 0;
192
193 void InterfaceSupport::zombieAll() {
194 int value = zombieAllCounter / Threads::number_of_threads();
195 if (is_init_completed() && value > ZombieALotInterval) {
196 zombieAllCounter = 0;
197 VM_ZombieAll op;
198 VMThread::execute(&op);
199 }
200 zombieAllCounter++;
201 }
202
203 void InterfaceSupport::unlinkSymbols() {
204 VM_UnlinkSymbols op;
205 VMThread::execute(&op);
206 }
207
208 void InterfaceSupport::deoptimizeAll() {
209 int value = deoptimizeAllCounter / Threads::number_of_threads();
210 if (is_init_completed()) {
211 if (DeoptimizeALot && value > DeoptimizeALotInterval) {
212 deoptimizeAllCounter = 0;
213 VM_DeoptimizeAll op;
214 VMThread::execute(&op);
215 } else if (DeoptimizeRandom && (value & 0x1F) == (os::random() & 0x1F)) {
216 VM_DeoptimizeAll op;
217 VMThread::execute(&op);
218 }
219 }
220 deoptimizeAllCounter++;
221 }
222
223
224 void InterfaceSupport::stress_derived_pointers() {
225 #ifdef COMPILER2
226 JavaThread *thread = JavaThread::current();
227 if (!is_init_completed()) return;
228 ResourceMark rm(thread);
229 bool found = false;
230 for (StackFrameStream sfs(thread); !sfs.is_done() && !found; sfs.next()) {
231 CodeBlob* cb = sfs.current()->cb();
232 if (cb != NULL && cb->oop_maps() ) {
233 // Find oopmap for current method
234 OopMap* map = cb->oop_map_for_return_address(sfs.current()->pc());
235 assert(map != NULL, "no oopmap found for pc");
|