Request for reviews (M): 6873116: Modify reexecute implementation to use pcDesc to record the reexecute bit
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Wed Aug 19 15:09:47 PDT 2009
No. What Tom talks about is to do it only in
Deoptimization::fetch_unroll_info_helper().
In other cases we will generate just empty ObjectValue(id).
Vladimir
changpeng fang - Sun Microsystems - Santa Clara United States wrote:
>
> Is this the approach to make it lazy? Thanks. -- Changpeng
>
>
> diff -r d0acbc302e14 src/share/vm/code/scopeDesc.cpp
> --- a/src/share/vm/code/scopeDesc.cpp Mon Aug 17 14:45:02 2009 -0700
> +++ b/src/share/vm/code/scopeDesc.cpp Wed Aug 19 14:49:27 2009 -0700
> @@ -90,16 +90,21 @@ GrowableArray<ScopeValue*>* ScopeDesc::d
>
> GrowableArray<ScopeValue*>* ScopeDesc::decode_object_values(int
> decode_offset) {
> if (decode_offset == DebugInformationRecorder::serialized_null) return
> NULL;
> - GrowableArray<ScopeValue*>* result = new GrowableArray<ScopeValue*>();
> - DebugInfoReadStream* stream = new DebugInfoReadStream(_code,
> decode_offset, result);
> - int length = stream->read_int();
> - for (int index = 0; index < length; index++) {
> - // Objects values are pushed to 'result' array during read so that
> - // object's fields could reference it (OBJECT_ID_CODE).
> - (void)ScopeValue::read_from(stream);
> +#ifdef COMPILER2
> + if (DoEscapeAnalysis && EliminateAllocations) {
> + GrowableArray<ScopeValue*>* result = new GrowableArray<ScopeValue*>();
> + DebugInfoReadStream* stream = new DebugInfoReadStream(_code,
> decode_offset, result);
> + int length = stream->read_int();
> + for (int index = 0; index < length; index++) {
> + // Objects values are pushed to 'result' array during read so that
> + // object's fields could reference it (OBJECT_ID_CODE).
> + (void)ScopeValue::read_from(stream);
> + }
> + assert(result->length() == length, "inconsistent debug information");
> + return result;
> }
> - assert(result->length() == length, "inconsistent debug information");
> - return result;
> +#endif
> + return NULL;
> }
>
>
>
>
>
>
>
>> Tom Rodriguez wrote:
>>> By the way, does anyone know why the objects for EA are decoded
>>> eagerly instead of being decoded lazily like all the other debug
>>> info? That seems like unneeded overhead for most uses of ScopeDesc
>>> for stack walking.
>>
>> Do you mean the call to decode_object_values()?
>> It is done only for top frame.
>> But you are right that we may need to call it only when we
>> need to decode narrow oop. I will look on it.
>>
>> Vladimir
>>
>>>
>>> tom
>>>
>
More information about the hotspot-compiler-dev
mailing list