# HG changeset patch # User lana # Date 1444146091 25200 # Node ID 9a72f98c306646a8dd0260003d2fdcd7fa46f7b3 # Parent b61fe00865d31973e3a6838639d3926b7ab26bce# Parent 2b92eb818ffdce87d0926abb49eb80ea3a2b260a Merge diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/aix/makefiles/mapfile-vers-debug --- a/hotspot/make/aix/makefiles/mapfile-vers-debug Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/aix/makefiles/mapfile-vers-debug Tue Oct 06 08:41:31 2015 -0700 @@ -26,169 +26,6 @@ SUNWprivate_1.1 { global: - # JNI - JNI_CreateJavaVM; - JNI_GetCreatedJavaVMs; - JNI_GetDefaultJavaVMInitArgs; - - # JVM - JVM_ActiveProcessorCount; - JVM_ArrayCopy; - JVM_AssertionStatusDirectives; - JVM_ClassDepth; - JVM_ClassLoaderDepth; - JVM_Clone; - JVM_ConstantPoolGetClassAt; - JVM_ConstantPoolGetClassAtIfLoaded; - JVM_ConstantPoolGetDoubleAt; - JVM_ConstantPoolGetFieldAt; - JVM_ConstantPoolGetFieldAtIfLoaded; - JVM_ConstantPoolGetFloatAt; - JVM_ConstantPoolGetIntAt; - JVM_ConstantPoolGetLongAt; - JVM_ConstantPoolGetMethodAt; - JVM_ConstantPoolGetMethodAtIfLoaded; - JVM_ConstantPoolGetMemberRefInfoAt; - JVM_ConstantPoolGetSize; - JVM_ConstantPoolGetStringAt; - JVM_ConstantPoolGetUTF8At; - JVM_CountStackFrames; - JVM_CurrentClassLoader; - JVM_CurrentLoadedClass; - JVM_CurrentThread; - JVM_CurrentTimeMillis; - JVM_DefineClass; - JVM_DefineClassWithSource; - JVM_DefineClassWithSourceCond; - JVM_DesiredAssertionStatus; - JVM_DoPrivileged; - JVM_DumpAllStacks; - JVM_DumpThreads; - JVM_FillInStackTrace; - JVM_FindClassFromCaller; - JVM_FindClassFromClass; - JVM_FindClassFromBootLoader; - JVM_FindLibraryEntry; - JVM_FindLoadedClass; - JVM_FindPrimitiveClass; - JVM_FindSignal; - JVM_FreeMemory; - JVM_GC; - JVM_GetAllThreads; - JVM_GetArrayElement; - JVM_GetArrayLength; - JVM_GetCPClassNameUTF; - JVM_GetCPFieldClassNameUTF; - JVM_GetCPFieldModifiers; - JVM_GetCPFieldNameUTF; - JVM_GetCPFieldSignatureUTF; - JVM_GetCPMethodClassNameUTF; - JVM_GetCPMethodModifiers; - JVM_GetCPMethodNameUTF; - JVM_GetCPMethodSignatureUTF; - JVM_GetCallerClass; - JVM_GetClassAccessFlags; - JVM_GetClassAnnotations; - JVM_GetClassCPEntriesCount; - JVM_GetClassCPTypes; - JVM_GetClassConstantPool; - JVM_GetClassContext; - JVM_GetClassDeclaredConstructors; - JVM_GetClassDeclaredFields; - JVM_GetClassDeclaredMethods; - JVM_GetClassFieldsCount; - JVM_GetClassInterfaces; - JVM_GetClassMethodsCount; - JVM_GetClassModifiers; - JVM_GetClassName; - JVM_GetClassNameUTF; - JVM_GetClassSignature; - JVM_GetClassSigners; - JVM_GetClassTypeAnnotations; - JVM_GetDeclaredClasses; - JVM_GetDeclaringClass; - JVM_GetSimpleBinaryName; - JVM_GetEnclosingMethodInfo; - JVM_GetFieldIxModifiers; - JVM_GetFieldTypeAnnotations; - JVM_GetInheritedAccessControlContext; - JVM_GetInterfaceVersion; - JVM_GetManagement; - JVM_GetMethodIxArgsSize; - JVM_GetMethodIxByteCode; - JVM_GetMethodIxByteCodeLength; - JVM_GetMethodIxExceptionIndexes; - JVM_GetMethodIxExceptionTableEntry; - JVM_GetMethodIxExceptionTableLength; - JVM_GetMethodIxExceptionsCount; - JVM_GetMethodIxLocalsCount; - JVM_GetMethodIxMaxStack; - JVM_GetMethodIxModifiers; - JVM_GetMethodIxNameUTF; - JVM_GetMethodIxSignatureUTF; - JVM_GetMethodParameters; - JVM_GetMethodTypeAnnotations; - JVM_GetNanoTimeAdjustment; - JVM_GetPrimitiveArrayElement; - JVM_GetProtectionDomain; - JVM_GetStackAccessControlContext; - JVM_GetStackTraceDepth; - JVM_GetStackTraceElement; - JVM_GetSystemPackage; - JVM_GetSystemPackages; - JVM_GetTemporaryDirectory; - JVM_GetVersionInfo; - JVM_Halt; - JVM_HoldsLock; - JVM_IHashCode; - JVM_InitAgentProperties; - JVM_InitProperties; - JVM_InternString; - JVM_Interrupt; - JVM_InvokeMethod; - JVM_IsArrayClass; - JVM_IsConstructorIx; - JVM_IsInterface; - JVM_IsInterrupted; - JVM_IsPrimitiveClass; - JVM_IsSameClassPackage; - JVM_IsSupportedJNIVersion; - JVM_IsThreadAlive; - JVM_IsVMGeneratedMethodIx; - JVM_LatestUserDefinedLoader; - JVM_LoadLibrary; - JVM_MaxObjectInspectionAge; - JVM_MaxMemory; - JVM_MonitorNotify; - JVM_MonitorNotifyAll; - JVM_MonitorWait; - JVM_NanoTime; - JVM_NativePath; - JVM_NewArray; - JVM_NewInstanceFromConstructor; - JVM_NewMultiArray; - JVM_RaiseSignal; - JVM_RawMonitorCreate; - JVM_RawMonitorDestroy; - JVM_RawMonitorEnter; - JVM_RawMonitorExit; - JVM_RegisterSignal; - JVM_ReleaseUTF; - JVM_ResumeThread; - JVM_SetArrayElement; - JVM_SetClassSigners; - JVM_SetNativeThreadName; - JVM_SetPrimitiveArrayElement; - JVM_SetProtectionDomain; - JVM_SetThreadPriority; - JVM_Sleep; - JVM_StartThread; - JVM_StopThread; - JVM_SuspendThread; - JVM_SupportsCX8; - JVM_TotalMemory; - JVM_UnloadLibrary; - JVM_Yield; JVM_handle_linux_signal; # debug JVM diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/aix/makefiles/mapfile-vers-product --- a/hotspot/make/aix/makefiles/mapfile-vers-product Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/aix/makefiles/mapfile-vers-product Tue Oct 06 08:41:31 2015 -0700 @@ -26,167 +26,6 @@ SUNWprivate_1.1 { global: - # JNI - JNI_CreateJavaVM; - JNI_GetCreatedJavaVMs; - JNI_GetDefaultJavaVMInitArgs; - - # JVM - JVM_ActiveProcessorCount; - JVM_ArrayCopy; - JVM_AssertionStatusDirectives; - JVM_ClassDepth; - JVM_ClassLoaderDepth; - JVM_Clone; - JVM_ConstantPoolGetClassAt; - JVM_ConstantPoolGetClassAtIfLoaded; - JVM_ConstantPoolGetDoubleAt; - JVM_ConstantPoolGetFieldAt; - JVM_ConstantPoolGetFieldAtIfLoaded; - JVM_ConstantPoolGetFloatAt; - JVM_ConstantPoolGetIntAt; - JVM_ConstantPoolGetLongAt; - JVM_ConstantPoolGetMethodAt; - JVM_ConstantPoolGetMethodAtIfLoaded; - JVM_ConstantPoolGetMemberRefInfoAt; - JVM_ConstantPoolGetSize; - JVM_ConstantPoolGetStringAt; - JVM_ConstantPoolGetUTF8At; - JVM_CountStackFrames; - JVM_CurrentClassLoader; - JVM_CurrentLoadedClass; - JVM_CurrentThread; - JVM_CurrentTimeMillis; - JVM_DefineClass; - JVM_DefineClassWithSource; - JVM_DefineClassWithSourceCond; - JVM_DesiredAssertionStatus; - JVM_DoPrivileged; - JVM_DumpAllStacks; - JVM_DumpThreads; - JVM_FillInStackTrace; - JVM_FindClassFromCaller; - JVM_FindClassFromClass; - JVM_FindClassFromBootLoader; - JVM_FindLibraryEntry; - JVM_FindLoadedClass; - JVM_FindPrimitiveClass; - JVM_FindSignal; - JVM_FreeMemory; - JVM_GC; - JVM_GetAllThreads; - JVM_GetArrayElement; - JVM_GetArrayLength; - JVM_GetCPClassNameUTF; - JVM_GetCPFieldClassNameUTF; - JVM_GetCPFieldModifiers; - JVM_GetCPFieldNameUTF; - JVM_GetCPFieldSignatureUTF; - JVM_GetCPMethodClassNameUTF; - JVM_GetCPMethodModifiers; - JVM_GetCPMethodNameUTF; - JVM_GetCPMethodSignatureUTF; - JVM_GetCallerClass; - JVM_GetClassAccessFlags; - JVM_GetClassAnnotations; - JVM_GetClassCPEntriesCount; - JVM_GetClassCPTypes; - JVM_GetClassConstantPool; - JVM_GetClassContext; - JVM_GetClassDeclaredConstructors; - JVM_GetClassDeclaredFields; - JVM_GetClassDeclaredMethods; - JVM_GetClassFieldsCount; - JVM_GetClassInterfaces; - JVM_GetClassMethodsCount; - JVM_GetClassModifiers; - JVM_GetClassName; - JVM_GetClassNameUTF; - JVM_GetClassSignature; - JVM_GetClassSigners; - JVM_GetClassTypeAnnotations; - JVM_GetDeclaredClasses; - JVM_GetDeclaringClass; - JVM_GetSimpleBinaryName; - JVM_GetEnclosingMethodInfo; - JVM_GetFieldIxModifiers; - JVM_GetInheritedAccessControlContext; - JVM_GetInterfaceVersion; - JVM_GetManagement; - JVM_GetMethodIxArgsSize; - JVM_GetMethodIxByteCode; - JVM_GetMethodIxByteCodeLength; - JVM_GetMethodIxExceptionIndexes; - JVM_GetMethodIxExceptionTableEntry; - JVM_GetMethodIxExceptionTableLength; - JVM_GetMethodIxExceptionsCount; - JVM_GetMethodIxLocalsCount; - JVM_GetMethodIxMaxStack; - JVM_GetMethodIxModifiers; - JVM_GetMethodIxNameUTF; - JVM_GetMethodIxSignatureUTF; - JVM_GetMethodParameters; - JVM_GetNanoTimeAdjustment; - JVM_GetPrimitiveArrayElement; - JVM_GetProtectionDomain; - JVM_GetStackAccessControlContext; - JVM_GetStackTraceDepth; - JVM_GetStackTraceElement; - JVM_GetSystemPackage; - JVM_GetSystemPackages; - JVM_GetTemporaryDirectory; - JVM_GetVersionInfo; - JVM_Halt; - JVM_HoldsLock; - JVM_IHashCode; - JVM_InitAgentProperties; - JVM_InitProperties; - JVM_InternString; - JVM_Interrupt; - JVM_InvokeMethod; - JVM_IsArrayClass; - JVM_IsConstructorIx; - JVM_IsInterface; - JVM_IsInterrupted; - JVM_IsPrimitiveClass; - JVM_IsSameClassPackage; - JVM_IsSupportedJNIVersion; - JVM_IsThreadAlive; - JVM_IsVMGeneratedMethodIx; - JVM_LatestUserDefinedLoader; - JVM_LoadLibrary; - JVM_MaxObjectInspectionAge; - JVM_MaxMemory; - JVM_MonitorNotify; - JVM_MonitorNotifyAll; - JVM_MonitorWait; - JVM_NanoTime; - JVM_NativePath; - JVM_NewArray; - JVM_NewInstanceFromConstructor; - JVM_NewMultiArray; - JVM_RaiseSignal; - JVM_RawMonitorCreate; - JVM_RawMonitorDestroy; - JVM_RawMonitorEnter; - JVM_RawMonitorExit; - JVM_RegisterSignal; - JVM_ReleaseUTF; - JVM_ResumeThread; - JVM_SetArrayElement; - JVM_SetClassSigners; - JVM_SetNativeThreadName; - JVM_SetPrimitiveArrayElement; - JVM_SetProtectionDomain; - JVM_SetThreadPriority; - JVM_Sleep; - JVM_StartThread; - JVM_StopThread; - JVM_SuspendThread; - JVM_SupportsCX8; - JVM_TotalMemory; - JVM_UnloadLibrary; - JVM_Yield; JVM_handle_linux_signal; # miscellaneous functions diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/aix/makefiles/vm.make --- a/hotspot/make/aix/makefiles/vm.make Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/aix/makefiles/vm.make Tue Oct 06 08:41:31 2015 -0700 @@ -220,10 +220,12 @@ vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES)) -mapfile : $(MAPFILE) vm.def +MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers + +mapfile : $(MAPFILE) $(MAPFILE_SHARE) vm.def rm -f $@ awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \ - { system ("cat vm.def"); } \ + { system ("cat ${MAPFILE_SHARE} vm.def"); } \ else \ { print $$0 } \ }' > $@ < $(MAPFILE) diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug --- a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug Tue Oct 06 08:41:31 2015 -0700 @@ -24,171 +24,9 @@ # Only used for OSX/Darwin builds # Define public interface. - # _JNI - _JNI_CreateJavaVM - _JNI_GetCreatedJavaVMs - _JNI_GetDefaultJavaVMInitArgs - - # _JVM - _JVM_ActiveProcessorCount - _JVM_ArrayCopy - _JVM_AssertionStatusDirectives - _JVM_ClassDepth - _JVM_ClassLoaderDepth - _JVM_Clone - _JVM_ConstantPoolGetClassAt - _JVM_ConstantPoolGetClassAtIfLoaded - _JVM_ConstantPoolGetDoubleAt - _JVM_ConstantPoolGetFieldAt - _JVM_ConstantPoolGetFieldAtIfLoaded - _JVM_ConstantPoolGetFloatAt - _JVM_ConstantPoolGetIntAt - _JVM_ConstantPoolGetLongAt - _JVM_ConstantPoolGetMethodAt - _JVM_ConstantPoolGetMethodAtIfLoaded - _JVM_ConstantPoolGetMemberRefInfoAt - _JVM_ConstantPoolGetSize - _JVM_ConstantPoolGetStringAt - _JVM_ConstantPoolGetUTF8At - _JVM_CountStackFrames - _JVM_CurrentClassLoader - _JVM_CurrentLoadedClass - _JVM_CurrentThread - _JVM_CurrentTimeMillis - _JVM_DefineClass - _JVM_DefineClassWithSource - _JVM_DefineClassWithSourceCond - _JVM_DesiredAssertionStatus - _JVM_DoPrivileged - _JVM_DumpAllStacks - _JVM_DumpThreads - _JVM_FillInStackTrace - _JVM_FindClassFromCaller - _JVM_FindClassFromClass - _JVM_FindClassFromBootLoader - _JVM_FindLibraryEntry - _JVM_FindLoadedClass - _JVM_FindPrimitiveClass - _JVM_FindSignal - _JVM_FreeMemory - _JVM_GC - _JVM_GetAllThreads - _JVM_GetArrayElement - _JVM_GetArrayLength - _JVM_GetCPClassNameUTF - _JVM_GetCPFieldClassNameUTF - _JVM_GetCPFieldModifiers - _JVM_GetCPFieldNameUTF - _JVM_GetCPFieldSignatureUTF - _JVM_GetCPMethodClassNameUTF - _JVM_GetCPMethodModifiers - _JVM_GetCPMethodNameUTF - _JVM_GetCPMethodSignatureUTF - _JVM_GetCallerClass - _JVM_GetClassAccessFlags - _JVM_GetClassAnnotations - _JVM_GetClassCPEntriesCount - _JVM_GetClassCPTypes - _JVM_GetClassConstantPool - _JVM_GetClassContext - _JVM_GetClassDeclaredConstructors - _JVM_GetClassDeclaredFields - _JVM_GetClassDeclaredMethods - _JVM_GetClassFieldsCount - _JVM_GetClassInterfaces - _JVM_GetClassMethodsCount - _JVM_GetClassModifiers - _JVM_GetClassName - _JVM_GetClassNameUTF - _JVM_GetClassSignature - _JVM_GetClassSigners - _JVM_GetClassTypeAnnotations - _JVM_GetDeclaredClasses - _JVM_GetDeclaringClass - _JVM_GetSimpleBinaryName - _JVM_GetEnclosingMethodInfo - _JVM_GetFieldIxModifiers - _JVM_GetFieldTypeAnnotations - _JVM_GetInheritedAccessControlContext - _JVM_GetInterfaceVersion - _JVM_GetManagement - _JVM_GetMethodIxArgsSize - _JVM_GetMethodIxByteCode - _JVM_GetMethodIxByteCodeLength - _JVM_GetMethodIxExceptionIndexes - _JVM_GetMethodIxExceptionTableEntry - _JVM_GetMethodIxExceptionTableLength - _JVM_GetMethodIxExceptionsCount - _JVM_GetMethodIxLocalsCount - _JVM_GetMethodIxMaxStack - _JVM_GetMethodIxModifiers - _JVM_GetMethodIxNameUTF - _JVM_GetMethodIxSignatureUTF - _JVM_GetMethodParameters - _JVM_GetMethodTypeAnnotations - _JVM_GetNanoTimeAdjustment - _JVM_GetPrimitiveArrayElement - _JVM_GetProtectionDomain - _JVM_GetStackAccessControlContext - _JVM_GetStackTraceDepth - _JVM_GetStackTraceElement - _JVM_GetSystemPackage - _JVM_GetSystemPackages - _JVM_GetTemporaryDirectory - _JVM_GetVersionInfo - _JVM_Halt - _JVM_HoldsLock - _JVM_IHashCode - _JVM_InitAgentProperties - _JVM_InitProperties - _JVM_InternString - _JVM_Interrupt - _JVM_InvokeMethod - _JVM_IsArrayClass - _JVM_IsConstructorIx - _JVM_IsInterface - _JVM_IsInterrupted - _JVM_IsPrimitiveClass - _JVM_IsSameClassPackage - _JVM_IsSupportedJNIVersion - _JVM_IsThreadAlive - _JVM_IsVMGeneratedMethodIx - _JVM_LatestUserDefinedLoader - _JVM_LoadLibrary - _JVM_MaxObjectInspectionAge - _JVM_MaxMemory - _JVM_MonitorNotify - _JVM_MonitorNotifyAll - _JVM_MonitorWait - _JVM_NanoTime - _JVM_NativePath - _JVM_NewArray - _JVM_NewInstanceFromConstructor - _JVM_NewMultiArray - _JVM_RaiseSignal - _JVM_RawMonitorCreate - _JVM_RawMonitorDestroy - _JVM_RawMonitorEnter - _JVM_RawMonitorExit - _JVM_RegisterSignal - _JVM_ReleaseUTF - _JVM_ResumeThread - _JVM_SetArrayElement - _JVM_SetClassSigners - _JVM_SetNativeThreadName - _JVM_SetPrimitiveArrayElement - _JVM_SetThreadPriority - _JVM_Sleep - _JVM_StartThread - _JVM_StopThread - _JVM_SuspendThread - _JVM_SupportsCX8 - _JVM_TotalMemory - _JVM_UnloadLibrary - _JVM_Yield _JVM_handle_bsd_signal - # miscellaneous functions + # miscellaneous functions _jio_fprintf _jio_printf _jio_snprintf diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/bsd/makefiles/mapfile-vers-darwin-product --- a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product Tue Oct 06 08:41:31 2015 -0700 @@ -24,168 +24,6 @@ # Only used for OSX/Darwin builds # Define public interface. - # _JNI - _JNI_CreateJavaVM - _JNI_GetCreatedJavaVMs - _JNI_GetDefaultJavaVMInitArgs - - # _JVM - _JVM_ActiveProcessorCount - _JVM_ArrayCopy - _JVM_AssertionStatusDirectives - _JVM_ClassDepth - _JVM_ClassLoaderDepth - _JVM_Clone - _JVM_ConstantPoolGetClassAt - _JVM_ConstantPoolGetClassAtIfLoaded - _JVM_ConstantPoolGetDoubleAt - _JVM_ConstantPoolGetFieldAt - _JVM_ConstantPoolGetFieldAtIfLoaded - _JVM_ConstantPoolGetFloatAt - _JVM_ConstantPoolGetIntAt - _JVM_ConstantPoolGetLongAt - _JVM_ConstantPoolGetMethodAt - _JVM_ConstantPoolGetMethodAtIfLoaded - _JVM_ConstantPoolGetMemberRefInfoAt - _JVM_ConstantPoolGetSize - _JVM_ConstantPoolGetStringAt - _JVM_ConstantPoolGetUTF8At - _JVM_CountStackFrames - _JVM_CurrentClassLoader - _JVM_CurrentLoadedClass - _JVM_CurrentThread - _JVM_CurrentTimeMillis - _JVM_DefineClass - _JVM_DefineClassWithSource - _JVM_DefineClassWithSourceCond - _JVM_DesiredAssertionStatus - _JVM_DoPrivileged - _JVM_DumpAllStacks - _JVM_DumpThreads - _JVM_FillInStackTrace - _JVM_FindClassFromCaller - _JVM_FindClassFromClass - _JVM_FindClassFromBootLoader - _JVM_FindLibraryEntry - _JVM_FindLoadedClass - _JVM_FindPrimitiveClass - _JVM_FindSignal - _JVM_FreeMemory - _JVM_GC - _JVM_GetAllThreads - _JVM_GetArrayElement - _JVM_GetArrayLength - _JVM_GetCPClassNameUTF - _JVM_GetCPFieldClassNameUTF - _JVM_GetCPFieldModifiers - _JVM_GetCPFieldNameUTF - _JVM_GetCPFieldSignatureUTF - _JVM_GetCPMethodClassNameUTF - _JVM_GetCPMethodModifiers - _JVM_GetCPMethodNameUTF - _JVM_GetCPMethodSignatureUTF - _JVM_GetCallerClass - _JVM_GetClassAccessFlags - _JVM_GetClassAnnotations - _JVM_GetClassCPEntriesCount - _JVM_GetClassCPTypes - _JVM_GetClassConstantPool - _JVM_GetClassContext - _JVM_GetClassDeclaredConstructors - _JVM_GetClassDeclaredFields - _JVM_GetClassDeclaredMethods - _JVM_GetClassFieldsCount - _JVM_GetClassInterfaces - _JVM_GetClassMethodsCount - _JVM_GetClassModifiers - _JVM_GetClassName - _JVM_GetClassNameUTF - _JVM_GetClassSignature - _JVM_GetClassSigners - _JVM_GetClassTypeAnnotations - _JVM_GetDeclaredClasses - _JVM_GetDeclaringClass - _JVM_GetSimpleBinaryName - _JVM_GetEnclosingMethodInfo - _JVM_GetFieldIxModifiers - _JVM_GetFieldTypeAnnotations - _JVM_GetInheritedAccessControlContext - _JVM_GetInterfaceVersion - _JVM_GetManagement - _JVM_GetMethodIxArgsSize - _JVM_GetMethodIxByteCode - _JVM_GetMethodIxByteCodeLength - _JVM_GetMethodIxExceptionIndexes - _JVM_GetMethodIxExceptionTableEntry - _JVM_GetMethodIxExceptionTableLength - _JVM_GetMethodIxExceptionsCount - _JVM_GetMethodIxLocalsCount - _JVM_GetMethodIxMaxStack - _JVM_GetMethodIxModifiers - _JVM_GetMethodIxNameUTF - _JVM_GetMethodIxSignatureUTF - _JVM_GetMethodParameters - _JVM_GetMethodTypeAnnotations - _JVM_GetNanoTimeAdjustment - _JVM_GetPrimitiveArrayElement - _JVM_GetProtectionDomain - _JVM_GetStackAccessControlContext - _JVM_GetStackTraceDepth - _JVM_GetStackTraceElement - _JVM_GetSystemPackage - _JVM_GetSystemPackages - _JVM_GetTemporaryDirectory - _JVM_GetVersionInfo - _JVM_Halt - _JVM_HoldsLock - _JVM_IHashCode - _JVM_InitAgentProperties - _JVM_InitProperties - _JVM_InternString - _JVM_Interrupt - _JVM_InvokeMethod - _JVM_IsArrayClass - _JVM_IsConstructorIx - _JVM_IsInterface - _JVM_IsInterrupted - _JVM_IsPrimitiveClass - _JVM_IsSameClassPackage - _JVM_IsSupportedJNIVersion - _JVM_IsThreadAlive - _JVM_IsVMGeneratedMethodIx - _JVM_LatestUserDefinedLoader - _JVM_LoadLibrary - _JVM_MaxObjectInspectionAge - _JVM_MaxMemory - _JVM_MonitorNotify - _JVM_MonitorNotifyAll - _JVM_MonitorWait - _JVM_NanoTime - _JVM_NativePath - _JVM_NewArray - _JVM_NewInstanceFromConstructor - _JVM_NewMultiArray - _JVM_RaiseSignal - _JVM_RawMonitorCreate - _JVM_RawMonitorDestroy - _JVM_RawMonitorEnter - _JVM_RawMonitorExit - _JVM_RegisterSignal - _JVM_ReleaseUTF - _JVM_ResumeThread - _JVM_SetArrayElement - _JVM_SetClassSigners - _JVM_SetNativeThreadName - _JVM_SetPrimitiveArrayElement - _JVM_SetThreadPriority - _JVM_Sleep - _JVM_StartThread - _JVM_StopThread - _JVM_SuspendThread - _JVM_SupportsCX8 - _JVM_TotalMemory - _JVM_UnloadLibrary - _JVM_Yield _JVM_handle_bsd_signal # miscellaneous functions diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/bsd/makefiles/mapfile-vers-debug --- a/hotspot/make/bsd/makefiles/mapfile-vers-debug Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/bsd/makefiles/mapfile-vers-debug Tue Oct 06 08:41:31 2015 -0700 @@ -26,168 +26,6 @@ SUNWprivate_1.1 { global: - # JNI - JNI_CreateJavaVM; - JNI_GetCreatedJavaVMs; - JNI_GetDefaultJavaVMInitArgs; - - # JVM - JVM_ActiveProcessorCount; - JVM_ArrayCopy; - JVM_AssertionStatusDirectives; - JVM_ClassDepth; - JVM_ClassLoaderDepth; - JVM_Clone; - JVM_ConstantPoolGetClassAt; - JVM_ConstantPoolGetClassAtIfLoaded; - JVM_ConstantPoolGetDoubleAt; - JVM_ConstantPoolGetFieldAt; - JVM_ConstantPoolGetFieldAtIfLoaded; - JVM_ConstantPoolGetFloatAt; - JVM_ConstantPoolGetIntAt; - JVM_ConstantPoolGetLongAt; - JVM_ConstantPoolGetMethodAt; - JVM_ConstantPoolGetMethodAtIfLoaded; - JVM_ConstantPoolGetMemberRefInfoAt; - JVM_ConstantPoolGetSize; - JVM_ConstantPoolGetStringAt; - JVM_ConstantPoolGetUTF8At; - JVM_CountStackFrames; - JVM_CurrentClassLoader; - JVM_CurrentLoadedClass; - JVM_CurrentThread; - JVM_CurrentTimeMillis; - JVM_DefineClass; - JVM_DefineClassWithSource; - JVM_DefineClassWithSourceCond; - JVM_DesiredAssertionStatus; - JVM_DoPrivileged; - JVM_DumpAllStacks; - JVM_DumpThreads; - JVM_FillInStackTrace; - JVM_FindClassFromCaller; - JVM_FindClassFromClass; - JVM_FindClassFromBootLoader; - JVM_FindLibraryEntry; - JVM_FindLoadedClass; - JVM_FindPrimitiveClass; - JVM_FindSignal; - JVM_FreeMemory; - JVM_GC; - JVM_GetAllThreads; - JVM_GetArrayElement; - JVM_GetArrayLength; - JVM_GetCPClassNameUTF; - JVM_GetCPFieldClassNameUTF; - JVM_GetCPFieldModifiers; - JVM_GetCPFieldNameUTF; - JVM_GetCPFieldSignatureUTF; - JVM_GetCPMethodClassNameUTF; - JVM_GetCPMethodModifiers; - JVM_GetCPMethodNameUTF; - JVM_GetCPMethodSignatureUTF; - JVM_GetCallerClass; - JVM_GetClassAccessFlags; - JVM_GetClassAnnotations; - JVM_GetClassCPEntriesCount; - JVM_GetClassCPTypes; - JVM_GetClassConstantPool; - JVM_GetClassContext; - JVM_GetClassDeclaredConstructors; - JVM_GetClassDeclaredFields; - JVM_GetClassDeclaredMethods; - JVM_GetClassFieldsCount; - JVM_GetClassInterfaces; - JVM_GetClassMethodsCount; - JVM_GetClassModifiers; - JVM_GetClassName; - JVM_GetClassNameUTF; - JVM_GetClassSignature; - JVM_GetClassSigners; - JVM_GetClassTypeAnnotations; - JVM_GetDeclaredClasses; - JVM_GetDeclaringClass; - JVM_GetSimpleBinaryName; - JVM_GetEnclosingMethodInfo; - JVM_GetFieldIxModifiers; - JVM_GetFieldTypeAnnotations; - JVM_GetInheritedAccessControlContext; - JVM_GetInterfaceVersion; - JVM_GetManagement; - JVM_GetMethodIxArgsSize; - JVM_GetMethodIxByteCode; - JVM_GetMethodIxByteCodeLength; - JVM_GetMethodIxExceptionIndexes; - JVM_GetMethodIxExceptionTableEntry; - JVM_GetMethodIxExceptionTableLength; - JVM_GetMethodIxExceptionsCount; - JVM_GetMethodIxLocalsCount; - JVM_GetMethodIxMaxStack; - JVM_GetMethodIxModifiers; - JVM_GetMethodIxNameUTF; - JVM_GetMethodIxSignatureUTF; - JVM_GetMethodParameters; - JVM_GetMethodTypeAnnotations; - JVM_GetNanoTimeAdjustment; - JVM_GetPrimitiveArrayElement; - JVM_GetProtectionDomain; - JVM_GetStackAccessControlContext; - JVM_GetStackTraceDepth; - JVM_GetStackTraceElement; - JVM_GetSystemPackage; - JVM_GetSystemPackages; - JVM_GetTemporaryDirectory; - JVM_GetVersionInfo; - JVM_Halt; - JVM_HoldsLock; - JVM_IHashCode; - JVM_InitAgentProperties; - JVM_InitProperties; - JVM_InternString; - JVM_Interrupt; - JVM_InvokeMethod; - JVM_IsArrayClass; - JVM_IsConstructorIx; - JVM_IsInterface; - JVM_IsInterrupted; - JVM_IsPrimitiveClass; - JVM_IsSameClassPackage; - JVM_IsSupportedJNIVersion; - JVM_IsThreadAlive; - JVM_IsVMGeneratedMethodIx; - JVM_LatestUserDefinedLoader; - JVM_LoadLibrary; - JVM_MaxObjectInspectionAge; - JVM_MaxMemory; - JVM_MonitorNotify; - JVM_MonitorNotifyAll; - JVM_MonitorWait; - JVM_NanoTime; - JVM_NativePath; - JVM_NewArray; - JVM_NewInstanceFromConstructor; - JVM_NewMultiArray; - JVM_RaiseSignal; - JVM_RawMonitorCreate; - JVM_RawMonitorDestroy; - JVM_RawMonitorEnter; - JVM_RawMonitorExit; - JVM_RegisterSignal; - JVM_ReleaseUTF; - JVM_ResumeThread; - JVM_SetArrayElement; - JVM_SetClassSigners; - JVM_SetNativeThreadName; - JVM_SetPrimitiveArrayElement; - JVM_SetThreadPriority; - JVM_Sleep; - JVM_StartThread; - JVM_StopThread; - JVM_SuspendThread; - JVM_SupportsCX8; - JVM_TotalMemory; - JVM_UnloadLibrary; - JVM_Yield; JVM_handle_linux_signal; # miscellaneous functions diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/bsd/makefiles/mapfile-vers-product --- a/hotspot/make/bsd/makefiles/mapfile-vers-product Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/bsd/makefiles/mapfile-vers-product Tue Oct 06 08:41:31 2015 -0700 @@ -26,168 +26,6 @@ SUNWprivate_1.1 { global: - # JNI - JNI_CreateJavaVM; - JNI_GetCreatedJavaVMs; - JNI_GetDefaultJavaVMInitArgs; - - # JVM - JVM_ActiveProcessorCount; - JVM_ArrayCopy; - JVM_AssertionStatusDirectives; - JVM_ClassDepth; - JVM_ClassLoaderDepth; - JVM_Clone; - JVM_ConstantPoolGetClassAt; - JVM_ConstantPoolGetClassAtIfLoaded; - JVM_ConstantPoolGetDoubleAt; - JVM_ConstantPoolGetFieldAt; - JVM_ConstantPoolGetFieldAtIfLoaded; - JVM_ConstantPoolGetFloatAt; - JVM_ConstantPoolGetIntAt; - JVM_ConstantPoolGetLongAt; - JVM_ConstantPoolGetMethodAt; - JVM_ConstantPoolGetMethodAtIfLoaded; - JVM_ConstantPoolGetMemberRefInfoAt; - JVM_ConstantPoolGetSize; - JVM_ConstantPoolGetStringAt; - JVM_ConstantPoolGetUTF8At; - JVM_CountStackFrames; - JVM_CurrentClassLoader; - JVM_CurrentLoadedClass; - JVM_CurrentThread; - JVM_CurrentTimeMillis; - JVM_DefineClass; - JVM_DefineClassWithSource; - JVM_DefineClassWithSourceCond; - JVM_DesiredAssertionStatus; - JVM_DoPrivileged; - JVM_DumpAllStacks; - JVM_DumpThreads; - JVM_FillInStackTrace; - JVM_FindClassFromCaller; - JVM_FindClassFromClass; - JVM_FindClassFromBootLoader; - JVM_FindLibraryEntry; - JVM_FindLoadedClass; - JVM_FindPrimitiveClass; - JVM_FindSignal; - JVM_FreeMemory; - JVM_GC; - JVM_GetAllThreads; - JVM_GetArrayElement; - JVM_GetArrayLength; - JVM_GetCPClassNameUTF; - JVM_GetCPFieldClassNameUTF; - JVM_GetCPFieldModifiers; - JVM_GetCPFieldNameUTF; - JVM_GetCPFieldSignatureUTF; - JVM_GetCPMethodClassNameUTF; - JVM_GetCPMethodModifiers; - JVM_GetCPMethodNameUTF; - JVM_GetCPMethodSignatureUTF; - JVM_GetCallerClass; - JVM_GetClassAccessFlags; - JVM_GetClassAnnotations; - JVM_GetClassCPEntriesCount; - JVM_GetClassCPTypes; - JVM_GetClassConstantPool; - JVM_GetClassContext; - JVM_GetClassDeclaredConstructors; - JVM_GetClassDeclaredFields; - JVM_GetClassDeclaredMethods; - JVM_GetClassFieldsCount; - JVM_GetClassInterfaces; - JVM_GetClassMethodsCount; - JVM_GetClassModifiers; - JVM_GetClassName; - JVM_GetClassNameUTF; - JVM_GetClassSignature; - JVM_GetClassSigners; - JVM_GetClassTypeAnnotations; - JVM_GetDeclaredClasses; - JVM_GetDeclaringClass; - JVM_GetSimpleBinaryName; - JVM_GetEnclosingMethodInfo; - JVM_GetFieldIxModifiers; - JVM_GetFieldTypeAnnotations; - JVM_GetInheritedAccessControlContext; - JVM_GetInterfaceVersion; - JVM_GetManagement; - JVM_GetMethodIxArgsSize; - JVM_GetMethodIxByteCode; - JVM_GetMethodIxByteCodeLength; - JVM_GetMethodIxExceptionIndexes; - JVM_GetMethodIxExceptionTableEntry; - JVM_GetMethodIxExceptionTableLength; - JVM_GetMethodIxExceptionsCount; - JVM_GetMethodIxLocalsCount; - JVM_GetMethodIxMaxStack; - JVM_GetMethodIxModifiers; - JVM_GetMethodIxNameUTF; - JVM_GetMethodIxSignatureUTF; - JVM_GetMethodParameters; - JVM_GetMethodTypeAnnotations; - JVM_GetNanoTimeAdjustment; - JVM_GetPrimitiveArrayElement; - JVM_GetProtectionDomain; - JVM_GetStackAccessControlContext; - JVM_GetStackTraceDepth; - JVM_GetStackTraceElement; - JVM_GetSystemPackage; - JVM_GetSystemPackages; - JVM_GetTemporaryDirectory; - JVM_GetVersionInfo; - JVM_Halt; - JVM_HoldsLock; - JVM_IHashCode; - JVM_InitAgentProperties; - JVM_InitProperties; - JVM_InternString; - JVM_Interrupt; - JVM_InvokeMethod; - JVM_IsArrayClass; - JVM_IsConstructorIx; - JVM_IsInterface; - JVM_IsInterrupted; - JVM_IsPrimitiveClass; - JVM_IsSameClassPackage; - JVM_IsSupportedJNIVersion; - JVM_IsThreadAlive; - JVM_IsVMGeneratedMethodIx; - JVM_LatestUserDefinedLoader; - JVM_LoadLibrary; - JVM_MaxObjectInspectionAge; - JVM_MaxMemory; - JVM_MonitorNotify; - JVM_MonitorNotifyAll; - JVM_MonitorWait; - JVM_NanoTime; - JVM_NativePath; - JVM_NewArray; - JVM_NewInstanceFromConstructor; - JVM_NewMultiArray; - JVM_RaiseSignal; - JVM_RawMonitorCreate; - JVM_RawMonitorDestroy; - JVM_RawMonitorEnter; - JVM_RawMonitorExit; - JVM_RegisterSignal; - JVM_ReleaseUTF; - JVM_ResumeThread; - JVM_SetArrayElement; - JVM_SetClassSigners; - JVM_SetNativeThreadName; - JVM_SetPrimitiveArrayElement; - JVM_SetThreadPriority; - JVM_Sleep; - JVM_StartThread; - JVM_StopThread; - JVM_SuspendThread; - JVM_SupportsCX8; - JVM_TotalMemory; - JVM_UnloadLibrary; - JVM_Yield; JVM_handle_linux_signal; # miscellaneous functions diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/bsd/makefiles/vm.make --- a/hotspot/make/bsd/makefiles/vm.make Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/bsd/makefiles/vm.make Tue Oct 06 08:41:31 2015 -0700 @@ -234,10 +234,29 @@ vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES)) -mapfile : $(MAPFILE) vm.def mapfile_ext +MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers + +MAPFILE_EXT_SRC := $(HS_ALT_MAKE)/share/makefiles/mapfile-ext +ifneq ("$(wildcard $(MAPFILE_EXT_SRC))","") +MAPFILE_EXT := $(MAPFILE_EXT_SRC) +endif + +# For Darwin: add _ prefix and remove trailing ; +mapfile_extra: $(MAPFILE_SHARE) $(MAPFILE_EXT) + rm -f $@ +ifeq ($(OS_VENDOR), Darwin) + cat $(MAPFILE_SHARE) $(MAPFILE_EXT) | \ + sed -e 's/#.*//g' -e 's/[ ]*//g' -e 's/;//g' | \ + awk '{ if ($$0 ~ ".") { print "\t\t_" $$0 } }' \ + > $@ +else + cat $(MAPFILE_SHARE) $(MAPFILE_EXT) > $@ +endif + +mapfile : $(MAPFILE) mapfile_extra vm.def rm -f $@ awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \ - { system ("cat mapfile_ext"); system ("cat vm.def"); } \ + { system ("cat mapfile_extra vm.def"); } \ else \ { print $$0 } \ }' > $@ < $(MAPFILE) diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/linux/makefiles/mapfile-vers-debug --- a/hotspot/make/linux/makefiles/mapfile-vers-debug Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/linux/makefiles/mapfile-vers-debug Tue Oct 06 08:41:31 2015 -0700 @@ -26,168 +26,6 @@ SUNWprivate_1.1 { global: - # JNI - JNI_CreateJavaVM; - JNI_GetCreatedJavaVMs; - JNI_GetDefaultJavaVMInitArgs; - - # JVM - JVM_ActiveProcessorCount; - JVM_ArrayCopy; - JVM_AssertionStatusDirectives; - JVM_ClassDepth; - JVM_ClassLoaderDepth; - JVM_Clone; - JVM_ConstantPoolGetClassAt; - JVM_ConstantPoolGetClassAtIfLoaded; - JVM_ConstantPoolGetDoubleAt; - JVM_ConstantPoolGetFieldAt; - JVM_ConstantPoolGetFieldAtIfLoaded; - JVM_ConstantPoolGetFloatAt; - JVM_ConstantPoolGetIntAt; - JVM_ConstantPoolGetLongAt; - JVM_ConstantPoolGetMethodAt; - JVM_ConstantPoolGetMethodAtIfLoaded; - JVM_ConstantPoolGetMemberRefInfoAt; - JVM_ConstantPoolGetSize; - JVM_ConstantPoolGetStringAt; - JVM_ConstantPoolGetUTF8At; - JVM_CountStackFrames; - JVM_CurrentClassLoader; - JVM_CurrentLoadedClass; - JVM_CurrentThread; - JVM_CurrentTimeMillis; - JVM_DefineClass; - JVM_DefineClassWithSource; - JVM_DefineClassWithSourceCond; - JVM_DesiredAssertionStatus; - JVM_DoPrivileged; - JVM_DumpAllStacks; - JVM_DumpThreads; - JVM_FillInStackTrace; - JVM_FindClassFromCaller; - JVM_FindClassFromClass; - JVM_FindClassFromBootLoader; - JVM_FindLibraryEntry; - JVM_FindLoadedClass; - JVM_FindPrimitiveClass; - JVM_FindSignal; - JVM_FreeMemory; - JVM_GC; - JVM_GetAllThreads; - JVM_GetArrayElement; - JVM_GetArrayLength; - JVM_GetCPClassNameUTF; - JVM_GetCPFieldClassNameUTF; - JVM_GetCPFieldModifiers; - JVM_GetCPFieldNameUTF; - JVM_GetCPFieldSignatureUTF; - JVM_GetCPMethodClassNameUTF; - JVM_GetCPMethodModifiers; - JVM_GetCPMethodNameUTF; - JVM_GetCPMethodSignatureUTF; - JVM_GetCallerClass; - JVM_GetClassAccessFlags; - JVM_GetClassAnnotations; - JVM_GetClassCPEntriesCount; - JVM_GetClassCPTypes; - JVM_GetClassConstantPool; - JVM_GetClassContext; - JVM_GetClassDeclaredConstructors; - JVM_GetClassDeclaredFields; - JVM_GetClassDeclaredMethods; - JVM_GetClassFieldsCount; - JVM_GetClassInterfaces; - JVM_GetClassMethodsCount; - JVM_GetClassModifiers; - JVM_GetClassName; - JVM_GetClassNameUTF; - JVM_GetClassSignature; - JVM_GetClassSigners; - JVM_GetClassTypeAnnotations; - JVM_GetDeclaredClasses; - JVM_GetDeclaringClass; - JVM_GetSimpleBinaryName; - JVM_GetEnclosingMethodInfo; - JVM_GetFieldIxModifiers; - JVM_GetFieldTypeAnnotations; - JVM_GetInheritedAccessControlContext; - JVM_GetInterfaceVersion; - JVM_GetManagement; - JVM_GetMethodIxArgsSize; - JVM_GetMethodIxByteCode; - JVM_GetMethodIxByteCodeLength; - JVM_GetMethodIxExceptionIndexes; - JVM_GetMethodIxExceptionTableEntry; - JVM_GetMethodIxExceptionTableLength; - JVM_GetMethodIxExceptionsCount; - JVM_GetMethodIxLocalsCount; - JVM_GetMethodIxMaxStack; - JVM_GetMethodIxModifiers; - JVM_GetMethodIxNameUTF; - JVM_GetMethodIxSignatureUTF; - JVM_GetMethodParameters; - JVM_GetMethodTypeAnnotations; - JVM_GetNanoTimeAdjustment; - JVM_GetPrimitiveArrayElement; - JVM_GetProtectionDomain; - JVM_GetStackAccessControlContext; - JVM_GetStackTraceDepth; - JVM_GetStackTraceElement; - JVM_GetSystemPackage; - JVM_GetSystemPackages; - JVM_GetTemporaryDirectory; - JVM_GetVersionInfo; - JVM_Halt; - JVM_HoldsLock; - JVM_IHashCode; - JVM_InitAgentProperties; - JVM_InitProperties; - JVM_InternString; - JVM_Interrupt; - JVM_InvokeMethod; - JVM_IsArrayClass; - JVM_IsConstructorIx; - JVM_IsInterface; - JVM_IsInterrupted; - JVM_IsPrimitiveClass; - JVM_IsSameClassPackage; - JVM_IsSupportedJNIVersion; - JVM_IsThreadAlive; - JVM_IsVMGeneratedMethodIx; - JVM_LatestUserDefinedLoader; - JVM_LoadLibrary; - JVM_MaxObjectInspectionAge; - JVM_MaxMemory; - JVM_MonitorNotify; - JVM_MonitorNotifyAll; - JVM_MonitorWait; - JVM_NanoTime; - JVM_NativePath; - JVM_NewArray; - JVM_NewInstanceFromConstructor; - JVM_NewMultiArray; - JVM_RaiseSignal; - JVM_RawMonitorCreate; - JVM_RawMonitorDestroy; - JVM_RawMonitorEnter; - JVM_RawMonitorExit; - JVM_RegisterSignal; - JVM_ReleaseUTF; - JVM_ResumeThread; - JVM_SetArrayElement; - JVM_SetClassSigners; - JVM_SetNativeThreadName; - JVM_SetPrimitiveArrayElement; - JVM_SetThreadPriority; - JVM_Sleep; - JVM_StartThread; - JVM_StopThread; - JVM_SuspendThread; - JVM_SupportsCX8; - JVM_TotalMemory; - JVM_UnloadLibrary; - JVM_Yield; JVM_handle_linux_signal; # miscellaneous functions diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/linux/makefiles/mapfile-vers-product --- a/hotspot/make/linux/makefiles/mapfile-vers-product Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/linux/makefiles/mapfile-vers-product Tue Oct 06 08:41:31 2015 -0700 @@ -26,168 +26,6 @@ SUNWprivate_1.1 { global: - # JNI - JNI_CreateJavaVM; - JNI_GetCreatedJavaVMs; - JNI_GetDefaultJavaVMInitArgs; - - # JVM - JVM_ActiveProcessorCount; - JVM_ArrayCopy; - JVM_AssertionStatusDirectives; - JVM_ClassDepth; - JVM_ClassLoaderDepth; - JVM_Clone; - JVM_ConstantPoolGetClassAt; - JVM_ConstantPoolGetClassAtIfLoaded; - JVM_ConstantPoolGetDoubleAt; - JVM_ConstantPoolGetFieldAt; - JVM_ConstantPoolGetFieldAtIfLoaded; - JVM_ConstantPoolGetFloatAt; - JVM_ConstantPoolGetIntAt; - JVM_ConstantPoolGetLongAt; - JVM_ConstantPoolGetMethodAt; - JVM_ConstantPoolGetMethodAtIfLoaded; - JVM_ConstantPoolGetMemberRefInfoAt; - JVM_ConstantPoolGetSize; - JVM_ConstantPoolGetStringAt; - JVM_ConstantPoolGetUTF8At; - JVM_CountStackFrames; - JVM_CurrentClassLoader; - JVM_CurrentLoadedClass; - JVM_CurrentThread; - JVM_CurrentTimeMillis; - JVM_DefineClass; - JVM_DefineClassWithSource; - JVM_DefineClassWithSourceCond; - JVM_DesiredAssertionStatus; - JVM_DoPrivileged; - JVM_DumpAllStacks; - JVM_DumpThreads; - JVM_FillInStackTrace; - JVM_FindClassFromCaller; - JVM_FindClassFromClass; - JVM_FindClassFromBootLoader; - JVM_FindLibraryEntry; - JVM_FindLoadedClass; - JVM_FindPrimitiveClass; - JVM_FindSignal; - JVM_FreeMemory; - JVM_GC; - JVM_GetAllThreads; - JVM_GetArrayElement; - JVM_GetArrayLength; - JVM_GetCPClassNameUTF; - JVM_GetCPFieldClassNameUTF; - JVM_GetCPFieldModifiers; - JVM_GetCPFieldNameUTF; - JVM_GetCPFieldSignatureUTF; - JVM_GetCPMethodClassNameUTF; - JVM_GetCPMethodModifiers; - JVM_GetCPMethodNameUTF; - JVM_GetCPMethodSignatureUTF; - JVM_GetCallerClass; - JVM_GetClassAccessFlags; - JVM_GetClassAnnotations; - JVM_GetClassCPEntriesCount; - JVM_GetClassCPTypes; - JVM_GetClassConstantPool; - JVM_GetClassContext; - JVM_GetClassDeclaredConstructors; - JVM_GetClassDeclaredFields; - JVM_GetClassDeclaredMethods; - JVM_GetClassFieldsCount; - JVM_GetClassInterfaces; - JVM_GetClassMethodsCount; - JVM_GetClassModifiers; - JVM_GetClassName; - JVM_GetClassNameUTF; - JVM_GetClassSignature; - JVM_GetClassSigners; - JVM_GetClassTypeAnnotations; - JVM_GetDeclaredClasses; - JVM_GetDeclaringClass; - JVM_GetSimpleBinaryName; - JVM_GetEnclosingMethodInfo; - JVM_GetFieldIxModifiers; - JVM_GetFieldTypeAnnotations; - JVM_GetInheritedAccessControlContext; - JVM_GetInterfaceVersion; - JVM_GetManagement; - JVM_GetMethodIxArgsSize; - JVM_GetMethodIxByteCode; - JVM_GetMethodIxByteCodeLength; - JVM_GetMethodIxExceptionIndexes; - JVM_GetMethodIxExceptionTableEntry; - JVM_GetMethodIxExceptionTableLength; - JVM_GetMethodIxExceptionsCount; - JVM_GetMethodIxLocalsCount; - JVM_GetMethodIxMaxStack; - JVM_GetMethodIxModifiers; - JVM_GetMethodIxNameUTF; - JVM_GetMethodIxSignatureUTF; - JVM_GetMethodParameters; - JVM_GetMethodTypeAnnotations; - JVM_GetNanoTimeAdjustment; - JVM_GetPrimitiveArrayElement; - JVM_GetProtectionDomain; - JVM_GetStackAccessControlContext; - JVM_GetStackTraceDepth; - JVM_GetStackTraceElement; - JVM_GetSystemPackage; - JVM_GetSystemPackages; - JVM_GetTemporaryDirectory; - JVM_GetVersionInfo; - JVM_Halt; - JVM_HoldsLock; - JVM_IHashCode; - JVM_InitAgentProperties; - JVM_InitProperties; - JVM_InternString; - JVM_Interrupt; - JVM_InvokeMethod; - JVM_IsArrayClass; - JVM_IsConstructorIx; - JVM_IsInterface; - JVM_IsInterrupted; - JVM_IsPrimitiveClass; - JVM_IsSameClassPackage; - JVM_IsSupportedJNIVersion; - JVM_IsThreadAlive; - JVM_IsVMGeneratedMethodIx; - JVM_LatestUserDefinedLoader; - JVM_LoadLibrary; - JVM_MaxObjectInspectionAge; - JVM_MaxMemory; - JVM_MonitorNotify; - JVM_MonitorNotifyAll; - JVM_MonitorWait; - JVM_NanoTime; - JVM_NativePath; - JVM_NewArray; - JVM_NewInstanceFromConstructor; - JVM_NewMultiArray; - JVM_RaiseSignal; - JVM_RawMonitorCreate; - JVM_RawMonitorDestroy; - JVM_RawMonitorEnter; - JVM_RawMonitorExit; - JVM_RegisterSignal; - JVM_ReleaseUTF; - JVM_ResumeThread; - JVM_SetArrayElement; - JVM_SetClassSigners; - JVM_SetNativeThreadName; - JVM_SetPrimitiveArrayElement; - JVM_SetThreadPriority; - JVM_Sleep; - JVM_StartThread; - JVM_StopThread; - JVM_SuspendThread; - JVM_SupportsCX8; - JVM_TotalMemory; - JVM_UnloadLibrary; - JVM_Yield; JVM_handle_linux_signal; # miscellaneous functions diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/linux/makefiles/vm.make --- a/hotspot/make/linux/makefiles/vm.make Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/linux/makefiles/vm.make Tue Oct 06 08:41:31 2015 -0700 @@ -232,10 +232,17 @@ vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES)) -mapfile : $(MAPFILE) vm.def mapfile_ext +MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers + +MAPFILE_EXT_SRC := $(HS_ALT_MAKE)/share/makefiles/mapfile-ext +ifneq ("$(wildcard $(MAPFILE_EXT_SRC))","") +MAPFILE_EXT := $(MAPFILE_EXT_SRC) +endif + +mapfile : $(MAPFILE) $(MAPFILE_SHARE) vm.def $(MAPFILE_EXT) rm -f $@ awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \ - { system ("cat mapfile_ext"); system ("cat vm.def"); } \ + { system ("cat ${MAPFILE_SHARE} $(MAPFILE_EXT) vm.def"); } \ else \ { print $$0 } \ }' > $@ < $(MAPFILE) @@ -259,13 +266,6 @@ cat $(VM_DEF_EXT) >> $@ endif -mapfile_ext: - rm -f $@ - touch $@ - if [ -f $(HS_ALT_MAKE)/linux/makefiles/mapfile-ext ]; then \ - cat $(HS_ALT_MAKE)/linux/makefiles/mapfile-ext > $@; \ - fi - ifeq ($(JVM_VARIANT_ZEROSHARK), true) STATIC_CXX = false else diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/share/makefiles/mapfile-vers --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/make/share/makefiles/mapfile-vers Tue Oct 06 08:41:31 2015 -0700 @@ -0,0 +1,162 @@ + # JNI + JNI_CreateJavaVM; + JNI_GetCreatedJavaVMs; + JNI_GetDefaultJavaVMInitArgs; + + # JVM + JVM_ActiveProcessorCount; + JVM_ArrayCopy; + JVM_AssertionStatusDirectives; + JVM_ClassDepth; + JVM_ClassLoaderDepth; + JVM_Clone; + JVM_ConstantPoolGetClassAt; + JVM_ConstantPoolGetClassAtIfLoaded; + JVM_ConstantPoolGetDoubleAt; + JVM_ConstantPoolGetFieldAt; + JVM_ConstantPoolGetFieldAtIfLoaded; + JVM_ConstantPoolGetFloatAt; + JVM_ConstantPoolGetIntAt; + JVM_ConstantPoolGetLongAt; + JVM_ConstantPoolGetMethodAt; + JVM_ConstantPoolGetMethodAtIfLoaded; + JVM_ConstantPoolGetMemberRefInfoAt; + JVM_ConstantPoolGetSize; + JVM_ConstantPoolGetStringAt; + JVM_ConstantPoolGetUTF8At; + JVM_CountStackFrames; + JVM_CurrentClassLoader; + JVM_CurrentLoadedClass; + JVM_CurrentThread; + JVM_CurrentTimeMillis; + JVM_DefineClass; + JVM_DefineClassWithSource; + JVM_DefineClassWithSourceCond; + JVM_DesiredAssertionStatus; + JVM_DoPrivileged; + JVM_DumpAllStacks; + JVM_DumpThreads; + JVM_FillInStackTrace; + JVM_FindClassFromCaller; + JVM_FindClassFromClass; + JVM_FindClassFromBootLoader; + JVM_FindLibraryEntry; + JVM_FindLoadedClass; + JVM_FindPrimitiveClass; + JVM_FindSignal; + JVM_FreeMemory; + JVM_GC; + JVM_GetAllThreads; + JVM_GetArrayElement; + JVM_GetArrayLength; + JVM_GetCPClassNameUTF; + JVM_GetCPFieldClassNameUTF; + JVM_GetCPFieldModifiers; + JVM_GetCPFieldNameUTF; + JVM_GetCPFieldSignatureUTF; + JVM_GetCPMethodClassNameUTF; + JVM_GetCPMethodModifiers; + JVM_GetCPMethodNameUTF; + JVM_GetCPMethodSignatureUTF; + JVM_GetCallerClass; + JVM_GetClassAccessFlags; + JVM_GetClassAnnotations; + JVM_GetClassCPEntriesCount; + JVM_GetClassCPTypes; + JVM_GetClassConstantPool; + JVM_GetClassContext; + JVM_GetClassDeclaredConstructors; + JVM_GetClassDeclaredFields; + JVM_GetClassDeclaredMethods; + JVM_GetClassFieldsCount; + JVM_GetClassInterfaces; + JVM_GetClassMethodsCount; + JVM_GetClassModifiers; + JVM_GetClassName; + JVM_GetClassNameUTF; + JVM_GetClassSignature; + JVM_GetClassSigners; + JVM_GetClassTypeAnnotations; + JVM_GetDeclaredClasses; + JVM_GetDeclaringClass; + JVM_GetSimpleBinaryName; + JVM_GetEnclosingMethodInfo; + JVM_GetFieldIxModifiers; + JVM_GetFieldTypeAnnotations; + JVM_GetInheritedAccessControlContext; + JVM_GetInterfaceVersion; + JVM_GetManagement; + JVM_GetMethodIxArgsSize; + JVM_GetMethodIxByteCode; + JVM_GetMethodIxByteCodeLength; + JVM_GetMethodIxExceptionIndexes; + JVM_GetMethodIxExceptionTableEntry; + JVM_GetMethodIxExceptionTableLength; + JVM_GetMethodIxExceptionsCount; + JVM_GetMethodIxLocalsCount; + JVM_GetMethodIxMaxStack; + JVM_GetMethodIxModifiers; + JVM_GetMethodIxNameUTF; + JVM_GetMethodIxSignatureUTF; + JVM_GetMethodParameters; + JVM_GetMethodTypeAnnotations; + JVM_GetNanoTimeAdjustment; + JVM_GetPrimitiveArrayElement; + JVM_GetProtectionDomain; + JVM_GetStackAccessControlContext; + JVM_GetStackTraceDepth; + JVM_GetStackTraceElement; + JVM_GetSystemPackage; + JVM_GetSystemPackages; + JVM_GetTemporaryDirectory; + JVM_GetVersionInfo; + JVM_Halt; + JVM_HoldsLock; + JVM_IHashCode; + JVM_InitAgentProperties; + JVM_InitProperties; + JVM_InternString; + JVM_Interrupt; + JVM_InvokeMethod; + JVM_IsArrayClass; + JVM_IsConstructorIx; + JVM_IsInterface; + JVM_IsInterrupted; + JVM_IsPrimitiveClass; + JVM_IsSameClassPackage; + JVM_IsSupportedJNIVersion; + JVM_IsThreadAlive; + JVM_IsVMGeneratedMethodIx; + JVM_LatestUserDefinedLoader; + JVM_LoadLibrary; + JVM_MaxObjectInspectionAge; + JVM_MaxMemory; + JVM_MonitorNotify; + JVM_MonitorNotifyAll; + JVM_MonitorWait; + JVM_NanoTime; + JVM_NativePath; + JVM_NewArray; + JVM_NewInstanceFromConstructor; + JVM_NewMultiArray; + JVM_RaiseSignal; + JVM_RawMonitorCreate; + JVM_RawMonitorDestroy; + JVM_RawMonitorEnter; + JVM_RawMonitorExit; + JVM_RegisterSignal; + JVM_ReleaseUTF; + JVM_ResumeThread; + JVM_SetArrayElement; + JVM_SetClassSigners; + JVM_SetNativeThreadName; + JVM_SetPrimitiveArrayElement; + JVM_SetThreadPriority; + JVM_Sleep; + JVM_StartThread; + JVM_StopThread; + JVM_SuspendThread; + JVM_SupportsCX8; + JVM_TotalMemory; + JVM_UnloadLibrary; + JVM_Yield; diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/solaris/makefiles/mapfile-vers --- a/hotspot/make/solaris/makefiles/mapfile-vers Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/solaris/makefiles/mapfile-vers Tue Oct 06 08:41:31 2015 -0700 @@ -26,168 +26,6 @@ SUNWprivate_1.1 { global: - # JNI - JNI_CreateJavaVM; - JNI_GetCreatedJavaVMs; - JNI_GetDefaultJavaVMInitArgs; - - # JVM - JVM_ActiveProcessorCount; - JVM_ArrayCopy; - JVM_AssertionStatusDirectives; - JVM_ClassDepth; - JVM_ClassLoaderDepth; - JVM_Clone; - JVM_ConstantPoolGetClassAt; - JVM_ConstantPoolGetClassAtIfLoaded; - JVM_ConstantPoolGetDoubleAt; - JVM_ConstantPoolGetFieldAt; - JVM_ConstantPoolGetFieldAtIfLoaded; - JVM_ConstantPoolGetFloatAt; - JVM_ConstantPoolGetIntAt; - JVM_ConstantPoolGetLongAt; - JVM_ConstantPoolGetMethodAt; - JVM_ConstantPoolGetMethodAtIfLoaded; - JVM_ConstantPoolGetMemberRefInfoAt; - JVM_ConstantPoolGetSize; - JVM_ConstantPoolGetStringAt; - JVM_ConstantPoolGetUTF8At; - JVM_CountStackFrames; - JVM_CurrentClassLoader; - JVM_CurrentLoadedClass; - JVM_CurrentThread; - JVM_CurrentTimeMillis; - JVM_DefineClass; - JVM_DefineClassWithSource; - JVM_DefineClassWithSourceCond; - JVM_DesiredAssertionStatus; - JVM_DoPrivileged; - JVM_DumpAllStacks; - JVM_DumpThreads; - JVM_FillInStackTrace; - JVM_FindClassFromCaller; - JVM_FindClassFromClass; - JVM_FindClassFromBootLoader; - JVM_FindLibraryEntry; - JVM_FindLoadedClass; - JVM_FindPrimitiveClass; - JVM_FindSignal; - JVM_FreeMemory; - JVM_GC; - JVM_GetAllThreads; - JVM_GetArrayElement; - JVM_GetArrayLength; - JVM_GetCPClassNameUTF; - JVM_GetCPFieldClassNameUTF; - JVM_GetCPFieldModifiers; - JVM_GetCPFieldNameUTF; - JVM_GetCPFieldSignatureUTF; - JVM_GetCPMethodClassNameUTF; - JVM_GetCPMethodModifiers; - JVM_GetCPMethodNameUTF; - JVM_GetCPMethodSignatureUTF; - JVM_GetCallerClass; - JVM_GetClassAccessFlags; - JVM_GetClassAnnotations; - JVM_GetClassCPEntriesCount; - JVM_GetClassCPTypes; - JVM_GetClassConstantPool; - JVM_GetClassContext; - JVM_GetClassDeclaredConstructors; - JVM_GetClassDeclaredFields; - JVM_GetClassDeclaredMethods; - JVM_GetClassFieldsCount; - JVM_GetClassInterfaces; - JVM_GetClassMethodsCount; - JVM_GetClassModifiers; - JVM_GetClassName; - JVM_GetClassNameUTF; - JVM_GetClassSignature; - JVM_GetClassSigners; - JVM_GetClassTypeAnnotations; - JVM_GetDeclaredClasses; - JVM_GetDeclaringClass; - JVM_GetSimpleBinaryName; - JVM_GetEnclosingMethodInfo; - JVM_GetFieldIxModifiers; - JVM_GetFieldTypeAnnotations; - JVM_GetInheritedAccessControlContext; - JVM_GetInterfaceVersion; - JVM_GetManagement; - JVM_GetMethodIxArgsSize; - JVM_GetMethodIxByteCode; - JVM_GetMethodIxByteCodeLength; - JVM_GetMethodIxExceptionIndexes; - JVM_GetMethodIxExceptionTableEntry; - JVM_GetMethodIxExceptionTableLength; - JVM_GetMethodIxExceptionsCount; - JVM_GetMethodIxLocalsCount; - JVM_GetMethodIxMaxStack; - JVM_GetMethodIxModifiers; - JVM_GetMethodIxNameUTF; - JVM_GetMethodIxSignatureUTF; - JVM_GetMethodParameters; - JVM_GetMethodTypeAnnotations; - JVM_GetNanoTimeAdjustment; - JVM_GetPrimitiveArrayElement; - JVM_GetProtectionDomain; - JVM_GetStackAccessControlContext; - JVM_GetStackTraceDepth; - JVM_GetStackTraceElement; - JVM_GetSystemPackage; - JVM_GetSystemPackages; - JVM_GetTemporaryDirectory; - JVM_GetVersionInfo; - JVM_Halt; - JVM_HoldsLock; - JVM_IHashCode; - JVM_InitAgentProperties; - JVM_InitProperties; - JVM_InternString; - JVM_Interrupt; - JVM_InvokeMethod; - JVM_IsArrayClass; - JVM_IsConstructorIx; - JVM_IsInterface; - JVM_IsInterrupted; - JVM_IsPrimitiveClass; - JVM_IsSameClassPackage; - JVM_IsSupportedJNIVersion; - JVM_IsThreadAlive; - JVM_IsVMGeneratedMethodIx; - JVM_LatestUserDefinedLoader; - JVM_LoadLibrary; - JVM_MaxObjectInspectionAge; - JVM_MaxMemory; - JVM_MonitorNotify; - JVM_MonitorNotifyAll; - JVM_MonitorWait; - JVM_NativePath; - JVM_NanoTime; - JVM_NewArray; - JVM_NewInstanceFromConstructor; - JVM_NewMultiArray; - JVM_RaiseSignal; - JVM_RawMonitorCreate; - JVM_RawMonitorDestroy; - JVM_RawMonitorEnter; - JVM_RawMonitorExit; - JVM_RegisterSignal; - JVM_ReleaseUTF; - JVM_ResumeThread; - JVM_SetArrayElement; - JVM_SetClassSigners; - JVM_SetNativeThreadName; - JVM_SetPrimitiveArrayElement; - JVM_SetThreadPriority; - JVM_Sleep; - JVM_StartThread; - JVM_StopThread; - JVM_SuspendThread; - JVM_SupportsCX8; - JVM_TotalMemory; - JVM_UnloadLibrary; - JVM_Yield; JVM_handle_solaris_signal; # miscellaneous functions diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/make/solaris/makefiles/vm.make --- a/hotspot/make/solaris/makefiles/vm.make Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/make/solaris/makefiles/vm.make Tue Oct 06 08:41:31 2015 -0700 @@ -241,13 +241,19 @@ vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES)) -mapfile : $(MAPFILE) $(MAPFILE_DTRACE_OPT) vm.def mapfile_ext +MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers + +MAPFILE_EXT_SRC := $(HS_ALT_MAKE)/share/makefiles/mapfile-ext +ifneq ("$(wildcard $(MAPFILE_EXT_SRC))","") +MAPFILE_EXT := $(MAPFILE_EXT_SRC) +endif + +mapfile : $(MAPFILE) $(MAPFILE_SHARE) vm.def $(MAPFILE_EXT) rm -f $@ cat $(MAPFILE) $(MAPFILE_DTRACE_OPT) \ | $(NAWK) '{ \ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") { \ - system ("cat mapfile_ext"); \ - system ("cat vm.def"); \ + system ("cat ${MAPFILE_SHARE} $(MAPFILE_EXT) vm.def"); \ } else { \ print $$0; \ } \ @@ -260,12 +266,6 @@ vm.def: $(Obj_Files) sh $(GAMMADIR)/make/solaris/makefiles/build_vm_def.sh *.o > $@ -mapfile_ext: - rm -f $@ - touch $@ - if [ -f $(HS_ALT_MAKE)/solaris/makefiles/mapfile-ext ]; then \ - cat $(HS_ALT_MAKE)/solaris/makefiles/mapfile-ext > $@; \ - fi ifeq ($(LINK_INTO),AOUT) LIBJVM.o = diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp --- a/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014, Red Hat Inc. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -1608,6 +1608,8 @@ test_method_data_pointer(mdp, profile_continue); if (MethodData::profile_return_jsr292_only()) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + // If we don't profile all invoke bytecodes we must make sure // it's a bytecode we indeed profile. We can't go back to the // begining of the ProfileData we intend to update to check its @@ -1620,7 +1622,7 @@ cmp(rscratch1, Bytecodes::_invokehandle); br(Assembler::EQ, do_profile); get_method(tmp); - ldrb(rscratch1, Address(tmp, Method::intrinsic_id_offset_in_bytes())); + ldrh(rscratch1, Address(tmp, Method::intrinsic_id_offset_in_bytes())); cmp(rscratch1, vmIntrinsics::_compiledLambdaForm); br(Assembler::NE, profile_continue); diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/aarch64/vm/methodHandles_aarch64.cpp --- a/hotspot/src/cpu/aarch64/vm/methodHandles_aarch64.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/aarch64/vm/methodHandles_aarch64.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014, Red Hat Inc. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -188,9 +188,11 @@ address entry_point = __ pc(); if (VerifyMethodHandles) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + Label L; BLOCK_COMMENT("verify_intrinsic_id {"); - __ ldrb(rscratch1, Address(rmethod, Method::intrinsic_id_offset_in_bytes())); + __ ldrh(rscratch1, Address(rmethod, Method::intrinsic_id_offset_in_bytes())); __ cmp(rscratch1, (int) iid); __ br(Assembler::EQ, L); if (iid == vmIntrinsics::_linkToVirtual || diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp --- a/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -1817,13 +1817,15 @@ test_method_data_pointer(profile_continue); if (MethodData::profile_return_jsr292_only()) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + // If we don't profile all invoke bytecodes we must make sure // it's a bytecode we indeed profile. We can't go back to the // begining of the ProfileData we intend to update to check its // type because we're right after it and we don't known its // length. lbz(tmp1, 0, R14_bcp); - lbz(tmp2, Method::intrinsic_id_offset_in_bytes(), R19_method); + lhz(tmp2, Method::intrinsic_id_offset_in_bytes(), R19_method); cmpwi(CCR0, tmp1, Bytecodes::_invokedynamic); cmpwi(CCR1, tmp1, Bytecodes::_invokehandle); cror(CCR0, Assembler::equal, CCR1, Assembler::equal); diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp --- a/hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -224,11 +224,12 @@ address entry_point = __ pc(); if (VerifyMethodHandles) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + Label L; BLOCK_COMMENT("verify_intrinsic_id {"); __ load_sized_value(temp1, Method::intrinsic_id_offset_in_bytes(), R19_method, - sizeof(u1), /*is_signed*/ false); - // assert(sizeof(u1) == sizeof(Method::_intrinsic_id), ""); + sizeof(u2), /*is_signed*/ false); __ cmpwi(CCR1, temp1, (int) iid); __ beq(CCR1, L); if (iid == vmIntrinsics::_linkToVirtual || diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -2021,6 +2021,8 @@ test_method_data_pointer(profile_continue); if (MethodData::profile_return_jsr292_only()) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + // If we don't profile all invoke bytecodes we must make sure // it's a bytecode we indeed profile. We can't go back to the // begining of the ProfileData we intend to update to check its @@ -2031,7 +2033,7 @@ cmp_and_br_short(tmp1, Bytecodes::_invokedynamic, equal, pn, do_profile); cmp(tmp1, Bytecodes::_invokehandle); br(equal, false, pn, do_profile); - delayed()->ldub(Lmethod, Method::intrinsic_id_offset_in_bytes(), tmp1); + delayed()->lduh(Lmethod, Method::intrinsic_id_offset_in_bytes(), tmp1); cmp_and_br_short(tmp1, vmIntrinsics::_compiledLambdaForm, notEqual, pt, profile_continue); bind(do_profile); diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp --- a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -229,9 +229,11 @@ address entry_point = __ pc(); if (VerifyMethodHandles) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + Label L; BLOCK_COMMENT("verify_intrinsic_id {"); - __ ldub(Address(G5_method, Method::intrinsic_id_offset_in_bytes()), O1_scratch); + __ lduh(Address(G5_method, Method::intrinsic_id_offset_in_bytes()), O1_scratch); __ cmp_and_br_short(O1_scratch, (int) iid, Assembler::equal, Assembler::pt, L); if (iid == vmIntrinsics::_linkToVirtual || iid == vmIntrinsics::_linkToSpecial) { diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/x86/vm/interp_masm_x86.cpp --- a/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -169,6 +169,8 @@ test_method_data_pointer(mdp, profile_continue); if (MethodData::profile_return_jsr292_only()) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + // If we don't profile all invoke bytecodes we must make sure // it's a bytecode we indeed profile. We can't go back to the // begining of the ProfileData we intend to update to check its @@ -180,7 +182,7 @@ cmpb(Address(_bcp_register, 0), Bytecodes::_invokehandle); jcc(Assembler::equal, do_profile); get_method(tmp); - cmpb(Address(tmp, Method::intrinsic_id_offset_in_bytes()), vmIntrinsics::_compiledLambdaForm); + cmpw(Address(tmp, Method::intrinsic_id_offset_in_bytes()), vmIntrinsics::_compiledLambdaForm); jcc(Assembler::notEqual, profile_continue); bind(do_profile); diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/cpu/x86/vm/methodHandles_x86.cpp --- a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -222,9 +222,11 @@ address entry_point = __ pc(); if (VerifyMethodHandles) { + assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2"); + Label L; BLOCK_COMMENT("verify_intrinsic_id {"); - __ cmpb(Address(rbx_method, Method::intrinsic_id_offset_in_bytes()), (int) iid); + __ cmpw(Address(rbx_method, Method::intrinsic_id_offset_in_bytes()), (int) iid); __ jcc(Assembler::equal, L); if (iid == vmIntrinsics::_linkToVirtual || iid == vmIntrinsics::_linkToSpecial) { diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/classfile/classFileParser.cpp --- a/hotspot/src/share/vm/classfile/classFileParser.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/classfile/classFileParser.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -1989,6 +1989,10 @@ flags = JVM_ACC_STATIC; } else if ((flags & JVM_ACC_STATIC) == JVM_ACC_STATIC) { flags &= JVM_ACC_STATIC | JVM_ACC_STRICT; + } else { + // As of major_version 51, a method named without ACC_STATIC is + // just another method. So, do a normal method modifer check. + verify_legal_method_modifiers(flags, is_interface, name, CHECK_(nullHandle)); } } else { verify_legal_method_modifiers(flags, is_interface, name, CHECK_(nullHandle)); diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/classfile/verificationType.cpp --- a/hotspot/src/share/vm/classfile/verificationType.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/classfile/verificationType.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -70,9 +70,12 @@ if (this_class->is_interface() && (!from_field_is_protected || from.name() != vmSymbols::java_lang_Object())) { // If we are not trying to access a protected field or method in - // java.lang.Object then we treat interfaces as java.lang.Object, - // including java.lang.Cloneable and java.io.Serializable. - return true; + // java.lang.Object then, for arrays, we only allow assignability + // to interfaces java.lang.Cloneable and java.io.Serializable. + // Otherwise, we treat interfaces as java.lang.Object. + return !from.is_array() || + this_class == SystemDictionary::Cloneable_klass() || + this_class == SystemDictionary::Serializable_klass(); } else if (from.is_object()) { Klass* from_class = SystemDictionary::resolve_or_fail( from.name(), Handle(THREAD, klass->class_loader()), diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/classfile/verifier.cpp --- a/hotspot/src/share/vm/classfile/verifier.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/classfile/verifier.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -1579,9 +1579,11 @@ return; } // Make sure "this" has been initialized if current method is an - // + // . Note that "" methods in interfaces are just + // normal methods. Interfaces cannot have ctors. if (_method->name() == vmSymbols::object_initializer_name() && - current_frame.flag_this_uninit()) { + current_frame.flag_this_uninit() && + !current_class()->is_interface()) { verify_error(ErrorContext::bad_code(bci), "Constructor must call super() or this() " "before return"); diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp --- a/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -73,13 +73,6 @@ size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0; -// turn it on so that the contents of the young list (scan-only / -// to-be-collected) are printed at "strategic" points before / during -// / after the collection --- this is useful for debugging -#define YOUNG_LIST_VERBOSE 0 -// CURRENT STATUS -// This file is under construction. Search for "FIXME". - // INVARIANTS/NOTES // // All allocation activity covered by the G1CollectedHeap interface is @@ -4079,29 +4072,12 @@ // the possible verification above. double sample_start_time_sec = os::elapsedTime(); -#if YOUNG_LIST_VERBOSE - gclog_or_tty->print_cr("\nBefore recording pause start.\nYoung_list:"); - _young_list->print(); - g1_policy()->print_collection_set(g1_policy()->inc_cset_head(), gclog_or_tty); -#endif // YOUNG_LIST_VERBOSE - g1_policy()->record_collection_pause_start(sample_start_time_sec); -#if YOUNG_LIST_VERBOSE - gclog_or_tty->print_cr("\nAfter recording pause start.\nYoung_list:"); - _young_list->print(); -#endif // YOUNG_LIST_VERBOSE - if (collector_state()->during_initial_mark_pause()) { concurrent_mark()->checkpointRootsInitialPre(); } -#if YOUNG_LIST_VERBOSE - gclog_or_tty->print_cr("\nBefore choosing collection set.\nYoung_list:"); - _young_list->print(); - g1_policy()->print_collection_set(g1_policy()->inc_cset_head(), gclog_or_tty); -#endif // YOUNG_LIST_VERBOSE - double time_remaining_ms = g1_policy()->finalize_young_cset_part(target_pause_time_ms); g1_policy()->finalize_old_cset_part(time_remaining_ms); @@ -4157,11 +4133,6 @@ assert(check_young_list_empty(false /* check_heap */), "young list should be empty"); -#if YOUNG_LIST_VERBOSE - gclog_or_tty->print_cr("Before recording survivors.\nYoung List:"); - _young_list->print(); -#endif // YOUNG_LIST_VERBOSE - g1_policy()->record_survivor_regions(_young_list->survivor_length(), _young_list->first_survivor_region(), _young_list->last_survivor_region()); @@ -4197,12 +4168,6 @@ allocate_dummy_regions(); -#if YOUNG_LIST_VERBOSE - gclog_or_tty->print_cr("\nEnd of the pause.\nYoung_list:"); - _young_list->print(); - g1_policy()->print_collection_set(g1_policy()->inc_cset_head(), gclog_or_tty); -#endif // YOUNG_LIST_VERBOSE - _allocator->init_mutator_alloc_region(); { diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/gc/g1/g1EvacStats.cpp --- a/hotspot/src/share/vm/gc/g1/g1EvacStats.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/gc/g1/g1EvacStats.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -93,7 +93,7 @@ size_t const used_for_waste_calculation = used() > _region_end_waste ? used() - _region_end_waste : 0; size_t const total_waste_allowed = used_for_waste_calculation * TargetPLABWastePct; - size_t const cur_plab_sz = (double)total_waste_allowed / G1LastPLABAverageOccupancy; + size_t const cur_plab_sz = (size_t)((double)total_waste_allowed / G1LastPLABAverageOccupancy); // Take historical weighted average _filter.sample(cur_plab_sz); // Clip from above and below, and align to object boundary diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/gc/shared/gcTrace.cpp --- a/hotspot/src/share/vm/gc/shared/gcTrace.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/gc/shared/gcTrace.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -88,8 +88,6 @@ send_reference_stats_event(REF_WEAK, rps.weak_count()); send_reference_stats_event(REF_FINAL, rps.final_count()); send_reference_stats_event(REF_PHANTOM, rps.phantom_count()); - send_reference_stats_event(REF_CLEANER, rps.cleaner_count()); - send_reference_stats_event(REF_JNI, rps.jni_weak_ref_count()); } #if INCLUDE_SERVICES diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/gc/shared/referenceProcessor.cpp --- a/hotspot/src/share/vm/gc/shared/referenceProcessor.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/gc/shared/referenceProcessor.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -243,13 +243,10 @@ process_discovered_reflist(_discoveredPhantomRefs, NULL, false, is_alive, keep_alive, complete_gc, task_executor); - } - - // Cleaners - size_t cleaner_count = 0; - { - GCTraceTime tt("Cleaners", trace_time, false, gc_timer, gc_id); - cleaner_count = + // Process cleaners, but include them in phantom statistics. We expect + // Cleaner references to be temporary, and don't want to deal with + // possible incompatibilities arising from making it more visible. + phantom_count += process_discovered_reflist(_discoveredCleanerRefs, NULL, true, is_alive, keep_alive, complete_gc, task_executor); } @@ -259,17 +256,15 @@ // that is not how the JDK1.2 specification is. See #4126360. Native code can // thus use JNI weak references to circumvent the phantom references and // resurrect a "post-mortem" object. - size_t jni_weak_ref_count = 0; { GCTraceTime tt("JNI Weak Reference", trace_time, false, gc_timer, gc_id); if (task_executor != NULL) { task_executor->set_single_threaded_mode(); } - jni_weak_ref_count = - process_phaseJNI(is_alive, keep_alive, complete_gc); + process_phaseJNI(is_alive, keep_alive, complete_gc); } - return ReferenceProcessorStats(soft_count, weak_count, final_count, phantom_count, cleaner_count, jni_weak_ref_count); + return ReferenceProcessorStats(soft_count, weak_count, final_count, phantom_count); } #ifndef PRODUCT @@ -296,17 +291,17 @@ } #endif -size_t ReferenceProcessor::process_phaseJNI(BoolObjectClosure* is_alive, - OopClosure* keep_alive, - VoidClosure* complete_gc) { - DEBUG_ONLY(size_t check_count = count_jni_refs();) - size_t count = JNIHandles::weak_oops_do(is_alive, keep_alive); - assert(count == check_count, "Counts didn't match"); +void ReferenceProcessor::process_phaseJNI(BoolObjectClosure* is_alive, + OopClosure* keep_alive, + VoidClosure* complete_gc) { +#ifndef PRODUCT + if (PrintGCDetails && PrintReferenceGC) { + unsigned int count = count_jni_refs(); + gclog_or_tty->print(", %u refs", count); + } +#endif + JNIHandles::weak_oops_do(is_alive, keep_alive); complete_gc->do_void(); - if (PrintGCDetails && PrintReferenceGC) { - gclog_or_tty->print(", " SIZE_FORMAT " refs", count); - } - return count; } @@ -946,10 +941,9 @@ list = &_discoveredCleanerRefs[id]; break; case REF_NONE: - case REF_JNI: // we should not reach here if we are an InstanceRefKlass default: - guarantee(false, err_msg("rt should not be %d", rt)); + ShouldNotReachHere(); } if (TraceReferenceGC && PrintGCDetails) { gclog_or_tty->print_cr("Thread %d gets list " INTPTR_FORMAT, id, p2i(list)); diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/gc/shared/referenceProcessor.hpp --- a/hotspot/src/share/vm/gc/shared/referenceProcessor.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/gc/shared/referenceProcessor.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -247,7 +247,7 @@ DiscoveredList* _discoveredCleanerRefs; public: - static int number_of_subclasses_of_ref() { return REF_LISTS_COUNT; } + static int number_of_subclasses_of_ref() { return (REF_CLEANER - REF_OTHER); } uint num_q() { return _num_q; } uint max_num_q() { return _max_num_q; } @@ -271,9 +271,9 @@ VoidClosure* complete_gc, AbstractRefProcTaskExecutor* task_executor); - size_t process_phaseJNI(BoolObjectClosure* is_alive, - OopClosure* keep_alive, - VoidClosure* complete_gc); + void process_phaseJNI(BoolObjectClosure* is_alive, + OopClosure* keep_alive, + VoidClosure* complete_gc); // Work methods used by the method process_discovered_reflist // Phase1: keep alive all those referents that are otherwise diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/gc/shared/referenceProcessorStats.hpp --- a/hotspot/src/share/vm/gc/shared/referenceProcessorStats.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/gc/shared/referenceProcessorStats.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -36,30 +36,22 @@ size_t _weak_count; size_t _final_count; size_t _phantom_count; - size_t _cleaner_count; - size_t _jni_weak_ref_count; public: ReferenceProcessorStats() : _soft_count(0), _weak_count(0), _final_count(0), - _phantom_count(0), - _cleaner_count(0), - _jni_weak_ref_count(0) {} + _phantom_count(0) {} ReferenceProcessorStats(size_t soft_count, size_t weak_count, size_t final_count, - size_t phantom_count, - size_t cleaner_count, - size_t jni_weak_ref_count) : + size_t phantom_count) : _soft_count(soft_count), _weak_count(weak_count), _final_count(final_count), - _phantom_count(phantom_count), - _cleaner_count(cleaner_count), - _jni_weak_ref_count(jni_weak_ref_count) + _phantom_count(phantom_count) {} size_t soft_count() const { @@ -77,13 +69,5 @@ size_t phantom_count() const { return _phantom_count; } - - size_t cleaner_count() const { - return _cleaner_count; - } - - size_t jni_weak_ref_count() const { - return _jni_weak_ref_count; - } }; #endif diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/memory/referenceType.hpp --- a/hotspot/src/share/vm/memory/referenceType.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/memory/referenceType.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -32,15 +32,11 @@ enum ReferenceType { REF_NONE, // Regular class REF_OTHER, // Subclass of java/lang/ref/Reference, but not subclass of one of the classes below - ///////////////// Only the types below have their own discovered lists REF_SOFT, // Subclass of java/lang/ref/SoftReference REF_WEAK, // Subclass of java/lang/ref/WeakReference REF_FINAL, // Subclass of java/lang/ref/FinalReference REF_PHANTOM, // Subclass of java/lang/ref/PhantomReference - REF_CLEANER, // Subclass of sun/misc/Cleaner - ///////////////// Only the types in the above range have their own discovered lists - REF_JNI, // JNI weak refs - REF_LISTS_COUNT = REF_CLEANER - REF_OTHER // Number of discovered lists + REF_CLEANER // Subclass of sun/misc/Cleaner }; #endif // SHARE_VM_MEMORY_REFERENCETYPE_HPP diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/oops/method.hpp --- a/hotspot/src/share/vm/oops/method.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/oops/method.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -72,7 +72,7 @@ int _result_index; // C++ interpreter needs for converting results to/from stack #endif u2 _method_size; // size of this object - u1 _intrinsic_id; // vmSymbols::intrinsic_id (0 == _none) + u2 _intrinsic_id; // vmSymbols::intrinsic_id (0 == _none) // Flags enum Flags { @@ -653,7 +653,7 @@ // for code generation static int method_data_offset_in_bytes() { return offset_of(Method, _method_data); } static int intrinsic_id_offset_in_bytes() { return offset_of(Method, _intrinsic_id); } - static int intrinsic_id_size_in_bytes() { return sizeof(u1); } + static int intrinsic_id_size_in_bytes() { return sizeof(u2); } // Static methods that are used to implement member methods where an exposed this pointer // is needed due to possible GCs @@ -777,7 +777,7 @@ // Support for inlining of intrinsic methods vmIntrinsics::ID intrinsic_id() const { return (vmIntrinsics::ID) _intrinsic_id; } - void set_intrinsic_id(vmIntrinsics::ID id) { _intrinsic_id = (u1) id; } + void set_intrinsic_id(vmIntrinsics::ID id) { _intrinsic_id = (u2) id; } // Helper routines for intrinsic_id() and vmIntrinsics::method(). void init_intrinsic_id(); // updates from _none if a match diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/prims/jvmtiExport.cpp --- a/hotspot/src/share/vm/prims/jvmtiExport.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -2181,8 +2181,8 @@ JvmtiVMObjectAllocEventCollector::oops_do_for_all_threads(f); } -size_t JvmtiExport::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) { - return JvmtiTagMap::weak_oops_do(is_alive, f); +void JvmtiExport::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) { + JvmtiTagMap::weak_oops_do(is_alive, f); } void JvmtiExport::gc_epilogue() { diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/prims/jvmtiExport.hpp --- a/hotspot/src/share/vm/prims/jvmtiExport.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/prims/jvmtiExport.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -366,7 +366,7 @@ static void clear_detected_exception (JavaThread* thread) NOT_JVMTI_RETURN; static void oops_do(OopClosure* f) NOT_JVMTI_RETURN; - static size_t weak_oops_do(BoolObjectClosure* b, OopClosure* f) NOT_JVMTI_RETURN_(0); + static void weak_oops_do(BoolObjectClosure* b, OopClosure* f) NOT_JVMTI_RETURN; static void gc_epilogue() NOT_JVMTI_RETURN; static void transition_pending_onload_raw_monitors() NOT_JVMTI_RETURN; diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/prims/jvmtiTagMap.cpp --- a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -3284,35 +3284,32 @@ } -size_t JvmtiTagMap::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) { +void JvmtiTagMap::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) { // No locks during VM bring-up (0 threads) and no safepoints after main // thread creation and before VMThread creation (1 thread); initial GC // verification can happen in that window which gets to here. assert(Threads::number_of_threads() <= 1 || SafepointSynchronize::is_at_safepoint(), "must be executed at a safepoint"); - size_t count = 0; if (JvmtiEnv::environments_might_exist()) { JvmtiEnvIterator it; for (JvmtiEnvBase* env = it.first(); env != NULL; env = it.next(env)) { JvmtiTagMap* tag_map = env->tag_map(); if (tag_map != NULL && !tag_map->is_empty()) { - count += tag_map->do_weak_oops(is_alive, f); + tag_map->do_weak_oops(is_alive, f); } } } - return count; } -size_t JvmtiTagMap::do_weak_oops(BoolObjectClosure* is_alive, OopClosure* f) { +void JvmtiTagMap::do_weak_oops(BoolObjectClosure* is_alive, OopClosure* f) { // does this environment have the OBJECT_FREE event enabled bool post_object_free = env()->is_enabled(JVMTI_EVENT_OBJECT_FREE); // counters used for trace message - size_t freed = 0; - size_t moved = 0; - size_t stayed = 0; + int freed = 0; + int moved = 0; JvmtiTagHashmap* hashmap = this->hashmap(); @@ -3321,7 +3318,7 @@ // if the hashmap is empty then we can skip it if (hashmap->_entry_count == 0) { - return 0; + return; } // now iterate through each entry in the table @@ -3383,7 +3380,6 @@ } else { // object didn't move prev = entry; - stayed++; } } @@ -3402,12 +3398,10 @@ // stats if (TraceJVMTIObjectTagging) { - size_t post_total = hashmap->_entry_count; - size_t pre_total = post_total + freed; - - tty->print_cr("(" SIZE_FORMAT "->" SIZE_FORMAT ", " SIZE_FORMAT " freed, " SIZE_FORMAT " stayed, " SIZE_FORMAT " moved)", - pre_total, post_total, freed, stayed, moved); + int post_total = hashmap->_entry_count; + int pre_total = post_total + freed; + + tty->print_cr("(%d->%d, %d freed, %d total moves)", + pre_total, post_total, freed, moved); } - - return (freed + stayed + moved); } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/prims/jvmtiTagMap.hpp --- a/hotspot/src/share/vm/prims/jvmtiTagMap.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/prims/jvmtiTagMap.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -60,7 +60,7 @@ inline Mutex* lock() { return &_lock; } inline JvmtiEnv* env() const { return _env; } - size_t do_weak_oops(BoolObjectClosure* is_alive, OopClosure* f); + void do_weak_oops(BoolObjectClosure* is_alive, OopClosure* f); // iterate over all entries in this tag map void entry_iterate(JvmtiTagHashmapEntryClosure* closure); @@ -122,8 +122,8 @@ jint* count_ptr, jobject** object_result_ptr, jlong** tag_result_ptr); - static size_t weak_oops_do(BoolObjectClosure* is_alive, - OopClosure* f) NOT_JVMTI_RETURN_(0); + static void weak_oops_do( + BoolObjectClosure* is_alive, OopClosure* f) NOT_JVMTI_RETURN; }; #endif // SHARE_VM_PRIMS_JVMTITAGMAP_HPP diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/runtime/arguments.cpp --- a/hotspot/src/share/vm/runtime/arguments.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/runtime/arguments.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -118,7 +118,7 @@ // part of the option string. static bool match_option(const JavaVMOption *option, const char* name, const char** tail) { - int len = (int)strlen(name); + size_t len = strlen(name); if (strncmp(option->optionString, name, len) == 0) { *tail = option->optionString + len; return true; @@ -219,11 +219,9 @@ void Arguments::init_version_specific_system_properties() { enum { bufsz = 16 }; char buffer[bufsz]; - const char* spec_vendor = "Sun Microsystems Inc."; - uint32_t spec_version = 0; - - spec_vendor = "Oracle Corporation"; - spec_version = JDK_Version::current().major_version(); + const char* spec_vendor = "Oracle Corporation"; + uint32_t spec_version = JDK_Version::current().major_version(); + jio_snprintf(buffer, bufsz, "1." UINT32_FORMAT, spec_version); PropertyList_add(&_system_properties, @@ -234,75 +232,290 @@ new SystemProperty("java.vm.vendor", VM_Version::vm_vendor(), false)); } -/** - * Provide a slightly more user-friendly way of eliminating -XX flags. - * When a flag is eliminated, it can be added to this list in order to - * continue accepting this flag on the command-line, while issuing a warning - * and ignoring the value. Once the JDK version reaches the 'accept_until' - * limit, we flatly refuse to admit the existence of the flag. This allows - * a flag to die correctly over JDK releases using HSX. - * But now that HSX is no longer supported only options with a future - * accept_until value need to be listed, and the list can be pruned - * on each major release. +/* + * -XX argument processing: + * + * -XX arguments are defined in several places, such as: + * globals.hpp, globals_.hpp, globals_.hpp, _globals.hpp, or _globals.hpp. + * -XX arguments are parsed in parse_argument(). + * -XX argument bounds checking is done in check_vm_args_consistency(). + * + * Over time -XX arguments may change. There are mechanisms to handle common cases: + * + * ALIASED: An option that is simply another name for another option. This is often + * part of the process of deprecating a flag, but not all aliases need + * to be deprecated. + * + * Create an alias for an option by adding the old and new option names to the + * "aliased_jvm_flags" table. Delete the old variable from globals.hpp (etc). + * + * DEPRECATED: An option that is supported, but a warning is printed to let the user know that + * support may be removed in the future. Both regular and aliased options may be + * deprecated. + * + * Add a deprecation warning for an option (or alias) by adding an entry in the + * "special_jvm_flags" table and setting the "deprecated_in" field. + * Often an option "deprecated" in one major release will + * be made "obsolete" in the next. In this case the entry should also have it's + * "obsolete_in" field set. + * + * OBSOLETE: An option that has been removed (and deleted from globals.hpp), but is still accepted + * on the command line. A warning is printed to let the user know that option might not + * be accepted in the future. + * + * Add an obsolete warning for an option by adding an entry in the "special_jvm_flags" + * table and setting the "obsolete_in" field. + * + * EXPIRED: A deprecated or obsolete option that has an "accept_until" version less than or equal + * to the current JDK version. The system will flatly refuse to admit the existence of + * the flag. This allows a flag to die automatically over JDK releases. + * + * Note that manual cleanup of expired options should be done at major JDK version upgrades: + * - Newly expired options should be removed from the special_jvm_flags and aliased_jvm_flags tables. + * - Newly obsolete or expired deprecated options should have their global variable + * definitions removed (from globals.hpp, etc) and related implementations removed. + * + * Recommended approach for removing options: + * + * To remove options commonly used by customers (e.g. product, commercial -XX options), use + * the 3-step model adding major release numbers to the deprecate, obsolete and expire columns. + * + * To remove internal options (e.g. diagnostic, experimental, develop options), use + * a 2-step model adding major release numbers to the obsolete and expire columns. + * + * To change the name of an option, use the alias table as well as a 2-step + * model adding major release numbers to the deprecate and expire columns. + * Think twice about aliasing commonly used customer options. + * + * There are times when it is appropriate to leave a future release number as undefined. + * + * Tests: Aliases should be tested in VMAliasOptions.java. + * Deprecated options should be tested in VMDeprecatedOptions.java. */ + +// Obsolete or deprecated -XX flag. typedef struct { const char* name; - JDK_Version obsoleted_in; // when the flag went away - JDK_Version accept_until; // which version to start denying the existence -} ObsoleteFlag; - -static ObsoleteFlag obsolete_jvm_flags[] = { - { "UseOldInlining", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "SafepointPollOffset", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "UseBoundThreads", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "DefaultThreadPriority", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "NoYieldsInMicrolock", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "BackEdgeThreshold", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "UseNewReflection", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "ReflectionWrapResolutionErrors",JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "VerifyReflectionBytecodes", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "AutoShutdownNMT", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "NmethodSweepFraction", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "NmethodSweepCheckInterval", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "CodeCacheMinimumFreeSpace", JDK_Version::jdk(9), JDK_Version::jdk(10) }, + JDK_Version deprecated_in; // When the deprecation warning started (or "undefined"). + JDK_Version obsolete_in; // When the obsolete warning started (or "undefined"). + JDK_Version expired_in; // When the option expires (or "undefined"). +} SpecialFlag; + +// The special_jvm_flags table declares options that are being deprecated and/or obsoleted. The +// "deprecated_in" or "obsolete_in" fields may be set to "undefined", but not both. +// When the JDK version reaches 'deprecated_in' limit, the JVM will process this flag on +// the command-line as usual, but will issue a warning. +// When the JDK version reaches 'obsolete_in' limit, the JVM will continue accepting this flag on +// the command-line, while issuing a warning and ignoring the flag value. +// Once the JDK version reaches 'expired_in' limit, the JVM will flatly refuse to admit the +// existence of the flag. +// +// MANUAL CLEANUP ON JDK VERSION UPDATES: +// This table ensures that the handling of options will update automatically when the JDK +// version is incremented, but the source code needs to be cleanup up manually: +// - As "deprecated" options age into "obsolete" or "expired" options, the associated "globals" +// variable should be removed, as well as users of the variable. +// - As "deprecated" options age into "obsolete" options, move the entry into the +// "Obsolete Flags" section of the table. +// - All expired options should be removed from the table. +static SpecialFlag const special_jvm_flags[] = { + // -------------- Deprecated Flags -------------- + // --- Non-alias flags - sorted by obsolete_in then expired_in: + { "MaxGCMinorPauseMillis", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() }, + { "UseParNewGC", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, + + // --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in: + { "DefaultMaxRAMFraction", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() }, + { "CreateMinidumpOnCrash", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() }, + { "CMSMarkStackSizeMax", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, + { "CMSMarkStackSize", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, + { "G1MarkStackSize", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, + { "ParallelMarkingThreads", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, + { "ParallelCMSThreads", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, + + // -------------- Obsolete Flags - sorted by expired_in -------------- + { "UseOldInlining", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "SafepointPollOffset", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "UseBoundThreads", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "DefaultThreadPriority", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "NoYieldsInMicrolock", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "BackEdgeThreshold", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "UseNewReflection", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "ReflectionWrapResolutionErrors",JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "VerifyReflectionBytecodes", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "AutoShutdownNMT", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "NmethodSweepFraction", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "NmethodSweepCheckInterval", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "CodeCacheMinimumFreeSpace", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, #ifndef ZERO - { "UseFastAccessorMethods", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "UseFastEmptyMethods", JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "UseFastAccessorMethods", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "UseFastEmptyMethods", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, #endif // ZERO - { "UseCompilerSafepoints", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "AdaptiveSizePausePolicy", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "ParallelGCRetainPLAB", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "ThreadSafetyMargin", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "LazyBootClassLoader", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "StarvationMonitorInterval", JDK_Version::jdk(9), JDK_Version::jdk(10) }, - { "PreInflateSpin", JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "UseCompilerSafepoints", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "AdaptiveSizePausePolicy", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "ParallelGCRetainPLAB", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "ThreadSafetyMargin", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "LazyBootClassLoader", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "StarvationMonitorInterval", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + { "PreInflateSpin", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, + +#ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS + { "dep > obs", JDK_Version::jdk(9), JDK_Version::jdk(8), JDK_Version::undefined() }, + { "dep > exp ", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(8) }, + { "obs > exp ", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(8) }, + { "not deprecated or obsolete", JDK_Version::undefined(), JDK_Version::undefined(), JDK_Version::jdk(9) }, + { "dup option", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() }, + { "dup option", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() }, + { "BytecodeVerificationRemote", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::undefined() }, +#endif + { NULL, JDK_Version(0), JDK_Version(0) } }; -// Returns true if the flag is obsolete and fits into the range specified -// for being ignored. In the case that the flag is ignored, the 'version' -// value is filled in with the version number when the flag became -// obsolete so that that value can be displayed to the user. -bool Arguments::is_newly_obsolete(const char *s, JDK_Version* version) { - int i = 0; - assert(version != NULL, "Must provide a version buffer"); - while (obsolete_jvm_flags[i].name != NULL) { - const ObsoleteFlag& flag_status = obsolete_jvm_flags[i]; - // =xxx form - // [-|+] form - size_t len = strlen(flag_status.name); - if ((strncmp(flag_status.name, s, len) == 0) && - (strlen(s) == len)){ - if (JDK_Version::current().compare(flag_status.accept_until) == -1) { - *version = flag_status.obsoleted_in; - return true; - } +// Flags that are aliases for other flags. +typedef struct { + const char* alias_name; + const char* real_name; +} AliasedFlag; + +static AliasedFlag const aliased_jvm_flags[] = { + { "DefaultMaxRAMFraction", "MaxRAMFraction" }, + { "CMSMarkStackSizeMax", "MarkStackSizeMax" }, + { "CMSMarkStackSize", "MarkStackSize" }, + { "G1MarkStackSize", "MarkStackSize" }, + { "ParallelMarkingThreads", "ConcGCThreads" }, + { "ParallelCMSThreads", "ConcGCThreads" }, + { "CreateMinidumpOnCrash", "CreateCoredumpOnCrash" }, + { NULL, NULL} +}; + +// Return true if "v" is less than "other", where "other" may be "undefined". +static bool version_less_than(JDK_Version v, JDK_Version other) { + assert(!v.is_undefined(), "must be defined"); + if (!other.is_undefined() && v.compare(other) >= 0) { + return false; + } else { + return true; + } +} + +static bool lookup_special_flag(const char *flag_name, SpecialFlag& flag) { + for (size_t i = 0; special_jvm_flags[i].name != NULL; i++) { + if ((strcmp(special_jvm_flags[i].name, flag_name) == 0)) { + flag = special_jvm_flags[i]; + return true; } - i++; } return false; } +bool Arguments::is_obsolete_flag(const char *flag_name, JDK_Version* version) { + assert(version != NULL, "Must provide a version buffer"); + SpecialFlag flag; + if (lookup_special_flag(flag_name, flag)) { + if (!flag.obsolete_in.is_undefined()) { + if (version_less_than(JDK_Version::current(), flag.expired_in)) { + *version = flag.obsolete_in; + return true; + } + } + } + return false; +} + +int Arguments::is_deprecated_flag(const char *flag_name, JDK_Version* version) { + assert(version != NULL, "Must provide a version buffer"); + SpecialFlag flag; + if (lookup_special_flag(flag_name, flag)) { + if (!flag.deprecated_in.is_undefined()) { + if (version_less_than(JDK_Version::current(), flag.obsolete_in) && + version_less_than(JDK_Version::current(), flag.expired_in)) { + *version = flag.deprecated_in; + return 1; + } else { + return -1; + } + } + } + return 0; +} + +const char* Arguments::real_flag_name(const char *flag_name) { + for (size_t i = 0; aliased_jvm_flags[i].alias_name != NULL; i++) { + const AliasedFlag& flag_status = aliased_jvm_flags[i]; + if (strcmp(flag_status.alias_name, flag_name) == 0) { + return flag_status.real_name; + } + } + return flag_name; +} + +#ifndef PRODUCT +static bool lookup_special_flag(const char *flag_name, size_t skip_index) { + for (size_t i = 0; special_jvm_flags[i].name != NULL; i++) { + if ((i != skip_index) && (strcmp(special_jvm_flags[i].name, flag_name) == 0)) { + return true; + } + } + return false; +} + +static bool verify_special_jvm_flags() { + bool success = true; + for (size_t i = 0; special_jvm_flags[i].name != NULL; i++) { + const SpecialFlag& flag = special_jvm_flags[i]; + if (lookup_special_flag(flag.name, i)) { + warning("Duplicate special flag declaration \"%s\"", flag.name); + success = false; + } + if (flag.deprecated_in.is_undefined() && + flag.obsolete_in.is_undefined()) { + warning("Special flag entry \"%s\" must declare version deprecated and/or obsoleted in.", flag.name); + success = false; + } + + if (!flag.deprecated_in.is_undefined()) { + if (!version_less_than(flag.deprecated_in, flag.obsolete_in)) { + warning("Special flag entry \"%s\" must be deprecated before obsoleted.", flag.name); + success = false; + } + + if (!version_less_than(flag.deprecated_in, flag.expired_in)) { + warning("Special flag entry \"%s\" must be deprecated before expired.", flag.name); + success = false; + } + } + + if (!flag.obsolete_in.is_undefined()) { + if (!version_less_than(flag.obsolete_in, flag.expired_in)) { + warning("Special flag entry \"%s\" must be obsoleted before expired.", flag.name); + success = false; + } + + // if flag has become obsolete it should not have a "globals" flag defined anymore. + if (!version_less_than(JDK_Version::current(), flag.obsolete_in)) { + if (Flag::find_flag(flag.name) != NULL) { + warning("Global variable for obsolete special flag entry \"%s\" should be removed", flag.name); + success = false; + } + } + } + + if (!flag.expired_in.is_undefined()) { + // if flag has become expired it should not have a "globals" flag defined anymore. + if (!version_less_than(JDK_Version::current(), flag.expired_in)) { + if (Flag::find_flag(flag.name) != NULL) { + warning("Global variable for expired flag entry \"%s\" should be removed", flag.name); + success = false; + } + } + } + + } + return success; +} +#endif + // Constructs the system class path (aka boot class path) from the following // components, in order: // @@ -571,7 +784,7 @@ } } -static bool set_bool_flag(char* name, bool value, Flag::Flags origin) { +static bool set_bool_flag(const char* name, bool value, Flag::Flags origin) { if (CommandLineFlags::boolAtPut(name, &value, origin) == Flag::SUCCESS) { return true; } else { @@ -579,7 +792,7 @@ } } -static bool set_fp_numeric_flag(char* name, char* value, Flag::Flags origin) { +static bool set_fp_numeric_flag(const char* name, char* value, Flag::Flags origin) { double v; if (sscanf(value, "%lf", &v) != 1) { return false; @@ -591,7 +804,7 @@ return false; } -static bool set_numeric_flag(char* name, char* value, Flag::Flags origin) { +static bool set_numeric_flag(const char* name, char* value, Flag::Flags origin) { julong v; int int_v; intx intx_v; @@ -640,14 +853,14 @@ return false; } -static bool set_string_flag(char* name, const char* value, Flag::Flags origin) { +static bool set_string_flag(const char* name, const char* value, Flag::Flags origin) { if (CommandLineFlags::ccstrAtPut(name, &value, origin) != Flag::SUCCESS) return false; // Contract: CommandLineFlags always returns a pointer that needs freeing. FREE_C_HEAP_ARRAY(char, value); return true; } -static bool append_to_string_flag(char* name, const char* new_value, Flag::Flags origin) { +static bool append_to_string_flag(const char* name, const char* new_value, Flag::Flags origin) { const char* old_value = ""; if (CommandLineFlags::ccstrAt(name, &old_value) != Flag::SUCCESS) return false; size_t old_len = old_value != NULL ? strlen(old_value) : 0; @@ -675,6 +888,33 @@ return true; } +const char* Arguments::handle_aliases_and_deprecation(const char* arg, bool warn) { + const char* real_name = real_flag_name(arg); + JDK_Version since = JDK_Version(); + switch (is_deprecated_flag(arg, &since)) { + case -1: + return NULL; // obsolete or expired, don't process normally + case 0: + return real_name; + case 1: { + if (warn) { + char version[256]; + since.to_string(version, sizeof(version)); + if (real_name != arg) { + warning("Option %s was deprecated in version %s and will likely be removed in a future release. Use option %s instead.", + arg, version, real_name); + } else { + warning("Option %s was deprecated in version %s and will likely be removed in a future release.", + arg, version); + } + } + return real_name; + } + } + ShouldNotReachHere(); + return NULL; +} + bool Arguments::parse_argument(const char* arg, Flag::Flags origin) { // range of acceptable characters spelled out for portability reasons @@ -682,27 +922,46 @@ #define BUFLEN 255 char name[BUFLEN+1]; char dummy; + const char* real_name; + bool warn_if_deprecated = true; if (sscanf(arg, "-%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) { - return set_bool_flag(name, false, origin); + real_name = handle_aliases_and_deprecation(name, warn_if_deprecated); + if (real_name == NULL) { + return false; + } + return set_bool_flag(real_name, false, origin); } if (sscanf(arg, "+%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) { - return set_bool_flag(name, true, origin); + real_name = handle_aliases_and_deprecation(name, warn_if_deprecated); + if (real_name == NULL) { + return false; + } + return set_bool_flag(real_name, true, origin); } char punct; if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "%c", name, &punct) == 2 && punct == '=') { const char* value = strchr(arg, '=') + 1; - Flag* flag = Flag::find_flag(name, strlen(name)); + Flag* flag; + + // this scanf pattern matches both strings (handled here) and numbers (handled later)) + real_name = handle_aliases_and_deprecation(name, warn_if_deprecated); + if (real_name == NULL) { + return false; + } + flag = Flag::find_flag(real_name); if (flag != NULL && flag->is_ccstr()) { if (flag->ccstr_accumulates()) { - return append_to_string_flag(name, value, origin); + return append_to_string_flag(real_name, value, origin); } else { if (value[0] == '\0') { value = NULL; } - return set_string_flag(name, value, origin); + return set_string_flag(real_name, value, origin); } + } else { + warn_if_deprecated = false; // if arg is deprecated, we've already done warning... } } @@ -712,7 +971,11 @@ if (value[0] == '\0') { value = NULL; } - return set_string_flag(name, value, origin); + real_name = handle_aliases_and_deprecation(name, warn_if_deprecated); + if (real_name == NULL) { + return false; + } + return set_string_flag(real_name, value, origin); } #define SIGNED_FP_NUMBER_RANGE "[-0123456789.]" @@ -723,13 +986,21 @@ if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_NUMBER_RANGE "." "%" XSTR(BUFLEN) NUMBER_RANGE "%c", name, value, value2, &dummy) == 3) { // Looks like a floating-point number -- try again with more lenient format string if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_FP_NUMBER_RANGE "%c", name, value, &dummy) == 2) { - return set_fp_numeric_flag(name, value, origin); + real_name = handle_aliases_and_deprecation(name, warn_if_deprecated); + if (real_name == NULL) { + return false; + } + return set_fp_numeric_flag(real_name, value, origin); } } #define VALUE_RANGE "[-kmgtxKMGTX0123456789abcdefABCDEF]" if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) VALUE_RANGE "%c", name, value, &dummy) == 2) { - return set_numeric_flag(name, value, origin); + real_name = handle_aliases_and_deprecation(name, warn_if_deprecated); + if (real_name == NULL) { + return false; + } + return set_numeric_flag(real_name, value, origin); } return false; @@ -837,8 +1108,8 @@ } bool Arguments::process_argument(const char* arg, - jboolean ignore_unrecognized, Flag::Flags origin) { - + jboolean ignore_unrecognized, + Flag::Flags origin) { JDK_Version since = JDK_Version(); if (parse_argument(arg, origin) || ignore_unrecognized) { @@ -864,10 +1135,10 @@ strncpy(stripped_argname, argname, arg_len); stripped_argname[arg_len] = '\0'; // strncpy may not null terminate. - if (is_newly_obsolete(stripped_argname, &since)) { + if (is_obsolete_flag(stripped_argname, &since)) { char version[256]; since.to_string(version, sizeof(version)); - warning("ignoring option %s; support was removed in %s", stripped_argname, version); + warning("Ignoring option %s; support was removed in %s", stripped_argname, version); return true; } } @@ -1235,7 +1506,7 @@ static void disable_adaptive_size_policy(const char* collector_name) { if (UseAdaptiveSizePolicy) { if (FLAG_IS_CMDLINE(UseAdaptiveSizePolicy)) { - warning("disabling UseAdaptiveSizePolicy; it is incompatible with %s.", + warning("Disabling UseAdaptiveSizePolicy; it is incompatible with %s.", collector_name); } FLAG_SET_DEFAULT(UseAdaptiveSizePolicy, false); @@ -1707,7 +1978,6 @@ } else if (UseG1GC) { set_g1_gc_flags(); } - check_deprecated_gc_flags(); if (AssumeMP && !UseSerialGC) { if (FLAG_IS_DEFAULT(ParallelGCThreads) && ParallelGCThreads == 1) { warning("If the number of processors is expected to increase from one, then" @@ -1737,11 +2007,6 @@ static const size_t DefaultHeapBaseMinAddress = HeapBaseMinAddress; void Arguments::set_heap_size() { - if (!FLAG_IS_DEFAULT(DefaultMaxRAMFraction)) { - // Deprecated flag - FLAG_SET_CMDLINE(uintx, MaxRAMFraction, DefaultMaxRAMFraction); - } - const julong phys_mem = FLAG_IS_DEFAULT(MaxRAM) ? MIN2(os::physical_memory(), (julong)MaxRAM) : (julong)MaxRAM; @@ -1844,6 +2109,122 @@ } } +// This option inspects the machine and attempts to set various +// parameters to be optimal for long-running, memory allocation +// intensive jobs. It is intended for machines with large +// amounts of cpu and memory. +jint Arguments::set_aggressive_heap_flags() { + // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit + // VM, but we may not be able to represent the total physical memory + // available (like having 8gb of memory on a box but using a 32bit VM). + // Thus, we need to make sure we're using a julong for intermediate + // calculations. + julong initHeapSize; + julong total_memory = os::physical_memory(); + + if (total_memory < (julong) 256 * M) { + jio_fprintf(defaultStream::error_stream(), + "You need at least 256mb of memory to use -XX:+AggressiveHeap\n"); + vm_exit(1); + } + + // The heap size is half of available memory, or (at most) + // all of possible memory less 160mb (leaving room for the OS + // when using ISM). This is the maximum; because adaptive sizing + // is turned on below, the actual space used may be smaller. + + initHeapSize = MIN2(total_memory / (julong) 2, + total_memory - (julong) 160 * M); + + initHeapSize = limit_by_allocatable_memory(initHeapSize); + + if (FLAG_IS_DEFAULT(MaxHeapSize)) { + if (FLAG_SET_CMDLINE(size_t, MaxHeapSize, initHeapSize) != Flag::SUCCESS) { + return JNI_EINVAL; + } + if (FLAG_SET_CMDLINE(size_t, InitialHeapSize, initHeapSize) != Flag::SUCCESS) { + return JNI_EINVAL; + } + // Currently the minimum size and the initial heap sizes are the same. + set_min_heap_size(initHeapSize); + } + if (FLAG_IS_DEFAULT(NewSize)) { + // Make the young generation 3/8ths of the total heap. + if (FLAG_SET_CMDLINE(size_t, NewSize, + ((julong) MaxHeapSize / (julong) 8) * (julong) 3) != Flag::SUCCESS) { + return JNI_EINVAL; + } + if (FLAG_SET_CMDLINE(size_t, MaxNewSize, NewSize) != Flag::SUCCESS) { + return JNI_EINVAL; + } + } + +#if !defined(_ALLBSD_SOURCE) && !defined(AIX) // UseLargePages is not yet supported on BSD and AIX. + FLAG_SET_DEFAULT(UseLargePages, true); +#endif + + // Increase some data structure sizes for efficiency + if (FLAG_SET_CMDLINE(size_t, BaseFootPrintEstimate, MaxHeapSize) != Flag::SUCCESS) { + return JNI_EINVAL; + } + if (FLAG_SET_CMDLINE(bool, ResizeTLAB, false) != Flag::SUCCESS) { + return JNI_EINVAL; + } + if (FLAG_SET_CMDLINE(size_t, TLABSize, 256 * K) != Flag::SUCCESS) { + return JNI_EINVAL; + } + + // See the OldPLABSize comment below, but replace 'after promotion' + // with 'after copying'. YoungPLABSize is the size of the survivor + // space per-gc-thread buffers. The default is 4kw. + if (FLAG_SET_CMDLINE(size_t, YoungPLABSize, 256 * K) != Flag::SUCCESS) { // Note: this is in words + return JNI_EINVAL; + } + + // OldPLABSize is the size of the buffers in the old gen that + // UseParallelGC uses to promote live data that doesn't fit in the + // survivor spaces. At any given time, there's one for each gc thread. + // The default size is 1kw. These buffers are rarely used, since the + // survivor spaces are usually big enough. For specjbb, however, there + // are occasions when there's lots of live data in the young gen + // and we end up promoting some of it. We don't have a definite + // explanation for why bumping OldPLABSize helps, but the theory + // is that a bigger PLAB results in retaining something like the + // original allocation order after promotion, which improves mutator + // locality. A minor effect may be that larger PLABs reduce the + // number of PLAB allocation events during gc. The value of 8kw + // was arrived at by experimenting with specjbb. + if (FLAG_SET_CMDLINE(size_t, OldPLABSize, 8 * K) != Flag::SUCCESS) { // Note: this is in words + return JNI_EINVAL; + } + + // Enable parallel GC and adaptive generation sizing + if (FLAG_SET_CMDLINE(bool, UseParallelGC, true) != Flag::SUCCESS) { + return JNI_EINVAL; + } + FLAG_SET_DEFAULT(ParallelGCThreads, + Abstract_VM_Version::parallel_worker_threads()); + + // Encourage steady state memory management + if (FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100) != Flag::SUCCESS) { + return JNI_EINVAL; + } + + // This appears to improve mutator locality + if (FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false) != Flag::SUCCESS) { + return JNI_EINVAL; + } + + // Get around early Solaris scheduling bug + // (affinity vs other jobs on system) + // but disallow DR and offlining (5008695). + if (FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true) != Flag::SUCCESS) { + return JNI_EINVAL; + } + + return JNI_OK; +} + // This must be called after ergonomics. void Arguments::set_bytecode_flags() { if (!RewriteBytecodes) { @@ -2027,20 +2408,6 @@ return true; } -void Arguments::check_deprecated_gc_flags() { - if (FLAG_IS_CMDLINE(UseParNewGC)) { - warning("The UseParNewGC flag is deprecated and will likely be removed in a future release"); - } - if (FLAG_IS_CMDLINE(MaxGCMinorPauseMillis)) { - warning("Using MaxGCMinorPauseMillis as minor pause goal is deprecated" - "and will likely be removed in future release"); - } - if (FLAG_IS_CMDLINE(DefaultMaxRAMFraction)) { - warning("DefaultMaxRAMFraction is deprecated and will likely be removed in a future release. " - "Use MaxRAMFraction instead."); - } -} - // Check the consistency of vm_init_args bool Arguments::check_vm_args_consistency() { // Method for adding checks for flag consistency. @@ -2576,7 +2943,7 @@ // All these options are deprecated in JDK 9 and will be removed in a future release char version[256]; JDK_Version::jdk(9).to_string(version, sizeof(version)); - warning("ignoring option %s; support was removed in %s", option->optionString, version); + warning("Ignoring option %s; support was removed in %s", option->optionString, version); } else if (match_option(option, "-XX:CodeCacheExpansionSize=", &tail)) { julong long_CodeCacheExpansionSize = 0; ArgsRange errcode = parse_memory_size(tail, &long_CodeCacheExpansionSize, os::vm_page_size()); @@ -2843,120 +3210,10 @@ _abort_hook = CAST_TO_FN_PTR(abort_hook_t, option->extraInfo); // -XX:+AggressiveHeap } else if (match_option(option, "-XX:+AggressiveHeap")) { - - // This option inspects the machine and attempts to set various - // parameters to be optimal for long-running, memory allocation - // intensive jobs. It is intended for machines with large - // amounts of cpu and memory. - - // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit - // VM, but we may not be able to represent the total physical memory - // available (like having 8gb of memory on a box but using a 32bit VM). - // Thus, we need to make sure we're using a julong for intermediate - // calculations. - julong initHeapSize; - julong total_memory = os::physical_memory(); - - if (total_memory < (julong)256*M) { - jio_fprintf(defaultStream::error_stream(), - "You need at least 256mb of memory to use -XX:+AggressiveHeap\n"); - vm_exit(1); - } - - // The heap size is half of available memory, or (at most) - // all of possible memory less 160mb (leaving room for the OS - // when using ISM). This is the maximum; because adaptive sizing - // is turned on below, the actual space used may be smaller. - - initHeapSize = MIN2(total_memory / (julong)2, - total_memory - (julong)160*M); - - initHeapSize = limit_by_allocatable_memory(initHeapSize); - - if (FLAG_IS_DEFAULT(MaxHeapSize)) { - if (FLAG_SET_CMDLINE(size_t, MaxHeapSize, initHeapSize) != Flag::SUCCESS) { - return JNI_EINVAL; - } - if (FLAG_SET_CMDLINE(size_t, InitialHeapSize, initHeapSize) != Flag::SUCCESS) { - return JNI_EINVAL; - } - // Currently the minimum size and the initial heap sizes are the same. - set_min_heap_size(initHeapSize); - } - if (FLAG_IS_DEFAULT(NewSize)) { - // Make the young generation 3/8ths of the total heap. - if (FLAG_SET_CMDLINE(size_t, NewSize, - ((julong)MaxHeapSize / (julong)8) * (julong)3) != Flag::SUCCESS) { - return JNI_EINVAL; - } - if (FLAG_SET_CMDLINE(size_t, MaxNewSize, NewSize) != Flag::SUCCESS) { - return JNI_EINVAL; - } + jint result = set_aggressive_heap_flags(); + if (result != JNI_OK) { + return result; } - -#if !defined(_ALLBSD_SOURCE) && !defined(AIX) // UseLargePages is not yet supported on BSD and AIX. - FLAG_SET_DEFAULT(UseLargePages, true); -#endif - - // Increase some data structure sizes for efficiency - if (FLAG_SET_CMDLINE(size_t, BaseFootPrintEstimate, MaxHeapSize) != Flag::SUCCESS) { - return JNI_EINVAL; - } - if (FLAG_SET_CMDLINE(bool, ResizeTLAB, false) != Flag::SUCCESS) { - return JNI_EINVAL; - } - if (FLAG_SET_CMDLINE(size_t, TLABSize, 256*K) != Flag::SUCCESS) { - return JNI_EINVAL; - } - - // See the OldPLABSize comment below, but replace 'after promotion' - // with 'after copying'. YoungPLABSize is the size of the survivor - // space per-gc-thread buffers. The default is 4kw. - if (FLAG_SET_CMDLINE(size_t, YoungPLABSize, 256*K) != Flag::SUCCESS) { // Note: this is in words - return JNI_EINVAL; - } - - // OldPLABSize is the size of the buffers in the old gen that - // UseParallelGC uses to promote live data that doesn't fit in the - // survivor spaces. At any given time, there's one for each gc thread. - // The default size is 1kw. These buffers are rarely used, since the - // survivor spaces are usually big enough. For specjbb, however, there - // are occasions when there's lots of live data in the young gen - // and we end up promoting some of it. We don't have a definite - // explanation for why bumping OldPLABSize helps, but the theory - // is that a bigger PLAB results in retaining something like the - // original allocation order after promotion, which improves mutator - // locality. A minor effect may be that larger PLABs reduce the - // number of PLAB allocation events during gc. The value of 8kw - // was arrived at by experimenting with specjbb. - if (FLAG_SET_CMDLINE(size_t, OldPLABSize, 8*K) != Flag::SUCCESS) { // Note: this is in words - return JNI_EINVAL; - } - - // Enable parallel GC and adaptive generation sizing - if (FLAG_SET_CMDLINE(bool, UseParallelGC, true) != Flag::SUCCESS) { - return JNI_EINVAL; - } - FLAG_SET_DEFAULT(ParallelGCThreads, - Abstract_VM_Version::parallel_worker_threads()); - - // Encourage steady state memory management - if (FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100) != Flag::SUCCESS) { - return JNI_EINVAL; - } - - // This appears to improve mutator locality - if (FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false) != Flag::SUCCESS) { - return JNI_EINVAL; - } - - // Get around early Solaris scheduling bug - // (affinity vs other jobs on system) - // but disallow DR and offlining (5008695). - if (FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true) != Flag::SUCCESS) { - return JNI_EINVAL; - } - // Need to keep consistency of MaxTenuringThreshold and AlwaysTenure/NeverTenure; // and the last option wins. } else if (match_option(option, "-XX:+NeverTenure")) { @@ -3049,52 +3306,6 @@ return JNI_EINVAL; } #endif - } else if (match_option(option, "-XX:CMSMarkStackSize=", &tail) || - match_option(option, "-XX:G1MarkStackSize=", &tail)) { - julong stack_size = 0; - ArgsRange errcode = parse_memory_size(tail, &stack_size, 1); - if (errcode != arg_in_range) { - jio_fprintf(defaultStream::error_stream(), - "Invalid mark stack size: %s\n", option->optionString); - describe_range_error(errcode); - return JNI_EINVAL; - } - jio_fprintf(defaultStream::error_stream(), - "Please use -XX:MarkStackSize in place of " - "-XX:CMSMarkStackSize or -XX:G1MarkStackSize in the future\n"); - if (FLAG_SET_CMDLINE(size_t, MarkStackSize, stack_size) != Flag::SUCCESS) { - return JNI_EINVAL; - } - } else if (match_option(option, "-XX:CMSMarkStackSizeMax=", &tail)) { - julong max_stack_size = 0; - ArgsRange errcode = parse_memory_size(tail, &max_stack_size, 1); - if (errcode != arg_in_range) { - jio_fprintf(defaultStream::error_stream(), - "Invalid maximum mark stack size: %s\n", - option->optionString); - describe_range_error(errcode); - return JNI_EINVAL; - } - jio_fprintf(defaultStream::error_stream(), - "Please use -XX:MarkStackSizeMax in place of " - "-XX:CMSMarkStackSizeMax in the future\n"); - if (FLAG_SET_CMDLINE(size_t, MarkStackSizeMax, max_stack_size) != Flag::SUCCESS) { - return JNI_EINVAL; - } - } else if (match_option(option, "-XX:ParallelMarkingThreads=", &tail) || - match_option(option, "-XX:ParallelCMSThreads=", &tail)) { - uintx conc_threads = 0; - if (!parse_uintx(tail, &conc_threads, 1)) { - jio_fprintf(defaultStream::error_stream(), - "Invalid concurrent threads: %s\n", option->optionString); - return JNI_EINVAL; - } - jio_fprintf(defaultStream::error_stream(), - "Please use -XX:ConcGCThreads in place of " - "-XX:ParallelMarkingThreads or -XX:ParallelCMSThreads in the future\n"); - if (FLAG_SET_CMDLINE(uint, ConcGCThreads, conc_threads) != Flag::SUCCESS) { - return JNI_EINVAL; - } } else if (match_option(option, "-XX:MaxDirectMemorySize=", &tail)) { julong max_direct_memory_size = 0; ArgsRange errcode = parse_memory_size(tail, &max_direct_memory_size, 0); @@ -3114,19 +3325,6 @@ "ManagementServer is not supported in this VM.\n"); return JNI_ERR; #endif // INCLUDE_MANAGEMENT - // CreateMinidumpOnCrash is removed, and replaced by CreateCoredumpOnCrash - } else if (match_option(option, "-XX:+CreateMinidumpOnCrash")) { - if (FLAG_SET_CMDLINE(bool, CreateCoredumpOnCrash, true) != Flag::SUCCESS) { - return JNI_EINVAL; - } - jio_fprintf(defaultStream::output_stream(), - "CreateMinidumpOnCrash is replaced by CreateCoredumpOnCrash: CreateCoredumpOnCrash is on\n"); - } else if (match_option(option, "-XX:-CreateMinidumpOnCrash")) { - if (FLAG_SET_CMDLINE(bool, CreateCoredumpOnCrash, false) != Flag::SUCCESS) { - return JNI_EINVAL; - } - jio_fprintf(defaultStream::output_stream(), - "CreateMinidumpOnCrash is replaced by CreateCoredumpOnCrash: CreateCoredumpOnCrash is off\n"); } else if (match_option(option, "-XX:", &tail)) { // -XX:xxxx // Skip -XX:Flags= and -XX:VMOptionsFile= since those cases have // already been handled @@ -3623,7 +3821,7 @@ void Arguments::set_shared_spaces_flags() { if (DumpSharedSpaces) { if (RequireSharedSpaces) { - warning("cannot dump shared archive while using shared archive"); + warning("Cannot dump shared archive while using shared archive"); } UseSharedSpaces = false; #ifdef _LP64 @@ -3848,6 +4046,7 @@ // Parse entry point called from JNI_CreateJavaVM jint Arguments::parse(const JavaVMInitArgs* args) { + assert(verify_special_jvm_flags(), "deprecated and obsolete flag table inconsistent"); // Initialize ranges and constraints CommandLineFlagRangeList::init(); @@ -3984,7 +4183,7 @@ if (ScavengeRootsInCode == 0) { if (!FLAG_IS_DEFAULT(ScavengeRootsInCode)) { - warning("forcing ScavengeRootsInCode non-zero"); + warning("Forcing ScavengeRootsInCode non-zero"); } ScavengeRootsInCode = 1; } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/runtime/arguments.hpp --- a/hotspot/src/share/vm/runtime/arguments.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/runtime/arguments.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -364,6 +364,8 @@ // Aggressive optimization flags. static jint set_aggressive_opts_flags(); + static jint set_aggressive_heap_flags(); + // Argument parsing static void do_pd_flag_adjustments(); static bool parse_argument(const char* arg, Flag::Flags origin); @@ -427,11 +429,24 @@ short* methodsNum, short* methodsMax, char*** methods, bool** allClasses ); - // Returns true if the string s is in the list of flags that have recently - // been made obsolete. If we detect one of these flags on the command - // line, instead of failing we print a warning message and ignore the - // flag. This gives the user a release or so to stop using the flag. - static bool is_newly_obsolete(const char* s, JDK_Version* buffer); + // Returns true if the flag is obsolete (and not yet expired). + // In this case the 'version' buffer is filled in with + // the version number when the flag became obsolete. + static bool is_obsolete_flag(const char* flag_name, JDK_Version* version); + + // Returns 1 if the flag is deprecated (and not yet obsolete or expired). + // In this case the 'version' buffer is filled in with the version number when + // the flag became deprecated. + // Returns -1 if the flag is expired or obsolete. + // Returns 0 otherwise. + static int is_deprecated_flag(const char* flag_name, JDK_Version* version); + + // Return the real name for the flag passed on the command line (either an alias name or "flag_name"). + static const char* real_flag_name(const char *flag_name); + + // Return the "real" name for option arg if arg is an alias, and print a warning if arg is deprecated. + // Return NULL if the arg has expired. + static const char* handle_aliases_and_deprecation(const char* arg, bool warn); static short CompileOnlyClassesNum; static short CompileOnlyClassesMax; @@ -478,7 +493,6 @@ // Check for consistency in the selection of the garbage collector. static bool check_gc_consistency(); // Check user-selected gc - static void check_deprecated_gc_flags(); // Check consistency or otherwise of VM argument settings static bool check_vm_args_consistency(); // Used by os_solaris diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/runtime/globals.hpp --- a/hotspot/src/share/vm/runtime/globals.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/runtime/globals.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -1599,7 +1599,7 @@ "(ParallelGC only)") \ \ product(bool, ScavengeBeforeFullGC, true, \ - "Scavenge young generation before each full GC.") \ + "Scavenge youngest generation before each full GC.") \ \ develop(bool, ScavengeWithObjectsInToSpace, false, \ "Allow scavenges to occur when to-space contains objects") \ @@ -2097,7 +2097,7 @@ "promotion failure") \ \ notproduct(bool, PromotionFailureALot, false, \ - "Use promotion failure handling on every young generation " \ + "Use promotion failure handling on every youngest generation " \ "collection") \ \ develop(uintx, PromotionFailureALotCount, 1000, \ @@ -2183,11 +2183,6 @@ "size") \ range(1, max_uintx) \ \ - product(uintx, DefaultMaxRAMFraction, 4, \ - "Maximum fraction (1/n) of real memory used for maximum heap " \ - "size; deprecated: to be renamed to MaxRAMFraction") \ - range(1, max_uintx) \ - \ product(uintx, MinRAMFraction, 2, \ "Minimum fraction (1/n) of real memory used for maximum heap " \ "size on systems with small physical memory size") \ diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/runtime/java.hpp --- a/hotspot/src/share/vm/runtime/java.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/runtime/java.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -137,6 +137,14 @@ return JDK_Version(major, 0, 0, update_number); } + static JDK_Version undefined() { + return JDK_Version(0); + } + + bool is_undefined() const { + return (_major == 0); + } + uint8_t major_version() const { return _major; } uint8_t minor_version() const { return _minor; } uint8_t micro_version() const { return _micro; } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/runtime/jniHandles.cpp --- a/hotspot/src/share/vm/runtime/jniHandles.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/runtime/jniHandles.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -124,8 +124,8 @@ } -size_t JNIHandles::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) { - return _weak_global_handles->weak_oops_do(is_alive, f); +void JNIHandles::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) { + _weak_global_handles->weak_oops_do(is_alive, f); } @@ -380,9 +380,8 @@ } -size_t JNIHandleBlock::weak_oops_do(BoolObjectClosure* is_alive, - OopClosure* f) { - size_t count = 0; +void JNIHandleBlock::weak_oops_do(BoolObjectClosure* is_alive, + OopClosure* f) { for (JNIHandleBlock* current = this; current != NULL; current = current->_next) { assert(current->pop_frame_link() == NULL, "blocks holding weak global JNI handles should not have pop frame link set"); @@ -391,7 +390,6 @@ oop value = *root; // traverse heap pointers only, not deleted handles or free list pointers if (value != NULL && Universe::heap()->is_in_reserved(value)) { - count++; if (is_alive->do_object_b(value)) { // The weakly referenced object is alive, update pointer f->do_oop(root); @@ -414,9 +412,7 @@ * JVMTI data structures may also contain weak oops. The iteration of them * is placed here so that we don't need to add it to each of the collectors. */ - count += JvmtiExport::weak_oops_do(is_alive, f); - - return count; + JvmtiExport::weak_oops_do(is_alive, f); } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/runtime/jniHandles.hpp --- a/hotspot/src/share/vm/runtime/jniHandles.hpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/runtime/jniHandles.hpp Tue Oct 06 08:41:31 2015 -0700 @@ -85,7 +85,7 @@ // Traversal of regular global handles static void oops_do(OopClosure* f); // Traversal of weak global handles. Unreachable oops are cleared. - static size_t weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f); + static void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f); }; @@ -153,7 +153,7 @@ // Traversal of regular handles void oops_do(OopClosure* f); // Traversal of weak handles. Unreachable oops are cleared. - size_t weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f); + void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f); // Checked JNI support void set_planned_capacity(size_t planned_capacity) { _planned_capacity = planned_capacity; } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/src/share/vm/runtime/vmStructs.cpp --- a/hotspot/src/share/vm/runtime/vmStructs.cpp Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/src/share/vm/runtime/vmStructs.cpp Tue Oct 06 08:41:31 2015 -0700 @@ -383,7 +383,7 @@ nonstatic_field(Method, _access_flags, AccessFlags) \ nonstatic_field(Method, _vtable_index, int) \ nonstatic_field(Method, _method_size, u2) \ - nonstatic_field(Method, _intrinsic_id, u1) \ + nonstatic_field(Method, _intrinsic_id, u2) \ nonproduct_nonstatic_field(Method, _compiled_invocation_count, int) \ volatile_nonstatic_field(Method, _code, nmethod*) \ nonstatic_field(Method, _i2i_entry, address) \ diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/TEST.groups --- a/hotspot/test/TEST.groups Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/test/TEST.groups Tue Oct 06 08:41:31 2015 -0700 @@ -190,7 +190,6 @@ gc/g1/TestShrinkToOneRegion.java \ gc/metaspace/G1AddMetaspaceDependency.java \ gc/startup_warnings/TestCMS.java \ - gc/startup_warnings/TestDefaultMaxRAMFraction.java \ gc/startup_warnings/TestDefNewCMS.java \ gc/startup_warnings/TestParallelGC.java \ gc/startup_warnings/TestParallelScavengeSerialOld.java \ diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/gc/logging/TestPrintReferences.java --- a/hotspot/test/gc/logging/TestPrintReferences.java Mon Oct 05 20:24:59 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test TestPrintReferences - * @bug 8133818 - * @summary Validate the reference processing logging - * @key gc - * @library /testlibrary - * @modules java.base/sun.misc - * java.management - */ - -import jdk.test.lib.ProcessTools; -import jdk.test.lib.OutputAnalyzer; - -public class TestPrintReferences { - public static void main(String[] args) throws Exception { - ProcessBuilder pb_enabled = - ProcessTools.createJavaProcessBuilder("-XX:+PrintGCDetails", "-XX:+PrintReferenceGC", "-Xmx10M", GCTest.class.getName()); - OutputAnalyzer output = new OutputAnalyzer(pb_enabled.start()); - - output.shouldMatch( - "#[0-9]+: \\[SoftReference, [0-9]+ refs, [0-9]+\\.[0-9]+ secs\\]" + - "#[0-9]+: \\[WeakReference, [0-9]+ refs, [0-9]+\\.[0-9]+ secs\\]" + - "#[0-9]+: \\[FinalReference, [0-9]+ refs, [0-9]+\\.[0-9]+ secs\\]" + - "#[0-9]+: \\[PhantomReference, [0-9]+ refs, [0-9]+\\.[0-9]+ secs\\]" + - "#[0-9]+: \\[Cleaners, [0-9]+ refs, [0-9]+\\.[0-9]+ secs\\]" + - "#[0-9]+: \\[JNI Weak Reference, [0-9]+ refs, [0-9]+\\.[0-9]+ secs\\]"); - - output.shouldHaveExitValue(0); - } - - static class GCTest { - public static void main(String [] args) { - System.gc(); - } - } -} diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/gc/startup_warnings/TestDefaultMaxRAMFraction.java --- a/hotspot/test/gc/startup_warnings/TestDefaultMaxRAMFraction.java Mon Oct 05 20:24:59 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. -* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -* -* This code is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License version 2 only, as -* published by the Free Software Foundation. -* -* This code is distributed in the hope that it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -* version 2 for more details (a copy is included in the LICENSE file that -* accompanied this code). -* -* You should have received a copy of the GNU General Public License version -* 2 along with this work; if not, write to the Free Software Foundation, -* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -* -* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -* or visit www.oracle.com if you need additional information or have any -* questions. -*/ - -/* -* @test TestDefaultMaxRAMFraction -* @key gc -* @bug 8021967 -* @summary Test that the deprecated TestDefaultMaxRAMFraction flag print a warning message -* @library /testlibrary -* @modules java.base/sun.misc -* java.management -*/ - -import jdk.test.lib.OutputAnalyzer; -import jdk.test.lib.ProcessTools; - -public class TestDefaultMaxRAMFraction { - public static void main(String[] args) throws Exception { - ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:DefaultMaxRAMFraction=4", "-version"); - OutputAnalyzer output = new OutputAnalyzer(pb.start()); - output.shouldContain("warning: DefaultMaxRAMFraction is deprecated and will likely be removed in a future release. Use MaxRAMFraction instead."); - output.shouldNotContain("error"); - output.shouldHaveExitValue(0); - } - -} diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/gc/startup_warnings/TestNoParNew.java --- a/hotspot/test/gc/startup_warnings/TestNoParNew.java Mon Oct 05 20:24:59 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. -* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -* -* This code is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License version 2 only, as -* published by the Free Software Foundation. -* -* This code is distributed in the hope that it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -* version 2 for more details (a copy is included in the LICENSE file that -* accompanied this code). -* -* You should have received a copy of the GNU General Public License version -* 2 along with this work; if not, write to the Free Software Foundation, -* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -* -* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -* or visit www.oracle.com if you need additional information or have any -* questions. -*/ - -/* -* @test TestNoParNew -* @key gc -* @bug 8065972 -* @summary Test that specifying -XX:-UseParNewGC on the command line logs a warning message -* @library /testlibrary -* @modules java.base/sun.misc -* java.management -*/ - -import jdk.test.lib.OutputAnalyzer; -import jdk.test.lib.ProcessTools; - - -public class TestNoParNew { - - public static void main(String args[]) throws Exception { - ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:-UseParNewGC", "-version"); - OutputAnalyzer output = new OutputAnalyzer(pb.start()); - output.shouldContain("warning: The UseParNewGC flag is deprecated and will likely be removed in a future release"); - output.shouldNotContain("error"); - output.shouldHaveExitValue(0); - } - -} diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/gc/startup_warnings/TestParNewCMS.java --- a/hotspot/test/gc/startup_warnings/TestParNewCMS.java Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/test/gc/startup_warnings/TestParNewCMS.java Tue Oct 06 08:41:31 2015 -0700 @@ -40,7 +40,7 @@ public static void main(String args[]) throws Exception { ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseParNewGC", "-XX:+UseConcMarkSweepGC", "-version"); OutputAnalyzer output = new OutputAnalyzer(pb.start()); - output.shouldContain("warning: The UseParNewGC flag is deprecated and will likely be removed in a future release"); + output.shouldContain("warning: Option UseParNewGC was deprecated in version"); output.shouldNotContain("error"); output.shouldHaveExitValue(0); } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/runtime/CommandLine/ObsoleteFlagErrorMessage.java --- a/hotspot/test/runtime/CommandLine/ObsoleteFlagErrorMessage.java Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/test/runtime/CommandLine/ObsoleteFlagErrorMessage.java Tue Oct 06 08:41:31 2015 -0700 @@ -46,7 +46,7 @@ "-XX:NmethodSweepFraction=10", "-version"); OutputAnalyzer output2 = new OutputAnalyzer(pb2.start()); - output2.shouldContain("ignoring option").shouldContain("support was removed"); + output2.shouldContain("Ignoring option").shouldContain("support was removed"); output2.shouldContain("NmethodSweepFraction"); } } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/runtime/CommandLine/VMAliasOptions.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/CommandLine/VMAliasOptions.java Tue Oct 06 08:41:31 2015 -0700 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import jdk.test.lib.*; +import jdk.test.lib.cli.*; + +/* + * @test + * @bug 8061611 + * @summary Test that various alias options correctly set the target options. See aliased_jvm_flags in arguments.cpp. + * @library /testlibrary + */ +public class VMAliasOptions { + + /** + * each entry is {[0]: alias name, [1]: alias target, [2]: value to set + * (true/false/n/string)}. + */ + public static final String[][] ALIAS_OPTIONS = { + {"DefaultMaxRAMFraction", "MaxRAMFraction", "1032"}, + {"CMSMarkStackSizeMax", "MarkStackSizeMax", "1032"}, + {"CMSMarkStackSize", "MarkStackSize", "1032"}, + {"G1MarkStackSize", "MarkStackSize", "1032"}, + {"ParallelMarkingThreads", "ConcGCThreads", "2"}, + {"ParallelCMSThreads", "ConcGCThreads", "2"}, + {"CreateMinidumpOnCrash", "CreateCoredumpOnCrash", "false" }, + }; + + static void testAliases(String[][] optionInfo) throws Throwable { + String aliasNames[] = new String[optionInfo.length]; + String optionNames[] = new String[optionInfo.length]; + String expectedValues[] = new String[optionInfo.length]; + for (int i = 0; i < optionInfo.length; i++) { + aliasNames[i] = optionInfo[i][0]; + optionNames[i] = optionInfo[i][1]; + expectedValues[i] = optionInfo[i][2]; + } + + OutputAnalyzer output = CommandLineOptionTest.startVMWithOptions(aliasNames, expectedValues, "-XX:+PrintFlagsFinal"); + CommandLineOptionTest.verifyOptionValuesFromOutput(output, optionNames, expectedValues); + } + + public static void main(String[] args) throws Throwable { + testAliases(ALIAS_OPTIONS); + } +} diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/runtime/CommandLine/VMDeprecatedOptions.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/CommandLine/VMDeprecatedOptions.java Tue Oct 06 08:41:31 2015 -0700 @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import jdk.test.lib.*; +import jdk.test.lib.cli.*; + +/* + * @test + * @bug 8066821 + * @summary Test that various options are deprecated. See deprecated_jvm_flags in arguments.cpp. + * @library /testlibrary + */ +public class VMDeprecatedOptions { + + /** + * each entry is {[0]: option name, [1]: value to set + * (true/false/n/string)}. + */ + public static final String[][] DEPRECATED_OPTIONS = { + // deprecated non-alias flags: + {"MaxGCMinorPauseMillis", "1032"}, + {"UseParNewGC", "false"}, + + // deprecated alias flags (see also aliased_jvm_flags): + {"DefaultMaxRAMFraction", "4"}, + {"CMSMarkStackSizeMax", "1032"}, + {"CMSMarkStackSize", "1032"}, + {"G1MarkStackSize", "1032"}, + {"ParallelMarkingThreads", "2"}, + {"ParallelCMSThreads", "2"}, + {"CreateMinidumpOnCrash", "false"} + }; + + static String getDeprecationString(String optionName) { + return "Option " + optionName + + " was deprecated in version [\\S]+ and will likely be removed in a future release"; + } + + static void testDeprecated(String[][] optionInfo) throws Throwable { + String optionNames[] = new String[optionInfo.length]; + String expectedValues[] = new String[optionInfo.length]; + for (int i = 0; i < optionInfo.length; i++) { + optionNames[i] = optionInfo[i][0]; + expectedValues[i] = optionInfo[i][1]; + } + + OutputAnalyzer output = CommandLineOptionTest.startVMWithOptions(optionNames, expectedValues); + + // check for option deprecation messages: + output.shouldHaveExitValue(0); + for (String[] deprecated : optionInfo) { + String match = getDeprecationString(deprecated[0]); + output.shouldMatch(match); + } + } + + public static void main(String[] args) throws Throwable { + testDeprecated(DEPRECATED_OPTIONS); // Make sure that each deprecated option is mentioned in the output. + } +} diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/runtime/NMT/AutoshutdownNMT.java --- a/hotspot/test/runtime/NMT/AutoshutdownNMT.java Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/test/runtime/NMT/AutoshutdownNMT.java Tue Oct 06 08:41:31 2015 -0700 @@ -41,6 +41,6 @@ "-XX:-AutoShutdownNMT", "-version"); OutputAnalyzer output = new OutputAnalyzer(pb.start()); - output.shouldContain("ignoring option AutoShutdownNMT"); + output.shouldContain("Ignoring option AutoShutdownNMT"); } } diff -r b61fe00865d3 -r 9a72f98c3066 hotspot/test/testlibrary/jdk/test/lib/cli/CommandLineOptionTest.java --- a/hotspot/test/testlibrary/jdk/test/lib/cli/CommandLineOptionTest.java Mon Oct 05 20:24:59 2015 -0700 +++ b/hotspot/test/testlibrary/jdk/test/lib/cli/CommandLineOptionTest.java Tue Oct 06 08:41:31 2015 -0700 @@ -261,6 +261,73 @@ } /** + * Start VM with given options and values. + * Generates command line option flags from + * {@code optionNames} and {@code optionValues}. + * + * @param optionNames names of options to pass in + * @param optionValues values of option + * @param additionalVMOpts additional options that should be + * passed to JVM. + * @return output from vm process + */ + public static OutputAnalyzer startVMWithOptions(String[] optionNames, + String[] optionValues, + String... additionalVMOpts) throws Throwable { + List vmOpts = new ArrayList<>(); + if (optionNames == null || optionValues == null || optionNames.length != optionValues.length) { + throw new IllegalArgumentException("optionNames and/or optionValues"); + } + + for (int i = 0; i < optionNames.length; i++) { + vmOpts.add(prepareFlag(optionNames[i], optionValues[i])); + } + Collections.addAll(vmOpts, additionalVMOpts); + Collections.addAll(vmOpts, "-version"); + + ProcessBuilder processBuilder = ProcessTools.createJavaProcessBuilder( + vmOpts.toArray(new String[vmOpts.size()])); + + return new OutputAnalyzer(processBuilder.start()); + } + + /** + * Verifies from the output that values of specified JVM options were the same as + * expected values. + * + * @param outputAnalyzer search output for expect options and values. + * @param optionNames names of tested options. + * @param expectedValues expected values of tested options. + * @throws Throwable if verification fails or some other issues occur. + */ + public static void verifyOptionValuesFromOutput(OutputAnalyzer outputAnalyzer, + String[] optionNames, + String[] expectedValues) throws Throwable { + outputAnalyzer.shouldHaveExitValue(0); + for (int i = 0; i < optionNames.length; i++) { + outputAnalyzer.shouldMatch(String.format( + CommandLineOptionTest.PRINT_FLAGS_FINAL_FORMAT, + optionNames[i], expectedValues[i])); + } + } + + /** + * Verifies that value of specified JVM options are the same as + * expected values. + * Generates command line option flags from + * {@code optionNames} and {@code expectedValues}. + * + * @param optionNames names of tested options. + * @param expectedValues expected values of tested options. + * @throws Throwable if verification fails or some other issues occur. + */ + public static void verifyOptionValues(String[] optionNames, + String[] expectedValues) throws Throwable { + OutputAnalyzer outputAnalyzer = startVMWithOptions(optionNames, expectedValues, "-XX:+PrintFlagsFinal"); + verifyOptionValuesFromOutput(outputAnalyzer, optionNames, expectedValues); + } + + /** * Verifies that value of specified JVM when type of newly started VM * is the same as the type of current. * This method filter out option with {@code optionName} @@ -312,6 +379,24 @@ } /** + * Prepares generic command line flag with name {@code name} by setting + * it's value to {@code value}. + * + * @param name the name of option to be prepared + * @param value the value of option ("+" or "-" can be used instead of "true" or "false") + * @return prepared command line flag + */ + public static String prepareFlag(String name, String value) { + if (value.equals("+") || value.equalsIgnoreCase("true")) { + return "-XX:+" + name; + } else if (value.equals("-") || value.equalsIgnoreCase("false")) { + return "-XX:-" + name; + } else { + return "-XX:" + name + "=" + value; + } + } + + /** * Returns message that should occur in VM output if option * {@code optionName} if unrecognized. *