Merge

Tue, 08 Jan 2013 13:44:10 -0800

author
coleenp
date
Tue, 08 Jan 2013 13:44:10 -0800
changeset 4399
185a2c979a0e
parent 4397
561148896559
parent 4398
ade95d680b42
child 4402
0c93d4818214

Merge

     1.1 --- a/make/bsd/makefiles/mapfile-vers-debug	Tue Jan 08 13:38:11 2013 -0500
     1.2 +++ b/make/bsd/makefiles/mapfile-vers-debug	Tue Jan 08 13:44:10 2013 -0800
     1.3 @@ -1,5 +1,5 @@
     1.4  #
     1.5 -# @(#)mapfile-vers-debug	1.18 07/10/25 16:47:35
     1.6 +# @(#)mapfile-vers-debug        1.18 07/10/25 16:47:35
     1.7  #
     1.8  
     1.9  #
    1.10 @@ -126,7 +126,7 @@
    1.11                  JVM_GetClassModifiers;
    1.12                  JVM_GetClassName;
    1.13                  JVM_GetClassNameUTF;
    1.14 -		        JVM_GetClassSignature;
    1.15 +                        JVM_GetClassSignature;
    1.16                  JVM_GetClassSigners;
    1.17                  JVM_GetClassTypeAnnotations;
    1.18                  JVM_GetComponentType;
    1.19 @@ -155,6 +155,7 @@
    1.20                  JVM_GetMethodIxNameUTF;
    1.21                  JVM_GetMethodIxSignatureUTF;
    1.22                  JVM_GetMethodParameterAnnotations;
    1.23 +                JVM_GetMethodParameters;
    1.24                  JVM_GetPrimitiveArrayElement;
    1.25                  JVM_GetProtectionDomain;
    1.26                  JVM_GetSockName;
    1.27 @@ -284,7 +285,7 @@
    1.28                  # This is for Forte Analyzer profiling support.
    1.29                  AsyncGetCallTrace;
    1.30  
    1.31 -		# INSERT VTABLE SYMBOLS HERE
    1.32 +                # INSERT VTABLE SYMBOLS HERE
    1.33  
    1.34          local:
    1.35                  *;
     2.1 --- a/make/bsd/makefiles/mapfile-vers-product	Tue Jan 08 13:38:11 2013 -0500
     2.2 +++ b/make/bsd/makefiles/mapfile-vers-product	Tue Jan 08 13:44:10 2013 -0800
     2.3 @@ -155,6 +155,7 @@
     2.4                  JVM_GetMethodIxNameUTF;
     2.5                  JVM_GetMethodIxSignatureUTF;
     2.6                  JVM_GetMethodParameterAnnotations;
     2.7 +                JVM_GetMethodParameters;
     2.8                  JVM_GetPrimitiveArrayElement;
     2.9                  JVM_GetProtectionDomain;
    2.10                  JVM_GetSockName;
     3.1 --- a/make/linux/makefiles/mapfile-vers-debug	Tue Jan 08 13:38:11 2013 -0500
     3.2 +++ b/make/linux/makefiles/mapfile-vers-debug	Tue Jan 08 13:44:10 2013 -0800
     3.3 @@ -151,6 +151,7 @@
     3.4                  JVM_GetMethodIxNameUTF;
     3.5                  JVM_GetMethodIxSignatureUTF;
     3.6                  JVM_GetMethodParameterAnnotations;
     3.7 +                JVM_GetMethodParameters;
     3.8                  JVM_GetPrimitiveArrayElement;
     3.9                  JVM_GetProtectionDomain;
    3.10                  JVM_GetSockName;
     4.1 --- a/make/linux/makefiles/mapfile-vers-product	Tue Jan 08 13:38:11 2013 -0500
     4.2 +++ b/make/linux/makefiles/mapfile-vers-product	Tue Jan 08 13:44:10 2013 -0800
     4.3 @@ -151,6 +151,7 @@
     4.4                  JVM_GetMethodIxNameUTF;
     4.5                  JVM_GetMethodIxSignatureUTF;
     4.6                  JVM_GetMethodParameterAnnotations;
     4.7 +                JVM_GetMethodParameters;
     4.8                  JVM_GetPrimitiveArrayElement;
     4.9                  JVM_GetProtectionDomain;
    4.10                  JVM_GetSockName;
     5.1 --- a/make/solaris/makefiles/mapfile-vers	Tue Jan 08 13:38:11 2013 -0500
     5.2 +++ b/make/solaris/makefiles/mapfile-vers	Tue Jan 08 13:44:10 2013 -0800
     5.3 @@ -26,236 +26,237 @@
     5.4  
     5.5  SUNWprivate_1.1 {
     5.6          global:
     5.7 -		# JNI
     5.8 +                # JNI
     5.9                  JNI_CreateJavaVM;
    5.10                  JNI_GetCreatedJavaVMs;
    5.11                  JNI_GetDefaultJavaVMInitArgs;
    5.12 -	
    5.13 -		# JVM
    5.14 -		JVM_Accept;
    5.15 -		JVM_ActiveProcessorCount;
    5.16 -		JVM_AllocateNewArray;
    5.17 -		JVM_AllocateNewObject;
    5.18 -		JVM_ArrayCopy;
    5.19 -		JVM_AssertionStatusDirectives;
    5.20 -		JVM_Available;
    5.21 -		JVM_Bind;
    5.22 -		JVM_ClassDepth;
    5.23 -		JVM_ClassLoaderDepth;
    5.24 -		JVM_Clone;
    5.25 -		JVM_Close;
    5.26 -		JVM_CX8Field;
    5.27 -		JVM_CompileClass;
    5.28 -		JVM_CompileClasses;
    5.29 -		JVM_CompilerCommand;
    5.30 -		JVM_Connect;
    5.31 -		JVM_ConstantPoolGetClassAt;
    5.32 -		JVM_ConstantPoolGetClassAtIfLoaded;
    5.33 -		JVM_ConstantPoolGetDoubleAt;
    5.34 -		JVM_ConstantPoolGetFieldAt;
    5.35 -		JVM_ConstantPoolGetFieldAtIfLoaded;
    5.36 -		JVM_ConstantPoolGetFloatAt;
    5.37 -		JVM_ConstantPoolGetIntAt;
    5.38 -		JVM_ConstantPoolGetLongAt;
    5.39 -		JVM_ConstantPoolGetMethodAt;
    5.40 -		JVM_ConstantPoolGetMethodAtIfLoaded;
    5.41 -		JVM_ConstantPoolGetMemberRefInfoAt;
    5.42 -		JVM_ConstantPoolGetSize;
    5.43 -		JVM_ConstantPoolGetStringAt;
    5.44 -		JVM_ConstantPoolGetUTF8At;
    5.45 -		JVM_CountStackFrames;
    5.46 -		JVM_CurrentClassLoader;
    5.47 -		JVM_CurrentLoadedClass;
    5.48 -		JVM_CurrentThread;
    5.49 -		JVM_CurrentTimeMillis;
    5.50 -		JVM_DefineClass;
    5.51 -		JVM_DefineClassWithSource;
    5.52 -		JVM_DefineClassWithSourceCond;
    5.53 -		JVM_DesiredAssertionStatus;
    5.54 -		JVM_DisableCompiler;
    5.55 -		JVM_DoPrivileged;
    5.56 -		JVM_DTraceGetVersion;
    5.57 -		JVM_DTraceActivate;
    5.58 -		JVM_DTraceIsProbeEnabled;
    5.59 -		JVM_DTraceIsSupported;
    5.60 -		JVM_DTraceDispose;
    5.61 -		JVM_DumpAllStacks;
    5.62 -		JVM_DumpThreads;
    5.63 -		JVM_EnableCompiler;
    5.64 -		JVM_Exit;
    5.65 -		JVM_FillInStackTrace;
    5.66 -		JVM_FindClassFromClass;
    5.67 -		JVM_FindClassFromClassLoader;
    5.68 -		JVM_FindClassFromBootLoader;
    5.69 -		JVM_FindLibraryEntry;
    5.70 -		JVM_FindLoadedClass;
    5.71 -		JVM_FindPrimitiveClass;
    5.72 -		JVM_FindSignal;
    5.73 -		JVM_FreeMemory;
    5.74 -		JVM_GC;
    5.75 -		JVM_GetAllThreads;
    5.76 -		JVM_GetArrayElement;
    5.77 -		JVM_GetArrayLength;
    5.78 -		JVM_GetCPClassNameUTF;
    5.79 -		JVM_GetCPFieldClassNameUTF;
    5.80 -		JVM_GetCPFieldModifiers;
    5.81 -		JVM_GetCPFieldNameUTF;
    5.82 -		JVM_GetCPFieldSignatureUTF;
    5.83 -		JVM_GetCPMethodClassNameUTF;
    5.84 -		JVM_GetCPMethodModifiers;
    5.85 -		JVM_GetCPMethodNameUTF;
    5.86 -		JVM_GetCPMethodSignatureUTF;
    5.87 -		JVM_GetCallerClass;
    5.88 -		JVM_GetClassAccessFlags;
    5.89 -		JVM_GetClassAnnotations;
    5.90 -		JVM_GetClassCPEntriesCount;
    5.91 -		JVM_GetClassCPTypes;
    5.92 -		JVM_GetClassConstantPool;
    5.93 -		JVM_GetClassContext;
    5.94 -		JVM_GetClassDeclaredConstructors;
    5.95 -		JVM_GetClassDeclaredFields;
    5.96 -		JVM_GetClassDeclaredMethods;
    5.97 -		JVM_GetClassFieldsCount;
    5.98 -		JVM_GetClassInterfaces;
    5.99 -		JVM_GetClassLoader;
   5.100 -		JVM_GetClassMethodsCount;
   5.101 -		JVM_GetClassModifiers;
   5.102 -		JVM_GetClassName;
   5.103 -		JVM_GetClassNameUTF;
   5.104 -		JVM_GetClassSignature;
   5.105 -		JVM_GetClassSigners;
   5.106 -		JVM_GetComponentType;
   5.107 -		JVM_GetClassTypeAnnotations;
   5.108 -		JVM_GetDeclaredClasses;
   5.109 -		JVM_GetDeclaringClass;
   5.110 -		JVM_GetEnclosingMethodInfo;
   5.111 -	        JVM_GetFieldAnnotations;
   5.112 -		JVM_GetFieldIxModifiers;
   5.113 -		JVM_GetHostName;
   5.114 -		JVM_GetInheritedAccessControlContext;
   5.115 -		JVM_GetInterfaceVersion;
   5.116 -		JVM_GetLastErrorString;
   5.117 -		JVM_GetManagement;
   5.118 -	        JVM_GetMethodAnnotations;
   5.119 -	        JVM_GetMethodDefaultAnnotationValue;
   5.120 -		JVM_GetMethodIxArgsSize;
   5.121 -		JVM_GetMethodIxByteCode;
   5.122 -		JVM_GetMethodIxByteCodeLength;
   5.123 -		JVM_GetMethodIxExceptionIndexes;
   5.124 -		JVM_GetMethodIxExceptionTableEntry;
   5.125 -		JVM_GetMethodIxExceptionTableLength;
   5.126 -		JVM_GetMethodIxExceptionsCount;
   5.127 -		JVM_GetMethodIxLocalsCount;
   5.128 -		JVM_GetMethodIxMaxStack;
   5.129 -		JVM_GetMethodIxModifiers;
   5.130 -		JVM_GetMethodIxNameUTF;
   5.131 -		JVM_GetMethodIxSignatureUTF;
   5.132 -	        JVM_GetMethodParameterAnnotations;
   5.133 -		JVM_GetPrimitiveArrayElement;
   5.134 -		JVM_GetProtectionDomain;
   5.135 -		JVM_GetSockName;
   5.136 -		JVM_GetSockOpt;
   5.137 -		JVM_GetStackAccessControlContext;
   5.138 -		JVM_GetStackTraceDepth;
   5.139 -		JVM_GetStackTraceElement;
   5.140 -		JVM_GetSystemPackage;
   5.141 -		JVM_GetSystemPackages;
   5.142 -		JVM_GetThreadStateNames;
   5.143 -		JVM_GetThreadStateValues;
   5.144 -		JVM_GetVersionInfo;
   5.145 -		JVM_Halt;
   5.146 -		JVM_HoldsLock;
   5.147 -		JVM_IHashCode;
   5.148 -		JVM_InitAgentProperties;
   5.149 -		JVM_InitProperties;
   5.150 -		JVM_InitializeCompiler;
   5.151 -		JVM_InitializeSocketLibrary;
   5.152 -		JVM_InternString;
   5.153 -		JVM_Interrupt;
   5.154 -		JVM_InvokeMethod;
   5.155 -		JVM_IsArrayClass;
   5.156 -		JVM_IsConstructorIx;
   5.157 -		JVM_IsInterface;
   5.158 -		JVM_IsInterrupted;
   5.159 -		JVM_IsNaN;
   5.160 -		JVM_IsPrimitiveClass;
   5.161 -		JVM_IsSameClassPackage;
   5.162 -		JVM_IsSilentCompiler;
   5.163 -		JVM_IsSupportedJNIVersion;
   5.164 -		JVM_IsThreadAlive;
   5.165 -		JVM_LatestUserDefinedLoader;
   5.166 -		JVM_Listen;
   5.167 -		JVM_LoadClass0;
   5.168 -		JVM_LoadLibrary;
   5.169 -		JVM_Lseek;
   5.170 -		JVM_MaxObjectInspectionAge;
   5.171 -		JVM_MaxMemory;
   5.172 -		JVM_MonitorNotify;
   5.173 -		JVM_MonitorNotifyAll;
   5.174 -		JVM_MonitorWait;
   5.175 -		JVM_NativePath;
   5.176 -		JVM_NanoTime;
   5.177 -		JVM_NewArray;
   5.178 -		JVM_NewInstanceFromConstructor;
   5.179 -		JVM_NewMultiArray;
   5.180 -		JVM_OnExit;
   5.181 -		JVM_Open;
   5.182 -		JVM_PrintStackTrace;
   5.183 -		JVM_RaiseSignal;
   5.184 -		JVM_RawMonitorCreate;
   5.185 -		JVM_RawMonitorDestroy;
   5.186 -		JVM_RawMonitorEnter;
   5.187 -		JVM_RawMonitorExit;
   5.188 -		JVM_Read;
   5.189 -		JVM_Recv;
   5.190 -		JVM_RecvFrom;
   5.191 -		JVM_RegisterSignal;
   5.192 -		JVM_ReleaseUTF;
   5.193 -		JVM_ResolveClass;
   5.194 -		JVM_ResumeThread;
   5.195 -		JVM_Send;
   5.196 -		JVM_SendTo;
   5.197 -		JVM_SetArrayElement;
   5.198 -		JVM_SetClassSigners;
   5.199 -		JVM_SetLength;
   5.200 +        
   5.201 +                # JVM
   5.202 +                JVM_Accept;
   5.203 +                JVM_ActiveProcessorCount;
   5.204 +                JVM_AllocateNewArray;
   5.205 +                JVM_AllocateNewObject;
   5.206 +                JVM_ArrayCopy;
   5.207 +                JVM_AssertionStatusDirectives;
   5.208 +                JVM_Available;
   5.209 +                JVM_Bind;
   5.210 +                JVM_ClassDepth;
   5.211 +                JVM_ClassLoaderDepth;
   5.212 +                JVM_Clone;
   5.213 +                JVM_Close;
   5.214 +                JVM_CX8Field;
   5.215 +                JVM_CompileClass;
   5.216 +                JVM_CompileClasses;
   5.217 +                JVM_CompilerCommand;
   5.218 +                JVM_Connect;
   5.219 +                JVM_ConstantPoolGetClassAt;
   5.220 +                JVM_ConstantPoolGetClassAtIfLoaded;
   5.221 +                JVM_ConstantPoolGetDoubleAt;
   5.222 +                JVM_ConstantPoolGetFieldAt;
   5.223 +                JVM_ConstantPoolGetFieldAtIfLoaded;
   5.224 +                JVM_ConstantPoolGetFloatAt;
   5.225 +                JVM_ConstantPoolGetIntAt;
   5.226 +                JVM_ConstantPoolGetLongAt;
   5.227 +                JVM_ConstantPoolGetMethodAt;
   5.228 +                JVM_ConstantPoolGetMethodAtIfLoaded;
   5.229 +                JVM_ConstantPoolGetMemberRefInfoAt;
   5.230 +                JVM_ConstantPoolGetSize;
   5.231 +                JVM_ConstantPoolGetStringAt;
   5.232 +                JVM_ConstantPoolGetUTF8At;
   5.233 +                JVM_CountStackFrames;
   5.234 +                JVM_CurrentClassLoader;
   5.235 +                JVM_CurrentLoadedClass;
   5.236 +                JVM_CurrentThread;
   5.237 +                JVM_CurrentTimeMillis;
   5.238 +                JVM_DefineClass;
   5.239 +                JVM_DefineClassWithSource;
   5.240 +                JVM_DefineClassWithSourceCond;
   5.241 +                JVM_DesiredAssertionStatus;
   5.242 +                JVM_DisableCompiler;
   5.243 +                JVM_DoPrivileged;
   5.244 +                JVM_DTraceGetVersion;
   5.245 +                JVM_DTraceActivate;
   5.246 +                JVM_DTraceIsProbeEnabled;
   5.247 +                JVM_DTraceIsSupported;
   5.248 +                JVM_DTraceDispose;
   5.249 +                JVM_DumpAllStacks;
   5.250 +                JVM_DumpThreads;
   5.251 +                JVM_EnableCompiler;
   5.252 +                JVM_Exit;
   5.253 +                JVM_FillInStackTrace;
   5.254 +                JVM_FindClassFromClass;
   5.255 +                JVM_FindClassFromClassLoader;
   5.256 +                JVM_FindClassFromBootLoader;
   5.257 +                JVM_FindLibraryEntry;
   5.258 +                JVM_FindLoadedClass;
   5.259 +                JVM_FindPrimitiveClass;
   5.260 +                JVM_FindSignal;
   5.261 +                JVM_FreeMemory;
   5.262 +                JVM_GC;
   5.263 +                JVM_GetAllThreads;
   5.264 +                JVM_GetArrayElement;
   5.265 +                JVM_GetArrayLength;
   5.266 +                JVM_GetCPClassNameUTF;
   5.267 +                JVM_GetCPFieldClassNameUTF;
   5.268 +                JVM_GetCPFieldModifiers;
   5.269 +                JVM_GetCPFieldNameUTF;
   5.270 +                JVM_GetCPFieldSignatureUTF;
   5.271 +                JVM_GetCPMethodClassNameUTF;
   5.272 +                JVM_GetCPMethodModifiers;
   5.273 +                JVM_GetCPMethodNameUTF;
   5.274 +                JVM_GetCPMethodSignatureUTF;
   5.275 +                JVM_GetCallerClass;
   5.276 +                JVM_GetClassAccessFlags;
   5.277 +                JVM_GetClassAnnotations;
   5.278 +                JVM_GetClassCPEntriesCount;
   5.279 +                JVM_GetClassCPTypes;
   5.280 +                JVM_GetClassConstantPool;
   5.281 +                JVM_GetClassContext;
   5.282 +                JVM_GetClassDeclaredConstructors;
   5.283 +                JVM_GetClassDeclaredFields;
   5.284 +                JVM_GetClassDeclaredMethods;
   5.285 +                JVM_GetClassFieldsCount;
   5.286 +                JVM_GetClassInterfaces;
   5.287 +                JVM_GetClassLoader;
   5.288 +                JVM_GetClassMethodsCount;
   5.289 +                JVM_GetClassModifiers;
   5.290 +                JVM_GetClassName;
   5.291 +                JVM_GetClassNameUTF;
   5.292 +                JVM_GetClassSignature;
   5.293 +                JVM_GetClassSigners;
   5.294 +                JVM_GetComponentType;
   5.295 +                JVM_GetClassTypeAnnotations;
   5.296 +                JVM_GetDeclaredClasses;
   5.297 +                JVM_GetDeclaringClass;
   5.298 +                JVM_GetEnclosingMethodInfo;
   5.299 +                JVM_GetFieldAnnotations;
   5.300 +                JVM_GetFieldIxModifiers;
   5.301 +                JVM_GetHostName;
   5.302 +                JVM_GetInheritedAccessControlContext;
   5.303 +                JVM_GetInterfaceVersion;
   5.304 +                JVM_GetLastErrorString;
   5.305 +                JVM_GetManagement;
   5.306 +                JVM_GetMethodAnnotations;
   5.307 +                JVM_GetMethodDefaultAnnotationValue;
   5.308 +                JVM_GetMethodIxArgsSize;
   5.309 +                JVM_GetMethodIxByteCode;
   5.310 +                JVM_GetMethodIxByteCodeLength;
   5.311 +                JVM_GetMethodIxExceptionIndexes;
   5.312 +                JVM_GetMethodIxExceptionTableEntry;
   5.313 +                JVM_GetMethodIxExceptionTableLength;
   5.314 +                JVM_GetMethodIxExceptionsCount;
   5.315 +                JVM_GetMethodIxLocalsCount;
   5.316 +                JVM_GetMethodIxMaxStack;
   5.317 +                JVM_GetMethodIxModifiers;
   5.318 +                JVM_GetMethodIxNameUTF;
   5.319 +                JVM_GetMethodIxSignatureUTF;
   5.320 +                JVM_GetMethodParameterAnnotations;
   5.321 +                JVM_GetMethodParameters;
   5.322 +                JVM_GetPrimitiveArrayElement;
   5.323 +                JVM_GetProtectionDomain;
   5.324 +                JVM_GetSockName;
   5.325 +                JVM_GetSockOpt;
   5.326 +                JVM_GetStackAccessControlContext;
   5.327 +                JVM_GetStackTraceDepth;
   5.328 +                JVM_GetStackTraceElement;
   5.329 +                JVM_GetSystemPackage;
   5.330 +                JVM_GetSystemPackages;
   5.331 +                JVM_GetThreadStateNames;
   5.332 +                JVM_GetThreadStateValues;
   5.333 +                JVM_GetVersionInfo;
   5.334 +                JVM_Halt;
   5.335 +                JVM_HoldsLock;
   5.336 +                JVM_IHashCode;
   5.337 +                JVM_InitAgentProperties;
   5.338 +                JVM_InitProperties;
   5.339 +                JVM_InitializeCompiler;
   5.340 +                JVM_InitializeSocketLibrary;
   5.341 +                JVM_InternString;
   5.342 +                JVM_Interrupt;
   5.343 +                JVM_InvokeMethod;
   5.344 +                JVM_IsArrayClass;
   5.345 +                JVM_IsConstructorIx;
   5.346 +                JVM_IsInterface;
   5.347 +                JVM_IsInterrupted;
   5.348 +                JVM_IsNaN;
   5.349 +                JVM_IsPrimitiveClass;
   5.350 +                JVM_IsSameClassPackage;
   5.351 +                JVM_IsSilentCompiler;
   5.352 +                JVM_IsSupportedJNIVersion;
   5.353 +                JVM_IsThreadAlive;
   5.354 +                JVM_LatestUserDefinedLoader;
   5.355 +                JVM_Listen;
   5.356 +                JVM_LoadClass0;
   5.357 +                JVM_LoadLibrary;
   5.358 +                JVM_Lseek;
   5.359 +                JVM_MaxObjectInspectionAge;
   5.360 +                JVM_MaxMemory;
   5.361 +                JVM_MonitorNotify;
   5.362 +                JVM_MonitorNotifyAll;
   5.363 +                JVM_MonitorWait;
   5.364 +                JVM_NativePath;
   5.365 +                JVM_NanoTime;
   5.366 +                JVM_NewArray;
   5.367 +                JVM_NewInstanceFromConstructor;
   5.368 +                JVM_NewMultiArray;
   5.369 +                JVM_OnExit;
   5.370 +                JVM_Open;
   5.371 +                JVM_PrintStackTrace;
   5.372 +                JVM_RaiseSignal;
   5.373 +                JVM_RawMonitorCreate;
   5.374 +                JVM_RawMonitorDestroy;
   5.375 +                JVM_RawMonitorEnter;
   5.376 +                JVM_RawMonitorExit;
   5.377 +                JVM_Read;
   5.378 +                JVM_Recv;
   5.379 +                JVM_RecvFrom;
   5.380 +                JVM_RegisterSignal;
   5.381 +                JVM_ReleaseUTF;
   5.382 +                JVM_ResolveClass;
   5.383 +                JVM_ResumeThread;
   5.384 +                JVM_Send;
   5.385 +                JVM_SendTo;
   5.386 +                JVM_SetArrayElement;
   5.387 +                JVM_SetClassSigners;
   5.388 +                JVM_SetLength;
   5.389                  JVM_SetNativeThreadName;
   5.390 -		JVM_SetPrimitiveArrayElement;
   5.391 -		JVM_SetProtectionDomain;
   5.392 -		JVM_SetSockOpt;
   5.393 -		JVM_SetThreadPriority;
   5.394 -		JVM_Sleep;
   5.395 -		JVM_Socket;
   5.396 -		JVM_SocketAvailable;
   5.397 -		JVM_SocketClose;
   5.398 -		JVM_SocketShutdown;
   5.399 -		JVM_StartThread;
   5.400 -		JVM_StopThread;
   5.401 -		JVM_SuspendThread;
   5.402 -		JVM_SupportsCX8;
   5.403 -		JVM_Sync;
   5.404 -		JVM_Timeout;
   5.405 -		JVM_TotalMemory;
   5.406 -		JVM_TraceInstructions;
   5.407 -		JVM_TraceMethodCalls;
   5.408 -		JVM_UnloadLibrary;
   5.409 -		JVM_Write;
   5.410 -		JVM_Yield;
   5.411 -		JVM_handle_solaris_signal;
   5.412 +                JVM_SetPrimitiveArrayElement;
   5.413 +                JVM_SetProtectionDomain;
   5.414 +                JVM_SetSockOpt;
   5.415 +                JVM_SetThreadPriority;
   5.416 +                JVM_Sleep;
   5.417 +                JVM_Socket;
   5.418 +                JVM_SocketAvailable;
   5.419 +                JVM_SocketClose;
   5.420 +                JVM_SocketShutdown;
   5.421 +                JVM_StartThread;
   5.422 +                JVM_StopThread;
   5.423 +                JVM_SuspendThread;
   5.424 +                JVM_SupportsCX8;
   5.425 +                JVM_Sync;
   5.426 +                JVM_Timeout;
   5.427 +                JVM_TotalMemory;
   5.428 +                JVM_TraceInstructions;
   5.429 +                JVM_TraceMethodCalls;
   5.430 +                JVM_UnloadLibrary;
   5.431 +                JVM_Write;
   5.432 +                JVM_Yield;
   5.433 +                JVM_handle_solaris_signal;
   5.434  
   5.435 -		# miscellaneous functions
   5.436 -		jio_fprintf;
   5.437 -		jio_printf;
   5.438 -		jio_snprintf;
   5.439 -		jio_vfprintf;
   5.440 -		jio_vsnprintf;
   5.441 +                # miscellaneous functions
   5.442 +                jio_fprintf;
   5.443 +                jio_printf;
   5.444 +                jio_snprintf;
   5.445 +                jio_vfprintf;
   5.446 +                jio_vsnprintf;
   5.447  
   5.448 -		# Needed because there is no JVM interface for this.
   5.449 -		sysThreadAvailableStackWithSlack;
   5.450 +                # Needed because there is no JVM interface for this.
   5.451 +                sysThreadAvailableStackWithSlack;
   5.452  
   5.453 -		# This is for Forte Analyzer profiling support.
   5.454 -		AsyncGetCallTrace;
   5.455 +                # This is for Forte Analyzer profiling support.
   5.456 +                AsyncGetCallTrace;
   5.457  
   5.458 -		# INSERT VTABLE SYMBOLS HERE
   5.459 +                # INSERT VTABLE SYMBOLS HERE
   5.460  
   5.461          local:
   5.462                  *;
     6.1 --- a/src/share/vm/classfile/classFileParser.cpp	Tue Jan 08 13:38:11 2013 -0500
     6.2 +++ b/src/share/vm/classfile/classFileParser.cpp	Tue Jan 08 13:44:10 2013 -0800
     6.3 @@ -1935,6 +1935,8 @@
     6.4    u2** localvariable_table_start;
     6.5    u2* localvariable_type_table_length;
     6.6    u2** localvariable_type_table_start;
     6.7 +  u2 method_parameters_length = 0;
     6.8 +  u1* method_parameters_data = NULL;
     6.9    bool parsed_code_attribute = false;
    6.10    bool parsed_checked_exceptions_attribute = false;
    6.11    bool parsed_stackmap_attribute = false;
    6.12 @@ -2144,6 +2146,14 @@
    6.13              parse_checked_exceptions(&checked_exceptions_length,
    6.14                                       method_attribute_length,
    6.15                                       cp, CHECK_(nullHandle));
    6.16 +    } else if (method_attribute_name == vmSymbols::tag_method_parameters()) {
    6.17 +      method_parameters_length = cfs->get_u1_fast();
    6.18 +      method_parameters_data = cfs->get_u1_buffer();
    6.19 +      cfs->skip_u2_fast(method_parameters_length);
    6.20 +      cfs->skip_u4_fast(method_parameters_length);
    6.21 +      // ignore this attribute if it cannot be reflected
    6.22 +      if (!SystemDictionary::Parameter_klass_loaded())
    6.23 +        method_parameters_length = 0;
    6.24      } else if (method_attribute_name == vmSymbols::tag_synthetic()) {
    6.25        if (method_attribute_length != 0) {
    6.26          classfile_parse_error(
    6.27 @@ -2231,7 +2241,8 @@
    6.28    Method* m = Method::allocate(
    6.29        loader_data, code_length, access_flags, linenumber_table_length,
    6.30        total_lvt_length, exception_table_length, checked_exceptions_length,
    6.31 -      generic_signature_index, ConstMethod::NORMAL, CHECK_(nullHandle));
    6.32 +      method_parameters_length, generic_signature_index,
    6.33 +      ConstMethod::NORMAL, CHECK_(nullHandle));
    6.34  
    6.35    ClassLoadingService::add_class_method_size(m->size()*HeapWordSize);
    6.36  
    6.37 @@ -2279,6 +2290,18 @@
    6.38                               exception_table_start, size);
    6.39    }
    6.40  
    6.41 +  // Copy method parameters
    6.42 +  if (method_parameters_length > 0) {
    6.43 +    MethodParametersElement* elem = m->constMethod()->method_parameters_start();
    6.44 +    for(int i = 0; i < method_parameters_length; i++) {
    6.45 +      elem[i].name_cp_index =
    6.46 +        Bytes::get_Java_u2(method_parameters_data);
    6.47 +      method_parameters_data += 2;
    6.48 +      elem[i].flags = Bytes::get_Java_u4(method_parameters_data);
    6.49 +      method_parameters_data += 4;
    6.50 +    }
    6.51 +  }
    6.52 +
    6.53    // Copy checked exceptions
    6.54    if (checked_exceptions_length > 0) {
    6.55      int size = checked_exceptions_length * sizeof(CheckedExceptionElement) / sizeof(u2);
    6.56 @@ -3042,6 +3065,7 @@
    6.57                                                      TempNewSymbol& parsed_name,
    6.58                                                      bool verify,
    6.59                                                      TRAPS) {
    6.60 +
    6.61    // When a retransformable agent is attached, JVMTI caches the
    6.62    // class bytes that existed before the first retransformation.
    6.63    // If RedefineClasses() was used before the retransformable
     7.1 --- a/src/share/vm/classfile/classFileStream.cpp	Tue Jan 08 13:38:11 2013 -0500
     7.2 +++ b/src/share/vm/classfile/classFileStream.cpp	Tue Jan 08 13:44:10 2013 -0800
     7.3 @@ -93,3 +93,10 @@
     7.4    }
     7.5    _current += length * 2;
     7.6  }
     7.7 +
     7.8 +void ClassFileStream::skip_u4(int length, TRAPS) {
     7.9 +  if (_need_verify) {
    7.10 +    guarantee_more(length * 4, CHECK);
    7.11 +  }
    7.12 +  _current += length * 4;
    7.13 +}
     8.1 --- a/src/share/vm/classfile/classFileStream.hpp	Tue Jan 08 13:38:11 2013 -0500
     8.2 +++ b/src/share/vm/classfile/classFileStream.hpp	Tue Jan 08 13:44:10 2013 -0800
     8.3 @@ -133,6 +133,11 @@
     8.4      _current += 2 * length;
     8.5    }
     8.6  
     8.7 +  void skip_u4(int length, TRAPS);
     8.8 +  void skip_u4_fast(int length) {
     8.9 +    _current += 4 * length;
    8.10 +  }
    8.11 +
    8.12    // Tells whether eos is reached
    8.13    bool at_eos() const          { return _current == _buffer_end; }
    8.14  };
     9.1 --- a/src/share/vm/classfile/defaultMethods.cpp	Tue Jan 08 13:38:11 2013 -0500
     9.2 +++ b/src/share/vm/classfile/defaultMethods.cpp	Tue Jan 08 13:44:10 2013 -0800
     9.3 @@ -1148,7 +1148,8 @@
     9.4    int code_length = bytecodes->length();
     9.5  
     9.6    Method* m = Method::allocate(cp->pool_holder()->class_loader_data(),
     9.7 -      code_length, flags, 0, 0, 0, 0, 0, mt, CHECK_NULL);
     9.8 +                               code_length, flags, 0, 0, 0, 0, 0, 0,
     9.9 +                               mt, CHECK_NULL);
    9.10  
    9.11    m->set_constants(NULL); // This will get filled in later
    9.12    m->set_name_index(cp->utf8(name));
    10.1 --- a/src/share/vm/classfile/javaClasses.cpp	Tue Jan 08 13:38:11 2013 -0500
    10.2 +++ b/src/share/vm/classfile/javaClasses.cpp	Tue Jan 08 13:44:10 2013 -0800
    10.3 @@ -2255,6 +2255,66 @@
    10.4    }
    10.5  }
    10.6  
    10.7 +void java_lang_reflect_Parameter::compute_offsets() {
    10.8 +  Klass* k = SystemDictionary::reflect_Parameter_klass();
    10.9 +  if(NULL != k) {
   10.10 +    compute_offset(name_offset,        k, vmSymbols::name_name(),        vmSymbols::string_signature());
   10.11 +    compute_offset(modifiers_offset,   k, vmSymbols::modifiers_name(),   vmSymbols::int_signature());
   10.12 +    compute_offset(index_offset,       k, vmSymbols::index_name(),       vmSymbols::int_signature());
   10.13 +    compute_offset(executable_offset,  k, vmSymbols::executable_name(),  vmSymbols::executable_signature());
   10.14 +  }
   10.15 +}
   10.16 +
   10.17 +Handle java_lang_reflect_Parameter::create(TRAPS) {
   10.18 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.19 +  Symbol* name = vmSymbols::java_lang_reflect_Parameter();
   10.20 +  Klass* k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH);
   10.21 +  instanceKlassHandle klass (THREAD, k);
   10.22 +  // Ensure it is initialized
   10.23 +  klass->initialize(CHECK_NH);
   10.24 +  return klass->allocate_instance_handle(CHECK_NH);
   10.25 +}
   10.26 +
   10.27 +oop java_lang_reflect_Parameter::name(oop param) {
   10.28 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.29 +  return param->obj_field(name_offset);
   10.30 +}
   10.31 +
   10.32 +void java_lang_reflect_Parameter::set_name(oop param, oop value) {
   10.33 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.34 +  param->obj_field_put(name_offset, value);
   10.35 +}
   10.36 +
   10.37 +int java_lang_reflect_Parameter::modifiers(oop param) {
   10.38 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.39 +  return param->int_field(modifiers_offset);
   10.40 +}
   10.41 +
   10.42 +void java_lang_reflect_Parameter::set_modifiers(oop param, int value) {
   10.43 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.44 +  param->int_field_put(modifiers_offset, value);
   10.45 +}
   10.46 +
   10.47 +int java_lang_reflect_Parameter::index(oop param) {
   10.48 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.49 +  return param->int_field(index_offset);
   10.50 +}
   10.51 +
   10.52 +void java_lang_reflect_Parameter::set_index(oop param, int value) {
   10.53 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.54 +  param->int_field_put(index_offset, value);
   10.55 +}
   10.56 +
   10.57 +oop java_lang_reflect_Parameter::executable(oop param) {
   10.58 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.59 +  return param->obj_field(executable_offset);
   10.60 +}
   10.61 +
   10.62 +void java_lang_reflect_Parameter::set_executable(oop param, oop value) {
   10.63 +  assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.64 +  param->obj_field_put(executable_offset, value);
   10.65 +}
   10.66 +
   10.67  
   10.68  Handle sun_reflect_ConstantPool::create(TRAPS) {
   10.69    assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   10.70 @@ -2928,6 +2988,10 @@
   10.71  int java_lang_reflect_Field::signature_offset;
   10.72  int java_lang_reflect_Field::annotations_offset;
   10.73  int java_lang_reflect_Field::type_annotations_offset;
   10.74 +int java_lang_reflect_Parameter::name_offset;
   10.75 +int java_lang_reflect_Parameter::modifiers_offset;
   10.76 +int java_lang_reflect_Parameter::index_offset;
   10.77 +int java_lang_reflect_Parameter::executable_offset;
   10.78  int java_lang_boxing_object::value_offset;
   10.79  int java_lang_boxing_object::long_value_offset;
   10.80  int java_lang_ref_Reference::referent_offset;
   10.81 @@ -3112,6 +3176,8 @@
   10.82      sun_reflect_ConstantPool::compute_offsets();
   10.83      sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
   10.84    }
   10.85 +  if (JDK_Version::is_jdk18x_version())
   10.86 +    java_lang_reflect_Parameter::compute_offsets();
   10.87  
   10.88    // generated interpreter code wants to know about the offsets we just computed:
   10.89    AbstractAssembler::update_delayed_values();
    11.1 --- a/src/share/vm/classfile/javaClasses.hpp	Tue Jan 08 13:38:11 2013 -0500
    11.2 +++ b/src/share/vm/classfile/javaClasses.hpp	Tue Jan 08 13:44:10 2013 -0800
    11.3 @@ -729,6 +729,37 @@
    11.4    friend class JavaClasses;
    11.5  };
    11.6  
    11.7 +class java_lang_reflect_Parameter {
    11.8 + private:
    11.9 +  // Note that to reduce dependencies on the JDK we compute these
   11.10 +  // offsets at run-time.
   11.11 +  static int name_offset;
   11.12 +  static int modifiers_offset;
   11.13 +  static int index_offset;
   11.14 +  static int executable_offset;
   11.15 +
   11.16 +  static void compute_offsets();
   11.17 +
   11.18 + public:
   11.19 +  // Allocation
   11.20 +  static Handle create(TRAPS);
   11.21 +
   11.22 +  // Accessors
   11.23 +  static oop name(oop field);
   11.24 +  static void set_name(oop field, oop value);
   11.25 +
   11.26 +  static int index(oop reflect);
   11.27 +  static void set_index(oop reflect, int value);
   11.28 +
   11.29 +  static int modifiers(oop reflect);
   11.30 +  static void set_modifiers(oop reflect, int value);
   11.31 +
   11.32 +  static oop executable(oop constructor);
   11.33 +  static void set_executable(oop constructor, oop value);
   11.34 +
   11.35 +  friend class JavaClasses;
   11.36 +};
   11.37 +
   11.38  // Interface to sun.reflect.ConstantPool objects
   11.39  class sun_reflect_ConstantPool {
   11.40   private:
    12.1 --- a/src/share/vm/classfile/systemDictionary.hpp	Tue Jan 08 13:38:11 2013 -0500
    12.2 +++ b/src/share/vm/classfile/systemDictionary.hpp	Tue Jan 08 13:44:10 2013 -0800
    12.3 @@ -131,6 +131,7 @@
    12.4    do_klass(Properties_klass,                            java_util_Properties,                      Pre                 ) \
    12.5    do_klass(reflect_AccessibleObject_klass,              java_lang_reflect_AccessibleObject,        Pre                 ) \
    12.6    do_klass(reflect_Field_klass,                         java_lang_reflect_Field,                   Pre                 ) \
    12.7 +  do_klass(reflect_Parameter_klass,                     java_lang_reflect_Parameter,               Opt                 ) \
    12.8    do_klass(reflect_Method_klass,                        java_lang_reflect_Method,                  Pre                 ) \
    12.9    do_klass(reflect_Constructor_klass,                   java_lang_reflect_Constructor,             Pre                 ) \
   12.10                                                                                                                           \
   12.11 @@ -459,6 +460,7 @@
   12.12    // Tells whether ClassLoader.checkPackageAccess is present
   12.13    static bool has_checkPackageAccess()      { return _has_checkPackageAccess; }
   12.14  
   12.15 +  static bool Parameter_klass_loaded()      { return WK_KLASS(reflect_Parameter_klass) != NULL; }
   12.16    static bool Class_klass_loaded()          { return WK_KLASS(Class_klass) != NULL; }
   12.17    static bool Cloneable_klass_loaded()      { return WK_KLASS(Cloneable_klass) != NULL; }
   12.18    static bool Object_klass_loaded()         { return WK_KLASS(Object_klass) != NULL; }
    13.1 --- a/src/share/vm/classfile/vmSymbols.hpp	Tue Jan 08 13:38:11 2013 -0500
    13.2 +++ b/src/share/vm/classfile/vmSymbols.hpp	Tue Jan 08 13:44:10 2013 -0800
    13.3 @@ -86,6 +86,7 @@
    13.4    template(java_lang_reflect_Method,                  "java/lang/reflect/Method")                 \
    13.5    template(java_lang_reflect_Constructor,             "java/lang/reflect/Constructor")            \
    13.6    template(java_lang_reflect_Field,                   "java/lang/reflect/Field")                  \
    13.7 +  template(java_lang_reflect_Parameter,               "java/lang/reflect/Parameter")              \
    13.8    template(java_lang_reflect_Array,                   "java/lang/reflect/Array")                  \
    13.9    template(java_lang_StringBuffer,                    "java/lang/StringBuffer")                   \
   13.10    template(java_lang_StringBuilder,                   "java/lang/StringBuilder")                  \
   13.11 @@ -126,6 +127,7 @@
   13.12    template(tag_line_number_table,                     "LineNumberTable")                          \
   13.13    template(tag_local_variable_table,                  "LocalVariableTable")                       \
   13.14    template(tag_local_variable_type_table,             "LocalVariableTypeTable")                   \
   13.15 +  template(tag_method_parameters,                     "MethodParameters")                         \
   13.16    template(tag_stack_map_table,                       "StackMapTable")                            \
   13.17    template(tag_synthetic,                             "Synthetic")                                \
   13.18    template(tag_deprecated,                            "Deprecated")                               \
   13.19 @@ -235,6 +237,8 @@
   13.20    /* Support for annotations (JDK 1.5 and above) */                                               \
   13.21                                                                                                    \
   13.22    template(annotations_name,                          "annotations")                              \
   13.23 +  template(index_name,                                "index")                                    \
   13.24 +  template(executable_name,                           "executable")                               \
   13.25    template(parameter_annotations_name,                "parameterAnnotations")                     \
   13.26    template(annotation_default_name,                   "annotationDefault")                        \
   13.27    template(sun_reflect_ConstantPool,                  "sun/reflect/ConstantPool")                 \
   13.28 @@ -475,6 +479,7 @@
   13.29    template(class_signature,                           "Ljava/lang/Class;")                                        \
   13.30    template(string_signature,                          "Ljava/lang/String;")                                       \
   13.31    template(reference_signature,                       "Ljava/lang/ref/Reference;")                                \
   13.32 +  template(executable_signature,                      "Ljava/lang/reflect/Executable;")                           \
   13.33    template(concurrenthashmap_signature,               "Ljava/util/concurrent/ConcurrentHashMap;")                 \
   13.34    template(String_StringBuilder_signature,            "(Ljava/lang/String;)Ljava/lang/StringBuilder;")            \
   13.35    template(int_StringBuilder_signature,               "(I)Ljava/lang/StringBuilder;")                             \
    14.1 --- a/src/share/vm/oops/constMethod.cpp	Tue Jan 08 13:38:11 2013 -0500
    14.2 +++ b/src/share/vm/oops/constMethod.cpp	Tue Jan 08 13:44:10 2013 -0800
    14.3 @@ -39,18 +39,21 @@
    14.4                                     int localvariable_table_length,
    14.5                                     int exception_table_length,
    14.6                                     int checked_exceptions_length,
    14.7 +                                   int method_parameters_length,
    14.8                                     u2  generic_signature_index,
    14.9                                     MethodType method_type,
   14.10                                     TRAPS) {
   14.11    int size = ConstMethod::size(byte_code_size,
   14.12 -                                      compressed_line_number_size,
   14.13 -                                      localvariable_table_length,
   14.14 -                                      exception_table_length,
   14.15 -                                      checked_exceptions_length,
   14.16 -                                      generic_signature_index);
   14.17 +                               compressed_line_number_size,
   14.18 +                               localvariable_table_length,
   14.19 +                               exception_table_length,
   14.20 +                               checked_exceptions_length,
   14.21 +                               method_parameters_length,
   14.22 +                               generic_signature_index);
   14.23    return new (loader_data, size, true, THREAD) ConstMethod(
   14.24        byte_code_size, compressed_line_number_size, localvariable_table_length,
   14.25 -      exception_table_length, checked_exceptions_length, generic_signature_index,
   14.26 +      exception_table_length, checked_exceptions_length,
   14.27 +      method_parameters_length, generic_signature_index,
   14.28        method_type, size);
   14.29  }
   14.30  
   14.31 @@ -59,6 +62,7 @@
   14.32                           int localvariable_table_length,
   14.33                           int exception_table_length,
   14.34                           int checked_exceptions_length,
   14.35 +                         int method_parameters_length,
   14.36                           u2  generic_signature_index,
   14.37                           MethodType method_type,
   14.38                           int size) {
   14.39 @@ -74,7 +78,8 @@
   14.40                              checked_exceptions_length,
   14.41                              compressed_line_number_size,
   14.42                              localvariable_table_length,
   14.43 -                            exception_table_length);
   14.44 +                            exception_table_length,
   14.45 +                            method_parameters_length);
   14.46    set_method_type(method_type);
   14.47    assert(this->size() == size, "wrong size for object");
   14.48  }
   14.49 @@ -92,11 +97,12 @@
   14.50  // How big must this constMethodObject be?
   14.51  
   14.52  int ConstMethod::size(int code_size,
   14.53 -                                    int compressed_line_number_size,
   14.54 -                                    int local_variable_table_length,
   14.55 -                                    int exception_table_length,
   14.56 -                                    int checked_exceptions_length,
   14.57 -                                    u2  generic_signature_index) {
   14.58 +                      int compressed_line_number_size,
   14.59 +                      int local_variable_table_length,
   14.60 +                      int exception_table_length,
   14.61 +                      int checked_exceptions_length,
   14.62 +                      int method_parameters_length,
   14.63 +                      u2  generic_signature_index) {
   14.64    int extra_bytes = code_size;
   14.65    if (compressed_line_number_size > 0) {
   14.66      extra_bytes += compressed_line_number_size;
   14.67 @@ -117,6 +123,10 @@
   14.68    if (generic_signature_index != 0) {
   14.69      extra_bytes += sizeof(u2);
   14.70    }
   14.71 +  if (method_parameters_length > 0) {
   14.72 +    extra_bytes += sizeof(u2);
   14.73 +    extra_bytes += method_parameters_length * sizeof(MethodParametersElement);
   14.74 +  }
   14.75    int extra_words = align_size_up(extra_bytes, BytesPerWord) / BytesPerWord;
   14.76    return align_object_size(header_size() + extra_words);
   14.77  }
   14.78 @@ -143,6 +153,18 @@
   14.79  u2* ConstMethod::checked_exceptions_length_addr() const {
   14.80    // Located immediately before the generic signature index.
   14.81    assert(has_checked_exceptions(), "called only if table is present");
   14.82 +  if(has_method_parameters()) {
   14.83 +    // If method parameters present, locate immediately before them.
   14.84 +    return (u2*)method_parameters_start() - 1;
   14.85 +  } else {
   14.86 +    // Else, the exception table is at the end of the constMethod.
   14.87 +    return has_generic_signature() ? (last_u2_element() - 1) :
   14.88 +                                     last_u2_element();
   14.89 +  }
   14.90 +}
   14.91 +
   14.92 +u2* ConstMethod::method_parameters_length_addr() const {
   14.93 +  assert(has_method_parameters(), "called only if table is present");
   14.94    return has_generic_signature() ? (last_u2_element() - 1) :
   14.95                                      last_u2_element();
   14.96  }
   14.97 @@ -153,11 +175,15 @@
   14.98      // If checked_exception present, locate immediately before them.
   14.99      return (u2*) checked_exceptions_start() - 1;
  14.100    } else {
  14.101 -    // Else, the exception table is at the end of the constMethod or
  14.102 -    // immediately before the generic signature index.
  14.103 +    if(has_method_parameters()) {
  14.104 +      // If method parameters present, locate immediately before them.
  14.105 +      return (u2*)method_parameters_start() - 1;
  14.106 +    } else {
  14.107 +      // Else, the exception table is at the end of the constMethod.
  14.108      return has_generic_signature() ? (last_u2_element() - 1) :
  14.109                                        last_u2_element();
  14.110    }
  14.111 +  }
  14.112  }
  14.113  
  14.114  u2* ConstMethod::localvariable_table_length_addr() const {
  14.115 @@ -170,12 +196,16 @@
  14.116        // If checked_exception present, locate immediately before them.
  14.117        return (u2*) checked_exceptions_start() - 1;
  14.118      } else {
  14.119 -      // Else, the linenumber table is at the end of the constMethod or
  14.120 -      // immediately before the generic signature index.
  14.121 +      if(has_method_parameters()) {
  14.122 +        // If method parameters present, locate immediately before them.
  14.123 +        return (u2*)method_parameters_start() - 1;
  14.124 +      } else {
  14.125 +        // Else, the exception table is at the end of the constMethod.
  14.126        return has_generic_signature() ? (last_u2_element() - 1) :
  14.127                                          last_u2_element();
  14.128      }
  14.129    }
  14.130 +  }
  14.131  }
  14.132  
  14.133  // Update the flags to indicate the presence of these optional fields.
  14.134 @@ -183,29 +213,57 @@
  14.135                                              int checked_exceptions_len,
  14.136                                              int compressed_line_number_size,
  14.137                                              int localvariable_table_len,
  14.138 -                                            int exception_table_len) {
  14.139 -  // Must be done in the order below, otherwise length_addr accessors
  14.140 -  // will not work. Only set bit in header if length is positive.
  14.141 +                                            int exception_table_len,
  14.142 +                                            int method_parameters_len) {
  14.143    assert(_flags == 0, "Error");
  14.144 -  if (compressed_line_number_size > 0) {
  14.145 +  if (compressed_line_number_size > 0)
  14.146      _flags |= _has_linenumber_table;
  14.147 -  }
  14.148 -  if (generic_signature_index != 0) {
  14.149 +  if (generic_signature_index != 0)
  14.150      _flags |= _has_generic_signature;
  14.151 +  if (method_parameters_len > 0)
  14.152 +    _flags |= _has_method_parameters;
  14.153 +  if (checked_exceptions_len > 0)
  14.154 +    _flags |= _has_checked_exceptions;
  14.155 +  if (exception_table_len > 0)
  14.156 +    _flags |= _has_exception_table;
  14.157 +  if (localvariable_table_len > 0)
  14.158 +    _flags |= _has_localvariable_table;
  14.159 +
  14.160 +  // This code is extremely brittle and should possibly be revised.
  14.161 +  // The *_length_addr functions walk backwards through the
  14.162 +  // constMethod data, using each of the length indexes ahead of them,
  14.163 +  // as well as the flags variable.  Therefore, the indexes must be
  14.164 +  // initialized in reverse order, or else they will compute the wrong
  14.165 +  // offsets.  Moving the initialization of _flags into a separate
  14.166 +  // block solves *half* of the problem, but the following part will
  14.167 +  // still break if the order is not exactly right.
  14.168 +  //
  14.169 +  // Also, the servicability agent needs to be informed anytime
  14.170 +  // anything is added here.  It might be advisable to have some sort
  14.171 +  // of indication of this inline.
  14.172 +  if (generic_signature_index != 0)
  14.173      *(generic_signature_index_addr()) = generic_signature_index;
  14.174 -  }
  14.175 -  if (checked_exceptions_len > 0) {
  14.176 -    _flags |= _has_checked_exceptions;
  14.177 +  // New data should probably go here.
  14.178 +  if (method_parameters_len > 0)
  14.179 +    *(method_parameters_length_addr()) = method_parameters_len;
  14.180 +  if (checked_exceptions_len > 0)
  14.181      *(checked_exceptions_length_addr()) = checked_exceptions_len;
  14.182 -  }
  14.183 -  if (exception_table_len > 0) {
  14.184 -    _flags |= _has_exception_table;
  14.185 +  if (exception_table_len > 0)
  14.186      *(exception_table_length_addr()) = exception_table_len;
  14.187 -  }
  14.188 -  if (localvariable_table_len > 0) {
  14.189 -    _flags |= _has_localvariable_table;
  14.190 +  if (localvariable_table_len > 0)
  14.191      *(localvariable_table_length_addr()) = localvariable_table_len;
  14.192 -  }
  14.193 +}
  14.194 +
  14.195 +int ConstMethod::method_parameters_length() const {
  14.196 +  return has_method_parameters() ? *(method_parameters_length_addr()) : 0;
  14.197 +}
  14.198 +
  14.199 +MethodParametersElement* ConstMethod::method_parameters_start() const {
  14.200 +  u2* addr = method_parameters_length_addr();
  14.201 +  u2 length = *addr;
  14.202 +  assert(length > 0, "should only be called if table is present");
  14.203 +  addr -= length * sizeof(MethodParametersElement) / sizeof(u2);
  14.204 +  return (MethodParametersElement*) addr;
  14.205  }
  14.206  
  14.207  
  14.208 @@ -298,6 +356,10 @@
  14.209    }
  14.210    guarantee(compressed_table_end <= m_end, "invalid method layout");
  14.211    // Verify checked exceptions, exception table and local variable tables
  14.212 +  if (has_method_parameters()) {
  14.213 +    u2* addr = method_parameters_length_addr();
  14.214 +    guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
  14.215 +  }
  14.216    if (has_checked_exceptions()) {
  14.217      u2* addr = checked_exceptions_length_addr();
  14.218      guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
  14.219 @@ -318,6 +380,8 @@
  14.220      uncompressed_table_start = (u2*) exception_table_start();
  14.221    } else if (has_checked_exceptions()) {
  14.222        uncompressed_table_start = (u2*) checked_exceptions_start();
  14.223 +  } else if (has_method_parameters()) {
  14.224 +      uncompressed_table_start = (u2*) method_parameters_start();
  14.225    } else {
  14.226        uncompressed_table_start = (u2*) m_end;
  14.227    }
    15.1 --- a/src/share/vm/oops/constMethod.hpp	Tue Jan 08 13:38:11 2013 -0500
    15.2 +++ b/src/share/vm/oops/constMethod.hpp	Tue Jan 08 13:44:10 2013 -0800
    15.3 @@ -77,9 +77,18 @@
    15.4  // |  (access flags bit tells whether table is present)   |
    15.5  // |  (indexed from end of ConstMethod*)                  |
    15.6  // |------------------------------------------------------|
    15.7 +// | method parameters elements + length (length last)    |
    15.8 +// |  (length is u2, elements are u2, u4 structures)      |
    15.9 +// |  (see class MethodParametersElement)                 |
   15.10 +// |  (access flags bit tells whether table is present)   |
   15.11 +// |  (indexed from end of ConstMethod*)                  |
   15.12 +// |------------------------------------------------------|
   15.13  // | generic signature index (u2)                         |
   15.14  // |  (indexed from start of constMethodOop)              |
   15.15  // |------------------------------------------------------|
   15.16 +//
   15.17 +// IMPORTANT: If anything gets added here, there need to be changes to
   15.18 +// ensure that ServicabilityAgent doesn't get broken as a result!
   15.19  
   15.20  
   15.21  // Utitily class decribing elements in checked exceptions table inlined in Method*.
   15.22 @@ -109,6 +118,13 @@
   15.23    u2 catch_type_index;
   15.24  };
   15.25  
   15.26 +// Utility class describing elements in method parameters
   15.27 +class MethodParametersElement VALUE_OBJ_CLASS_SPEC {
   15.28 + public:
   15.29 +  u2 name_cp_index;
   15.30 +  u4 flags;
   15.31 +};
   15.32 +
   15.33  
   15.34  class ConstMethod : public MetaspaceObj {
   15.35    friend class VMStructs;
   15.36 @@ -123,7 +139,8 @@
   15.37      _has_localvariable_table = 4,
   15.38      _has_exception_table = 8,
   15.39      _has_generic_signature = 16,
   15.40 -    _is_overpass = 32
   15.41 +    _has_method_parameters = 32,
   15.42 +    _is_overpass = 64
   15.43    };
   15.44  
   15.45    // Bit vector of signature
   15.46 @@ -160,6 +177,7 @@
   15.47                int localvariable_table_length,
   15.48                int exception_table_length,
   15.49                int checked_exceptions_length,
   15.50 +              int method_parameters_length,
   15.51                u2  generic_signature_index,
   15.52                MethodType is_overpass,
   15.53                int size);
   15.54 @@ -171,6 +189,7 @@
   15.55                                 int localvariable_table_length,
   15.56                                 int exception_table_length,
   15.57                                 int checked_exceptions_length,
   15.58 +                               int method_parameters_length,
   15.59                                 u2  generic_signature_index,
   15.60                                 MethodType mt,
   15.61                                 TRAPS);
   15.62 @@ -182,7 +201,8 @@
   15.63                                   int checked_exceptions_len,
   15.64                                   int compressed_line_number_size,
   15.65                                   int localvariable_table_len,
   15.66 -                                 int exception_table_len);
   15.67 +                                 int exception_table_len,
   15.68 +                                 int method_parameters_length);
   15.69  
   15.70    bool has_generic_signature() const
   15.71      { return (_flags & _has_generic_signature) != 0; }
   15.72 @@ -199,6 +219,9 @@
   15.73    bool has_exception_handler() const
   15.74      { return (_flags & _has_exception_table) != 0; }
   15.75  
   15.76 +  bool has_method_parameters() const
   15.77 +    { return (_flags & _has_method_parameters) != 0; }
   15.78 +
   15.79    MethodType method_type() const {
   15.80      return ((_flags & _is_overpass) == 0) ? NORMAL : OVERPASS;
   15.81    }
   15.82 @@ -284,10 +307,11 @@
   15.83  
   15.84    // Size needed
   15.85    static int size(int code_size, int compressed_line_number_size,
   15.86 -                         int local_variable_table_length,
   15.87 -                         int exception_table_length,
   15.88 -                         int checked_exceptions_length,
   15.89 -                         u2  generic_signature_index);
   15.90 +                  int local_variable_table_length,
   15.91 +                  int exception_table_length,
   15.92 +                  int checked_exceptions_length,
   15.93 +                  int method_parameters_length,
   15.94 +                  u2  generic_signature_index);
   15.95  
   15.96    int size() const                    { return _constMethod_size;}
   15.97    void set_constMethod_size(int size)     { _constMethod_size = size; }
   15.98 @@ -308,6 +332,7 @@
   15.99    u2* checked_exceptions_length_addr() const;
  15.100    u2* localvariable_table_length_addr() const;
  15.101    u2* exception_table_length_addr() const;
  15.102 +  u2* method_parameters_length_addr() const;
  15.103  
  15.104    // checked exceptions
  15.105    int checked_exceptions_length() const;
  15.106 @@ -321,6 +346,10 @@
  15.107    int exception_table_length() const;
  15.108    ExceptionTableElement* exception_table_start() const;
  15.109  
  15.110 +  // method parameters table
  15.111 +  int method_parameters_length() const;
  15.112 +  MethodParametersElement* method_parameters_start() const;
  15.113 +
  15.114    // byte codes
  15.115    void    set_code(address code) {
  15.116      if (code_size() > 0) {
    16.1 --- a/src/share/vm/oops/method.cpp	Tue Jan 08 13:38:11 2013 -0500
    16.2 +++ b/src/share/vm/oops/method.cpp	Tue Jan 08 13:44:10 2013 -0800
    16.3 @@ -64,6 +64,7 @@
    16.4                           int localvariable_table_length,
    16.5                           int exception_table_length,
    16.6                           int checked_exceptions_length,
    16.7 +                         int method_parameters_length,
    16.8                           u2  generic_signature_index,
    16.9                           ConstMethod::MethodType method_type,
   16.10                           TRAPS) {
   16.11 @@ -75,6 +76,7 @@
   16.12                                            localvariable_table_length,
   16.13                                            exception_table_length,
   16.14                                            checked_exceptions_length,
   16.15 +                                          method_parameters_length,
   16.16                                            generic_signature_index,
   16.17                                            method_type,
   16.18                                            CHECK_NULL);
   16.19 @@ -1035,8 +1037,10 @@
   16.20  
   16.21    methodHandle m;
   16.22    {
   16.23 -    Method* m_oop = Method::allocate(loader_data, 0, accessFlags_from(flags_bits),
   16.24 -             0, 0, 0, 0, 0, ConstMethod::NORMAL, CHECK_(empty));
   16.25 +    Method* m_oop = Method::allocate(loader_data, 0,
   16.26 +                                     accessFlags_from(flags_bits),
   16.27 +                                     0, 0, 0, 0, 0, 0,
   16.28 +                                     ConstMethod::NORMAL, CHECK_(empty));
   16.29      m = methodHandle(THREAD, m_oop);
   16.30    }
   16.31    m->set_constants(cp());
   16.32 @@ -1088,6 +1092,7 @@
   16.33    int checked_exceptions_len = m->checked_exceptions_length();
   16.34    int localvariable_len = m->localvariable_table_length();
   16.35    int exception_table_len = m->exception_table_length();
   16.36 +  int method_parameters_len = m->method_parameters_length();
   16.37  
   16.38    ClassLoaderData* loader_data = m->method_holder()->class_loader_data();
   16.39    Method* newm_oop = Method::allocate(loader_data,
   16.40 @@ -1097,6 +1102,7 @@
   16.41                                        localvariable_len,
   16.42                                        exception_table_len,
   16.43                                        checked_exceptions_len,
   16.44 +                                      method_parameters_len,
   16.45                                        generic_signature_index,
   16.46                                        m->method_type(),
   16.47                                        CHECK_(methodHandle()));
    17.1 --- a/src/share/vm/oops/method.hpp	Tue Jan 08 13:38:11 2013 -0500
    17.2 +++ b/src/share/vm/oops/method.hpp	Tue Jan 08 13:44:10 2013 -0800
    17.3 @@ -160,6 +160,7 @@
    17.4                            int localvariable_table_length,
    17.5                            int exception_table_length,
    17.6                            int checked_exceptions_length,
    17.7 +                          int method_parameters_length,
    17.8                            u2 generic_signature_index,
    17.9                            ConstMethod::MethodType method_type,
   17.10                            TRAPS);
   17.11 @@ -480,6 +481,12 @@
   17.12    void print_codes_on(outputStream* st) const                      PRODUCT_RETURN;
   17.13    void print_codes_on(int from, int to, outputStream* st) const    PRODUCT_RETURN;
   17.14  
   17.15 +  // method parameters
   17.16 +  int method_parameters_length() const
   17.17 +                         { return constMethod()->method_parameters_length(); }
   17.18 +  MethodParametersElement* method_parameters_start() const
   17.19 +                          { return constMethod()->method_parameters_start(); }
   17.20 +
   17.21    // checked exceptions
   17.22    int checked_exceptions_length() const
   17.23                           { return constMethod()->checked_exceptions_length(); }
    18.1 --- a/src/share/vm/prims/jvm.cpp	Tue Jan 08 13:38:11 2013 -0500
    18.2 +++ b/src/share/vm/prims/jvm.cpp	Tue Jan 08 13:44:10 2013 -0800
    18.3 @@ -1515,7 +1515,7 @@
    18.4  JVM_END
    18.5  
    18.6  
    18.7 -static Method* jvm_get_method_common(jobject method, TRAPS) {
    18.8 +static Method* jvm_get_method_common(jobject method) {
    18.9    // some of this code was adapted from from jni_FromReflectedMethod
   18.10  
   18.11    oop reflected = JNIHandles::resolve_non_null(method);
   18.12 @@ -1533,8 +1533,7 @@
   18.13    }
   18.14    Klass* k = java_lang_Class::as_Klass(mirror);
   18.15  
   18.16 -  KlassHandle kh(THREAD, k);
   18.17 -  Method* m = InstanceKlass::cast(kh())->method_with_idnum(slot);
   18.18 +  Method* m = InstanceKlass::cast(k)->method_with_idnum(slot);
   18.19    if (m == NULL) {
   18.20      assert(false, "cannot find method");
   18.21      return NULL;  // robustness
   18.22 @@ -1548,7 +1547,7 @@
   18.23    JVMWrapper("JVM_GetMethodAnnotations");
   18.24  
   18.25    // method is a handle to a java.lang.reflect.Method object
   18.26 -  Method* m = jvm_get_method_common(method, CHECK_NULL);
   18.27 +  Method* m = jvm_get_method_common(method);
   18.28    return (jbyteArray) JNIHandles::make_local(env,
   18.29      Annotations::make_java_array(m->annotations(), THREAD));
   18.30  JVM_END
   18.31 @@ -1558,7 +1557,7 @@
   18.32    JVMWrapper("JVM_GetMethodDefaultAnnotationValue");
   18.33  
   18.34    // method is a handle to a java.lang.reflect.Method object
   18.35 -  Method* m = jvm_get_method_common(method, CHECK_NULL);
   18.36 +  Method* m = jvm_get_method_common(method);
   18.37    return (jbyteArray) JNIHandles::make_local(env,
   18.38      Annotations::make_java_array(m->annotation_default(), THREAD));
   18.39  JVM_END
   18.40 @@ -1568,7 +1567,7 @@
   18.41    JVMWrapper("JVM_GetMethodParameterAnnotations");
   18.42  
   18.43    // method is a handle to a java.lang.reflect.Method object
   18.44 -  Method* m = jvm_get_method_common(method, CHECK_NULL);
   18.45 +  Method* m = jvm_get_method_common(method);
   18.46    return (jbyteArray) JNIHandles::make_local(env,
   18.47      Annotations::make_java_array(m->parameter_annotations(), THREAD));
   18.48  JVM_END
   18.49 @@ -1590,6 +1589,32 @@
   18.50    return NULL;
   18.51  JVM_END
   18.52  
   18.53 +JVM_ENTRY(jobjectArray, JVM_GetMethodParameters(JNIEnv *env, jobject method))
   18.54 +{
   18.55 +  JVMWrapper("JVM_GetMethodParameters");
   18.56 +  // method is a handle to a java.lang.reflect.Method object
   18.57 +  Method* method_ptr = jvm_get_method_common(method);
   18.58 +  methodHandle mh (THREAD, method_ptr);
   18.59 +  Handle reflected_method (THREAD, JNIHandles::resolve_non_null(method));
   18.60 +  const int num_params = mh->method_parameters_length();
   18.61 +
   18.62 +  if(0 != num_params) {
   18.63 +    objArrayOop result_oop = oopFactory::new_objArray(SystemDictionary::reflect_Parameter_klass(), num_params, CHECK_NULL);
   18.64 +    objArrayHandle result (THREAD, result_oop);
   18.65 +
   18.66 +    for(int i = 0; i < num_params; i++) {
   18.67 +      MethodParametersElement* params = mh->method_parameters_start();
   18.68 +      Symbol* const sym = mh->constants()->symbol_at(params[i].name_cp_index);
   18.69 +      oop param = Reflection::new_parameter(reflected_method, i, sym,
   18.70 +                                            params[i].flags, CHECK_NULL);
   18.71 +      result->obj_at_put(i, param);
   18.72 +    }
   18.73 +    return (jobjectArray)JNIHandles::make_local(env, result());
   18.74 +  } else {
   18.75 +    return (jobjectArray)NULL;
   18.76 +  }
   18.77 +}
   18.78 +JVM_END
   18.79  
   18.80  // New (JDK 1.4) reflection implementation /////////////////////////////////////
   18.81  
    19.1 --- a/src/share/vm/prims/jvm.h	Tue Jan 08 13:38:11 2013 -0500
    19.2 +++ b/src/share/vm/prims/jvm.h	Tue Jan 08 13:44:10 2013 -0800
    19.3 @@ -86,6 +86,8 @@
    19.4  
    19.5  #define JVM_INTERFACE_VERSION 4
    19.6  
    19.7 +JNIEXPORT jobjectArray JNICALL
    19.8 +JVM_GetMethodParameters(JNIEnv *env, jobject method);
    19.9  
   19.10  JNIEXPORT jint JNICALL
   19.11  JVM_GetInterfaceVersion(void);
    20.1 --- a/src/share/vm/runtime/reflection.cpp	Tue Jan 08 13:38:11 2013 -0500
    20.2 +++ b/src/share/vm/runtime/reflection.cpp	Tue Jan 08 13:44:10 2013 -0800
    20.3 @@ -860,6 +860,17 @@
    20.4    return rh();
    20.5  }
    20.6  
    20.7 +oop Reflection::new_parameter(Handle method, int index, Symbol* sym,
    20.8 +                              int flags, TRAPS) {
    20.9 +  Handle name = java_lang_String::create_from_symbol(sym, CHECK_NULL);
   20.10 +  Handle rh = java_lang_reflect_Parameter::create(CHECK_NULL);
   20.11 +  java_lang_reflect_Parameter::set_name(rh(), name());
   20.12 +  java_lang_reflect_Parameter::set_modifiers(rh(), flags);
   20.13 +  java_lang_reflect_Parameter::set_executable(rh(), method());
   20.14 +  java_lang_reflect_Parameter::set_index(rh(), index);
   20.15 +  return rh();
   20.16 +}
   20.17 +
   20.18  
   20.19  methodHandle Reflection::resolve_interface_call(instanceKlassHandle klass, methodHandle method,
   20.20                                                  KlassHandle recv_klass, Handle receiver, TRAPS) {
    21.1 --- a/src/share/vm/runtime/reflection.hpp	Tue Jan 08 13:38:11 2013 -0500
    21.2 +++ b/src/share/vm/runtime/reflection.hpp	Tue Jan 08 13:44:10 2013 -0800
    21.3 @@ -118,6 +118,10 @@
    21.4    static oop new_constructor(methodHandle method, TRAPS);
    21.5    // Create a java.lang.reflect.Field object based on a field descriptor
    21.6    static oop new_field(fieldDescriptor* fd, bool intern_name, TRAPS);
    21.7 +  // Create a java.lang.reflect.Parameter object based on a
    21.8 +  // MethodParameterElement
    21.9 +  static oop new_parameter(Handle method, int index, Symbol* sym,
   21.10 +                           int flags, TRAPS);
   21.11  
   21.12  private:
   21.13    // method resolution for invoke

mercurial