< prev index next >

src/hotspot/share/jvmci/jvmciCodeInstaller.cpp

Print this page
rev 56101 : 8227745: Enable Escape Analysis for better performance when debugging
Reviewed-by: ???


1138         expressions->append(first);
1139       } else {
1140         MonitorValue *monitor = get_monitor_value(value, objects, JVMCI_CHECK);
1141         monitors->append(monitor);
1142       }
1143       if (second != NULL) {
1144         i++;
1145         if (i >= JVMCIENV->get_length(values) || !JVMCIENV->equals(JVMCIENV->get_object_at(values, i), jvmci_env()->get_Value_ILLEGAL())) {
1146           JVMCI_ERROR("double-slot value not followed by Value.ILLEGAL");
1147         }
1148       }
1149     }
1150 
1151     locals_token = _debug_recorder->create_scope_values(locals);
1152     expressions_token = _debug_recorder->create_scope_values(expressions);
1153     monitors_token = _debug_recorder->create_monitor_values(monitors);
1154 
1155     throw_exception = jvmci_env()->get_BytecodeFrame_rethrowException(frame) == JNI_TRUE;
1156   }
1157 



1158   _debug_recorder->describe_scope(pc_offset, method, NULL, bci, reexecute, throw_exception, false, return_oop,

1159                                   locals_token, expressions_token, monitors_token);
1160 }
1161 
1162 void CodeInstaller::site_Safepoint(CodeBuffer& buffer, jint pc_offset, JVMCIObject site, JVMCI_TRAPS) {
1163   JVMCIObject debug_info = jvmci_env()->get_site_Infopoint_debugInfo(site);
1164   if (debug_info.is_null()) {
1165     JVMCI_ERROR("debug info expected at safepoint at %i", pc_offset);
1166   }
1167 
1168   // address instruction = _instructions->start() + pc_offset;
1169   // jint next_pc_offset = Assembler::locate_next_instruction(instruction) - _instructions->start();
1170   OopMap *map = create_oop_map(debug_info, JVMCI_CHECK);
1171   _debug_recorder->add_safepoint(pc_offset, map);
1172   record_scope(pc_offset, debug_info, CodeInstaller::FullFrame, JVMCI_CHECK);
1173   _debug_recorder->end_safepoint(pc_offset);
1174 }
1175 
1176 void CodeInstaller::site_Infopoint(CodeBuffer& buffer, jint pc_offset, JVMCIObject site, JVMCI_TRAPS) {
1177   JVMCIObject debug_info = jvmci_env()->get_site_Infopoint_debugInfo(site);
1178   if (debug_info.is_null()) {




1138         expressions->append(first);
1139       } else {
1140         MonitorValue *monitor = get_monitor_value(value, objects, JVMCI_CHECK);
1141         monitors->append(monitor);
1142       }
1143       if (second != NULL) {
1144         i++;
1145         if (i >= JVMCIENV->get_length(values) || !JVMCIENV->equals(JVMCIENV->get_object_at(values, i), jvmci_env()->get_Value_ILLEGAL())) {
1146           JVMCI_ERROR("double-slot value not followed by Value.ILLEGAL");
1147         }
1148       }
1149     }
1150 
1151     locals_token = _debug_recorder->create_scope_values(locals);
1152     expressions_token = _debug_recorder->create_scope_values(expressions);
1153     monitors_token = _debug_recorder->create_monitor_values(monitors);
1154 
1155     throw_exception = jvmci_env()->get_BytecodeFrame_rethrowException(frame) == JNI_TRUE;
1156   }
1157 
1158   // TODO: add to JVMCI
1159   const bool not_global_escape_in_scope = false;
1160   const bool arg_escape                 = false;
1161   _debug_recorder->describe_scope(pc_offset, method, NULL, bci, reexecute, throw_exception, false, return_oop,
1162                                   not_global_escape_in_scope, arg_escape,
1163                                   locals_token, expressions_token, monitors_token);
1164 }
1165 
1166 void CodeInstaller::site_Safepoint(CodeBuffer& buffer, jint pc_offset, JVMCIObject site, JVMCI_TRAPS) {
1167   JVMCIObject debug_info = jvmci_env()->get_site_Infopoint_debugInfo(site);
1168   if (debug_info.is_null()) {
1169     JVMCI_ERROR("debug info expected at safepoint at %i", pc_offset);
1170   }
1171 
1172   // address instruction = _instructions->start() + pc_offset;
1173   // jint next_pc_offset = Assembler::locate_next_instruction(instruction) - _instructions->start();
1174   OopMap *map = create_oop_map(debug_info, JVMCI_CHECK);
1175   _debug_recorder->add_safepoint(pc_offset, map);
1176   record_scope(pc_offset, debug_info, CodeInstaller::FullFrame, JVMCI_CHECK);
1177   _debug_recorder->end_safepoint(pc_offset);
1178 }
1179 
1180 void CodeInstaller::site_Infopoint(CodeBuffer& buffer, jint pc_offset, JVMCIObject site, JVMCI_TRAPS) {
1181   JVMCIObject debug_info = jvmci_env()->get_site_Infopoint_debugInfo(site);
1182   if (debug_info.is_null()) {


< prev index next >