Mercurial > hg > graal-compiler
comparison agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java @ 12322:72b7e96c1922
8024545: make develop and notproduct flag values available in product builds
Reviewed-by: dholmes, kvn
author | twisti |
---|---|
date | Thu, 26 Sep 2013 12:07:53 -0700 |
parents | 7944aba7ba41 |
children | de6a9e811145 |
comparison
equal
deleted
inserted
replaced
12295:1b64d46620a3 | 12322:72b7e96c1922 |
---|---|
132 // command line flags supplied to VM - see struct Flag in globals.hpp | 132 // command line flags supplied to VM - see struct Flag in globals.hpp |
133 public static final class Flag { | 133 public static final class Flag { |
134 private String type; | 134 private String type; |
135 private String name; | 135 private String name; |
136 private Address addr; | 136 private Address addr; |
137 private String kind; | 137 private int flags; |
138 private int origin; | 138 |
139 | 139 private Flag(String type, String name, Address addr, int flags) { |
140 private Flag(String type, String name, Address addr, String kind, int origin) { | |
141 this.type = type; | 140 this.type = type; |
142 this.name = name; | 141 this.name = name; |
143 this.addr = addr; | 142 this.addr = addr; |
144 this.kind = kind; | 143 this.flags = flags; |
145 this.origin = origin; | |
146 } | 144 } |
147 | 145 |
148 public String getType() { | 146 public String getType() { |
149 return type; | 147 return type; |
150 } | 148 } |
155 | 153 |
156 public Address getAddress() { | 154 public Address getAddress() { |
157 return addr; | 155 return addr; |
158 } | 156 } |
159 | 157 |
160 public String getKind() { | |
161 return kind; | |
162 } | |
163 | |
164 public int getOrigin() { | 158 public int getOrigin() { |
165 return origin; | 159 return flags & 0xF; // XXX can we get the mask bits from somewhere? |
166 } | 160 } |
167 | 161 |
168 public boolean isBool() { | 162 public boolean isBool() { |
169 return type.equals("bool"); | 163 return type.equals("bool"); |
170 } | 164 } |
171 | 165 |
172 public boolean getBool() { | 166 public boolean getBool() { |
173 if (Assert.ASSERTS_ENABLED) { | 167 if (Assert.ASSERTS_ENABLED) { |
174 Assert.that(isBool(), "not a bool flag!"); | 168 Assert.that(isBool(), "not a bool flag!"); |
175 } | 169 } |
176 return addr.getCIntegerAt(0, boolType.getSize(), boolType.isUnsigned()) | 170 return addr.getCIntegerAt(0, boolType.getSize(), boolType.isUnsigned()) != 0; |
177 != 0; | |
178 } | 171 } |
179 | 172 |
180 public boolean isIntx() { | 173 public boolean isIntx() { |
181 return type.equals("intx"); | 174 return type.equals("intx"); |
182 } | 175 } |
841 // NOTE: last flag contains null values. | 834 // NOTE: last flag contains null values. |
842 commandLineFlags = new Flag[numFlags - 1]; | 835 commandLineFlags = new Flag[numFlags - 1]; |
843 | 836 |
844 Address flagAddr = flagType.getAddressField("flags").getValue(); | 837 Address flagAddr = flagType.getAddressField("flags").getValue(); |
845 | 838 |
846 AddressField typeFld = flagType.getAddressField("type"); | 839 AddressField typeFld = flagType.getAddressField("_type"); |
847 AddressField nameFld = flagType.getAddressField("name"); | 840 AddressField nameFld = flagType.getAddressField("_name"); |
848 AddressField addrFld = flagType.getAddressField("addr"); | 841 AddressField addrFld = flagType.getAddressField("_addr"); |
849 AddressField kindFld = flagType.getAddressField("kind"); | 842 CIntField flagsFld = new CIntField(flagType.getCIntegerField("_flags"), 0); |
850 CIntField originFld = new CIntField(flagType.getCIntegerField("origin"), 0); | |
851 | 843 |
852 long flagSize = flagType.getSize(); // sizeof(Flag) | 844 long flagSize = flagType.getSize(); // sizeof(Flag) |
853 | 845 |
854 // NOTE: last flag contains null values. | 846 // NOTE: last flag contains null values. |
855 for (int f = 0; f < numFlags - 1; f++) { | 847 for (int f = 0; f < numFlags - 1; f++) { |
856 String type = CStringUtilities.getString(typeFld.getValue(flagAddr)); | 848 String type = CStringUtilities.getString(typeFld.getValue(flagAddr)); |
857 String name = CStringUtilities.getString(nameFld.getValue(flagAddr)); | 849 String name = CStringUtilities.getString(nameFld.getValue(flagAddr)); |
858 Address addr = addrFld.getValue(flagAddr); | 850 Address addr = addrFld.getValue(flagAddr); |
859 String kind = CStringUtilities.getString(kindFld.getValue(flagAddr)); | 851 int flags = (int)flagsFld.getValue(flagAddr); |
860 int origin = (int)originFld.getValue(flagAddr); | 852 commandLineFlags[f] = new Flag(type, name, addr, flags); |
861 commandLineFlags[f] = new Flag(type, name, addr, kind, origin); | |
862 flagAddr = flagAddr.addOffsetTo(flagSize); | 853 flagAddr = flagAddr.addOffsetTo(flagSize); |
863 } | 854 } |
864 | 855 |
865 // sort flags by name | 856 // sort flags by name |
866 Arrays.sort(commandLineFlags, new Comparator() { | 857 Arrays.sort(commandLineFlags, new Comparator() { |