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