< prev index next >

src/share/vm/shark/sharkCacheDecache.cpp

Print this page




 133   if (local_slot_needs_write(index, value)) {
 134     write_value_to_frame(
 135       SharkType::to_stackType(value->basic_type()),
 136       value->generic_value(),
 137       adjusted_offset(value, offset));
 138   }
 139 
 140   // Record the value in the oopmap if necessary
 141   if (local_slot_needs_oopmap(index, value)) {
 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   debug_info()->describe_scope(
 154     pc_offset(),

 155     target(),
 156     bci(),
 157     true,
 158     false,
 159     false,
 160     debug_info()->create_scope_values(locarray()),
 161     debug_info()->create_scope_values(exparray()),
 162     debug_info()->create_monitor_values(monarray()));
 163 
 164   // Finish recording the debug information
 165   debug_info()->end_safepoint(pc_offset());
 166 }
 167 
 168 void SharkCacher::process_stack_slot(int          index,
 169                                      SharkValue** addr,
 170                                      int          offset) {
 171   SharkValue *value = *addr;
 172 
 173   // Read the value from the frame if necessary
 174   if (stack_slot_needs_read(index, value)) {




 133   if (local_slot_needs_write(index, value)) {
 134     write_value_to_frame(
 135       SharkType::to_stackType(value->basic_type()),
 136       value->generic_value(),
 137       adjusted_offset(value, offset));
 138   }
 139 
 140   // Record the value in the oopmap if necessary
 141   if (local_slot_needs_oopmap(index, value)) {
 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)) {


< prev index next >