@@ -61,19 +61,8 @@ public final class ProfilerSupport {
61
61
62
62
// private static final Logger LOGGER = Logger.getLogger(ProfilerSupport.class.getName());
63
63
64
- private static final boolean FORCE_PROFILING_SUPPORTED =
65
- Boolean .getBoolean ("com.sun.tools.visualvm.profiler.SupportAllVMs" ); // NOI18N
66
64
private static final String HOTSPOT_VM_NAME_PREFIX = "Java HotSpot" ; // NOI18N
67
65
private static final String OPENJDK_VM_NAME_PREFIX = "OpenJDK " ; // NOI18N
68
- private static final String SAPJDK_VM_NAME_PREFIX = "SAP Java " ; // NOI18N
69
- private static final String SUN_VM_VENDOR_PREFIX = "Sun " ; // NOI18N
70
- private static final String ORACLE_VM_VENDOR_PREFIX = "Oracle " ; // NOI18N
71
- private static final String APPLE_VM_VENDOR_PREFIX = "Apple " ; // NOI18N
72
- private static final String HP_VM_VENDOR_PREFIX = "\" Hewlett-Packard " ; // NOI18N
73
- private static final String AZUL_VM_VENDOR_PREFIX = "Azul " ; // NOI18N
74
- private static final String SAP_VM_VENDOR_PREFIX = "SAP AG" ; // NOI18N
75
- private static final String GRAAL_VM_VENDOR_PREFIX = "GraalVM " ; // NOI18N
76
- private static final String ORACLE1_VM_VENDOR_PREFIX = "\" Oracle " ; // NOI18N
77
66
78
67
private static final String JAVA_RT_16_PREFIX = "1.6.0" ; // NOI18N
79
68
private static final String JAVA_RT_17_PREFIX = "1.7.0" ; // NOI18N
@@ -315,29 +304,14 @@ boolean supportsProfiling(Application application) {
315
304
// Basic info has to be supported and VM has to be attachable
316
305
if (!jvm .isBasicInfoSupported () || !jvm .isAttachable ()) return false ;
317
306
318
- // User explicitly requests to profile any VM
319
- if (FORCE_PROFILING_SUPPORTED ) return true ;
320
-
321
- ////// //TODO
322
- ////// // temporary disabled until profiling is rewritten to NB 90
323
- ////// return false;
324
-
325
307
// Profiled application needs to be running JDK 6.0 or 7.0 or 8.0 or 9.0
326
- // or 10 or 11
308
+ // or 10 or 11 or 12
327
309
if (jvm .is14 () || jvm .is15 ()) return false ;
328
310
329
- String vmName = jvm .getVmName ();
330
- String vmVendor = jvm .getVmVendor ();
331
-
332
- // VM has to be a HotSpot VM or OpenJDK by Sun Microsystems Inc. or
333
- // Oracle Co. or Apple Inc. or Hewlett-Packard Co. or
334
- // Azul Systems, Inc. or SAP AG or Graal VM
335
- return vmName != null && (vmName .startsWith (HOTSPOT_VM_NAME_PREFIX ) || vmName .startsWith (OPENJDK_VM_NAME_PREFIX )
336
- || vmName .startsWith (SAPJDK_VM_NAME_PREFIX ) || vmName .startsWith (GRAAL_VM_VENDOR_PREFIX )) &&
337
- vmVendor != null && (vmVendor .startsWith (ORACLE_VM_VENDOR_PREFIX ) || vmVendor .startsWith (SUN_VM_VENDOR_PREFIX )
338
- || vmVendor .startsWith (APPLE_VM_VENDOR_PREFIX ) || vmVendor .startsWith (HP_VM_VENDOR_PREFIX )
339
- || vmVendor .startsWith (AZUL_VM_VENDOR_PREFIX ) || vmVendor .startsWith (SAP_VM_VENDOR_PREFIX )
340
- || vmVendor .startsWith (ORACLE1_VM_VENDOR_PREFIX ));
311
+ int arch = getJVMArchitecture (jvm );
312
+ if (arch == -1 ) return false ;
313
+ String javaVer = Platform .getJDKVersionString (jvm .getJavaVersion ());
314
+ return supportsProfiling (javaVer , arch );
341
315
}
342
316
343
317
static boolean classSharingBreaksProfiling (Application application ) {
@@ -411,6 +385,14 @@ private static int getBuildNumber(String javaRTVersion) {
411
385
412
386
return -1 ;
413
387
}
388
+
389
+ private static int getJVMArchitecture (Jvm jvm ) {
390
+ String jvmArch = jvm .getSystemProperties ().getProperty ("sun.arch.data.model" ); // NOI18N
391
+ if (jvmArch != null ) {
392
+ return Integer .valueOf (jvmArch );
393
+ }
394
+ return -1 ;
395
+ }
414
396
415
397
synchronized void setProfiledApplication (Application profiledApplication ) {
416
398
this .profiledApplication = profiledApplication ;
0 commit comments