< prev index next >

src/hotspot/share/code/scopeDesc.cpp

Print this page
rev 53033 : imported patch at_scope


  34   _code          = code;
  35   _decode_offset = decode_offset;
  36   _objects       = decode_object_values(obj_decode_offset);
  37   _reexecute     = reexecute;
  38   _rethrow_exception = rethrow_exception;
  39   _return_oop    = return_oop;
  40   decode_body();
  41 }
  42 
  43 ScopeDesc::ScopeDesc(const CompiledMethod* code, int decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) {
  44   _code          = code;
  45   _decode_offset = decode_offset;
  46   _objects       = decode_object_values(DebugInformationRecorder::serialized_null);
  47   _reexecute     = reexecute;
  48   _rethrow_exception = rethrow_exception;
  49   _return_oop    = return_oop;
  50   decode_body();
  51 }
  52 
  53 
  54 ScopeDesc::ScopeDesc(const ScopeDesc* parent) {
  55   _code          = parent->_code;
  56   _decode_offset = parent->_sender_decode_offset;
  57   _objects       = parent->_objects;
  58   _reexecute     = false; //reexecute only applies to the first scope
  59   _rethrow_exception = false;
  60   _return_oop    = false;
  61   decode_body();








  62 }
  63 
  64 
  65 void ScopeDesc::decode_body() {
  66   if (decode_offset() == DebugInformationRecorder::serialized_null) {
  67     // This is a sentinel record, which is only relevant to
  68     // approximate queries.  Decode a reasonable frame.
  69     _sender_decode_offset = DebugInformationRecorder::serialized_null;
  70     _method = _code->method();
  71     _bci = InvocationEntryBci;
  72     _locals_decode_offset = DebugInformationRecorder::serialized_null;
  73     _expressions_decode_offset = DebugInformationRecorder::serialized_null;
  74     _monitors_decode_offset = DebugInformationRecorder::serialized_null;
  75   } else {
  76     // decode header
  77     DebugInfoReadStream* stream  = stream_at(decode_offset());
  78 
  79     _sender_decode_offset = stream->read_int();
  80     _method = stream->read_method();
  81     _bci    = stream->read_bci();




  34   _code          = code;
  35   _decode_offset = decode_offset;
  36   _objects       = decode_object_values(obj_decode_offset);
  37   _reexecute     = reexecute;
  38   _rethrow_exception = rethrow_exception;
  39   _return_oop    = return_oop;
  40   decode_body();
  41 }
  42 
  43 ScopeDesc::ScopeDesc(const CompiledMethod* code, int decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) {
  44   _code          = code;
  45   _decode_offset = decode_offset;
  46   _objects       = decode_object_values(DebugInformationRecorder::serialized_null);
  47   _reexecute     = reexecute;
  48   _rethrow_exception = rethrow_exception;
  49   _return_oop    = return_oop;
  50   decode_body();
  51 }
  52 
  53 
  54 void ScopeDesc::initialize(const ScopeDesc* parent, int decode_offset) {
  55   _code          = parent->_code;
  56   _decode_offset = decode_offset;
  57   _objects       = parent->_objects;
  58   _reexecute     = false; //reexecute only applies to the first scope
  59   _rethrow_exception = false;
  60   _return_oop    = false;
  61   decode_body();
  62 }
  63 
  64 ScopeDesc::ScopeDesc(const ScopeDesc* parent) {
  65   initialize(parent, parent->_sender_decode_offset);
  66 }
  67 
  68 ScopeDesc::ScopeDesc(const ScopeDesc* parent, int decode_offset) {
  69   initialize(parent, decode_offset);
  70 }
  71 
  72 
  73 void ScopeDesc::decode_body() {
  74   if (decode_offset() == DebugInformationRecorder::serialized_null) {
  75     // This is a sentinel record, which is only relevant to
  76     // approximate queries.  Decode a reasonable frame.
  77     _sender_decode_offset = DebugInformationRecorder::serialized_null;
  78     _method = _code->method();
  79     _bci = InvocationEntryBci;
  80     _locals_decode_offset = DebugInformationRecorder::serialized_null;
  81     _expressions_decode_offset = DebugInformationRecorder::serialized_null;
  82     _monitors_decode_offset = DebugInformationRecorder::serialized_null;
  83   } else {
  84     // decode header
  85     DebugInfoReadStream* stream  = stream_at(decode_offset());
  86 
  87     _sender_decode_offset = stream->read_int();
  88     _method = stream->read_method();
  89     _bci    = stream->read_bci();


< prev index next >