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

139 Коммитов

Автор SHA1 Сообщение Дата
jfrijters ce1e5be3fc Fixed regression introduced with "type 2" field accessor fix. Null type doesn't need downcast and needs to be explicitly handled, because you aren't allowed to call GetPublicBaseTypeWrapper() on it. 2009-12-09 05:49:30 +00:00
jfrijters c7ae133d38 - Fixed IsPackageAccessibleFrom to consider class loaders, instead of InternalsVisibleToAttribute
- Added automatic access to internal accessibility members across assemblies in multi target compilation (previously this was only done for -sharedclassloader scenarios)
- Cleaned up existing field access stubs (now known as "type 1") and added type 2 access stubs to make public fields that have a non-public field type accessible.
2009-11-13 15:08:20 +00:00
jfrijters 09631e3f11 Use StaticCompiler.GetRuntimeType() to get type from the runtime assembly. 2009-11-06 07:48:06 +00:00
jfrijters 33f074087f Simplified the obj1.getClass() == obj2.getClass() intrinsic to avoid RuntimeTypeHandle. It turns out that on .NET 4.0 RuntimeTypeHandle.Value requires full trust and using RuntimeTypeHandle.Equals is actually slower than simply comparing the types (on .NET 4.0 beta 2, on .NET 2.0 this new approach is actually a bit slower, but the fact that the code is simpler and smaller is also worth something). 2009-10-23 05:58:41 +00:00
jfrijters 98ec2e69e2 Make Compiler class sealed and made most fields readonly. 2009-10-23 05:48:19 +00:00
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