< prev index next >

src/hotspot/share/code/scopeDesc.cpp

Print this page
rev 60703 : 8227745, 8233915: Enable Escape Analysis for Better Performance in the Presence of JVMTI Agents
Reviewed-by: mdoerr, goetz

*** 29,55 **** #include "code/scopeDesc.hpp" #include "memory/resourceArea.hpp" #include "oops/oop.inline.hpp" #include "runtime/handles.inline.hpp" ! ScopeDesc::ScopeDesc(const CompiledMethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) { _code = code; ! _decode_offset = decode_offset; _objects = decode_object_values(obj_decode_offset); ! _reexecute = reexecute; ! _rethrow_exception = rethrow_exception; ! _return_oop = return_oop; ! decode_body(); ! } ! ! ScopeDesc::ScopeDesc(const CompiledMethod* code, int decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) { ! _code = code; ! _decode_offset = decode_offset; ! _objects = decode_object_values(DebugInformationRecorder::serialized_null); ! _reexecute = reexecute; ! _rethrow_exception = rethrow_exception; ! _return_oop = return_oop; decode_body(); } void ScopeDesc::initialize(const ScopeDesc* parent, int decode_offset) { --- 29,48 ---- #include "code/scopeDesc.hpp" #include "memory/resourceArea.hpp" #include "oops/oop.inline.hpp" #include "runtime/handles.inline.hpp" ! ScopeDesc::ScopeDesc(const CompiledMethod* code, PcDesc* pd, bool ignore_objects) { ! int obj_decode_offset = ignore_objects ? DebugInformationRecorder::serialized_null : pd->obj_decode_offset(); _code = code; ! _decode_offset = pd->scope_decode_offset(); _objects = decode_object_values(obj_decode_offset); ! _reexecute = pd->should_reexecute(); ! _rethrow_exception = pd->rethrow_exception(); ! _return_oop = pd->return_oop(); ! _has_ea_local_in_scope = ignore_objects ? false : pd->has_ea_local_in_scope(); ! _arg_escape = ignore_objects ? false : pd->arg_escape(); decode_body(); } void ScopeDesc::initialize(const ScopeDesc* parent, int decode_offset) {
*** 57,66 **** --- 50,61 ---- _decode_offset = decode_offset; _objects = parent->_objects; _reexecute = false; //reexecute only applies to the first scope _rethrow_exception = false; _return_oop = false; + _has_ea_local_in_scope = parent->has_ea_local_in_scope(); + _arg_escape = false; decode_body(); } ScopeDesc::ScopeDesc(const ScopeDesc* parent) { initialize(parent, parent->_sender_decode_offset);
< prev index next >