src/share/vm/c1/c1_IR.hpp

changeset 1335
9987d9d5eb0e
parent 435
a61af66fc99e
child 1383
89e0543e1737
equal deleted inserted replaced
1334:55cb84cd1247 1335:9987d9d5eb0e
237 GrowableArray<ScopeValue*>* locals() { return _locals; } 237 GrowableArray<ScopeValue*>* locals() { return _locals; }
238 GrowableArray<ScopeValue*>* expressions() { return _expressions; } 238 GrowableArray<ScopeValue*>* expressions() { return _expressions; }
239 GrowableArray<MonitorValue*>* monitors() { return _monitors; } 239 GrowableArray<MonitorValue*>* monitors() { return _monitors; }
240 IRScopeDebugInfo* caller() { return _caller; } 240 IRScopeDebugInfo* caller() { return _caller; }
241 241
242 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset) { 242 //Whether we should reexecute this bytecode for deopt
243 bool should_reexecute();
244
245 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool topmost) {
243 if (caller() != NULL) { 246 if (caller() != NULL) {
244 // Order is significant: Must record caller first. 247 // Order is significant: Must record caller first.
245 caller()->record_debug_info(recorder, pc_offset); 248 caller()->record_debug_info(recorder, pc_offset, false/*topmost*/);
246 } 249 }
247 DebugToken* locvals = recorder->create_scope_values(locals()); 250 DebugToken* locvals = recorder->create_scope_values(locals());
248 DebugToken* expvals = recorder->create_scope_values(expressions()); 251 DebugToken* expvals = recorder->create_scope_values(expressions());
249 DebugToken* monvals = recorder->create_monitor_values(monitors()); 252 DebugToken* monvals = recorder->create_monitor_values(monitors());
250 recorder->describe_scope(pc_offset, scope()->method(), bci(), locvals, expvals, monvals); 253 // reexecute allowed only for the topmost frame
254 bool reexecute = topmost ? should_reexecute() : false;
255 recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, locvals, expvals, monvals);
251 } 256 }
252 }; 257 };
253 258
254 259
255 class CodeEmitInfo: public CompilationResourceObj { 260 class CodeEmitInfo: public CompilationResourceObj {

mercurial