ikvm-commit Mailing List for IKVM.NET (Page 4)
Brought to you by:
jfrijters
You can subscribe to this list here.
2007 |
Jan
(25) |
Feb
(22) |
Mar
(32) |
Apr
(77) |
May
(111) |
Jun
(129) |
Jul
(223) |
Aug
(109) |
Sep
(60) |
Oct
(60) |
Nov
(36) |
Dec
(55) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(23) |
Feb
(76) |
Mar
(42) |
Apr
(49) |
May
(33) |
Jun
(64) |
Jul
(19) |
Aug
(124) |
Sep
(16) |
Oct
|
Nov
(87) |
Dec
(54) |
2009 |
Jan
(53) |
Feb
(116) |
Mar
(86) |
Apr
(64) |
May
(101) |
Jun
(99) |
Jul
(105) |
Aug
(63) |
Sep
(20) |
Oct
(110) |
Nov
(102) |
Dec
(36) |
2010 |
Jan
(87) |
Feb
(67) |
Mar
(5) |
Apr
(100) |
May
(178) |
Jun
(95) |
Jul
(22) |
Aug
(85) |
Sep
(82) |
Oct
(99) |
Nov
(119) |
Dec
(132) |
2011 |
Jan
(130) |
Feb
(18) |
Mar
(114) |
Apr
(8) |
May
(21) |
Jun
(53) |
Jul
(127) |
Aug
(111) |
Sep
(29) |
Oct
(28) |
Nov
(64) |
Dec
(94) |
2012 |
Jan
(56) |
Feb
(8) |
Mar
(65) |
Apr
(48) |
May
(22) |
Jun
(52) |
Jul
(73) |
Aug
(38) |
Sep
(18) |
Oct
(59) |
Nov
(16) |
Dec
(21) |
2013 |
Jan
(83) |
Feb
(151) |
Mar
(102) |
Apr
(13) |
May
(37) |
Jun
(1) |
Jul
(7) |
Aug
(42) |
Sep
(28) |
Oct
(13) |
Nov
(5) |
Dec
(3) |
2014 |
Jan
(3) |
Feb
(39) |
Mar
(11) |
Apr
(40) |
May
(62) |
Jun
(54) |
Jul
(21) |
Aug
(3) |
Sep
|
Oct
(15) |
Nov
(26) |
Dec
(7) |
2015 |
Jan
(6) |
Feb
(12) |
Mar
(51) |
Apr
(15) |
May
(7) |
Jun
(41) |
Jul
(2) |
Aug
(8) |
Sep
(5) |
Oct
(6) |
Nov
(11) |
Dec
(1) |
2016 |
Jan
|
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
(2) |
Jul
(19) |
Aug
(2) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
(2) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jeroen F. <jfr...@us...> - 2015-06-26 14:58:42
|
Update of /cvsroot/ikvm/ikvm/openjdk/java/lang In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv27685 Modified Files: Thread.java Log Message: Use (cheaper) InterlockedCompareAndSet "native" method instead of AtomicReferenceFieldUpdater. Index: Thread.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/lang/Thread.java,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** Thread.java 25 Jun 2015 13:14:36 -0000 1.40 --- Thread.java 26 Jun 2015 14:58:40 -0000 1.41 *************** *** 1748,1755 **** final void initContextClassLoader(ClassLoader cl) { // we only set contextClassLoader if it hasn't been set (by user code) previously ! java.util.concurrent.atomic.AtomicReferenceFieldUpdater ! .newUpdater(Thread.class, ClassLoader.class, "contextClassLoader") ! .compareAndSet(this, ClassLoader.DUMMY, cl); } /** --- 1748,1756 ---- final void initContextClassLoader(ClassLoader cl) { // we only set contextClassLoader if it hasn't been set (by user code) previously ! casContextClassLoader(ClassLoader.DUMMY, cl); } + + @ikvm.internal.InterlockedCompareAndSet("contextClassLoader") + private native boolean casContextClassLoader(ClassLoader oldValue, ClassLoader newValue); /** |
From: Jeroen F. <jfr...@us...> - 2015-06-26 14:42:01
|
Update of /cvsroot/ikvm/ikvm/openjdk/java/net In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv26548/openjdk/java/net Removed Files: SocketInputStream.java SocketOutputStream.java Log Message: Unforked java/net/SocketInputStream.java and java/net/SocketOutputStream.java. --- SocketOutputStream.java DELETED --- --- SocketInputStream.java DELETED --- |
From: Jeroen F. <jfr...@us...> - 2015-06-26 14:42:00
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv26548/runtime Modified Files: IKVM.Runtime.8.csproj runtime.build Log Message: Unforked java/net/SocketInputStream.java and java/net/SocketOutputStream.java. Index: IKVM.Runtime.8.csproj =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/IKVM.Runtime.8.csproj,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** IKVM.Runtime.8.csproj 24 Jun 2015 14:10:40 -0000 1.47 --- IKVM.Runtime.8.csproj 26 Jun 2015 14:41:58 -0000 1.48 *************** *** 156,159 **** --- 156,160 ---- <Compile Include="openjdk\java.lang.reflect.cs" /> <Compile Include="openjdk\java.net.cs" /> + <Compile Include="openjdk\java.net.SocketInputStream.cs" /> <Compile Include="openjdk\java.nio.cs" /> <Compile Include="openjdk\java.security.cs" /> Index: runtime.build =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/runtime.build,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** runtime.build 24 Jun 2015 14:10:40 -0000 1.80 --- runtime.build 26 Jun 2015 14:41:58 -0000 1.81 *************** *** 191,194 **** --- 191,195 ---- <include name="openjdk/java.lang.reflect.cs" /> <include name="openjdk/java.net.cs" /> + <include name="openjdk/java.net.SocketInputStream.cs" /> <include name="openjdk/java.nio.cs" /> <include name="openjdk/java.security.cs" /> |
From: Jeroen F. <jfr...@us...> - 2015-06-26 11:37:37
|
Update of /cvsroot/ikvm/ikvm/openjdk In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv12793/openjdk Modified Files: FORKED allsources.lst Log Message: Unforked java/io/FileInputStream.java, java/io/FileOutputStream.java and java/io/RandomAccessFile.java. Index: allsources.lst =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/allsources.lst,v retrieving revision 1.273 retrieving revision 1.274 diff -C2 -d -r1.273 -r1.274 *** allsources.lst 25 Jun 2015 13:30:11 -0000 1.273 --- allsources.lst 26 Jun 2015 11:37:04 -0000 1.274 *************** *** 79,89 **** java/io/DefaultFileSystem.java java/io/FileDescriptor.java - java/io/FileInputStream.java - java/io/FileOutputStream.java java/io/InteropObjectInputStream.java java/io/InteropObjectOutputStream.java java/io/ObjectStreamClass.java java/io/ObjectStreamField.java - java/io/RandomAccessFile.java java/lang/Class.java java/lang/ClassLoader.java --- 79,86 ---- *************** *** 10047,10052 **** --- 10044,10051 ---- @OPENJDK@/jdk/src/share/classes/java/io/File.java @OPENJDK@/jdk/src/share/classes/java/io/FileFilter.java + @OPENJDK@/jdk/src/share/classes/java/io/FileInputStream.java @OPENJDK@/jdk/src/share/classes/java/io/FilenameFilter.java @OPENJDK@/jdk/src/share/classes/java/io/FileNotFoundException.java + @OPENJDK@/jdk/src/share/classes/java/io/FileOutputStream.java @OPENJDK@/jdk/src/share/classes/java/io/FilePermission.java @OPENJDK@/jdk/src/share/classes/java/io/FileReader.java *************** *** 10087,10090 **** --- 10086,10090 ---- @OPENJDK@/jdk/src/share/classes/java/io/PushbackInputStream.java @OPENJDK@/jdk/src/share/classes/java/io/PushbackReader.java + @OPENJDK@/jdk/src/share/classes/java/io/RandomAccessFile.java @OPENJDK@/jdk/src/share/classes/java/io/Reader.java @OPENJDK@/jdk/src/share/classes/java/io/SequenceInputStream.java Index: FORKED =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/FORKED,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** FORKED 24 Jun 2015 14:10:40 -0000 1.10 --- FORKED 26 Jun 2015 11:37:04 -0000 1.11 *************** *** 23,31 **** jdk/src/share/classes/java/awt/image/DataBufferUShort.java=java/awt/image/DataBufferUShort.java jdk/src/share/classes/java/awt/image/IndexColorModel.java=java/awt/image/IndexColorModel.java - jdk/src/share/classes/java/io/FileInputStream.java=java/io/FileInputStream.java - jdk/src/share/classes/java/io/FileOutputStream.java=java/io/FileOutputStream.java jdk/src/share/classes/java/io/ObjectStreamClass.java=java/io/ObjectStreamClass.java jdk/src/share/classes/java/io/ObjectStreamField.java=java/io/ObjectStreamField.java - jdk/src/share/classes/java/io/RandomAccessFile.java=java/io/RandomAccessFile.java jdk/src/share/classes/java/lang/Class.java=java/lang/Class.java jdk/src/share/classes/java/lang/ClassLoader.java=java/lang/ClassLoader.java --- 23,28 ---- |
From: Jeroen F. <jfr...@us...> - 2015-06-26 11:37:09
|
Update of /cvsroot/ikvm/ikvm/openjdk/java/io In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv12793/openjdk/java/io Removed Files: FileInputStream.java FileOutputStream.java RandomAccessFile.java Log Message: Unforked java/io/FileInputStream.java, java/io/FileOutputStream.java and java/io/RandomAccessFile.java. --- RandomAccessFile.java DELETED --- --- FileInputStream.java DELETED --- --- FileOutputStream.java DELETED --- |
From: Jeroen F. <jfr...@us...> - 2015-06-26 11:26:46
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv12084 Modified Files: DynamicTypeWrapper.cs Log Message: Added support for automatically passing in fields to "native" methods. Index: DynamicTypeWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/DynamicTypeWrapper.cs,v retrieving revision 1.275 retrieving revision 1.276 diff -C2 -d -r1.275 -r1.276 *** DynamicTypeWrapper.cs 26 Jun 2015 11:22:19 -0000 1.275 --- DynamicTypeWrapper.cs 26 Jun 2015 11:26:44 -0000 1.276 *************** *** 4389,4394 **** { ParameterInfo[] param = method.GetParameters(); ! TypeWrapper[] match = new TypeWrapper[param.Length]; ! for (int j = 0; j < param.Length; j++) { match[j] = ClassLoaderWrapper.GetWrapperFromType(param[j].ParameterType); --- 4389,4399 ---- { ParameterInfo[] param = method.GetParameters(); ! int paramLength = param.Length; ! while (paramLength != 0 && (param[paramLength - 1].IsIn || param[paramLength - 1].ParameterType.IsByRef)) ! { ! paramLength--; ! } ! TypeWrapper[] match = new TypeWrapper[paramLength]; ! for (int j = 0; j < paramLength; j++) { match[j] = ClassLoaderWrapper.GetWrapperFromType(param[j].ParameterType); *************** *** 4404,4411 **** --- 4409,4467 ---- if (nativeMethod != null) { + #if STATIC_COMPILER for (int j = 0; j < nargs.Length; j++) { ilGenerator.EmitLdarg(j); } + ParameterInfo[] param = nativeMethod.GetParameters(); + for (int j = nargs.Length; j < param.Length; j++) + { + Type paramType = param[j].ParameterType; + TypeWrapper fieldTypeWrapper = ClassLoaderWrapper.GetWrapperFromType(paramType.IsByRef ? paramType.GetElementType() : paramType); + FieldWrapper field = wrapper.GetFieldWrapper(param[j].Name, fieldTypeWrapper.SigName); + if (field == null) + { + Console.Error.WriteLine("Error: Native method field binding not found: {0}.{1}{2}", classFile.Name, param[j].Name, fieldTypeWrapper.SigName); + StaticCompiler.errorCount++; + continue; + } + if (m.IsStatic && !field.IsStatic) + { + Console.Error.WriteLine("Error: Native method field binding cannot access instance field from static method: {0}.{1}{2}", classFile.Name, param[j].Name, fieldTypeWrapper.SigName); + StaticCompiler.errorCount++; + continue; + } + if (!field.IsAccessibleFrom(wrapper, wrapper, wrapper)) + { + Console.Error.WriteLine("Error: Native method field binding not accessible: {0}.{1}{2}", classFile.Name, param[j].Name, fieldTypeWrapper.SigName); + StaticCompiler.errorCount++; + continue; + } + if (paramType.IsByRef && field.IsFinal) + { + Console.Error.WriteLine("Error: Native method field binding cannot use ByRef for final field: {0}.{1}{2}", classFile.Name, param[j].Name, fieldTypeWrapper.SigName); + StaticCompiler.errorCount++; + continue; + } + field.Link(); + if (paramType.IsByRef && field.GetField() == null) + { + Console.Error.WriteLine("Error: Native method field binding cannot use ByRef on field without backing field: {0}.{1}{2}", classFile.Name, param[j].Name, fieldTypeWrapper.SigName); + StaticCompiler.errorCount++; + continue; + } + if (!field.IsStatic) + { + ilGenerator.EmitLdarg(0); + } + if (paramType.IsByRef) + { + ilGenerator.Emit(field.IsStatic ? OpCodes.Ldsflda : OpCodes.Ldflda, field.GetField()); + } + else + { + field.EmitGet(ilGenerator); + } + } ilGenerator.Emit(OpCodes.Call, nativeMethod); TypeWrapper retTypeWrapper = methods[i].ReturnType; *************** *** 4415,4418 **** --- 4471,4475 ---- } ilGenerator.Emit(OpCodes.Ret); + #endif } else |
From: Jeroen F. <jfr...@us...> - 2015-06-26 11:22:22
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11805/runtime Modified Files: ClassFile.cs ClassLoaderWrapper.cs DynamicTypeWrapper.cs Log Message: Moved unused field removal optimization to a later stage in the compilation. Also made the check more strict to only remove final fields and not remove fields that have annotations. Index: ClassLoaderWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/ClassLoaderWrapper.cs,v retrieving revision 1.235 retrieving revision 1.236 diff -C2 -d -r1.235 -r1.236 *** ClassLoaderWrapper.cs 24 Mar 2015 09:39:11 -0000 1.235 --- ClassLoaderWrapper.cs 26 Jun 2015 11:22:19 -0000 1.236 *************** *** 54,57 **** --- 54,58 ---- DisableDynamicBinding = 64, NoRefEmitHelpers = 128, + RemoveUnusedFields = 256, } *************** *** 330,333 **** --- 331,342 ---- } + internal bool RemoveUnusedFields + { + get + { + return (codegenoptions & CodeGenOptions.RemoveUnusedFields) != 0; + } + } + internal bool WorkaroundAbstractMethodWidening { Index: DynamicTypeWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/DynamicTypeWrapper.cs,v retrieving revision 1.274 retrieving revision 1.275 diff -C2 -d -r1.274 -r1.275 *** DynamicTypeWrapper.cs 22 Jun 2015 10:55:23 -0000 1.274 --- DynamicTypeWrapper.cs 26 Jun 2015 11:22:19 -0000 1.275 *************** *** 1521,1524 **** --- 1521,1536 ---- int fieldIndex = GetFieldIndex(fw); #if STATIC_COMPILER + if (wrapper.GetClassLoader().RemoveUnusedFields + && fw.IsPrivate + && fw.IsStatic + && fw.IsFinal + && fw.Name != "serialVersionUID" + && classFile.Fields[fieldIndex].Annotations == null + && !classFile.IsReferenced(classFile.Fields[fieldIndex])) + { + // unused, so we skip it + Tracer.Info(Tracer.Compiler, "Unused field {0}::{1}", wrapper.Name, fw.Name); + return null; + } // for compatibility with broken Java code that assumes that reflection returns the fields in class declaration // order, we emit the fields in class declaration order in the .NET metadata (and then when we retrieve them Index: ClassFile.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/ClassFile.cs,v retrieving revision 1.136 retrieving revision 1.137 diff -C2 -d -r1.136 -r1.137 *** ClassFile.cs 31 Mar 2015 08:19:32 -0000 1.136 --- ClassFile.cs 26 Jun 2015 11:22:19 -0000 1.137 *************** *** 1038,1060 **** } ! internal void RemoveUnusedFields() ! { ! List<Field> list = new List<Field>(); ! foreach(Field f in fields) ! { ! if(f.IsPrivate && f.IsStatic && f.Name != "serialVersionUID" && !IsReferenced(f)) ! { ! // unused, so we skip it ! Tracer.Info(Tracer.Compiler, "Unused field {0}::{1}", this.Name, f.Name); ! } ! else ! { ! list.Add(f); ! } ! } ! fields = list.ToArray(); ! } ! ! private bool IsReferenced(Field fld) { foreach(ConstantPoolItem cpi in constantpool) --- 1038,1042 ---- } ! internal bool IsReferenced(Field fld) { foreach(ConstantPoolItem cpi in constantpool) |
From: Jeroen F. <jfr...@us...> - 2015-06-26 11:22:21
|
Update of /cvsroot/ikvm/ikvm/ikvmc In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11805/ikvmc Modified Files: Compiler.cs CompilerClassLoader.cs Log Message: Moved unused field removal optimization to a later stage in the compilation. Also made the check more strict to only remove final fields and not remove fields that have annotations. Index: CompilerClassLoader.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/ikvmc/CompilerClassLoader.cs,v retrieving revision 1.277 retrieving revision 1.278 diff -C2 -d -r1.277 -r1.278 *** CompilerClassLoader.cs 22 Jun 2015 13:17:58 -0000 1.277 --- CompilerClassLoader.cs 26 Jun 2015 11:22:19 -0000 1.278 *************** *** 295,302 **** return null; } - if(options.removeUnusedFields) - { - f.RemoveUnusedFields(); - } if(f.IsPublic && options.privatePackages != null) { --- 295,298 ---- *************** *** 3476,3480 **** internal bool noglobbing; internal CodeGenOptions codegenoptions; - internal bool removeUnusedFields; internal bool compressedResources; internal string[] privatePackages; --- 3472,3475 ---- Index: Compiler.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/ikvmc/Compiler.cs,v retrieving revision 1.168 retrieving revision 1.169 diff -C2 -d -r1.168 -r1.169 *** Compiler.cs 18 Feb 2015 14:13:09 -0000 1.168 --- Compiler.cs 26 Jun 2015 11:22:19 -0000 1.169 *************** *** 839,843 **** else if(s == "-opt:fields") { ! options.removeUnusedFields = true; } else if(s == "-compressresources") --- 839,843 ---- else if(s == "-opt:fields") { ! options.codegenoptions |= CodeGenOptions.RemoveUnusedFields; } else if(s == "-compressresources") |
From: Jeroen F. <jfr...@us...> - 2015-06-25 13:59:13
|
Update of /cvsroot/ikvm/ikvm/openjdk/java/lang In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv6682/openjdk/java/lang Modified Files: VMSystemProperties.java Log Message: Extract Windows version from kernel32.dll to avoid version lie. Index: VMSystemProperties.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/lang/VMSystemProperties.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** VMSystemProperties.java 19 May 2014 12:43:38 -0000 1.14 --- VMSystemProperties.java 25 Jun 2015 13:59:10 -0000 1.15 *************** *** 1,4 **** /* ! Copyright (C) 2004-2014 Jeroen Frijters This software is provided 'as-is', without any express or implied --- 1,4 ---- /* ! Copyright (C) 2004-2015 Jeroen Frijters This software is provided 'as-is', without any express or implied *************** *** 25,28 **** --- 25,29 ---- import java.util.Properties; + import cli.System.Diagnostics.FileVersionInfo; import static ikvm.internal.Util.SafeGetEnvironmentVariable; *************** *** 153,156 **** --- 154,164 ---- { case cli.System.PlatformID.Win32NT: + // Windows lies about the version, so we extract the real version from kernel32.dll + FileVersionInfo kernel32 = getKernel32FileVersionInfo(); + if (kernel32 != null) + { + major = kernel32.get_ProductMajorPart(); + minor = kernel32.get_ProductMinorPart(); + } osname = "Windows NT (unknown)"; switch(major) *************** *** 200,203 **** --- 208,220 ---- } break; + case 10: + switch(minor) + { + case 0: + osver = "10.0"; + osname = "Windows 10"; + break; + } + break; } break; *************** *** 449,451 **** --- 466,469 ---- private static native String getStdoutEncoding(); private static native String getStderrEncoding(); + private static native FileVersionInfo getKernel32FileVersionInfo(); } |
From: Jeroen F. <jfr...@us...> - 2015-06-25 13:30:15
|
Update of /cvsroot/ikvm/ikvm/openjdk/java/lang In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv5174/java/lang Modified Files: Class.java Added Files: ClassSerializationProxy.java Log Message: Moved ClassSerializationProxy into its own source file. Index: Class.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/lang/Class.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Class.java 9 Jun 2015 09:28:43 -0000 1.23 --- Class.java 25 Jun 2015 13:30:12 -0000 1.24 *************** *** 71,136 **** import sun.reflect.annotation.*; import sun.reflect.misc.ReflectUtil; - import cli.System.Runtime.Serialization.IObjectReference; - import cli.System.Runtime.Serialization.SerializationException; import cli.System.Runtime.Serialization.SerializationInfo; import cli.System.Runtime.Serialization.StreamingContext; - @cli.System.SerializableAttribute.Annotation - final class ClassSerializationProxy implements IObjectReference - { - private cli.System.Type type; - private String sig; - - @cli.System.Security.SecurityCriticalAttribute.Annotation - public Object GetRealObject(StreamingContext context) - { - if (sig != null) - { - if (sig.length() == 1) - { - switch (sig.charAt(0)) - { - case 'B': - return Byte.TYPE; - case 'C': - return Character.TYPE; - case 'D': - return Double.TYPE; - case 'F': - return Float.TYPE; - case 'I': - return Integer.TYPE; - case 'J': - return Long.TYPE; - case 'S': - return Short.TYPE; - case 'Z': - return Boolean.TYPE; - case 'V': - return Void.TYPE; - } - } - String className; - if (sig.charAt(0) == 'L') - { - className = sig.substring(1, sig.length() - 1); - } - else - { - className = sig; - } - try - { - return Class.forName(className, false, Thread.currentThread().getContextClassLoader()); - } - catch (ClassNotFoundException x) - { - ikvm.runtime.Util.throwException(new SerializationException(x.getMessage(), x)); - } - } - return ikvm.runtime.Util.getClassFromTypeHandle(type.get_TypeHandle()); - } - } - /** * Instances of the class {@code Class} represent classes and --- 71,77 ---- --- NEW FILE: ClassSerializationProxy.java --- /* Copyright (C) 2009-2015 Jeroen Frijters This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jeroen Frijters je...@fr... */ package java.lang; import cli.System.Runtime.Serialization.IObjectReference; import cli.System.Runtime.Serialization.SerializationException; import cli.System.Runtime.Serialization.StreamingContext; @cli.System.SerializableAttribute.Annotation final class ClassSerializationProxy implements IObjectReference { private cli.System.Type type; private String sig; @cli.System.Security.SecurityCriticalAttribute.Annotation public Object GetRealObject(StreamingContext context) { if (sig != null) { if (sig.length() == 1) { switch (sig.charAt(0)) { case 'B': return Byte.TYPE; case 'C': return Character.TYPE; case 'D': return Double.TYPE; case 'F': return Float.TYPE; case 'I': return Integer.TYPE; case 'J': return Long.TYPE; case 'S': return Short.TYPE; case 'Z': return Boolean.TYPE; case 'V': return Void.TYPE; } } String className; if (sig.charAt(0) == 'L') { className = sig.substring(1, sig.length() - 1); } else { className = sig; } try { return Class.forName(className, false, Thread.currentThread().getContextClassLoader()); } catch (ClassNotFoundException x) { ikvm.runtime.Util.throwException(new SerializationException(x.getMessage(), x)); } } return ikvm.runtime.Util.getClassFromTypeHandle(type.get_TypeHandle()); } } |
From: Jeroen F. <jfr...@us...> - 2015-06-25 13:30:14
|
Update of /cvsroot/ikvm/ikvm/openjdk In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv5174 Modified Files: allsources.lst Log Message: Moved ClassSerializationProxy into its own source file. Index: allsources.lst =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/allsources.lst,v retrieving revision 1.272 retrieving revision 1.273 diff -C2 -d -r1.272 -r1.273 *** allsources.lst 20 Jun 2015 05:18:27 -0000 1.272 --- allsources.lst 25 Jun 2015 13:30:11 -0000 1.273 *************** *** 89,92 **** --- 89,93 ---- java/lang/ClassLoader.java java/lang/ClassLoaderHelper.java + java/lang/ClassSerializationProxy.java java/lang/Enum.java java/lang/invoke/LightWeightMethodHandle.java |
From: Jeroen F. <jfr...@us...> - 2015-06-25 13:14:39
|
Update of /cvsroot/ikvm/ikvm/openjdk/java/lang In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv4382 Modified Files: Thread.java Log Message: No need to explicitly capture thread reference in Cleanup object, as it's an inner class. Index: Thread.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/lang/Thread.java,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** Thread.java 10 Nov 2014 09:18:25 -0000 1.39 --- Thread.java 25 Jun 2015 13:14:36 -0000 1.40 *************** *** 152,163 **** } final class Cleanup { - private final Thread thread; - - Cleanup(Thread thread) { - this.thread = thread; - } - protected void finalize() { ! thread.die(); } } --- 152,157 ---- } final class Cleanup { protected void finalize() { ! Thread.this.die(); } } *************** *** 561,565 **** current = this; ! cleanup = new Cleanup(this); if (!daemon) { --- 555,559 ---- current = this; ! cleanup = new Cleanup(); if (!daemon) { |
From: Jeroen F. <jfr...@us...> - 2015-06-25 13:13:42
|
Update of /cvsroot/ikvm/ikvm In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv4321 Modified Files: HOWTO Log Message: Updated reference to OpenJDK 8u45. Index: HOWTO =================================================================== RCS file: /cvsroot/ikvm/ikvm/HOWTO,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** HOWTO 19 May 2014 12:43:29 -0000 1.14 --- HOWTO 25 Jun 2015 13:13:39 -0000 1.15 *************** *** 2,10 **** --------------------------- ! This IKVM.NET source bundle requires OpenJDK 8 b132 sources (and build artifacts). They can be downloaded from the SourceForge IKVM project, or from: ! http://www.frijters.net/openjdk-8-b132-stripped.zip This file should be unzipped in the same directory as where the ikvm directory --- 2,10 ---- --------------------------- ! This IKVM.NET source bundle requires OpenJDK 8u45 b14 sources (and build artifacts). They can be downloaded from the SourceForge IKVM project, or from: ! http://www.frijters.net/openjdk-8u45-b14-stripped.zip This file should be unzipped in the same directory as where the ikvm directory |
From: Jeroen F. <jfr...@us...> - 2015-06-24 14:10:42
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv20551/runtime Modified Files: Dummy.OpenJDK.Core.cs IKVM.Runtime.8.csproj compiler.cs runtime.build Log Message: Optimized LambdaForm compiler. Index: Dummy.OpenJDK.Core.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/Dummy.OpenJDK.Core.cs,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Dummy.OpenJDK.Core.cs 23 Jun 2015 07:24:39 -0000 1.13 --- Dummy.OpenJDK.Core.cs 24 Jun 2015 14:10:40 -0000 1.14 *************** *** 55,58 **** --- 55,59 ---- { public class DirectMethodHandle { } + public class LambdaForm { } public class MemberName { } public class MethodType { } Index: IKVM.Runtime.8.csproj =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/IKVM.Runtime.8.csproj,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** IKVM.Runtime.8.csproj 1 Jul 2014 15:12:34 -0000 1.46 --- IKVM.Runtime.8.csproj 24 Jun 2015 14:10:40 -0000 1.47 *************** *** 161,164 **** --- 161,165 ---- <Compile Include="openjdk\java.util.prefs.cs" /> <Compile Include="openjdk\misc.cs" /> + <Compile Include="openjdk\NativeInvokerBytecodeGenerator.cs" /> <Compile Include="openjdk\sun.management.cs" /> <Compile Include="openjdk\sun.misc.cs" /> Index: compiler.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/compiler.cs,v retrieving revision 1.263 retrieving revision 1.264 diff -C2 -d -r1.263 -r1.264 *** compiler.cs 31 May 2015 12:10:51 -0000 1.263 --- compiler.cs 24 Jun 2015 14:10:40 -0000 1.264 *************** *** 268,272 **** sealed class Compiler { ! private static readonly MethodInfo unmapExceptionMethod; private static readonly MethodInfo fixateExceptionMethod; private static readonly MethodInfo suppressFillInStackTraceMethod; --- 268,272 ---- sealed class Compiler { ! internal static readonly MethodInfo unmapExceptionMethod; private static readonly MethodInfo fixateExceptionMethod; private static readonly MethodInfo suppressFillInStackTraceMethod; *************** *** 3605,3609 **** } ! private sealed class MethodHandleMethodWrapper : MethodWrapper { private readonly Compiler compiler; --- 3605,3609 ---- } ! internal sealed class MethodHandleMethodWrapper : MethodWrapper { private readonly Compiler compiler; *************** *** 3649,3656 **** internal override void EmitCall(CodeEmitter ilgen) { - #if !FIRST_PASS && !STATIC_COMPILER Debug.Assert(cpi.Name == "linkToVirtual" || cpi.Name == "linkToStatic" || cpi.Name == "linkToSpecial" || cpi.Name == "linkToInterface"); ! TypeWrapper[] args = cpi.GetArgTypes(); CodeEmitterLocal[] temps = new CodeEmitterLocal[args.Length]; for (int i = args.Length - 1; i > 0; i--) --- 3649,3659 ---- internal override void EmitCall(CodeEmitter ilgen) { Debug.Assert(cpi.Name == "linkToVirtual" || cpi.Name == "linkToStatic" || cpi.Name == "linkToSpecial" || cpi.Name == "linkToInterface"); + EmitLinkToCall(ilgen, cpi.GetArgTypes(), cpi.GetRetType()); + } ! internal static void EmitLinkToCall(CodeEmitter ilgen, TypeWrapper[] args, TypeWrapper retType) ! { ! #if !FIRST_PASS && !STATIC_COMPILER CodeEmitterLocal[] temps = new CodeEmitterLocal[args.Length]; for (int i = args.Length - 1; i > 0; i--) *************** *** 3663,3667 **** ilgen.Emit(OpCodes.Stloc, temps[0]); Array.Resize(ref args, args.Length - 1); ! Type delegateType = MethodHandleUtil.CreateMemberWrapperDelegateType(args, cpi.GetRetType()); ilgen.Emit(OpCodes.Ldloc, temps[args.Length]); ilgen.Emit(OpCodes.Ldfld, typeof(java.lang.invoke.MemberName).GetField("vmtarget", BindingFlags.Instance | BindingFlags.NonPublic)); --- 3666,3670 ---- ilgen.Emit(OpCodes.Stloc, temps[0]); Array.Resize(ref args, args.Length - 1); ! Type delegateType = MethodHandleUtil.CreateMemberWrapperDelegateType(args, retType); ilgen.Emit(OpCodes.Ldloc, temps[args.Length]); ilgen.Emit(OpCodes.Ldfld, typeof(java.lang.invoke.MemberName).GetField("vmtarget", BindingFlags.Instance | BindingFlags.NonPublic)); *************** *** 3672,3676 **** } MethodHandleUtil.EmitCallDelegateInvokeMethod(ilgen, delegateType); ! FromBasic(ReturnType, ilgen); #else throw new InvalidOperationException(); --- 3675,3679 ---- } MethodHandleUtil.EmitCallDelegateInvokeMethod(ilgen, delegateType); ! FromBasic(retType, ilgen); #else throw new InvalidOperationException(); *************** *** 3775,3789 **** private void EmitInvokeBasic(CodeEmitter ilgen) { ! TypeWrapper[] args = ArrayUtil.Concat(CoreClasses.java.lang.invoke.MethodHandle.Wrapper, cpi.GetArgTypes()); CodeEmitterLocal[] temps = new CodeEmitterLocal[args.Length]; for (int i = args.Length - 1; i > 0; i--) { temps[i] = ilgen.DeclareLocal(MethodHandleUtil.AsBasicType(args[i])); ! ToBasic(args[i], ilgen); ilgen.Emit(OpCodes.Stloc, temps[i]); } temps[0] = ilgen.DeclareLocal(args[0].TypeAsSignatureType); ilgen.Emit(OpCodes.Stloc, temps[0]); ! Type delegateType = MethodHandleUtil.CreateMemberWrapperDelegateType(args, cpi.GetRetType()); MethodInfo mi = ByteCodeHelperMethods.GetDelegateForInvokeBasic.MakeGenericMethod(delegateType); ilgen.Emit(OpCodes.Ldloc, temps[0]); --- 3778,3802 ---- private void EmitInvokeBasic(CodeEmitter ilgen) { ! TypeWrapper retType = cpi.GetRetType(); ! EmitInvokeBasic(ilgen, cpi.GetArgTypes(), retType, true); ! FromBasic(retType, ilgen); ! } ! ! internal static void EmitInvokeBasic(CodeEmitter ilgen, TypeWrapper[] args, TypeWrapper retType, bool toBasic) ! { ! args = ArrayUtil.Concat(CoreClasses.java.lang.invoke.MethodHandle.Wrapper, args); CodeEmitterLocal[] temps = new CodeEmitterLocal[args.Length]; for (int i = args.Length - 1; i > 0; i--) { temps[i] = ilgen.DeclareLocal(MethodHandleUtil.AsBasicType(args[i])); ! if (toBasic) ! { ! ToBasic(args[i], ilgen); ! } ilgen.Emit(OpCodes.Stloc, temps[i]); } temps[0] = ilgen.DeclareLocal(args[0].TypeAsSignatureType); ilgen.Emit(OpCodes.Stloc, temps[0]); ! Type delegateType = MethodHandleUtil.CreateMemberWrapperDelegateType(args, retType); MethodInfo mi = ByteCodeHelperMethods.GetDelegateForInvokeBasic.MakeGenericMethod(delegateType); ilgen.Emit(OpCodes.Ldloc, temps[0]); *************** *** 3794,3798 **** } MethodHandleUtil.EmitCallDelegateInvokeMethod(ilgen, delegateType); - FromBasic(ReturnType, ilgen); } --- 3807,3810 ---- Index: runtime.build =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/runtime.build,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** runtime.build 1 Jul 2014 15:12:34 -0000 1.79 --- runtime.build 24 Jun 2015 14:10:40 -0000 1.80 *************** *** 1,5 **** <?xml version="1.0"?> <!-- ! Copyright (C) 2002-2013 Jeroen Frijters This software is provided 'as-is', without any express or implied --- 1,5 ---- <?xml version="1.0"?> <!-- ! Copyright (C) 2002-2015 Jeroen Frijters This software is provided 'as-is', without any express or implied *************** *** 196,199 **** --- 196,200 ---- <include name="openjdk/java.util.prefs.cs" /> <include name="openjdk/misc.cs" /> + <include name="openjdk/NativeInvokerBytecodeGenerator.cs" /> <include name="openjdk/sun.management.cs" /> <include name="openjdk/sun.misc.cs" /> |
From: Jeroen F. <jfr...@us...> - 2015-06-23 11:47:51
|
Update of /cvsroot/ikvm/ikvm/reflect/Emit In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25732/Emit Modified Files: TypeBuilder.cs Log Message: Added Type.__GetGenericParameterConstraintCustomModifiers() API. Index: TypeBuilder.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/reflect/Emit/TypeBuilder.cs,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** TypeBuilder.cs 21 Apr 2015 10:15:39 -0000 1.59 --- TypeBuilder.cs 23 Jun 2015 11:47:48 -0000 1.60 *************** *** 143,146 **** --- 143,151 ---- } + public override CustomModifiers[] __GetGenericParameterConstraintCustomModifiers() + { + throw new NotImplementedException(); + } + public override GenericParameterAttributes GenericParameterAttributes { |
From: Jeroen F. <jfr...@us...> - 2015-06-23 07:24:42
|
Update of /cvsroot/ikvm/ikvm/runtime/openjdk In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9970/runtime/openjdk Modified Files: java.lang.invoke.cs Log Message: Fixed regression introduced with pairwise convert optimization. MethodHandle String construction is now handled much more cleanly by hooking DirectMethodHandle.makeAllocator() instead of fiddling with the MemberName. Index: java.lang.invoke.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/openjdk/java.lang.invoke.cs,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** java.lang.invoke.cs 20 Jun 2015 05:18:31 -0000 1.49 --- java.lang.invoke.cs 23 Jun 2015 07:24:39 -0000 1.50 *************** *** 32,35 **** --- 32,55 ---- using jlClass = java.lang.Class; + static class Java_java_lang_invoke_DirectMethodHandle + { + // this is called from DirectMethodHandle.makeAllocator() via a map.xml prologue patch + public static DirectMethodHandle makeStringAllocator(MemberName member) + { + #if FIRST_PASS + return null; + #else + // we cannot construct strings via the standard two-pass approach (allocateObject followed by constructor invocation), + // so we special case string construction here (to call our static factory method instead) + if (member.getDeclaringClass() == CoreClasses.java.lang.String.Wrapper.ClassObject) + { + MethodType mt = member.getMethodType().changeReturnType(CoreClasses.java.lang.String.Wrapper.ClassObject); + return new DirectMethodHandle(mt, DirectMethodHandle._preparedLambdaForm(mt, MethodTypeForm.LF_INVSTATIC), member, null); + } + return null; + #endif + } + } + static class Java_java_lang_invoke_MethodHandle { *************** *** 137,169 **** } - // called from Lookup.revealDirect() (instead of MethodHandle.internalMemberName()) via map.xml replace-method-call - public static MemberName internalMemberName(MethodHandle mh) - { - #if FIRST_PASS - return null; - #else - MemberName mn = mh.internalMemberName(); - if (mn.isStatic() && mn.getName() == "<init>") - { - // HACK since we convert String constructors into static methods, we have to undo that here - // Note that the MemberName we return is only used for a security check and by InfoFromMemberName (a MethodHandleInfo implementation), - // so we don't need to make it actually invokable. - MemberName alt = new MemberName(); - typeof(MemberName).GetField("clazz", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(alt, mn.getDeclaringClass()); - typeof(MemberName).GetField("name", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(alt, mn.getName()); - typeof(MemberName).GetField("type", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(alt, mn.getMethodType().changeReturnType(typeof(void))); - int flags = mn._flags(); - flags -= MethodHandleNatives.Constants.MN_IS_METHOD; - flags += MethodHandleNatives.Constants.MN_IS_CONSTRUCTOR; - flags &= ~(MethodHandleNatives.Constants.MN_REFERENCE_KIND_MASK << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT); - flags |= MethodHandleNatives.Constants.REF_newInvokeSpecial << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT; - flags &= ~MethodHandleNatives.Constants.ACC_STATIC; - alt._flags(flags); - return alt; - } - return mn; - #endif - } - public static void init(MemberName self, object refObj) { --- 157,160 ---- *************** *** 210,213 **** --- 201,208 ---- flags |= MethodHandleNatives.Constants.REF_invokeStatic << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT; } + else if (mw.IsConstructor && !wantSpecial) + { + flags |= MethodHandleNatives.Constants.REF_newInvokeSpecial << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT; + } else if (mw.IsPrivate || mw.IsFinal || mw.IsConstructor || wantSpecial) { *************** *** 233,246 **** parameters1[i] = mw.GetParameters()[i].ClassObject; } ! MethodType mt = MethodType.methodType(typeof(string), parameters1); ! typeof(MemberName).GetField("type", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(self, mt); ! self.vmtarget = CreateMemberNameDelegate(mw, null, false, mt); ! flags -= MethodHandleNatives.Constants.REF_invokeSpecial << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT; ! flags += MethodHandleNatives.Constants.REF_invokeStatic << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT; ! flags -= MethodHandleNatives.Constants.MN_IS_CONSTRUCTOR; ! flags += MethodHandleNatives.Constants.MN_IS_METHOD; ! flags += MethodHandleNatives.Constants.ACC_STATIC; self._flags(flags); self._clazz(mw.DeclaringType.ClassObject); return; } --- 228,236 ---- parameters1[i] = mw.GetParameters()[i].ClassObject; } ! MethodType mt = MethodType.methodType(PrimitiveTypeWrapper.VOID.ClassObject, parameters1); ! self._type(mt); self._flags(flags); self._clazz(mw.DeclaringType.ClassObject); + self.vmtarget = CreateMemberNameDelegate(mw, null, false, self.getMethodType().changeReturnType(CoreClasses.java.lang.String.Wrapper.ClassObject)); return; } *************** *** 370,375 **** if (mw.IsConstructor && mw.DeclaringType == CoreClasses.java.lang.String.Wrapper) { ! typeof(MemberName).GetField("type", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(self, self.getMethodType().changeReturnType(typeof(string))); ! self.vmtarget = CreateMemberNameDelegate(mw, caller, false, self.getMethodType()); } else if (!mw.IsConstructor || invokeSpecial || newInvokeSpecial) --- 360,364 ---- if (mw.IsConstructor && mw.DeclaringType == CoreClasses.java.lang.String.Wrapper) { ! self.vmtarget = CreateMemberNameDelegate(mw, caller, false, self.getMethodType().changeReturnType(CoreClasses.java.lang.String.Wrapper.ClassObject)); } else if (!mw.IsConstructor || invokeSpecial || newInvokeSpecial) *************** *** 399,412 **** self._flags(self._flags() | MemberName.CALLER_SENSITIVE); } - if (mw.IsConstructor && mw.DeclaringType == CoreClasses.java.lang.String.Wrapper) - { - int flags = self._flags(); - flags -= MethodHandleNatives.Constants.REF_invokeSpecial << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT; - flags += MethodHandleNatives.Constants.REF_invokeStatic << MethodHandleNatives.Constants.MN_REFERENCE_KIND_SHIFT; - flags -= MethodHandleNatives.Constants.MN_IS_CONSTRUCTOR; - flags += MethodHandleNatives.Constants.MN_IS_METHOD; - flags += MethodHandleNatives.Constants.ACC_STATIC; - self._flags(flags); - } } --- 388,391 ---- |
From: Jeroen F. <jfr...@us...> - 2015-06-23 07:24:41
|
Update of /cvsroot/ikvm/ikvm/openjdk In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9970/openjdk Modified Files: map.xml Log Message: Fixed regression introduced with pairwise convert optimization. MethodHandle String construction is now handled much more cleanly by hooking DirectMethodHandle.makeAllocator() instead of fiddling with the MemberName. Index: map.xml =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/map.xml,v retrieving revision 1.113 retrieving revision 1.114 diff -C2 -d -r1.113 -r1.114 *** map.xml 21 Jun 2015 06:23:29 -0000 1.113 --- map.xml 23 Jun 2015 07:24:39 -0000 1.114 *************** *** 2889,2892 **** --- 2889,2901 ---- </body> </method> + <method name="_type" sig="(Ljava.lang.invoke.MethodType;)V" modifiers="final"> + <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" /> + <body> + <ldarg_0 /> + <ldarg_1 /> + <stfld class="java.lang.invoke.MemberName" name="type" sig="Ljava.lang.Object;" /> + <ret /> + </body> + </method> <method name="_flags" sig="()I" modifiers="final"> <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" /> *************** *** 2970,2987 **** </method> </class> - <class name="java.lang.invoke.MethodHandles$Lookup"> - <!-- We hook this to undo the fiddling we do to support string constructors --> - <method name="revealDirect" sig="(Ljava.lang.invoke.MethodHandle;)Ljava.lang.invoke.MethodHandleInfo;"> - <replace-method-call class="java.lang.invoke.MethodHandle" name="internalMemberName" sig="()Ljava.lang.invoke.MemberName;"> - <code> - <call type="Java_java_lang_invoke_MethodHandleNatives" name="internalMemberName" sig="(Ljava.lang.invoke.MethodHandle;)Ljava.lang.invoke.MemberName;" /> - </code> - </replace-method-call> - </method> - </class> <class name="java.lang.invoke.DirectMethodHandle"> <method name="allocateInstance" sig="(Ljava.lang.Object;)Ljava.lang.Object;"> <attribute type="System.Security.SecuritySafeCriticalAttribute" sig="()V" /> </method> </class> <class name="java.lang.invoke.MethodType"> --- 2979,3005 ---- </method> </class> <class name="java.lang.invoke.DirectMethodHandle"> + <method name="_preparedLambdaForm" sig="(Ljava.lang.invoke.MethodType;I)Ljava.lang.invoke.LambdaForm;" modifiers="static"> + <body> + <ldarg_0 /> + <ldarg_1 /> + <call class="java.lang.invoke.DirectMethodHandle" name="preparedLambdaForm" sig="(Ljava.lang.invoke.MethodType;I)Ljava.lang.invoke.LambdaForm;" /> + <ret /> + </body> + </method> <method name="allocateInstance" sig="(Ljava.lang.Object;)Ljava.lang.Object;"> <attribute type="System.Security.SecuritySafeCriticalAttribute" sig="()V" /> </method> + <method name="makeAllocator" sig="(Ljava.lang.invoke.MemberName;)Ljava.lang.invoke.DirectMethodHandle;"> + <prologue> + <ldarg_0 /> + <call type="Java_java_lang_invoke_DirectMethodHandle" name="makeStringAllocator" sig="(Ljava.lang.invoke.MemberName;)Ljava.lang.invoke.DirectMethodHandle;" /> + <dup /> + <brfalse name="continue" /> + <ret /> + <label name="continue" /> + <pop /> + </prologue> + </method> </class> <class name="java.lang.invoke.MethodType"> |
From: Jeroen F. <jfr...@us...> - 2015-06-22 13:18:01
|
Update of /cvsroot/ikvm/ikvm/ikvmc In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv21660/ikvmc Modified Files: CompilerClassLoader.cs Log Message: Made TypeWrapper.[Interfaces|InnerClasses|DeclaringTypeWrapper|Finish] non-abstract to implement common behavior. Index: CompilerClassLoader.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/ikvmc/CompilerClassLoader.cs,v retrieving revision 1.276 retrieving revision 1.277 diff -C2 -d -r1.276 -r1.277 *** CompilerClassLoader.cs 22 Jun 2015 10:55:23 -0000 1.276 --- CompilerClassLoader.cs 22 Jun 2015 13:17:58 -0000 1.277 *************** *** 2089,2113 **** } - internal override TypeWrapper DeclaringTypeWrapper - { - get - { - // at the moment we don't support nested remapped types - return null; - } - } - - internal override void Finish() - { - } - - internal override TypeWrapper[] InnerClasses - { - get - { - return TypeWrapper.EmptyArray; - } - } - internal override TypeWrapper[] Interfaces { --- 2089,2092 ---- |
From: Jeroen F. <jfr...@us...> - 2015-06-22 10:55:25
|
Update of /cvsroot/ikvm/ikvm/ikvmc In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11879/ikvmc Modified Files: CompilerClassLoader.cs Log Message: Fixed regression introduced in previous change. Untangled TypeWrapper finishing from linking. Index: CompilerClassLoader.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/ikvmc/CompilerClassLoader.cs,v retrieving revision 1.275 retrieving revision 1.276 diff -C2 -d -r1.275 -r1.276 *** CompilerClassLoader.cs 24 Mar 2015 09:39:11 -0000 1.275 --- CompilerClassLoader.cs 22 Jun 2015 10:55:23 -0000 1.276 *************** *** 2100,2119 **** internal override void Finish() { - if(BaseTypeWrapper != null) - { - BaseTypeWrapper.Finish(); - } - foreach(TypeWrapper iface in Interfaces) - { - iface.Finish(); - } - foreach(MethodWrapper m in GetMethods()) - { - m.Link(); - } - foreach(FieldWrapper f in GetFields()) - { - f.Link(); - } } --- 2100,2103 ---- |
From: Jeroen F. <jfr...@us...> - 2015-06-21 06:23:31
|
Update of /cvsroot/ikvm/ikvm/ikvmc In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv3063/ikvmc Modified Files: AotTypeWrapper.cs Log Message: Make non-public final methods defined in map.xml that don't override anything automatically non-virtual. Index: AotTypeWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/ikvmc/AotTypeWrapper.cs,v retrieving revision 1.87 retrieving revision 1.88 diff -C2 -d -r1.87 -r1.88 *** AotTypeWrapper.cs 24 Mar 2015 09:39:10 -0000 1.87 --- AotTypeWrapper.cs 21 Jun 2015 06:23:29 -0000 1.88 *************** *** 1,4 **** /* ! Copyright (C) 2002-2014 Jeroen Frijters This software is provided 'as-is', without any express or implied --- 1,4 ---- /* ! Copyright (C) 2002-2015 Jeroen Frijters This software is provided 'as-is', without any express or implied *************** *** 508,512 **** } ! private static void MapModifiers(MapXml.MapModifiers mapmods, bool isConstructor, out bool setmodifiers, ref MethodAttributes attribs) { setmodifiers = false; --- 508,512 ---- } ! private static void MapModifiers(MapXml.MapModifiers mapmods, bool isConstructor, out bool setmodifiers, ref MethodAttributes attribs, bool isNewSlot) { setmodifiers = false; *************** *** 544,547 **** --- 544,551 ---- attribs &= ~MethodAttributes.NewSlot; } + else if(((modifiers & (Modifiers.Public | Modifiers.Final)) == Modifiers.Final && isNewSlot && (attribs & MethodAttributes.Virtual) == 0)) + { + // final method that doesn't need to be virtual + } else { *************** *** 631,635 **** bool setmodifiers = false; MethodAttributes attribs = 0; ! MapModifiers(constructor.Modifiers, true, out setmodifiers, ref attribs); Type returnType; Type[] parameterTypes; --- 635,639 ---- bool setmodifiers = false; MethodAttributes attribs = 0; ! MapModifiers(constructor.Modifiers, true, out setmodifiers, ref attribs, false); Type returnType; Type[] parameterTypes; *************** *** 684,688 **** bool setmodifiers = false; MethodAttributes attribs = method.MethodAttributes; ! MapModifiers(method.Modifiers, false, out setmodifiers, ref attribs); if(method.body == null && (attribs & MethodAttributes.Abstract) == 0) { --- 688,692 ---- bool setmodifiers = false; MethodAttributes attribs = method.MethodAttributes; ! MapModifiers(method.Modifiers, false, out setmodifiers, ref attribs, BaseTypeWrapper == null || BaseTypeWrapper.GetMethodWrapper(method.Name, method.Sig, true) == null); if(method.body == null && (attribs & MethodAttributes.Abstract) == 0) { |
From: Jeroen F. <jfr...@us...> - 2015-06-20 05:18:33
|
Update of /cvsroot/ikvm/ikvm/openjdk In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv21643/openjdk Modified Files: allsources.lst map.xml response.txt Log Message: Improve MetrhodHandle.asType() performance by directly creating a single LambdaForm to do the conversion, instead of creating various intermediate forms (and MethodHandles). Index: allsources.lst =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/allsources.lst,v retrieving revision 1.271 retrieving revision 1.272 diff -C2 -d -r1.271 -r1.272 *** allsources.lst 9 Jun 2015 09:28:37 -0000 1.271 --- allsources.lst 20 Jun 2015 05:18:27 -0000 1.272 *************** *** 90,93 **** --- 90,94 ---- java/lang/ClassLoaderHelper.java java/lang/Enum.java + java/lang/invoke/LightWeightMethodHandle.java java/lang/LangHelper.java java/lang/management/PlatformComponent.java Index: map.xml =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/map.xml,v retrieving revision 1.111 retrieving revision 1.112 diff -C2 -d -r1.111 -r1.112 *** map.xml 9 Jun 2015 09:28:43 -0000 1.111 --- map.xml 20 Jun 2015 05:18:28 -0000 1.112 *************** *** 2964,2967 **** --- 2964,2974 ---- </replace-method-call> </method> + <method name="makePairwiseConvert" sig="(Ljava.lang.invoke.MethodHandle;Ljava.lang.invoke.MethodType;ZZ)Ljava.lang.invoke.MethodHandle;"> + <replace-method-call class="java.lang.invoke.MethodHandleImpl" name="makePairwiseConvertByEditor" sig="(Ljava.lang.invoke.MethodHandle;Ljava.lang.invoke.MethodType;ZZ)Ljava.lang.invoke.MethodHandle;"> + <code> + <call type="Java_java_lang_invoke_MethodHandleImpl" name="makePairwiseConvert" sig="(Ljava.lang.invoke.MethodHandle;Ljava.lang.invoke.MethodType;ZZ)Ljava.lang.invoke.MethodHandle;" /> + </code> + </replace-method-call> + </method> </class> <class name="java.lang.invoke.MethodHandles$Lookup"> Index: response.txt =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/response.txt,v retrieving revision 1.184 retrieving revision 1.185 diff -C2 -d -r1.184 -r1.185 *** response.txt 9 Jun 2015 09:28:43 -0000 1.184 --- response.txt 20 Jun 2015 05:18:30 -0000 1.185 *************** *** 1,4 **** # ! # Copyright (C) 2002-2014 Jeroen Frijters # # This software is provided 'as-is', without any express or implied --- 1,4 ---- # ! # Copyright (C) 2002-2015 Jeroen Frijters # # This software is provided 'as-is', without any express or implied *************** *** 38,41 **** --- 38,42 ---- java/io/*.class java/lang/*.class + java/lang/invoke/*.class java/lang/ref/*.class java/lang/reflect/*.class |
From: Jeroen F. <jfr...@us...> - 2015-06-20 04:58:48
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv19687 Modified Files: DotNetTypeWrapper.cs TypeWrapper.cs Log Message: Removed unnecessary finishing of base TypeWrapper and interfaces from CompiledTypeWrapper and DotNetTypeWrapper. Index: TypeWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/TypeWrapper.cs,v retrieving revision 1.485 retrieving revision 1.486 diff -C2 -d -r1.485 -r1.486 *** TypeWrapper.cs 20 Jun 2015 04:54:19 -0000 1.485 --- TypeWrapper.cs 20 Jun 2015 04:58:46 -0000 1.486 *************** *** 5111,5122 **** internal override void Finish() { - if(BaseTypeWrapper != null) - { - BaseTypeWrapper.Finish(); - } - foreach(TypeWrapper tw in this.Interfaces) - { - tw.Finish(); - } } --- 5111,5114 ---- Index: DotNetTypeWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/DotNetTypeWrapper.cs,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** DotNetTypeWrapper.cs 16 Mar 2015 09:00:19 -0000 1.80 --- DotNetTypeWrapper.cs 20 Jun 2015 04:58:46 -0000 1.81 *************** *** 58,62 **** private TypeWrapper outerClass; private volatile TypeWrapper[] interfaces; - private volatile bool finished; private static Modifiers GetModifiers(Type type) --- 58,61 ---- *************** *** 2785,2810 **** internal override void Finish() { - // we don't need locking, because Finish and Link are idempotent - if (finished) - { - return; - } - if (BaseTypeWrapper != null) - { - BaseTypeWrapper.Finish(); - } - foreach (TypeWrapper tw in this.Interfaces) - { - tw.Finish(); - } - foreach (MethodWrapper mw in GetMethods()) - { - mw.Link(); - } - foreach (FieldWrapper fw in GetFields()) - { - fw.Link(); - } - finished = true; } --- 2784,2787 ---- |
From: Jeroen F. <jfr...@us...> - 2015-06-20 04:54:21
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv19301 Modified Files: TypeWrapper.cs Log Message: Performance fix. Use a sentinel value instead of null for the unknown baseTypeWrapper state, because null is a valid value. Index: TypeWrapper.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/TypeWrapper.cs,v retrieving revision 1.484 retrieving revision 1.485 diff -C2 -d -r1.484 -r1.485 *** TypeWrapper.cs 24 Mar 2015 09:39:11 -0000 1.484 --- TypeWrapper.cs 20 Jun 2015 04:54:19 -0000 1.485 *************** *** 3785,3789 **** { private readonly Type type; ! private TypeWrapper baseTypeWrapper; private volatile TypeWrapper[] interfaces; private MethodInfo clinitMethod; --- 3785,3789 ---- { private readonly Type type; ! private TypeWrapper baseTypeWrapper = VerifierTypeWrapper.Null; private volatile TypeWrapper[] interfaces; private MethodInfo clinitMethod; *************** *** 4075,4079 **** internal override TypeWrapper BaseTypeWrapper { ! get { return baseTypeWrapper ?? (baseTypeWrapper = GetBaseTypeWrapper(type)); } } --- 4075,4086 ---- internal override TypeWrapper BaseTypeWrapper { ! get ! { ! if (baseTypeWrapper != VerifierTypeWrapper.Null) ! { ! return baseTypeWrapper; ! } ! return baseTypeWrapper = GetBaseTypeWrapper(type); ! } } |
From: Jeroen F. <jfr...@us...> - 2015-06-19 15:09:47
|
Update of /cvsroot/ikvm/ikvm/runtime In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv30926 Modified Files: CodeEmitter.cs Log Message: Dump more info for locals. Index: CodeEmitter.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/runtime/CodeEmitter.cs,v retrieving revision 1.93 retrieving revision 1.94 diff -C2 -d -r1.93 -r1.94 *** CodeEmitter.cs 22 May 2014 12:08:07 -0000 1.93 --- CodeEmitter.cs 19 Jun 2015 15:09:45 -0000 1.94 *************** *** 2401,2404 **** --- 2401,2408 ---- Console.Write(" " + code[i].ValueInt32); } + else if (code[i].opcode == OpCodes.Ldloc || code[i].opcode == OpCodes.Stloc) + { + Console.Write(" " + code[i].Local.__LocalIndex); + } Console.WriteLine(); } *************** *** 2407,2410 **** --- 2411,2418 ---- Console.WriteLine("label{0}: // temp = {1}", i, code[i].Label.Temp); } + else if (code[i].pseudo == CodeType.DeclareLocal) + { + Console.WriteLine("local #{0} = {1}", code[i].Local.__LocalIndex, code[i].Local.LocalType); + } else { |
From: Jeroen F. <jfr...@us...> - 2015-06-09 09:29:13
|
Update of /cvsroot/ikvm/ikvm/awt In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8187/awt Modified Files: native.cs toolkit-0.95.cs Log Message: Integrated OpenJDK 8u45. Index: toolkit-0.95.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/awt/toolkit-0.95.cs,v retrieving revision 1.113 retrieving revision 1.114 diff -C2 -d -r1.113 -r1.114 *** toolkit-0.95.cs 6 May 2015 07:17:40 -0000 1.113 --- toolkit-0.95.cs 9 Jun 2015 09:28:37 -0000 1.114 *************** *** 288,293 **** public sealed class NetToolkit : sun.awt.SunToolkit, ikvm.awt.IkvmToolkit, sun.awt.KeyboardFocusManagerPeerProvider { - public static readonly String DATA_TRANSFERER_CLASS_NAME = typeof(NetDataTransferer).AssemblyQualifiedName; - private int resolution; private NetClipboard clipboard; --- 288,291 ---- *************** *** 331,335 **** public NetToolkit() { - setDataTransfererClassName(DATA_TRANSFERER_CLASS_NAME); } --- 329,332 ---- *************** *** 1040,1043 **** --- 1037,1045 ---- throw new NotImplementedException(); } + + public override sun.awt.datatransfer.DataTransferer getDataTransferer() + { + return NetDataTransferer.getInstanceImpl(); + } } Index: native.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/awt/native.cs,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** native.cs 28 May 2013 11:02:14 -0000 1.13 --- native.cs 9 Jun 2015 09:28:37 -0000 1.14 *************** *** 609,614 **** } ! [System.Security.SecurityCritical] ! public static String getFileSystemPath(int csidl) { IntPtr pIDL = new IntPtr(); --- 609,614 ---- } ! [System.Security.SecuritySafeCritical] ! public static String getFileSystemPath0(int csidl) { IntPtr pIDL = new IntPtr(); |