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()) {
|