Граф коммитов

134 Коммитов

Автор SHA1 Сообщение Дата
jfrijters f1ff4f82f1 Fix for bug #2881954. 2009-10-21 04:47:26 +00:00
jfrijters dac3109b6b Replaced most type literals with static field access (in Types class) or warpped JVM.Import() around them. 2009-10-14 14:58:41 +00:00
jfrijters b9ceecc098 Removed EmitHelper class and moved its methods into CodeEmitter. 2009-08-31 05:02:34 +00:00
jfrijters db9c796794 Removed vestigial compact framework support. 2009-08-28 06:47:16 +00:00
jfrijters 2641e03d86 Reintroduced local variable scopes in debugging information. 2009-08-24 16:06:58 +00:00
jfrijters 52ec137518 Use ILGenerator's new "clever" mode in CodeEmitter to produce smaller code. 2009-08-14 13:36:53 +00:00
jfrijters 1e003bbb98 Made callerID initialization lazy. 2009-07-14 08:25:04 +00:00
jfrijters 213965367e Optimized the reading of unsigned bytes from a byte array (buf[i] & 0xFF or buf[i] 0x0FFL). 2009-07-14 07:25:46 +00:00
jfrijters 4e3c9e505f Made ikvm.runtime.Util.getInstanceTypeFromClass() into an instrinsic, when used with a class literal. 2009-07-14 06:20:23 +00:00
jfrijters 04ca4a71f9 Moved class literal emit code to TypeWrapper and added checks to prevent types that are illegal in type instantations from being used with ClassLiteral<T>. 2009-07-13 08:34:37 +00:00
jfrijters ba363faf74 Replaced last usage of ByteCodeHelperMethods.GetClassFromTypeHandle in runtime with LazyEmitLoadClass. 2009-07-07 07:44:30 +00:00
jfrijters f6a22f068f Added ikvmc warnings for VerificationError and ClassFormatError. 2009-06-18 06:13:21 +00:00
jfrijters 9b4f8d0c0e ClassFile versions 51 and up don't allow the jsr instruction. 2009-05-24 05:05:34 +00:00
jfrijters c1553b7f1a Refactored method call replacement to allow it to be used by others than xml mapping stuff. 2009-05-12 04:00:01 +00:00
jfrijters 62e4bc8b12 Removed jsr/ret support. 2009-04-16 05:44:48 +00:00
jfrijters 7902330d0c Subroutine inlining exposed a pre-existing codegen bug that caused exception handlers to be dropped after an unreachable exception block was encountered. 2009-04-16 05:37:53 +00:00
jfrijters 937d2e6568 Added support for inlining subroutines (jsr/ret) to allow the verifier and compiler to be simplified and to hopefully pave the way for future codegen optimizations. 2009-04-16 05:34:20 +00:00
jfrijters 70b04e174e Changed bytecode stream and exception tables to use instruction indexes instead of PC. 2009-04-07 04:53:56 +00:00
jfrijters 145b8020ff Changed LoadLocal/StoreLocal to take an instruction index, instead of an instruction. 2009-04-06 10:26:37 +00:00
jfrijters d94191faa1 Removed local variable scoping (from debug info) because it doesn't add much value and conflicts with future optimizations. 2009-04-06 10:19:51 +00:00
jfrijters d20098ec2a Renamed CodeEmitter.Finish() to CheckLabels() and moved invocation to the right place. 2009-04-06 10:10:17 +00:00
jfrijters fbf4d5167a Rewrote exception handling to store Java exception state in our java.lang.Throwable class, instead of an additional object in a weak keyed map. 2009-03-16 05:50:59 +00:00
jfrijters 3ebf554517 Implemented ikvm.internal.ClassLiteral<T> to allow for more efficient class literals. 2009-03-04 05:47:18 +00:00
jfrijters e417a92a37 - Moved class literal TypeWrapper -> Type step into expression emitter.
- Fixed Class.desiredAssertionStatus() instrinsic to use the RemoveAsserts flag from the right class loader.
2009-03-02 06:31:55 +00:00
jfrijters 4291ce372d - Added support for multi level stack tracking to CodeEmitter.
- Made most Pop emitting lazy to enable optimizing them away (together with corresponding push).
- Made loading class literal lazy, to enable optimizing them away when they aren't used (e.g. because an atomic intrinsic).
- Made Class.desiredAssertionStatus() into an intrinsic, to be able to optimize it away when -removeassertions is used.
2009-02-27 06:17:06 +00:00
jfrijters 95c07f04c3 Added explicit null check (to avoid Type.GetTypeHandle form showing up in the stack trace) and don't do the optimization if we can't prove that either object isn't a ghost array. 2009-02-23 05:18:44 +00:00
jfrijters 8ffc7143ee Intrisified two uses of Object.getClass(). 2009-02-22 08:19:30 +00:00
jfrijters 68577d6313 Removed JIT perf workaround that is no longer necessary as of .NET 2.0 SP2 (aka .NET 3.5 SP1). 2009-02-16 06:02:02 +00:00
jfrijters e60dd1bff2 Made 32 bit floating point math more compatible by rounding to 32 bit after every operation. 2009-02-16 05:59:48 +00:00
jfrijters c3f7d1f2a9 As of .NET 2.0 SP2 (aka .NET 3.5 SP1) the x86 JIT now properly aligns the stack when doing a conv.r8, so we can now use that instead of using our hack. 2009-02-12 07:59:17 +00:00
jfrijters 4c68432767 If the last call site of a subroutine wasn't reachable, the return switch would fall through potentially causing the code to be unverifiable. 2008-12-01 05:18:30 +00:00
jfrijters e2f8738bbc The check for unloadable types on the stack indexed the stack in the wrong order. 2008-12-01 05:16:30 +00:00
jfrijters faffcc628c Integrated IKVM.Reflection.Emit in ikvmc. 2008-11-14 08:42:07 +00:00
jfrijters fc6134bb84 Changed dynamic (for unloadable classes) bytecode handling to use Java reflection. 2008-08-21 06:09:33 +00:00
jfrijters 634e5058b6 Bug fix: dynamic (for unloadable classes) getfield/getstatic/invoke* bytecode compilation couldn't handle ghost types. 2008-08-21 06:06:17 +00:00
jfrijters 684cdf651e Generified all collections. 2008-08-15 12:01:06 +00:00
jfrijters a8d63a772c Replaced usage of BootstrapClassLoader with actual class loader in static compiler. 2008-08-14 05:42:43 +00:00
jfrijters 379dd8bee3 - Added ghost array tagging to be able to report the instantiated class (instead of object[] which is allocated instead).
- Fixed ldc <class> where <class> is a ghost array.
- Fixed bug in instanceof <class> where <class> is a Serializable[].
2008-08-06 05:25:18 +00:00
jfrijters a03de46810 Don't generate unneeded GC.KeepAlive() in constructor for Exception types that don't have a finalize() method. 2008-06-24 14:47:45 +00:00
jfrijters b1b3f8b4f5 - Renamed CountingILGenerator to CodeEmitter.
- Renamed CountingLabel to CodeEmitterLabel.
2008-06-03 12:10:07 +00:00
jfrijters 36aa7b1a6c Removed CodeEmitter abstract base class. 2008-06-03 09:17:31 +00:00
jfrijters cbeeb20318 Marked all static classes as static. 2008-06-03 07:13:49 +00:00
jfrijters c5dcd8dc53 Refactored finish state/methods from JavaTypeImpl into FinishContext. 2008-06-03 06:52:30 +00:00
jfrijters 7ee8a8b83b Renamed invokespecial stub to follow the common convention for not-visible-from-java members. 2008-06-02 06:28:29 +00:00
jfrijters 5e4182edb5 - Implemented CallerID infrastructure.
- Marked various methods with HasCallerID annotation.
- Rewrote some methods to explicitly use CallerID.
2008-05-31 15:20:29 +00:00
jfrijters aa0bdc2280 Pass caller method instead of type to intrinsic infrastructure. 2008-05-31 10:22:37 +00:00
jfrijters 29f84a8850 - added more efficient float/double to/from int/long bits converters
- made Double.doubleToRawLongBits/longBitsToDouble and Float.floatToRawIntBits/intBitsToFloat intrinsics
- generalized the intrinsics support
2008-05-09 05:57:55 +00:00
jfrijters 828a4de95d Replaced notion of DynamicOnly types with Fake types. Fake types are implemented as generic type instances and can have DynamicOnly methods. 2008-03-03 07:05:19 +00:00
jfrijters d04c813e3f - Added -removeassertions optimization option to ikvmc.
- Added -removeassertions to IKVM.OpenJDK.ClassLibrary.dll build.
- Don't look at unreachable instructions when determining if a method needs a line number table.
2008-02-27 09:04:19 +00:00
jfrijters f238214cfa - Optimized codegen for lcmp, fcmp<x>, dcmp<x> and shift opcodes.
- Moved temp local handling to CodeEmitter.
2008-02-15 15:32:51 +00:00