RFR JDK-8046282: SA update

Poonam Bajaj poonam.bajaj at oracle.com
Thu Jun 12 07:55:46 UTC 2014


Hi Sundar,

Is it okay with you if I keep the enum and class definitions as they are 
now? And can I add you as the reviewer for these changes?

Thanks,
Poonam

On 6/9/2014 2:56 PM, A. Sundararajan wrote:
> Since SA is java code, we could have it cleaner..
>
> my 2 cents,
> -Sundar
>
> On Monday 09 June 2014 02:40 PM, Poonam Bajaj wrote:
>> Hi Sundar,
>>
>> Yes, it is possible to do that. e.g.  G1YCType can be defined like this.
>>
>> public enum G1YCType {
>>   Normal ("Normal"),
>>   InitialMark ("Initial Mark"),
>>   DuringMark ("During Mark"),
>>   Mixed ("Mixed"),
>>   G1YCTypeEndSentinel ("Unknown")
>>
>>   private final String value;
>>
>>   G1YCType(String val) {
>>     this.value = val;
>>   }
>>   public String value() {
>>     return value;
>>   }
>> }
>>
>> But, my purpose of having a class and an enum being used in that 
>> class was to have the similar kind of code structure on the SA side 
>> as is present on the hotspot side. e.g the above is defined as the 
>> following on the hotspot side:
>>
>> 030 enum G1YCType {
>> 031   Normal,
>> 032   InitialMark,
>> 033   DuringMark,
>> 034   Mixed,
>> 035   G1YCTypeEndSentinel
>> 036 };
>> 037
>> 038 class G1YCTypeHelper {
>> 039  public:
>> 040   static const char* to_string(G1YCType type) {
>> 041     switch(type) {
>> 042       case Normal: return "Normal";
>> 043       case InitialMark: return "Initial Mark";
>> 044       case DuringMark: return "During Mark";
>> 045       case Mixed: return "Mixed";
>> 046       default: ShouldNotReachHere(); return NULL;
>> 047     }
>> 048   }
>> 049 };
>>
>> And I have tried to replicate the same on the SA side so that one can 
>> easily understand and map the definitions on both the sides.
>>
>>   27 public class G1YCTypeHelper {
>>   28
>>   29   public enum G1YCType {
>>   30     Normal,
>>   31     InitialMark,
>>   32     DuringMark,
>>   33     Mixed,
>>   34     G1YCTypeEndSentinel
>>   35   }
>>   36
>>   37   public static String toString(G1YCType type) {
>>   38     switch (type) {
>>   39     case Normal:
>>   40       return "Normal";
>>   41     case InitialMark:
>>   42       return "Initial Mark";
>>   43     case DuringMark:
>>   44       return "During Mark";
>>   45     case Mixed:
>>   46       return "Mixed";
>>   47     default:
>>   48       return null;
>>   49     }
>>   50   }
>>   51 }
>>
>>
>> Please let me know if this is still a concern for you.
>>
>> Thanks,
>> Poonam
>>
>> On 6/9/2014 10:38 AM, A. Sundararajan wrote:
>>> The pattern of enum within a class and toString helper to return 
>>> string description of it -- is used for many cases.
>>>
>>> Why not use enums with String accepting constructor and toString (or 
>>> new method called "toDescription()) override? You could have add 
>>> "Unknown" in these enums to map to an option that is available in VM 
>>> -- but not in SA.
>>>
>>> Since it is a debugger it is expected to work with incomplete info.. 
>>> so whereever you map a VM data structure element to java enum, you 
>>> can map unknown enum constants to "Unknown" on Java side.  Of 
>>> course, if there is a sentinel element defined in VM side, you could 
>>> use that itself - no need for "Unknown" in such cases.
>>>
>>> It'd nice to simplify that class-within-enum pattern...
>>>
>>> -Sundar
>>>
>>> On Saturday 07 June 2014 02:48 PM, Poonam Bajaj wrote:
>>>> Hi,
>>>>
>>>> Please review these changes for the bug 8046282 for JDK 9. These 
>>>> changes add some definitions on the SA side and the supporting code 
>>>> on the hotspot side.
>>>>
>>>> Webrev: http://cr.openjdk.java.net/~poonam/8046282/webrev.00/
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8046282
>>>>
>>>> Thanks,
>>>> Poonam
>>>>
>>>
>


More information about the serviceability-dev mailing list