< prev index next >

src/share/vm/jvmci/jvmciCodeInstaller.cpp

Print this page

        

*** 965,975 **** } _debug_recorder->dump_object_pool(objects); return objects; } ! void CodeInstaller::record_scope(jint pc_offset, Handle debug_info, ScopeMode scope_mode, TRAPS) { Handle position = DebugInfo::bytecodePosition(debug_info); if (position.is_null()) { // Stubs do not record scope info, just oop maps return; } --- 965,975 ---- } _debug_recorder->dump_object_pool(objects); return objects; } ! void CodeInstaller::record_scope(jint pc_offset, Handle debug_info, ScopeMode scope_mode, bool return_oop, TRAPS) { Handle position = DebugInfo::bytecodePosition(debug_info); if (position.is_null()) { // Stubs do not record scope info, just oop maps return; }
*** 978,1001 **** if (scope_mode == CodeInstaller::FullFrame) { objectMapping = record_virtual_objects(debug_info, CHECK); } else { objectMapping = NULL; } ! record_scope(pc_offset, position, scope_mode, objectMapping, CHECK); } ! void CodeInstaller::record_scope(jint pc_offset, Handle position, ScopeMode scope_mode, GrowableArray<ScopeValue*>* objects, TRAPS) { Handle frame; if (scope_mode == CodeInstaller::FullFrame) { if (!position->is_a(BytecodeFrame::klass())) { JVMCI_ERROR("Full frame expected for debug info at %i", pc_offset); } frame = position; } Handle caller_frame = BytecodePosition::caller(position); if (caller_frame.not_null()) { ! record_scope(pc_offset, caller_frame, scope_mode, objects, CHECK); } Handle hotspot_method = BytecodePosition::method(position); Method* method = getMethodFromHotSpotMethod(hotspot_method()); jint bci = BytecodePosition::bci(position); --- 978,1001 ---- if (scope_mode == CodeInstaller::FullFrame) { objectMapping = record_virtual_objects(debug_info, CHECK); } else { objectMapping = NULL; } ! record_scope(pc_offset, position, scope_mode, objectMapping, return_oop, CHECK); } ! void CodeInstaller::record_scope(jint pc_offset, Handle position, ScopeMode scope_mode, GrowableArray<ScopeValue*>* objects, bool return_oop, TRAPS) { Handle frame; if (scope_mode == CodeInstaller::FullFrame) { if (!position->is_a(BytecodeFrame::klass())) { JVMCI_ERROR("Full frame expected for debug info at %i", pc_offset); } frame = position; } Handle caller_frame = BytecodePosition::caller(position); if (caller_frame.not_null()) { ! record_scope(pc_offset, caller_frame, scope_mode, objects, return_oop, CHECK); } Handle hotspot_method = BytecodePosition::method(position); Method* method = getMethodFromHotSpotMethod(hotspot_method()); jint bci = BytecodePosition::bci(position);
*** 1081,1091 **** monitors_token = _debug_recorder->create_monitor_values(monitors); throw_exception = BytecodeFrame::rethrowException(frame) == JNI_TRUE; } ! _debug_recorder->describe_scope(pc_offset, method, NULL, bci, reexecute, throw_exception, false, false, locals_token, expressions_token, monitors_token); } void CodeInstaller::site_Safepoint(CodeBuffer& buffer, jint pc_offset, Handle site, TRAPS) { Handle debug_info = site_Infopoint::debugInfo(site); --- 1081,1091 ---- monitors_token = _debug_recorder->create_monitor_values(monitors); throw_exception = BytecodeFrame::rethrowException(frame) == JNI_TRUE; } ! _debug_recorder->describe_scope(pc_offset, method, NULL, bci, reexecute, throw_exception, false, return_oop, locals_token, expressions_token, monitors_token); } void CodeInstaller::site_Safepoint(CodeBuffer& buffer, jint pc_offset, Handle site, TRAPS) { Handle debug_info = site_Infopoint::debugInfo(site);
*** 1137,1147 **** jint next_pc_offset = CodeInstaller::pd_next_offset(inst, pc_offset, hotspot_method, CHECK); if (debug_info.not_null()) { OopMap *map = create_oop_map(debug_info, CHECK); _debug_recorder->add_safepoint(next_pc_offset, map); ! record_scope(next_pc_offset, debug_info, CodeInstaller::FullFrame, CHECK); } if (foreign_call.not_null()) { jlong foreign_call_destination = HotSpotForeignCallTarget::address(foreign_call); if (_immutable_pic_compilation) { --- 1137,1150 ---- jint next_pc_offset = CodeInstaller::pd_next_offset(inst, pc_offset, hotspot_method, CHECK); if (debug_info.not_null()) { OopMap *map = create_oop_map(debug_info, CHECK); _debug_recorder->add_safepoint(next_pc_offset, map); ! ! bool return_oop = hotspot_method.not_null() && getMethodFromHotSpotMethod(hotspot_method())->is_returning_oop(); ! ! record_scope(next_pc_offset, debug_info, CodeInstaller::FullFrame, return_oop, CHECK); } if (foreign_call.not_null()) { jlong foreign_call_destination = HotSpotForeignCallTarget::address(foreign_call); if (_immutable_pic_compilation) {
< prev index next >