142 oopmap()->set_oop(slot2reg(offset));
143 }
144
145 // Record the value in the debuginfo if necessary
146 if (local_slot_needs_debuginfo(index, value)) {
147 locarray()->append(slot2lv(offset, local_location_type(index, addr)));
148 }
149 }
150
151 void SharkDecacher::end_frame() {
152 // Record the scope
153 methodHandle null_mh;
154 debug_info()->describe_scope(
155 pc_offset(),
156 null_mh,
157 target(),
158 bci(),
159 true,
160 false,
161 false,
162 debug_info()->create_scope_values(locarray()),
163 debug_info()->create_scope_values(exparray()),
164 debug_info()->create_monitor_values(monarray()));
165
166 // Finish recording the debug information
167 debug_info()->end_safepoint(pc_offset());
168 }
169
170 void SharkCacher::process_stack_slot(int index,
171 SharkValue** addr,
172 int offset) {
173 SharkValue *value = *addr;
174
175 // Read the value from the frame if necessary
176 if (stack_slot_needs_read(index, value)) {
177 *addr = SharkValue::create_generic(
178 value->type(),
179 read_value_from_frame(
180 SharkType::to_stackType(value->basic_type()),
181 adjusted_offset(value, offset)),
|
142 oopmap()->set_oop(slot2reg(offset));
143 }
144
145 // Record the value in the debuginfo if necessary
146 if (local_slot_needs_debuginfo(index, value)) {
147 locarray()->append(slot2lv(offset, local_location_type(index, addr)));
148 }
149 }
150
151 void SharkDecacher::end_frame() {
152 // Record the scope
153 methodHandle null_mh;
154 debug_info()->describe_scope(
155 pc_offset(),
156 null_mh,
157 target(),
158 bci(),
159 true,
160 false,
161 false,
162 false,
163 debug_info()->create_scope_values(locarray()),
164 debug_info()->create_scope_values(exparray()),
165 debug_info()->create_monitor_values(monarray()));
166
167 // Finish recording the debug information
168 debug_info()->end_safepoint(pc_offset());
169 }
170
171 void SharkCacher::process_stack_slot(int index,
172 SharkValue** addr,
173 int offset) {
174 SharkValue *value = *addr;
175
176 // Read the value from the frame if necessary
177 if (stack_slot_needs_read(index, value)) {
178 *addr = SharkValue::create_generic(
179 value->type(),
180 read_value_from_frame(
181 SharkType::to_stackType(value->basic_type()),
182 adjusted_offset(value, offset)),
|