Request for reviews (M): 6873116: Modify reexecute implementation to use pcDesc to record the reexecute bit

changpeng fang - Sun Microsystems - Santa Clara United States Changpeng.Fang at Sun.COM
Wed Aug 19 13:56:36 PDT 2009


On 08/19/09 13:26, Tom Rodriguez wrote:
> This looks good.  The SA fixes look right as well.  The only 
> suggestion I might make is to pass the PcDesc into the ScopeDesc 
> constructor instead of passing in each of the arguments.  It's ok the 
> way it is but the arguments are just a mirror of PcDesc.
>
In way, the two constructors will be reduced to one. Can I use a default 
argument to specify
"serialized_null" considering "avoid a .hpp-.hpp dependency" comment?

// Constructor
  ScopeDesc(const nmethod* code, int decode_offset, int 
obj_decode_offset, bool reexecute);

  // Calls above, giving default value of "serialized_null" to the
  // "obj_decode_offset" argument.  (We don't use a default argument to
  // avoid a .hpp-.hpp dependency.)
  ScopeDesc(const nmethod* code, int decode_offset, bool reexecute);

Thanks,

Changpeng



> 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.
>
> tom
>
> On Aug 19, 2009, at 10:55 AM, changpeng fang - Sun Microsystems - 
> Santa Clara United States wrote:
>
>> http://cr.openjdk.java.net/~cfang/6873116/webrev.00/
>>
>> Fixed 6873116:  Modify reexecute implementation to use pcDesc to 
>> record the reexecute bit
>>
>> The implementation in this work is mostly from Christian's work on 
>> reexecute/mh bit changes.
>>
>> Problem:
>> Current implementation of reexecute bit uses DebugInfoStreams to 
>> record the reexecute bit by compressing the reexecute bit
>> into bci field. This makes the code look ugly 
>> (e.g.read_bci_and_reexecute(bool& reexecute). It also makes the 
>> future addition
>> of debuginfo difficult.
>>
>> Solution:
>> In this work, we use pcDesc to record the reexecute bit obtained from 
>> describe_scope, and then store the reexecute bit to
>> scopeDesc when a scopeDesc object is created.
>>
>> Tests:
>> JPRT, CompileTheWord, refworkload
>>
>> Thanks,
>>
>> Changpeng
>>
>



More information about the hotspot-compiler-dev mailing list